MotionMeerkat is an open source tool for finding ecological events in long videos. Computer vision tools can greatly enhance data collection by extracting biological information from images with minimal time investment.
Check out the youtube playlist of videos. Please tag your upload "MotionMeerkat" to add your examples!
Citation: Weinstein, Ben G. "MotionMeerkat: integrating motion video detection and ecological monitoring." Methods in Ecology and Evolution 6.3 (2015): 357-362.
Source code
Check out the youtube playlist of videos. Please tag your upload "MotionMeerkat" to add your examples!
Citation: Weinstein, Ben G. "MotionMeerkat: integrating motion video detection and ecological monitoring." Methods in Ecology and Evolution 6.3 (2015): 357-362.
Source code
Attention Users!
New software published! DeepMeerkat extends MotionMeerkat in a number of key ways. For most users, I highly suggest transitioning to the new setup. Benefits include
Who should keep using MotionMeerkat
Stay tuned for more updates!
New software published! DeepMeerkat extends MotionMeerkat in a number of key ways. For most users, I highly suggest transitioning to the new setup. Benefits include
- Faster
- Mac Installer
- Cleaner user-interface
- Option to use a pre-trained model for image classification
Who should keep using MotionMeerkat
- Users with specific settings where they need more control of the inputs
- Users running folders of images, rather than videos.
Stay tuned for more updates!
2.05 (3/26/2017): Announcing Youtube Channel
The only way to make MotionMeerkat better is by submitting new use cases. I need your help!
Please upload a sample video to youtube and add it to the MotionMeerkat playlist. Please label it with name, study system, and add a location (under advanced settings). Please make the video shareable using the Creative Commons License, so i can download it when testing new software. This is incredibly helpful for future improvements.
2.0.5 (1/26/17)
Better sanity checks for batch mode file types
2.0.4 (1/21/17)
Frames.csv now outputs the bounding box coordinates of targets in the format topleft, bottomright.
2.0.3 (12/27/16)
Fixes for pictures, allowing cropping and MOG detection thanks to the OpenCV team for Bug fixes to the underling source library.
2.0.2 (11/15/16)
Nice fixes to the command line version that can now be invoked main.exe --args. Improved GUI features and ongoing bug fixes. Plus a trimmed down git repo and working on a docker image for ec2 deploy.
The only way to make MotionMeerkat better is by submitting new use cases. I need your help!
Please upload a sample video to youtube and add it to the MotionMeerkat playlist. Please label it with name, study system, and add a location (under advanced settings). Please make the video shareable using the Creative Commons License, so i can download it when testing new software. This is incredibly helpful for future improvements.
2.0.5 (1/26/17)
Better sanity checks for batch mode file types
2.0.4 (1/21/17)
Frames.csv now outputs the bounding box coordinates of targets in the format topleft, bottomright.
2.0.3 (12/27/16)
Fixes for pictures, allowing cropping and MOG detection thanks to the OpenCV team for Bug fixes to the underling source library.
2.0.2 (11/15/16)
Nice fixes to the command line version that can now be invoked main.exe --args. Improved GUI features and ongoing bug fixes. Plus a trimmed down git repo and working on a docker image for ec2 deploy.
1.9.1 (3/1/2016)
Welcome to automatic mode! Just answer a few questions, draw the minimum size and cropping and you are off!
I've added a number of features which learn from the input video, and greatly reduce the user needing to get the exact right settings. Just answer three questions and you can start processing videos. I've run a nice test of these features to help guide users on the best kind of parameters. Don't like the results? You can take those parameters and optimize them in manual mode. Below are the settings for different types of background to help guide you in manual mode. Each correspond to the index for automatic mode. For example, answer 0 for background variation and 1 for speed of movement and you'll get learning rate = 0.01 and variance tolerance 20. This would be most appropriate for rather still, underwater images.
Welcome to automatic mode! Just answer a few questions, draw the minimum size and cropping and you are off!
I've added a number of features which learn from the input video, and greatly reduce the user needing to get the exact right settings. Just answer three questions and you can start processing videos. I've run a nice test of these features to help guide users on the best kind of parameters. Don't like the results? You can take those parameters and optimize them in manual mode. Below are the settings for different types of background to help guide you in manual mode. Each correspond to the index for automatic mode. For example, answer 0 for background variation and 1 for speed of movement and you'll get learning rate = 0.01 and variance tolerance 20. This would be most appropriate for rather still, underwater images.
1.8.9 (2/23/2016)
More accuracy! We've switched the mixture of gaussian (MOG) background detector. The new detector is more accurate and gives more consistant results across a range of videos. The key parameter is the learning rate. This is the speed at which the background updates, ranging from 0 to 1. Higher values means the background updates faster, and therefore is less sensitive to motion. This cuts down on false positives from repetitive motions, like leaves in the wind. If the learning rate is set too high, slow moving objects will disappear as they hang out in the frame for awhile. The new algorithm learns from the first couple minutes of video. This assumes that your target of interest does not start in the first frame. This is important when making test clips, give it a little buffer time to learn the background. For high frame rates, this isn't usually a problem, but for time lapse cameras, the algorithm will often output the first couple frames as it learns about the variation in the background.
New Diagnostic plots! After every run there will be a pair of plots to help you understand what happened. The top plot is the maximum size of motion objects (yaxis) through time (x axis). The red dashed line is the minimum contour size set by the user. In the future, the program will automatically change this parameter based on the video being processed! The bottom plot is the time series of frames being returned. We can see alot of activity around the 5th frame, when a bird arrived at the nestbox!
More accuracy! We've switched the mixture of gaussian (MOG) background detector. The new detector is more accurate and gives more consistant results across a range of videos. The key parameter is the learning rate. This is the speed at which the background updates, ranging from 0 to 1. Higher values means the background updates faster, and therefore is less sensitive to motion. This cuts down on false positives from repetitive motions, like leaves in the wind. If the learning rate is set too high, slow moving objects will disappear as they hang out in the frame for awhile. The new algorithm learns from the first couple minutes of video. This assumes that your target of interest does not start in the first frame. This is important when making test clips, give it a little buffer time to learn the background. For high frame rates, this isn't usually a problem, but for time lapse cameras, the algorithm will often output the first couple frames as it learns about the variation in the background.
New Diagnostic plots! After every run there will be a pair of plots to help you understand what happened. The top plot is the maximum size of motion objects (yaxis) through time (x axis). The red dashed line is the minimum contour size set by the user. In the future, the program will automatically change this parameter based on the video being processed! The bottom plot is the time series of frames being returned. We can see alot of activity around the 5th frame, when a bird arrived at the nestbox!
1.8.6 (2/21/2016)
Getting a handle on windy videos! Two new settings to help reduce false positive based on highly changing backgrounds. New wind correction feature will cap the number of consecutive frames that can be returned. For example, if i'm waiting for hummingbirds to visit a flower, the average visit is 3 -5 seconds. With the new wind correction, no series of 2 minutes (set by the user) can return more than 90% of frames. Other important updates to error handling, more informative argument text and better defaults all help the user experience.
Getting a handle on windy videos! Two new settings to help reduce false positive based on highly changing backgrounds. New wind correction feature will cap the number of consecutive frames that can be returned. For example, if i'm waiting for hummingbirds to visit a flower, the average visit is 3 -5 seconds. With the new wind correction, no series of 2 minutes (set by the user) can return more than 90% of frames. Other important updates to error handling, more informative argument text and better defaults all help the user experience.
Coming Soon! MotionMeerkat in the Cloud.
I've begun working with the Iplant team to run on the Bisque image analysis server. It can be accessed from any platform, faster, more reproducible, and instant updates. Check back soon!
I've begun working with the Iplant team to run on the Bisque image analysis server. It can be accessed from any platform, faster, more reproducible, and instant updates. Check back soon!
Version 1.7 New Features - Input a directory of photos!
I gave a talk at the Society for Northwest Vertebrate Biology on MotionMeerkat and got some nice feedback!
One researcher studying amphibians wanted to know if she could use MotionMeerkat to detect frogs crossing through culverts. Here are some raw images. Only the center image has a tiny frog!
One researcher studying amphibians wanted to know if she could use MotionMeerkat to detect frogs crossing through culverts. Here are some raw images. Only the center image has a tiny frog!
Version 1.5: New Features!
Getting started with MotionMeerkat
How to find optimal settings for your video?
Most users have many videos they need to review. The best way to find a good set of settings is find a short clip (1 to 2 min long) with your target organism entering and exiting the frame. Cut out the clip using vlc. Then test a variety of thresholds, min sizes and averaging to get the best results. If you have long videos with variable backgrounds, you can use the adapt setting in advanced options to specify a expected hitrate (be liberal) and that will help the program tune settings.
Most users have many videos they need to review. The best way to find a good set of settings is find a short clip (1 to 2 min long) with your target organism entering and exiting the frame. Cut out the clip using vlc. Then test a variety of thresholds, min sizes and averaging to get the best results. If you have long videos with variable backgrounds, you can use the adapt setting in advanced options to specify a expected hitrate (be liberal) and that will help the program tune settings.
Gallery
Input Video |
Output ResultMotionMeerkat result (accAvg=.3, threshold = 10, minSIZE=.1%)
|
Prothonatory Warbler Nest Box ( Bullock's Lab at VCU)
|
MotionMeerkat Result (accAvg = 0.25, Threshold =50, minSIZE=.1%)
|
|
MotionMeetkat Result (accAvg=0.35,threshold=100,minSIZE=0.1)
|
|
MotionMeetkat Result (accAvg=0.25,threshold=10,minSIZE=0.1)
|
Shallow baited underwater camera (Rees and Sheehan unpublished)
|
MotionMeetkat Result (accAvg=0.25,threshold=10,minSIZE=0.1)
|
Fixed avian nest predation camera (Scott Schiavacci)
|
accAvg=0.;35, threshold = 40, minSIZE=0.1, set_ROI=True, exclusion box drawn around time stamp.
|
Release Notes
Version 1.8.5 - Minor bug fix if the minimum size contour is too small. Program now waits for user input on completion 2/11/2016
Version 1.7.5 - Minor bug fix for mog history tolerance takes in integer argument 10/21/2015
Version 1.7.4 - Minor bug fix in command line version "pictures undefined" 6/28/2015.
Version 1.7.1 - MOG bug fixed and window crop can be resized 3/10/2015.
Version 1.8.5 - Minor bug fix if the minimum size contour is too small. Program now waits for user input on completion 2/11/2016
Version 1.7.5 - Minor bug fix for mog history tolerance takes in integer argument 10/21/2015
Version 1.7.4 - Minor bug fix in command line version "pictures undefined" 6/28/2015.
Version 1.7.1 - MOG bug fixed and window crop can be resized 3/10/2015.