set the channel description: Channel for those interested in AI/CV for camera traps
@Stefan Schneider has joined the channel
@Thomas Starnes has joined the channel
@Jeffrey Thompson has joined the channel
@ศtefan Istrate has joined the channel
via Jeff Clune:
New dataset on LILA: 1.4M camera trap images from ~675 species from 12 countries from the Wildlife Conservation Society. It's one of the most diverse camera trap data sets available publicly http://lila.science/datasets/wcscameratraps Thanks to Dan Morris at Microsoft AI For Earth for data wrangling.
LILA.science now has over 10 million labeled images (and counting!).
@Riccardo Pressiani has joined the channel
@Ben Weinstein has joined the channel
one thing which I think is worth mentioning, and something @Sara Beery have discussed. We really donโt have a great sense of the relative accuracy of the currently published camera trap tools, and even less knowledge about how much they are in use.
in general iโm shying away from too much work until some well known stuff in the pipeline gets published.
but iโm super interested in hearing anecdotes if teams are using existing tools, tried them and failed, or they didnโt reach needs, etc.
Siyu, Dan and I are working on "publishing" benchmarks on LILA - aka making them easy to download and use
@Amrita Gupta has joined the channel
@Heather Lynch has joined the channel
From @Oisin Mac Aodha:
This camera trap project has some nice web tools for visualizing detections.
https://public.tableau.com/profile/hailey.boone#!/vizhome/NCCCSpeciesGraphic1/Dashboard1
https://www.nccandidcritters.org/
i've been working with underwater camera traps and would be interested in discussing methods to estimate effective sampling area for underwater traps where tag/recapture studies are impractical.
This sounds really interesting, but I haven't worked much underwater. What methods are you using currently?
WILDLABS is hosting a virtual meetup on Camera Traps, Tuesday October 29th. I'll be speaking, along with Roland Kays and Sam Seccombe. Learn more and register here: https://www.wildlabs.net/resources/community-announcements/wildlabs-virtual-meetup-invitation-camera-trapping
There's a postdoc opportunity available managing a large-scale network of camera traps in Western Canada: https://wildcams.ca/updates/were-hiring/
The Wildlife Insights AI model can now be tested on the https://www.wildlifeinsights.org/try-ai page! This uses a google tool to allow people to drag and drop images and see the image classification results from the model.
Zilong: A tool to identify empty images in camera-trap data - ScienceDirect
https://www.sciencedirect.com/science/article/pii/S1574954119303322
probably not news to most people on here, but will post anyway. ๐ looks like wildlife insights has officially kicked into beta and is putting the word out. here is a blog post about it on google (hi, @Tanya Birch!) https://www.blog.google/products/earth/ai-finds-where-the-wild-things-are/ or, jump right to 4.5m camera trap images: https://app.wildlifeinsights.org/explore
Five new camera trap data sets are live on LILA, thanks to the Snapshot Safari program:
http://lila.science/datasets/snapshot-kgalagadi
http://lila.science/datasets/snapshot-enonkishu
http://lila.science/datasets/snapshot-camdeboo
http://lila.science/datasets/snapshot-mountain-zebra
http://lila.science/datasets/snapshot-kruger
Everyone go train some models!
And one more:
http://lila.science/datasets/snapshot-karoo
Incidentally, the best part of my job is picking thumbnail images for camera trap data sets.
Blog post about our (mostly Siyu's) work on ML for camera traps, specifically talking about how we do distributed batch inference (but also general camera trap goodness). https://medium.com/microsoftazure/accelerating-biodiversity-surveys-with-azure-machine-learning-9be53f41e674
And a special shout-out to @Sara Beery, who - aside from kicking this whole workstream off for us ~1.5 years ago - created the video that Slack chose as the thumbnail. ๐
Hi @Frederic, Iโm here, and good find! Just corrected this link and others pointing to GitHub pages that have moved. Thanks :)
me, eventually. But nothing to report for awhile.
Yeah it's been on my todo list for a while too
@Sara Beery I am just about to start transitioning my focus from photos to videos for the BearID Project. I'm going to take advantage of the #AIforEarth grant this year!
Very cool!!! What are you planning to try first?
I plan to compare an OD trained for bears (and other species) with MegaDetector followed by classifier. I will also look to add object tracking to try to maintain individuals across a clip.
I think different smart ways of combining information across the clip to get better IDs is really cool.
I think this fits with this weak attention idea that we are all really exploring.
ecology has this inherent connection in time and space
but due to differing positions and angles we expect classifications/detections to be similar, but not identical.
Exactly. We've been seeing good results (3% boost, on a pretty hard dataset) with Context R-CNN on AVA btw, which is a video object detection dataset
so you would use the features from frame x to inform proceeding and following frames.
Iโm moving towards similiar idea with tree detections across years.
we expect that detections in year 1 to inform year 2 to do joint multi-temporal learning.
Ben I was JUST talking about that exact thing with Pietro yesterday
following saraโs general idea, but one-shot detector, etc.
Can we meet up sometime next week and talk about trees?
iโm on baby duty all week, letโs do next week.
I'm not planning to do any cutting edge research, just hoping to get something working reliably. My main aim with object tracking is to boost accuracy in individual identification as per Chimpanzee face recognition from videos in the wild using deep learning.
Getting something to work well on a new species IS cutting edge research! Screw all the theorists who would tell you otherwise ๐
@Ed Miller iโm happy to look it over once you have a working pipeline. The idea of cross-imagery feature learning is the focus of alteast 3 projects iโm running, so itโll be good to share ideas.
Sounds good. The existing bearid pipeline (for photos) is built around dlib (for historical reasons). For the moment I'm just coming up to speed on Azure. I've run some experiments on OD and classification using Custom Vision. I'll look at some of the existing AI for Earth APIs. I had a link to some other networks from Microsoft (including tracking), but I can't seem to find it at the moment.
Feel free to send a links to models I should be looking at. ๐
Oh, and did I mention I also want efficient models I can eventually run on the edge? As part of my day job (at Arm), I will be testing some models on smartphones, Raspberry Pi's, camera SoCs, microcontrollers, etc.
I found the link for for other networks from Microsoft that I had "misplaced": https://github.com/microsoft/computervision-recipes
@Sara Beery - we do. re: the bots we have which look at youtube videos. we dont really use any kind of video-specific magic (e.g. treating nearby frames as strong evidence of images of the same animal). it is very basic -- break the image up into frames and run them through our standard pipeline. (there is a little bit of clustering we do after finding animals, but could be doing a lot more.)
Cool. Most of what I've found so far is running frame-by-frame, which makes sense because it simplifies the input pipelines significantly.
yeah, behind the scenes it is basically some ffmpeg and handwaving, then business as usual as if they were just photos from the start. ๐
yes... we have certain aspects of our identification that takes into account time-proximity, but it was written for users in the field and still cameras... so it is not really what we would want for something like video sequence. other than assuming nearby frames are likely the same individual, one other thing we have mulled over (but not done) is increasing the sampling rate once detection has found frames with the desired species. that is, we currently only sample every 2 sec, since these are usually long videos with lots of noise (frames of people in boats talking about their holidays!)... but once we find N consecutive desirable frames, it would make a lot of sense to go back and pull just about every frame around the positive images; much better odds of finding identifiable images. but we currently dont do that yet.
For folks here who use images from LILA, a small but hopefully-useful addition to LILA functionality. When we first started LILA, we didnโt want to have to deal with the complexities of building a service that would let you query for, e.g., โall the images of cheetahsโ or even โall the images in this one folder from this one datasetโ, so it was just โgiant zipfiles or bustโ.ย But actually, sometimes you do just want part of a data set, and also giant zipfiles have become the #1 complaint about LILA.ย
We still donโt want to deal with a fancy service, but weโve found a happy intermediate that lets people (a) not have to deal with giant zipfiles and (b) download (with a little effort) subsets of data sets, e.g. by folder or by species.
Details are here:
http://lila.science/image-access
Not super-slick, we know, but hopefully a useful step for training models, since now you're just a bit of scripting away from being able to get, e.g., all the zebra images across all the LILA data sets.
This is amazing @Dan Morris and @Siyu Yang!!! Really useful :)
Does anyone here know of a good resource on the best commercially available camera traps? I know of Trail Cam Pro but I was curious if there have been reviews or publications that did a good job at evaluating what is on the market for ecology.
I don't, but would also be interested! I relied heavily on Trail Cam Pro when deciding what cameras to buy for my study, but wished there was a better resource for ecology specifically.
LILA update! We added some bounding box labels for vehicle and bird images in the NACTI dataset, and more substantially for ~16k sequences in the WCS Camera Trap dataset covering most locations.
WCS Camera Traps: http://lila.science/datasets/wcscameratraps (16k sequences ~42k images. We also uploaded a recommended train/val/test split over camera locations to encourage reporting performance in a consistent way)
NACTI: http://lila.science/datasets/nacti
There was apparently a lot of enthusiasm for a Colab to run MegaDetector on your own images at Saraโs recent talk. Here it is! https://github.com/microsoft/CameraTraps/blob/master/detection/megadetector_colab.ipynb
Thanks to Alistair Stewart for contributing this and @louis030195 for contributing an earlier version of it!
This worked great -- easy to follow, I was detecting animals from a private data set very quickly!
Hey all - thought this might be of interest. Manaaki Whenua Landcare Research, a New Zealand based land management research group, is hosting a series of webinars this week and there's one at 7:30 this evening (PST) titled "Using cameras and artificial intelligence for monitoring invasive species". Could be cool to see what folks are up to in this space down under. You can register here: https://www.landcareresearch.co.nz/about/news/events/biosecurity-bonanza/agenda
The Context R-CNN code is now released in the Tensorflow Object Detection API ๐https://github.com/tensorflow/models/tree/master/research/object_detection#june-17th-2020
If you want to play with it, we set up a colab with our Snapshot Serengeti trained models: https://colab.sandbox.google.com/github/tensorflow/models/blob/master/research/object_detection/colab_tutorials/context_rcnn_tutorial.ipynb
These models (both Faster R-CNN and Context R-CNN) were trained on the 1st 6 seasons, using the training locations recommended on LILA.science: http://lila.science/datasets/snapshot-serengeti
They were both trained on TPUs, and all hyperparameters are specified in the config files of the models, locations of the downloadable models can be found in the TFODAPI model zoo, or in the colab ๐
If you have other Snapshot Serengeti data saved locally, you can use the colab to play with the effect of context. It will use whatever group of images you point to to build up the contextual memory bank, and then use that context when running inference on each image with Context R-CNN.
The demo images we included are from one of the LILA.science test locations (unseen during training), you can see that our baseline model isn't handling this case very well.
can you point to where the model is actually defined?
like the layers, not the colab create_model
Yep! It's here: https://github.com/tensorflow/models/blob/master/research/object_detection/meta_architectures/context_rcnn_meta_arch.py
And attention fns are defined here: https://github.com/tensorflow/models/blob/master/research/object_detection/meta_architectures/context_rcnn_lib.py
Oh, and we took a distillation approach to training, so any images without bbox labels got weakly-supervised bboxes from MegaDetector v3 (any boxes over 0.9 score), matched to the image-level label. We only report performance on human-bbox-labeled (from the bbox json file on LILA) images from the recommended test locations (so we don't end up evaluating on weak labels). Looking forward to testing with MDV4 to see if that boosts performance further, as several iWildCam teams reported increased performance with the new version.
Hi Sara, is there a PyTorch implementation of this currently?
Nope, sorry! Haha that's what happens when you do work at Google.
Iโm forwarding to colleagues. Long term thought, but iโll probably push we start from this as a baseline for our new grant for video processing. We are replacing DeepMeerkat (http://benweinstein.weebly.com/deepmeerkat.html) with more recent tools. Hopefully a human-in-loop web component + portal for people to download models to apply to local data. Weโll probably need to think about pruning and reducing the backbone size, but thatโs a idea for like december. We havenโt even hired the postdoc on this grant yet.
Very cool. We'll also want to think about when to store a context feature, because the high frame rate videos will be different than the low frame rate bursts ๐
yup. I have this vision of combining with the ladder type networks (https://dawn.cs.stanford.edu//2017/06/22/noscope/) I like this idea since especially in wildlife time-lapse the vast majority of frames are almost identical and donโt need a deep learning model.
Yannic Kilcher just released a GREAT walkthrough video for the paper: https://www.youtube.com/watch?v=eI8xTdcZ6VY&feature=youtu.be
Just watched this now. Amazingly good explanation. Working on my hyperspec attention network. I added in the comments that the code was out.
Interesting discussion thread on the CameraTraps GitHub titled โAs an ecologist, what are you looking for to extract from camera traps?โ that people might want to comment on/follow!
https://github.com/microsoft/CameraTraps/issues/176
Hey all, any public camera trap datasets with segmentation labels that anyone knows of? I've been looking but haven't found anything useful.
Not that I'm aware of. Maybe the animal categories in openimages might be useful? https://storage.googleapis.com/openimages/web/visualizer/index.html?set=train&type=segmentation&r=false&c=%2Fm%2F01dws
Yeah, maybe I can bootstrap something from these ๐
Perhaps, some of the old-school background modeling approaches could be used to extract masks?
This was actually the subject of my first ever paper back in undergrad (https://ieeexplore.ieee.org/abstract/document/7532575). Because the frame rate is really low (no greater than one frame per second), because the background plants can also move, and because sometimes the animals don't move, the masks aren't great. I think it's reasonable to use as weak supervision, but I was hoping that someone had already gathered labels to accurately evaluate methods against. Looks like I'm going to need to label some data, at least for eval :)
I see. Might be an interesting research topic to use all the sequence data + bounding box to learn a camera specific background prior and then do use something like GrabCut to extract the segmentation.
Yeah, that sounds like a great idea. I'm mentoring an incoming PhD student of Pietro's (Laure Delisle) and she's looking at weakly-supervised segmentation for camera traps. We were thinking of seeing if we can adapt the attention-based approach that worked well for detection, but we're in really early stages. Would you have time to meet up and brainstorm with us sometime?
Cool! She's on vacation this week in Corsica (which I'm very jealous of lol) but I'll chat with her when she gets back and we can find a time to meet ๐
Is anyone working on open source camera trap hardware?
@Ben Seleb wants to work on this for his PhD!
Conservation X-Labs has an open challenge:
https://conservationx.com/challenge/cameratrap/camera
The issue is cost and scale. It would be great to have an open-source camera trap that allows for customized software, but you need to work out manufacturing at scale to make it work for researchers. Most researchers just want a camera that works and don't want to assemble, program etc. their camera before deployment. If I need 100 new camera traps three weeks from now that are ready to deploy for a project that just got funded, can you have a company manufacture and deliver them for <$150 including hardware and housing?
Currently trying to lay the ground work for this โ happy to discuss!
Hey @Ben Seleb - I'm also interest in learning about what you're up to. I work for the Nature Conservancy and we're very interested in trying out modular, open-source camera trapping hardware.
@Mathias Tobler Thanks for the link to the Camera Trap challenge. I agree cost and scale are always an issue, but so is fit for purpose. AudioMoth is a good example of a working open source hardware model. Custom software doesn't have to be the primary focus, it should just work out of the box for a core set of applications.
@Ben Seleb I would definitely like to discuss this with you!
@Nathaniel Rindlaub @Ben Seleb - we make Open Source marine camera traps. http://openoceancam.com/
Would be cool to chat!
@Ed Miller we have projects like that too. happy to chat!
@Maxime Cauchoix would love to check yours out. Any link?
This may be of interest:
https://www.guinnessworldrecords.com/world-records/601784-largest-camera-trap-wildlife-survey
WII has contributed training data to the MegaDetector training data set too!
Thanks Bistra! The credit really goes to WII to pull it off. I'm excited to be involved though ๐.
@Siyu Yang That's wonderful! Thanks for this information. I didn't know that.
Is anyone working on or thought about a "smart PIR" sensor. Something more subtle than threshold detection from bandpass filtered PIR signal (possibly involving co-designed optics) aimed at reducing false negatives (missed animals) , and false positives (waving vegetation)? My thought (for my own education) was to start "small" -- yet as I think about the whole process -- from gathering training data, to testing in real life vs. state of the art, this problem begets a number of smaller (also challenging) steps ๐ ๐ @Sam Kelly @Sara Beery @Ed Miller
It sounds really interesting, but I haven't done anything with PIR.
I did some experimentation with using a PIR sensor as a human detector for a wearable camera. It ended up not being a good solution for a device that is not in a fixed location. I never got to the point of "smart PIR". I suggest you start with a platform like Edge Impulse which makes it easy to experiment with various ML models for sensors (Dan Situnayaki from Edge Impulse did a Tech Tutors talk on WildLabs). If you search for "tinyml pir" you can also find some interesting references.
Thanks for these pointers. I will definitely check these out!
one of the things we looked at a while back was background subtraction from one of these low-power, always-on cameras (and one of these https://www.adafruit.com/product/4469) - @Vivian Shen did most of this work. it had mixed results, but many of the problems that face PIRs (false positives, range etc.) were still an issue. Could definitely be something interesting here though... and happy to help out with anything on this!!
cool. I had looked at the lower resolution 8x8 panasonic GridEye part (adafruit AMG8833). Even without the post processing, the power consumption (4 mA typical ** 3 volt = 12 mW) was an issue. As one one expect, the higher resolution Melexis part is even "hotter" -- something like 60 mW @Vivian Shen how did you evaluate the performance (accuracy) of MLX90640 solution?
@Bob Zak actually sorry I think it actually may have been the grideye.
@Sam Kelly Just found a newer IR sensor coupled with an ULP AI inference chip. See: https://greenwaves-technologies.com/thermal-ir-based-gappoc-b-board-for-people-detection-and-counting/ Development board includes 80x80 IR sensor. Unfortunately, I still think this about 10x the power it needs to be (when operated continously, vs. every 10's of seconds in human counting application). I am making slow progress on an AI inference backend for the standard two (or 4 element) PIR sensor aimed at reducing number of missed animals. Taking a long time to put together a methodology and tools to generate training data and compare to current state of art (which does seem to be improving)
Thanks for the add @Sara Beery!
Excited to be part of the community. We are a multifield STEM team from The University of Hong Kong working on a marine camtrap with autosorting
https://openoceancam.com/software/
https://openoceancam.com/hardware/
Would love to learn from you all and collaborate! Letโs save the world :iloveyouhandsign:
thanks for sharing this! very cool hardware/software combination you have going on here. i have shared it with our team at wild me ... we work with lamave via whaleshark.org and mantamatcher.org, etc.
@Jon Van Oast awesome! Weโve deployed a cam with LAMAVE in the Bohol Strait and are cooking up more deployment plans with Alessandro.
Actually, it would if OOCAM Founder Sidhant and I could jump on the phone with you to chat hardware. We want to know what people with wealth of field experience like you are currently using!
+852 94413850 Whatsapp
mike@mikecee.solutions email ๐
Hi everyone, I am about to start training several new models to classify our camera trap data and wanted to run a few questions about some details by the community for input. I am training in Keras and I am using MegaDetector to first crop out individual animals and use the crops to train the species classification model. I use models pre-trained on the ImageNet data and use transfer learning to train on our data. First, I keep the base layers (pre-trained model) frozen and only train the top layers, after a while I unfreeze the whole model and keep training. Here the specific questions:
@Mathias Tobler perhaps the guys at https://medium.com/konvergen might be able to chip in advice. If not, they should be able to put you in touch with someone with practical experience
Regarding how many units to use in your final layer, I think that would depend on how distinctive the 50 classes you have are. e.g. imagine if your dataset had only 2 classes, say automobiles and deer from CIFAR10. Samples from those classes could most likely be condensed down to 2d embeddings for the purpose of classification. The more visually similar/complex the classes, the more features might be needed to distinguish between them. If you're getting good performance with 1024 final-layer features, you could reduce it and see if the test set performance falls (indicating you maybe do want to use a larger dense layer to learn enough features), improves (you might have been overfitting the feature extractor to the train set), or doesn't change?
I've seen really nice results recently with EfficientNet, as to learning rate my go-to starting point is a 2K step warm-up from 0 to my initial learning rate, which is usually best around 0.002 or 0.004, then drop the learning rate by 10x after one-two epochs (I do this manually, once the model appears to have converged at the first learning rate) I don't freeze any part of the network during training, I haven't found it to make a difference.
Then I'll do a bit of a sweep over initial learning rates, going up and down by factors of 2, to make sure that I'm not missing something
Once I've got a good set of parameters for this dataset and a good idea of convergence time, I'll switch to a cosine learning rate which usually will give a bit of a boost.
@Sara Beery thanks for the input! I just saw your comments now, but it's good timing. I finished updating my code to use EfficientNet, started some first training runs yesterday but I am still playing around with learning rates. Will try your suggestions. What optimizer are you using?
Just saw this, sorry!! Adam, usually, but I tend to go with what the original code for that architecture used so sometimes I use SGD. In my experience SGD can be a little more sensitive to hyperparameters.
New camera trap data set on LILA, thanks to Island Conservation. This includes ~65k bounding boxes, and represents island ecosystems we haven't had on LILA before:
http://lila.science/datasets/island-conservation-camera-traps/
That's awesome! Curious which islands? The webpage just says 7 from 6 countries
We obfuscated the specific island names away prior to release at the request of Island Conservation; they are considered sensitive information. If you have a specific project that would benefit from access to one or more of the specific locations, I would contact David Will (his email is on the dataset page).
But it's only the specific islands that were obfuscated; the countries (or regions in some cases) are in the metadata... they are: Ecuador, Chile, Dominican Republic, Puerto Rico, Micronesia, and Palau.
Hey @Dan Morris, do you know whether a location id (not specific lat/lon coordinates need) and datetime are available anywhere? They do not seem to be part of the json file as with other camera trap datasets. I sent an email to David as suggested but asking here as well in case you know
Hey everyone. I'm putting together a comparison table of camera trap software/code that aids with detection and classification. Feedback, corrections and suggestions are appreciated ๐
https://www.notion.so/pgyurov/Solution-Comparison-2eac80825c4941b0b2b5fad3daea1cc3
Hi Peter. You can add wpsWatch (https://wildlifeprotectionsolutions.org/wpswatch/) to the list. It's a web platform for managing connected camera traps and associated data, and it uses Megadetector, a model hosted by silverpond (https://silverpond.com.au/2020/08/14/wps-model-optimization-a-case-study/), and additional AI integrations coming soon. I'd be happy to answer any questions you have about it.
FYI I try to keep this up to date:
http://aka.ms/cameratrapsurvey
Feel free to grab content, and let me know what I'm missing!
@Petar Gyurov just seeing this, seems like a great list. Here's an addition if you're including camera trap videos (also mentioned in Dan's list above): Zamba is the open source python project, ZambaCloud is the web application built on top that handles execution on the cloud. Will be doing a round of additional development in the next six months, e.g. to facilitate retraining
Thanks @Greg Lipstein, I will add it to the list ๐
New camera trap data set on LILA, courtesy of The Nature Conservancy:
http://lila.science/datasets/channel-islands-camera-traps/
Includes lots of bounding boxes!
We are busy training a model for WWF Myanmar, sadly they don't have too much data available, so I'm looking for ways to combine datasets. The main thing that makes Myanmar differentย is that they useย canopy level camera traps, so the angle is different from the datasets we currently have.
Does anyone know if there are CT datasets with humans taken from canopy level? We are mainly focussing on detecting Humans.
@Dan Morris @Siyu Yang I know we talked about canopy data at one point. Are any of the datasets on LILA captured from a similar angle?
Unfortunately no, but the camera angle question may be moot, since I'm not aware of any public datasets with any humans in them at all. :(
Version 0.0.1 of MegaDetector GUI is out ๐
A tool to help you quickly sort through empty/not-empty camera trap images.
(Not officially affiliated with Microsoft/CameraTraps -- this is an open source project based on their work)
Hi all, ๐ @Sara Beery do you know if there are intentions to pass megadetector to tf 2x? if yes, do you know when? I was trying to do that with keras, but it is a bit trickyโฆ
I'd like it to happen too! I'll bring it up with Dan and Siyu ๐
Yes, we are working on MegaDetector version 5 now, and with extremely high probability, it will be based on TF2. Still a few months out, though; lots of training data to curate before we get to the model-training part. But moving along!
I confess that I parsed "tf 2x" in your question as "TF 2.x", when now I realize that I think you intended it as "TFX in TF2.x". On that I have no comment, since I just learned from this thread that TFX is a thing. :)
I also thought you meant tf 2.x, which is what I meant ๐
yes, I meant tf 2.x sorry for the confusion :)
(Also in case this applies, people tell us that you can load the model in a TF2 environment by using the compatibility package in the import statements - see this issue tensorflow-gpu version ยท Issue #246 ยท microsoft/CameraTraps (github.com) )
Hi, just one word to mention that we (here in CNRS France, with @Noa Rigoudy) would be very happy to test MegaDetector version 5 when it will be available. Super usefull work @Dan Morris @Sara Beery @Siyu Yang If we can help...
Hi all! I was looking over the WCS dataset on lila.science (http://lila.science/datasets/wcscameratraps) and I was wondering where the recommended train/val/test splits are coming from. In particular, I'm seeing many camera trap locations not included in any of the 3 splits (e.g. "334", "1211"), but which appear in the annotations. I understand the human images were removed, but those locations are also associated with non-human images. Any idea why the recommended splits don't include all locations? (@Dan Morris? @Sara Beery?) Thanks!
That was a long time ago, so I don't remember specifically, but I can tell you the most common reason this happens in general, and it's because the only species that occur at those locations have so few occurrences at other locations that meaningful classifier training and/or validation would be impossible for those species. Does that compute here? Are these locations with either very few images or bespoke species?
Not really. I think some locations could be considered as having few images (if ~100 images counts as "few"), but most have thousands and for quite frequent species. Take for example this missing location:
"4334": {
"human": 1226,
"motorcycle": 40,
"meleagris ocellata": 180,
"leopardus pardalis": 100,
"empty": 95,
"procyon lotor": 590,
"odocoileus virginianus": 80,
"didelphis sp": 370,
"dasyprocta punctata": 170,
"urocyon cinereoargenteus": 170,
"unknown": 40,
"claravis pretiosa": 30,
"agouti paca": 119,
"leptotila plumbeiceps": 10,
"equus ferus": 10,
"puma yagoroundi": 20,
"panthera onca": 10,
"crax rubra": 10,
"dasypus novemcinctus": 20
},
Out of these 19 classes, 16 are from top 100 in WCS, i.e. classes with at least 800 images in the entire dataset.
I'm attaching a file with more (but not all) missing locations from "recommended train/val/test splits".
@Dan Morris I didn't make the recommended splits for these so I'm not sure, but one possibility is that more data was added to the dataset later on and the split wasn't changed?
The WCS dataset was not updated anything other than minor bug fixes... Stefan, I'm sorry to say this one might just remain a mystery. Did you happen to compute the total number of images that are excluded from the splits? If it's <10%, I recommend we add all the missing locations to "train" and call it a day. If it's more substantial, we might consider a v2 of the splits (leaving the old one available as well); to my knowledge no one has published using the existing splits. Sorry we don't have a clear answer here!
FWIW since we posted those splits, I've become a little less enthusiastic about including a "test" split in public splits like this; the concept of "test" doesn't really make sense when everything is public, or at the very least is a little misleading. So maybe it's a blessing in disguise if we decide to re-split into just train/val.
According to my calculations, the proportion of images excluded from the splits is around 35%. That being said I wasn't planning on relying on the recommended splits anyway. I was just investigating the data a bit. :-)
New data set on LILA, with ~1.5M images from Idaho, courtesy of the Idaho Department of Fish and Game:
http://lila.science/datasets/idaho-camera-traps/
If folks are looking to train models that would be immediately useful to an organization that is already using AI tools in their workflow (ergo it would be relatively easy to introduce new models), this data set would be great for training a one-class deer/elk classifier (i.e., separating deer and elk from everything else), and may also be great for training a classifier to recognize snowy/foggy lenses, which present a unique challenge for AI-based workflows, because "no animals present" is different than "the lens was covered in snow so I don't actually know whether there are any animals present".
https://aiforconservation.slack.com/archives/CLWGQ4BJ6/p1636747711072400
Howdy all,
I am currently working on a roadkill prevention project that involves using a trap camera to help collect wildlife activity data. It's purpose is to warn drivers of animal presence detected and simultaneously collect image data for monitoring wildlife activity along road environments in the pursuit of preserving wildlife/human wellbeing. In particular this project is expanding the computer vision side of things through greater species identification power. Via multiple infrared sensors and a radar sensor, the project hopes to detect wildlife presence through changes in the environment heat signatures and depth. Once the sensors have been triggered a NoIR camera snaps a picture of it's field of vision. After the picture has been collected, hopefully capturing wildlife in the process, a offline pre-trained ML model runs to identify the said wildlife. The identified wildlife species as well as metadata are incorporated to be mapped for the purpose of identifying regions of dense wildlife activity as well as possible migration patterns.
This project is looking for suggestions and collaboration due to my limited scope on the implementation of artificial intelligence, I was hoping to receive assistance from the community on improving the machine learning capabilities of this project. More specifically, the project is looking to expand on a larger wildlife species prediction capability ** (1) and identify migration/animal behavior patterns (2). (** If you know or are willing to share a database of wildlife images to help improve this project's machine learning model it would be greatly appreciated! One of the major challenges in helping improve the current wildlife identification model is a lack of available images in model training.)
If there are individuals willing to, I would love to discuss more deeply the methods used or other ideas on how to improve on the project's limitations.
Thanks in advance for your time - Alan
Megadetector (https://github.com/microsoft/CameraTraps/blob/master/megadetector.md) is great for identifying animals in camera traps. There have been WILDLABS tech tutors episodes on this as well by @Siyu Yang & @Sara Beery - here & here. Also look on LILA BC (https://lila.science/), tons of datasets. Also might be worth talking to the folks at Wildlife Insights if you havenโt already (https://www.wildlifeinsights.org/). You can also check out the Conservation Tech Directory (https://conservationtech.directory/) and filter by camera trap to see projects in the space.
You might also want to post to the community forum on WILDLABS - https://www.wildlabs.net/community. Itโs a really amazing online platform for conservation tech. And one of the forum groups is for camera traps.
Hi all- Does anyone have camera trap data of honeybees or bumblebees I can use for an undergraduate capstone student project? I have a NSF called Big-Bee where we are creating 3D images of many bees (http://big-bee.net) and I would like to test the use of these images for training ML models for bee detection. Thanks in advance for your consideration!
All of the images will be available online in the next 6 months under CC license at https://library.big-bee.net/portal. Here are some prototypes (https://ucsb.box.com/s/m0bzpme4xhg0stbx99e6a5kkjcgf85sn)
Not camera trap data, but this work comes to mind:
https://github.com/vladan-stojnic/Detection-of-Small-Flying-Objects-in-UAV-Videos
Also not camera trap data, but close to what you're asking about, and labeled with pretty rich annotations:
https://lila.science/datasets/boxes-on-bees-and-pollen
New camera trap data set on LILA, helping to broaden LILAโs coverage of rainforest ecosystems:
https://lila.science/datasets/swg-camera-traps
Around 2M images in total, including around 100k bounding boxes. Thanks to the Saola Working Group for providing this data!
Longtime lurker, first time poster here! We've recently released a pre-print assessing the efficacy and efficiency of using MegaDetector to classify an out-of-sample dataset, specifically with a large number of human images. The performance was quite impressive, and we figure the results may be of interest to some folks here: https://www.biorxiv.org/content/10.1101/2022.01.14.476404v2
Not exactly a new dataset, but we just added over 300k bounding boxes (up from ~50k to ~375k) to the WCS Camera Traps data set on LILA:
https://lila.science/datasets/wcscameratraps
Hi everyone! I'm working on a project to improve wildlife habitat in multifunctional landscapes in the Colombian Orinoquia. We are using camera traps and acoustic monitoring, which drove my interest in AI, as we are getting tons of data. I wanted to share our new review of AI-powered platforms -- Wildlife Insights, MegaDetector, MLWIC2 and Conservation AI -- for processing camera trap data (shoutout to coauthor @Mikey Tabak and reviewer @Dan Morris). Along with the paper, we released our data in LILA (~100K images; ) and published a GitBook that illustrates the use of these platforms and provides R code for evaluating model performance. We hope this will be useful for camera trappers interested in using AI!
This paper is awesome. It's so useful to see a case study of what the different platforms and models translate to in terms of practical use!!
^Totally agree!!! Very cool paper
@Juliana Velez i'm forwarding this to my friend/colleague Juan Parra at Antoquia who is also doing biodiversity surveys, but I think in eastern colombia.
Also a word of enthusiasm for this data set: if someone is looking for a dataset to demonstrate that there's a ceiling on the recall we can achieve without looking at sequence information, this is a perfect dataset. I looked at all the MegaDetector misses on the whole dataset, and they are more or less the same cases where a human can't see the images in an individual image either: you have to see the fuzzy blob moving behind the bushes. I also think that a sequence-based system doesn't have to "beat" an image-based system to be super-useful for cases like this, it could complement it to improve overall recall. So I'll buy anyone a granola bar who can run something like Sara's Context R-CNN work against this dataset and find a bunch of little fuzzy moving blobs that MegaDetector misses, even if the precision you need to get to that recall is a lot lower, and even if the sequence-based system misses a bunch of non-moving things that you can see perfectly well in single images.
Hello everybody,
What a wonderful idea to create a community for AI-savvy ecologists! @Dan Morris, thanks for adding me. My name is Peter and Iโm a wildlife ecologist from The Netherlands with a special interest in machine learning. While practicing my python I created a simple GUI for the MegaDetector model plus some extra features. I called it EcoAssist and plan to keep it up-to-date. You can download it here: https://github.com/PetervanLunteren/EcoAssist
Features:
Happy to announce iWildCam 2022, our 5th annual camera trap challenge, focused on helping ecologists monitor biodiversity. Join the Kaggle competition and help us count individual animals across sequences of images.
https://www.kaggle.com/c/iwildcam2022-fgvc9
[Competition co-organized with @Sara Beery & @John Beuving, with valuable support from @Dan Morris.]
I did my first update in about a zillion years to my "list of ML for camera trap stuff":
https://agentmorris.github.io/camera-trap-ml-survey/
In particular I hadn't added any papers since late 2020, so shout-outs to lots of new papers:
https://agentmorris.github.io/camera-trap-ml-survey/#camera-trap-ml-papers
Drop me a line if I'm missing things and/or if my short summaries badly misrepresented anyone's work.
Hi everybody, there follows a belated self-promotion that I think is relevant for the channel:
Last year we published a paper on self-supervised learning for camera traps species classification on the International Conference on Computer Vision (https://openaccess.thecvf.com/content/ICCV2021/papers/Pantazis_Focus_on_the_Positives_S[โฆ]d_Learning_for_Biodiversity_Monitoring_ICCV_2021_paper.pdf). Among others, we showed that:
i) self-supervised learning on the same-domain is more effective than transfer learning esp. when not lots of labels are available,
ii) exploiting context information during self-supervised learning, such as location/time which is basically always available can further boost performance,
iii) findings were consistent across 4 camera trap datasets.
There is also a short video https://www.youtube.com/watch?v=MRQ26QNGJS4&t=3s available if you wanna learn more and a github repository https://github.com/omipan/camera_traps_self_supervised/ in place If you would like to use our code.
Excited to announce the release of MegaDetectors (not a typo) v5! Check out the full release notes here:
https://github.com/microsoft/CameraTraps/releases/tag/v5.0
Thanks to some of the folks on this channel who did some pre-release testing for us.
Let us know what your experiences are with both the instructions and the model(s)... we think it's a major improvement over MDv4, but we're cautious about being too confident until the community (that's you ๐) has had a chance to weigh in. So, please weigh in!
@Siyu Yang @Saul Greenberg
Awesome! Would it be possible to get a quantized model so I could run this on a raspberry pi? Or is that a totally bonkers idea? ๐
MDv5 was exported at the end of training using the standard Yolov5 export process, which quantizes to FP16. Depending on how many triggers you typically get (e.g. per minute) on your camera, it's definitely plausible that this will run fine on a Pi device. A few folks even did this with MDv4, which was much heavier. So if you're up for it, give it a try and let us know what happens in terms of processing times. You may be able to run the full .pt file, but Yolov5 also supports exporting to TFLite, and then you might follow a tutorial like this one to run the TFLite model on your device:
https://www.codeproject.com/Articles/5293079/Deploying-YOLOv5-Model-on-Raspberry-Pi-with-Coral
All of that said, MDv5 - just like MDv4 - is trained to favor accuracy over speed and is not designed for embedded systems, so really what we recommend for embedded environments is using MD as an oracle, i.e. to generate bounding boxes on unlabeled images that match the ecosystem where you'll be deploying your embedded device, and using those boxes to train whatever detector best matches your resource constraints.
@Dan Morris Just a word to say that I tested MDv5 on very hard cases (those that MDv4 was enable to handle) and big success ! I'm actually enable to find cases in my big database were MDv5 is failing... Congrats
@Vincent Miele CNRS... that's great! We're always curious about these cases, so if you are able to share a description of the kinds of images where MDv5 does better, or a couple representative images (either here or by email to cameratraps@lila.science), that would satiate my curiosity. ๐ But in any case, glad to see that you saw improvement!
Sure, I'll do that asap. We stay in touch
I finally got around to mapping all of the categories for all of the camera trap datasets on LILA to a common taxonomy, more information here:
https://lila.science/taxonomy-mapping-for-camera-trap-data-sets/
The goal is to make it easier to train models that span multiple datasets. Lots of subjective decisions were involved, so, taxonomy experts, please send me bug fixes.
Also along the way I got to browse a zillion versions of this page, basically used to make sure that total nonsense didn't happen, e.g., that birds didn't get mapped to fish, or African species didn't end up in Idaho:
https://lila.science/public/taxonomy-preview/
Let me know if anything looks suspicious!
Very cool. Do you know if this maps directly to the taxonomy used on iNat?
Yes, the mapping is to the most recent version (at least as of last week) of the iNat taxonomy.
Hi all, as most of you are probably aware, a new version of MegaDetector was released recently. Since TrapTagger uses MegaDetector as our animal-detector, we have now integrated it into the platform, and did a bit of a benchmarking exercise on one our reference datasets (from Botswana) to see how it fared against both the previous version, and a human annotator. For those that are interested, this was all compiled into a short report that we have published on our website here.
A summary of our findings is as follows:
May I ask how you implemented the inference on AWS? I am currently trying to optimize MegaDetector v5 for embedded devices (and ease of deployment) using yolort (see https://github.com/timmh/MegaDetectorLite), that's why I'm interested
Unfortunately, I'm not entirely sure what information to give you since I think most of it won't be relevent to implementation on embedded devices. The best option would probably be to actually dig around in our implementation on our repository:
https://github.com/WildEyeConservation/TrapTagger
We run inference on a number of temporary workers that consist of GPU-equipped AWS EC2 servers. They run what's in the megadetectorworker folder - essentially a launch script that kicks off a docker container that runs inference based in the functions in megaDetector.py (which in turn just pulls functions directly from MegaDetector). I haven't gotten around to really trying to optimise anything too heavily.
Let me know if you'd like me to expand on anything.
Sorry for being imprecise, I was primarily interested in the implementation you used and whether you performed any quantization. Thank you for clarifying!
Hi all, I would just like to inform you that I have re-issued the above report - I have since identified errors in my results caused by some config not being shared with all of the servers in my processing pool which resulted in them still using MDV5a when they should have been using MDv5b. The findings remain mostly the same, except that MDv5b actually out-performs MDv5a on our reference dataset by producing fewer false detections for the same recall rate (MDv5b seems to favour a slightly lower threshold in comparison to MDv5a). As such, we will be switching over to MDv5b with a threshold of 0.1 going forward. However, it must be noted that we are really getting into the weeds here - the differences between the two models is pretty minor and the switch over results in an increase in animal-containing-image recall from 99.30% to 99.37%, where the difference is almost entirely down to challenging, low quality images with arguably little value.
The revised report can be found here.
Hi all! Is anyone working on camera trapping projects capturing video in the Northeastern US? Weโre looking to expand our Zamba Cloud out-of-the-box models geographically and wanted to talk to folks working on those in that region. If you know of any particular projects with video, let me know.
WILDLABS may also be a good place to post ๐
Hi, I've been reviewing the current state of existing platforms and tools for analysing camera trap data (annotating, analysing, classifying etc). I've come across the current plethora of available tools. I have been trying to find the "perfect" platform/tool for my current project which would ideally satisfy the following criteria:
Maybe AIDE? @Benjamin Kellenberger
Though AIDE has some internal model training functionality that you wouldn't need
Not OSS AFAIK, but I think meets your other requirements:
https://www.wildid.app/
@Sara Beery I don't know how I didn't find AIDE in my search. On my way to try it out, thanks!
@Dan Morris Thanks as well!
I'm always hawking it here, but you should check put VIAME. One of my colleagues supports NOAA fisheries with almost this exact same workflow. It's completely FOSS, we're just always looking for new users and use cases. Happy to put you in contact with lead
https://github.com/VIAME/VIAME
@Daniel Davila This tool is amazing, it might be my silver bullet!
Hi Valentin, seems like https://github.com/PetervanLunteren/EcoAssist might also suit your needs.
@Peter van Lunteren This looks great, I'd be happy to be a test user for Linux
Thanks for spending time to review all of the projects out there! We are working on an app for reviewing images from light-based moth traps. But it would be ideal to not reinvent the wheel. Here are a couple other relevant open source desktop apps I have come across. These don't have integrated ML (yet), but have more mature graphical interfaces for reviewing and annotating -- which I find to be the more time consuming part to develop.
Timelapse Image Analyzer
https://saul.cpsc.ucalgary.ca/timelapse/
Naturtag
https://github.com/pyinat/naturtag
The MegaDector readme has a longer list of web-based platforms here as well:
https://github.com/microsoft/CameraTraps/blob/main/megadetector.md#is-there-a-gui
If we relax the constraint of editing bounding boxes and ask the more general question "what tools do people use to review camera trap images?", I try to keep updated lists of ML-accelerated tools:
https://agentmorris.github.io/camera-trap-ml-survey/#camera-trap-platforms-using-ml-or-at-least-thinking-about-ml
...and non-ML-accelerated tools:
https://agentmorris.github.io/camera-trap-ml-survey/#manual-labeling-tools-people-use-for-camera-traps
@Michael Bunsen Timelapse has the drawback of not working on Linux AFAIK. Didnt know about Naturtag, thanks!
And as always thanks @Dan Morris for curating this amazing page. It was indeed my starting point in my search.
After reading this thread, I made a very half-hearted effort to run Timelapse on Linux via WINE. I think I got... 70% of the way there? I saw an actual functioning Timelapse window, but then got a stream of incomprehensible .net errors, which seems to be par for the course if you don't know WINE, which I don't. But Timelapse is just a well-behaved .net application, and Photoshop runs in WINE, so I know there's a way. If there are any WINE experts lurking on this Slack and looking for a project...
Thanks for giving that a try @Dan Morris! The Wine HQ forum still looks active if you want to give that a try. Otherwise I'd like to get to know Timelapse better, the features that folks like, and then contribute to porting those to another cross-platform app.
@Dan Morris I was wondering, Is there a step-by-step guide on how to deploy the Megadetector batch API on a virtual machine? The readme of the batch API assumes a little more knowledge than I have
@Valentin Lucet No, sorry, there's not a step-by-step guide. We never documented it to the degree that we document the standard script-based approach to running MD, since it was meant for a relatively small number of deployments that were either internal to Microsoft or internal to collaborators working closely with us (when Siyu and I were at Microsoft).
But... more often than not, the batch API is overkill, and any time you spin up lots of GPUs, you are taking on a high risk of accidental overspend, and you have to really be on top of things to make sure you're not firing off dozens of expensive jobs left and right... what do you anticipate your daily image load will be? If you're not turning around tens of millions of images per day, it's likely far easier to do everything on a single VM, which will get you close to 1M images per day with MDv5 (assuming a V100 GPU). That's a lot of images!
It's also very Azure-specific (unlike the real-time API, which is quite generic)... are you working on Azure?
@Dan Morris Oh np, yes it would definitely be an overkill, I see I misjudged the use case. We have an initial need to process 2-3TB of images before the end of the year.
I was starting to consider the implications of using Azure for our project... But what would be much easier for us would be run MD on a Linux VM of the type described here (with vGPUs).
Indeed, IMO that falls into the category of "more than you want to do on a laptop without a GPU, but easy to churn through on a single machine anywhere you can get a decent GPU". If you're on Azure, assuming that's around 2M-3M images, that's probably ~3-4 days on a V100 GPU.
Hi @Valentin Lucet, I'm curious if VIAME or any of the software you discovered ended up working for.
@Michael Bunsen we went with Label Studio and overall it's going okay but I'm not sure I would recommend it. It seemed the best for our use case (CVAT looks good too but I had lots of issues setting this one up) but I dont think its great. I dont believe there is a solution that tick all thoses boxes and is also not too complicated to set up.
Thanks for the update @Valentin Lucet! I may give Label Studio a try and customize it for our use case. I like the tech stack they are using. Which aspects is it missing?
Hi, we are interested in camera traps for monitoring plant-insect interactions.
Is anybody else here doing this and what hardware & pipelines do you use? We plan to order such equipment for the next season.
We need a camera trap capable of having a sensitive trigger for insects (small object detection on cluttered/noisy backgrounds). Otherwise, we produce terabytes of images with no insect which comes with a lot of logistic challenges (data storage, transfer, handling, annotating, etc).
Also, to get a decent image of a pollinator so that we can identify it to the lowest taxa level possible, more important than image resolution is to have a good optical zoom or get closer to the flowers with the camera which we noticed that can scare some insects.
Can endure outdoor conditions under direct sun and scorching temperatures (maybe this can be solved with special casing, coolers, heat sinks, etc).
Can be moved easily from flower to flower in the field and has a low energy consumption.
Offers visual feedback when mounting it on top of a flower so that we can focus it properly on the target flower.
We explored with affordable mobile phones so far and got decent images and we currently test YOLOv5 & v7 on the annotated dataset. However the phones have their limitations, especially when used for long hours under direct sun.
Not sure if edge detection would work at the moment due to the higher demand on computational power and on energy consumption (which increases easily the costs and some nano GPUs are mostly out of stock anyways). Plus I do not have currently the skills to assemble one, though I yet have to try ๐ . However, possibly there is hardware out there to satisfy all these constraints and I would like to find out more.
To spark a conversation about this, here are some fascinating papers that propose camera systems for monitoring plant-insect interactions:
- Droissart 2021 - PICT: A low-cost, modular, open-source camera trap system to study plantโinsect https://besjournals.onlinelibrary.wiley.com/doi/pdf/10.1111/2041-210X.13618
- Ratnayake, M. N., Dyer, A. G., & Dorin, A. (2021). Tracking individual honeybees among wildflower clusters with computer vision-facilitated pollinator monitoring. Plos One, 16(2), e0239504.
- Bjerge, K., Mann, H. M. R., & Hรธye, T. T. (2022). Realโtime insect tracking and monitoring with computer vision and deep learning. Remote Sensing in Ecology and Conservation, 8(3), 315โ327. https://doi.org/10.1002/rse2.245
-Naqvi 2022 - Camera traps are an effective tool for monitoring insectโplant interactions https://onlinelibrary.wiley.com/doi/pdf/10.1002/ece3.8962
Hi Valentin, thanks for sparking the conversation. I am working on an insect monitoring project, partly in collaboration with Kim Bjerge from the 2nd paper you cited. Our current project is focused on machine learning for moth monitoring using images captured by the Easy RIDER system. I see you already found our discussion thread on Wildlabs!
https://wildlabs.net/groups/autonomous-camera-traps-insects
Thank you for finding those other recent papers. I am curious to know more details about your mobile phone setup. I am experimenting with my own versions of that for all pollinators as well. Did you write a custom app for running YOLO on a phone? How may frames per second roughly are you able to process?
Hi @Michael Bunsen, we do not run any edge AI on the phones. They just act as a camera and try to capture one image every second. You can imagine that this produces a lot of images without insects. Therefore, I am curious if someone has developed already some affordable custom camera system that we could use. I also tried to attach some more powerful lenses to the phones to gain optical zoom, but the tests were not that successful, though there is potential. The biggest issue is to have a trigger sensitive to small objects like insects landing on the target flower and can run without the need of a nano GPU (which are almost impossible to order at the moment).
I told @Malika Nisal Ratnayake about this slack, I think he's in the main channel. He may have some thoughts.
@Sachith Seneviratne, thank you very much. These days both I and @Valentin ศtefan are working together on this problem (image capturing and species classification) at iDiv.
Ah I see, wasn't aware, just saw your name on the first message ๐
Thanks for describing what you have tried @Valentin ศtefan. I think finding the right camera and/or lens will be a good collective challenge. We have the camera pointed at a flat insect sheet and the motion detection works okay for that (although still produces more images than needed). When pointed at pollinator plants the motion picks up spiders (and lots of wind movement!) but doesn't get triggered on most insects. Close focus is a an issue too.
I guess natural flower backgrounds, with wind movements, insects that do not trigger usual IR sensors of wildlife camera traps, insects that are generally tiny and also can vary a lot in dimensions (think of small pollinator flies vs large butterflies) gather to form a complex challenge. Also what works in the arctic conditions where flowers are small and in patches, doesn't work well in temperate regions (imagine a grassland with diverse flowers, of diverse heights and dimensions, especially towards eastern Europe). This year we had plants of almost 2 m height and the flowers were on top. We had to fix the phones on high tripods fixed on some boxes ๐
Hi!
I look after an open-sourced AI camera trap project based on Raspberry Pi. We call it DynAikonTrap: https://dynaikon.com/trap/
We use a motion trigger based on the vectors created from H264 encoding, suitable for small and fast-moving things without the use of PIR. An insect CNN model could also be easily trained and fit into our detection pipelines. I'm very interested to try out DynAikonTrap for insect detection. Give me an email if you'd like to collab: ross.gardiner@dynaikon.com
We also have one published paper and two masters theses outlining details of our design: https://dynaikon.com/trap-docs/about.html
Hey all!! I'm looking for images where MDv5 fails (requested by a friend who is teaching a course and wants to show failure cases)
If you have any, can you send them in this thread?
I've mentioned the egregious, bizarre Snapshot Serengeti failures:
https://github.com/ultralytics/yolov5/issues/9294
This is closer to a singularity than an out-of-domain issue. Basically this is what MDv5 does when you run it in the Upside-Down. And some cameras from early seasons of Snapshot Serengeti appear to be the Upside-Down. Still a good example, if the general theme is "machine learning can be unpredictable, so always verify on your own data".
Other than Snapshot Serengeti, 99% of failures I've seen fall into more expected, edge-of-the-supported-domain categories:
might be a silly question, but are MDv5 (?) and MD5 (the hashing algorithm) the same thing?
also, love the Upside-Down reference ๐
Sorry, MDv5 refers to MegaDetector version 5:
https://github.com/microsoft/CameraTraps/releases/tag/v5.0
Hi Sara, I do have some nice examples of where MDv5 fails. I am just awaiting permission from the data owners.
@Sara Beery are you looking for false positives or false negatives? Can probably find some false positives.
@Sara Beery I don't know if that counts.. but just came across this on twitter https://twitter.com/matbourbonnais/status/1574870630746722304?t=fJCFHtekIQ5pFGphgl97yA&s=19
@Sara Beery Here you go. A selection of false positives. Wonder what confidence people use. I found that with MDv5 one has to go pretty low to avoid false negatives, 0.1 or 0.2. I would rather have a small percentage of FP than having FN, which would require sorting through 100s of thousands of empty images. https://1drv.ms/u/s!Amz2mMAWHLF_5QDqzSppU0CYd37d?e=YVocmC
Good point, I realize that I don't even think of "false positives" as "failure", but there is definitely a false positive rate that can reasonably be called a "failure". I don't see that a lot, but I'm still running MDv5 on all of LILA, and I think there is at least one Snapshot Safari camera that "fails" by this metric.
Hoping to release those results in a few weeks.
Does it "fail" if you use that simple box-location-based filtering as a postprocessing step?
I don't have exact number, but we see FP rates of 1-2%, which means several 1000 images that need to be manually changed to Empty. Not a bit deal given that there are 100s of thousands of TN. We had some datasets from Kenya where MD (v4 at the time) regularly picked up rocks as animals in some cameras, that was an issue. We will check those again with MDv5.
@Sara Beery We have not implemented box location based filtering, but in the examples I sent you the box is no always consistent. Might need to look at box location filtering again at some point.
FWIW I would consider a FP rate of 1-2% a wild success. ๐. I.e., if you see much less than that, IMO you may be cutting it too close, assuming essentially zero tolerance for FNs.
@Sara Beery for this particular Snapshot Safari camera that I'm referring to, yes, I'm about 99% sure that the typical repeat detection elimination procedure would clean this up without issue. @Mathias Tobler when we do this, we don't require boxes to overlap exactly, but we set a pretty high IoU threshold to consider two boxes the same:
https://github.com/microsoft/CameraTraps/blob/main/api/batch_processing/postprocessing/repeat_detection_elimination/README.md
But it's not perfect, and in particular it can treat sleeping animals as repeat detections, so we always treat it as a very fast but still only semi-automated process.
@Dan Morris I totally agree, 1-2% is a huge success! The performance of MD is amazing! Will take a look at the box post-processing if we find this still to be an issue with MDv5.
@Sara Beery We're using camera traps for research on increased recreational use (people in boats) on rivers in Montana. Camera traps are labor intensive on waterways, as everyone knows, due to reflectance false positives. Our longer term solution is a PIR AI model we use in our own camera traps. In the meantime, we use MD to get rid of empty images. I've noticed that boats get classified as vehicles as an example of a false positive (boxed version is mdv5). Not a big deal for us, but an example nonetheless.
FYI boats were not part of the "vehicle" class for MDv4, but they are for MDv5, so I would argue that image is a slight false negative (re: the trailing smaller rafts), depending on the threshold you're using.
Good point Dan...I didn't know that boats are now vehicles in MDv5...so I guess the trailer tubes would be a false negative example...thanks for all of your work. On a positive note, lots of true positives from MD and elimination of a ton of empty frames, cattle walking by, and the occasional bird...since we have to run these camera traps in 1 minute time lapse intervals (at 15 locations for 5 months out of the year). Whew! You saved us a lot of time. But I'm still hopeful for our Smart Trigger which will decrease labor significantly.
https://twitter.com/conservationx/status/1575166560922374144?s=20&t=Nk5lOX69MhcpALGRcMMyHg
@Malika Nisal Ratnayake has joined the channel
Hi All! I'm at Conservation X Labs and will be working with Edge Impulse to bring the nature camera to conservationists (alongside several partners). I know I'm not the most active in this community, but super happy to field any questions/comments here or via email sam@conservationxlabs.org!
Some folks have asked whether MD results are available for LILA datasets; they are now:
https://lila.science/megadetector-results-for-camera-trap-datasets/
(For everything except Snapshot Serengeti, which is still pending investigation of the issue discussed elsewhere in this channel.)
Anyone working on Reconyx camera trap with temperature sensors? I can't seen to be able to extract the temperature metadata from images (the EXIF tag dont carry it). Is there another metadata format stored in the images beyond Exif?
I'm about 97% sure this is stored in the EXIF "makernotes" field for Reconyx cameras, as fields called "Ambient Temperature" and "Ambient Temperature Farenheit". exiftool (https://exiftool.org/) knows about lots of binary makernotes fields, so if you run exiftool my_image.jpg, it will print out all those fields as if they were standard EXIF. exiv2, for example, does not have this magical property. Try exiftool and see if that shows you the temperature properties?
If exiftool shows you the temperature values, we have a script to run exiftool on a folder of images and write the results (all available properties) to .json or .csv:
https://github.com/microsoft/CameraTraps/blob/main/data_management/read_exif.py
YMMV, this has been run a total of 1.5 times.
Yup, I get the makernotes in exiftool. Was using the exifread package in python but for some reason it doesn't output many of the tags...
Thanks for your help :)
FYI as I understand it, exifread misses this because "makernotes" is by definition binary gibberish unless you have a library of manufacturer-specific decoders. exiftool is the only thing I've found that does this well, so even when I need to read EXIF data from a million images, I fork a million invocations of exiftool.exe.
Hi All! Today is the GBIF webinar about exploring Camera Trap data from the diversifying the GBIF Data .
Maybe it could be interesting to have your AI expertise involved in this Data Model to publish CT data.
As far as I know, Jรผrgen Niedballa has already suggested the possibility of integrating the AI model/format especially based in COCO Camera Traps format. https://github.com/tdwg/camtrap-dp/issues/203
Do you know if there has been another attempt to integrate the COCO Camera Trap with the Camera Trap Data Package?
Hi all!
I'm totally new to this, but @Dan Morris told me this is the place where new datasets are announced!
We just finished adding the LILA camera trap data to the HuggingFace Hub (the central place where people can share resources), and I'm eager to add other datasets ๐ค
Let me know if there's anything missing that would help make this more usable for y'all! :facewithcowboy_hat:
Hi everyone,
maybe it's time to share some info on our French DeepFaune initiative, co-led with my colleague @Vincent Miele CNRS. Started with an internship by @Noa Rigoudy, we have developed a species recognition model for the French mammalian fauna, to be used on camera-traps pictures (no surprise here...). It might be useful for other Europeans (and possibly beyond to get rid of empty pictures), so please try it out. There is an English version available. You can download a software (windows/linux/mac) that runs the model on the project's website: https://www.deepfaune.cnrs.fr. It works on a standard computer and on images stored locally, so no need to upload your photos on the cloud.
It also allows processing videos, although performance is a bit lower than on pictures. We are working on this. Actually, we are working on many things as @Gaspard Dussert recently joined us for his PhD. I will post here when we get significant updates, new species and so on. Stay tuned! (we have just released a new version that display the classical 'box' on pictures, so I couldn't resist posting a pic ๐
).
Very easy to test our software on your PC (Windows):
1/ download the zip file https://pbil.univ-lyon1.fr/software/download/deepfaune/deepfaune-latest.zip
2/ unzip this file on your Desktop
3/ click on deepfauneGUI.exe
For Linux/Mac, see our gitlab https://plmlab.math.cnrs.fr/deepfaune/software/
We are using MDv5 ( version A), and this has run over 4.5 mn images. The algo filters the output, so that only prediction boxes which have higher than 0.4 probability are taken. However we are noticing that a lot of images with no animal or human species are being identified with high probability.
What could be the reason behind this behaviour?
I'm not familiar with this model, but in general this is usually indicative of a mis configuration. Either your model is not set up correctly, or you may not be preprocessing your imagery correctly and therefore the data you are giving it is out of distribution from how it was trained. Does it give halfway decent results (confidence wise and bbox localization accuracy) when you give it an image with a know positive target?
What is "a lot"? FWIW 0.4 is actually a pretty high threshold for MDv5; we usually use 0.15 or 0.2. So if you're seeing, e.g., 10% false positives, I'm going to talk you into trying to get more false positives. ๐
If you are using the recommended MDv5 inference code, and the false positives are in sensible places on rocks and sticks that maybe kind of look like part of an animal, I would say this is just the cost of doing business with any AI model, and - as I think Michael Jordan said - "if you're not missing, you're not shooting enough" (or maybe he never said that, but he could have). The recommend approach to those false positives is just good-old-fashioned human review, but you can also experiment with automatically or semi-automatically removing detections that occur over and over in the same place on a given camera, a la:
https://github.com/microsoft/CameraTraps/tree/main/api/batch_processing/postprocessing/repeat_detection_elimination
If the false positives are in totally random places in the middle of the sky, something is probably up, and I'm happy to take a look at some of those images.
Blame it on all the animals that are literally trying to look like rocks and sticks.
Hi folks! AI featured in the Variety Hour a lot yesterday so the whole show might be of interest to folks here. But Tom's talk about their work to build a community around camera trapping for insects was a standout - and maybe it'll get some of you as excited about AI applications for insects as the cute and fluffy animals? More here: https://www.youtube.com/watch?v=z7RVU8lsWi8&ab_channel=WILDLABS.NET
Fantastic! Thank you for sharing the recording.
For folks who are using MegaDetector... the repo has moved to a new GitHub organization, so the new URL is:
https://github.com/ecologize/CameraTraps
Everything redirects automatically, so there's no need to change anything right away, but over time, it would be great to get links updated to point to the new URL, especially links that appear in other repos or in public documentation. Thanks!
The Wildlife Insights team is running a survey to learn more about camera trap data management practices, and in particular to understand potential barriers to data sharing, as well as potential barriers to the adoption of AI and cloud-based tools:
https://docs.google.com/forms/d/1DspWERjAc6gDx4hP-pQlwSg6xKj6SMPZ29VTeD15PF4/
Please circulate to your network of collaborators! We recognize that our networks (including, e.g., this Slack channel) are super-duper-biased toward people who are already using AI and the cloud, and love sharing data, so please help us by circulating this link to a diverse set of ecologists.
Thanks!
I don't normally post super-duper-way-into-the-weeds features we add to the MegaDetector code base, but two things I like are (a) neat camera trap pictures and (b) effective but super-duper-inelegant uses of machine learning that would make proper machine learning people sad at the very thought of such ickiness. To that end, something I've been meaning to do for a while... and buckle in, this is waaaaay in the weeds. This is what you were getting into when you signed up for the camera_traps channel, eh?
One of the useful "pro tips" for getting the most out of MegaDetector is using the repeat detection elimination process, which takes advantage of the fact that if an "animal" is detected at exactly the same location in like 100 images, it's almost definitely a rock/stick/etc. But sometimes it's, e.g., a sleeping elk, so we don't automatically remove these, rather, we have a semi-manual process for very quickly reviewing one example from each of those "suspicious detections", and this is so super-fast that you can often get rid of tends of thousands of false detections in just a minute or two.
But one of the risks of doing this is that if there's a detection that happened 100 times, you're seeing the highest-confidence example, but it's possible that one of the 99 you're not seeing is actually an animal that managed to line itself up exactly with that rock, and you would be de facto removing that from your universe. Until now! @Doantam Phan added a new feature that lets us render the same sample image, but with a grid next to it that shows the cropped detection for all of those 100 images, like this:
https://raw.githubusercontent.com/agentmorris/MegaDetector/main/api/batch_processing/postprocessing/images/rde_tiles_all_fps.jpg
...when it's a bush/rock/etc. (which is 99% of the time), or like this:
https://raw.githubusercontent.com/agentmorris/MegaDetector/main/api/batch_processing/postprocessing/images/rde_tiles_sleeping_elk.jpg
...when it's the proverbial (or in this case literal) sleeping elk.
More details here:
https://github.com/agentmorris/MegaDetector/tree/main/api/batch_processing/postprocessing/repeat_detection_elimination#visualizing-t[โฆ]throwing-away
These images are mesmerizing to look at when you're looking at 10,000 in a row. It's hard to describe why they're so mesmerizing, but they are, I swear.
And another random MD-related thing... on a thread on this channel a few weeks ago, someone asked about MD failure cases, i.e. the scenarios that really break MD. I said I had a bunch lined up and would make a page summarizing those, and then I didn't, but it wasn't because I totally flaked, it was because I needed to secure some image permissions. Voila:
https://github.com/agentmorris/MegaDetector/blob/main/megadetector-challenges.md
Basically the failure modes for MD (other than things that are way out of domain, like drone images, or fish) are reptiles, a few other random things, and more reptiles.
thanks so much for this tour of oddities. these edge cases and failure cases are always good for some head scratching.
i am sorta curious about the "moved" annotation cases - i wonder if it is something off in the image metadata. we once saw this where the rotation/orientation metadata (exif or xmp or whatever) was incorrect. (we actually have had a history of huge headaches with orientation! see: phones) ... also, there has been some weird math when the pixel size (or aspect ratio) is funky in the metadata. it would not be all that surprising (depending on which tool you used) if rescaling it simple did away with the questionable metadata, or fixed it in some way.
(though, if these same cameras have produced images that worked fine in other cases, it would be very weird that only some of the exif would be off.)
My first instinct was something about rotation or metadata as well, but I've ruled this out in every way I know how... if I literally screenshot the pixels and save to a new image, the problem persists on these pathological images. Ditto if I convert to .png, or resample from the original size (which is larger than 1280px on the long side) to 1280 px on the long side. It seems to be something about the images themselves, not a metadata issue. This was also a good reminder to check whether Magical New Fixes in more recent versions of YOLOv5 and PyTorch have fixed this, but alas, no luck. (The official MD release doesn't support newer versions of PyTorch, but I did that test using the strategy discussed here, using PyTorch 2.0+ and a current YOLOv5).
The only good news is that in running MegaDetector on literally around 300M images, I have never seen this issue on any other dataset. The closest analogy I can think of is the examples we see in talks about adversarial attacks where imperceptible pixel changes create radical changes in output; these images seem to have the perfect adversarial attack for YOLOv5.
I'm working on classification for reptile camera traps and am new to this slack. I have not played with megadector yet, but would love to connect!
@Toryn Schafer, what reptiles are you studying? Specifically, where do your reptiles land along the axis of "big things you can easily see them in camera trap images" to "tiny things that could land on your head and you wouldn't notice". Asking because I'm sort of ambiently curating training data to hypothetically fine-tune MD to work better on reptiles. Tiny geckos are always going to be out of domain for MegaDetector, but, e.g., the tegus I show on that page should be in-domain, we just need training data to fine-tune a little. In theory. Message me if you have a pile of big-reptile pictures you can share!
Naive question: Is there existing work on using ML to detect foggy conditions in camera trap images? (would MegaDetector work well in this case? I'm guessing it wouldn't be great, but maybe someone has tried it?)
There are two questions here... (1) will MD work in foggy conditions? and (2) is there work on detecting foggy conditions?
To (1), there's not a simple answer; I would go with "better than you might think, but fog doesn't help". Overall we haven't seen a significant number of cases where a human could see animals through fog/snow that MD misses. MD has plenty of failure cases that I'm always happy to rant about (I just added a new one to the challenges page, I'll link below!), but this hasn't been a huge issue.
To (2), AFAIK the answer is "no", but this has been something we've been thinking about on the backburner for a long time. The goal would be to count operational days automatically, and generally to differentiate "no animals detected because nothing is there" from "no animals detected because the lens is obscured". My first instinct was that detecting fog/rain/snow (maybe to the degree of "none", "partially obscuring", "totally obscured") might not even require ML, but we weren't able to do this reliably with simple CV heuristics. Idaho F&G provided a snow dataset with rain/snow labels a few years ago, and it was enough to show that our heuristics didn't work, but not really enough to train a model. I just re-started this discussion a few weeks ago with @Mitch Fennell to see if we could assemble a dataset.
If folks have images labeled with rain/fog/snow, and someone wants to take a crack at this, I think it would be a useful and relatively straightforward model! Data is the hard part.
Oh, and I promised a new MD failure case... courtesy of skyislandalliance.org:
https://github.com/agentmorris/MegaDetector/blob/main/megadetector-challenges.md#mega-occlusion-that-humans-are-smart-enough-to-parse-but-ai-is-not
tl;dr: animals are sometimes behind a fence and about 75% obscured by vertical bars, but in a way that human eyes are really good at ignoring.
Thank you Dan, this is really helpful! Agree that simple CV heuristics might be sufficient in this case. I'll check we can share our dataset (though note that it is currently unlabeled...it's also animal-free images of skyline in SF since the camera is trying to document when an air sensor is being disrupted by fog)
@Catherine Breen was doing weather detection models at CV4E last year and might also have additional insight on the obstacles/areas of promise.
At Conservation X Labs, we've been working on a few downstream tasks that tend to depend on image quality. @Dan Morris We also initially tried CV heuristics but didn't have much luck. We spun up a quick web app to annotate image quality but we could always add/modify labels. https://cct-image-annotation.streamlit.app/
@Peter Bermant Very cool! I think I just gave you three annotations. ๐ That's super-relevant, let me know if at some point you are able to share those annotations publicly, I think a lot of folks here would be interested in playing with that dataset.
I think the ideal dataset for image occlusion due to weather probably looks a little different, i.e. I don't think for that dataset there's a need to crop animals, it's more about the gestalt of the image and pretty specific to weather (or other whole-image camera malfunctions). The one animal-related thing that the hypothetical ideal perfect unicorn of a dataset would really need is a decent distribution of animals smushed right up against the camera lens; that is a common phenomenon in places where snow is an issue, and one of the major reasons that simple heuristics weren't enough in the images I was looking at. Grrrr, curious elk.
A few weeks ago we posted to this channel to indicate that we were doing a survey on data management and AI tools for camera trap data... we've summarized the results here:
https://wildlabs.net/discussion/camera-trap-data-management-survey-results
Set your expectations low: there is some interesting stuff there, but mostly what we learned is that despite our best efforts, we failed to find a way to distribute the survey that didn't represent the bias of a bunch of tech-y people sending out a survey. The results indicate a much higher adoption of AI than we believe is realistic (by like 10x), based on our experiences in settings that don't have a tech-y bias (like ecology conferences). So, YMMV, but we think there is some interesting discussing fodder.
Is there already a model zoo of regional image classifier models trained for camera trap image data (and perhaps object detector and other sorts of models, too) collected somewhere? Folks here at the Conservation Technology Lab at SDZWA have a few and will continue to make more and a) we want to share them and b) want to put them in the place folks are the most likely to find them.
Good question... I'm not aware of anything... model zoos are hard! Everyone's environment is different, even the structure of what's being classified is fundamentally different across classifiers (images, crops, sequences, videos), so it's hard to have something super-standard. Plus I think a slight majority of regional classifiers that exist are available as part of a platform, but not for direct download, and therefore are not quite model-zoo-compatible.
But (a) I'd love to try your classifiers, please share links! and (b) I do keep a list of repos in this area, which I think is almost a superset of a hypothetical list of models one could include in a hypothetical model zoo:
https://agentmorris.github.io/camera-trap-ml-survey/#oss-repos-about-ml-for-camera-traps
It wouldn't be too much work to click through those and see which repos include model weights, then either create a separate list or just add an "includes models" tag to that list.
Thanks! Yeah, the variation in everyone's systems does make it tough to serve drop-in models. But having some kind of place to share models where folks know to look for them seems worthwhile...and then maybe in a backwards way find the system that they were designed for. Maybe that would more aptly be described as a "model wilderness" ๐
The list you have put together is pretty great.
We'll figure out where to put our models in the short-term and we'll share links so that you can have a look.
Did you just invent "model wilderness"? That's good. I'm going to steal that.
That's a great resource Dan, thanks for putting that together. As for the usefulness of a "model zoo", I would assume that most people who work on camera trap image classification still train standard image classifiers either on cropped (usually with MegaDetector) or non-cropped images. If those are based on the standard models (Resnet, ImageNet, EfficientNet etc.) then they could be integrated into different frameworks pretty easily. So having a "model zoo" might actually encourage people to somewhat standardize their tools, share models and make them more accessible to practitioners. Maybe?
@Ian Ingram, I believe Conservation X Labs are working on a model zoo of sorts. The aim in mainly for models compatible with their Sentinel smart cameras, but perhaps for general download as well. @Henrik Cox (Sentinel)?
I am also interested in object detectors and species classifiers for BearID Project. Currently we assume images contain only bears. Eventually we will need to add a detector and/or classifier before hand. We are mainly focused on brown bears in western Canada and Alaska, but are also looking into other bears species like Andean bears.
Thanks @Ed Miller, hi @Ian Ingram, yes we're working on a model marketplace as part of the Sentinel system we're building out to have pre-trained models ready for download, and also as a hub for third party models to be hosted. Right now it's in MVP and only found on the Model Marketplace page if you have an account on our dashboard: mysentinel.info, so there's a lot of work we need to do to populate the zoo with more of our own models. But we do want to make this it's own platform (no need to log into a dashboard) once we've done a few more major deployments of Sentinel hardware devices.
As for hosting third party models, it's able to do that now - we're currently hosting MegaDetector v5a and v5b on there as a proof of concept to it.
MBARI recently started putting their detectors and models for ocean life on Hugging Face. I am considering doing the same! It is becoming a familiar home and interface for practitioners on the ML implementation side of things https://huggingface.co/FathomNet
And you get a free basic page for inference! which is very helpful to get a quick idea of a model's performance on your own images.
https://huggingface.co/spaces/FathomNet/MBARI_Monterey_Bay_Benthic
Hi all,
Iโm curious if anyone has ever experimented with detecting amphibians (mostly toads) in camera trap images using MegaDetector? We have a dataset captured using timed images from amphibian crossing structures (tunnels), and are interested to hear if anyone else has tried this, and if so how the model performed out of the box?
Even if they're large enough to be in the size range of what MegaDetector can do, it's definitely hit or miss for both reptiles and amphibians. They're so infrequently studied with camera traps that they're significantly under-represented in MD's training data, so... hit or miss. See:
https://github.com/agentmorris/MegaDetector/blob/main/megadetector-challenges.md#reptiles-and-other-under-represented-species
I should say that sometimes it totally just works, and lots of users have used MD for reptile or amphibian studies. But I'd say for whatever "good enough to be useful" is, if someone really cares about reptiles or amphibians, MD is "good enough" maybe 50% of the time. So we try to make sure to really thoroughly review results on some unlabeled data before recommending that someone should use MD for those use cases.
But this is something I've been really trying to improve lately, not by fixing MD per se, but by making it pretty efficient to train bespoke one-off fine-tuned versions of MD. Do you have a labeled dataset (not boxes, presumably, just image-level labels) with amphibians from your ecosystem? If so, around how many examples do you think you have? And how big are your amphibians?
As Dan suggested you can run MDv5 on some sample images, just to see if it identifies the amphibians in it.
Try running other detectors like Yolov5 or higher versions to see if they can help.
In case you have an annotated dataset. Here is a list of open-source tools, in case you wish to annotate the dataset.
I have a team working on classification of timed images for snakes. We went away from megadetector and are training our own model. We are still in preliminary stages, but are trying to characterize the potential for a CNN in the backend to reduce human workload
Thanks for the info all! @Dan Morris weโre actually still waiting to receive the data, and will be doing some initial testing/playing around once we have it in hand. Iโll shoot you a message to let you know how it works, as well as a couple of sample images. We donโt have anything labelled at this point, but might be interested in training up something bespoke after data is processed from this year!
Hi @Valentin ศtefan, sorry for the late reply! For some reason it didn't notify me of this message.... But to answer your question, no I haven't tried the SAM method. I did try to incorporate Facebook's segment anything model to the automated camera trap classification pipeline (localise, crop, segment, remove background, stretch to fill square, classify), but that didn't yield very promising results because the SAM model wan't very good in segmenting blurry, black-black-and-white camera trap animals... But if you help the model find the object of interest it's actually pretty good.
@Sara Beery @Dan Morris Perfect, thanks for the papers and insights! Yes, I'm working with MD crops. I'm asking for a project where I need to classify Vuples cana and Canis aureus, amongst others. I could of course take related species from LILA BC to train on, but the thing is that for the same project we need to be able to classify these related species too. SAM segmentation with CT backgrounds would be a good idea. I was also thinking of making the hand-held images 'look' like CT images, by grey-scaling a a proportion of the images. Anyway, if I will share my findings once I have experimented with it ๐
FWIW when I talk about the general idea of using visually similar species as examples to train a model, coincidentally, the golden jackal is literally the example I use. So now we can test whether my hypothetical example actually makes sense!
There are lots of coyotes on LILA, and a decent number of African jackals, though I would say coyotes look even more like golden jackals than African jackals do, and neither co-occur with golden jackals AFAIK. Consider using coyotes to train your golden jackal class, and island foxes to train your Blanford's fox class? Both of those are present in large quantities on LILA. I think that will be easier than getting into more research-y territory or using iNat images. I.e., I would say a coyote in a camera trap image on average looks a lot more like a golden jackal in a camera trap image than a golden jackal in an iNat image looks like a golden jackal in a camera trap image. Plus I don't think iNat is going to be flush with golden jackals.
Thanks for the tip. Will try that out ๐
Any recommendations on any open source frameworks to take under water video (live stream) as input and frame grab moving objects to send to into Fishial.AI API to identify the fish species?
Really excited to try this! Your documentation is excellent, including the fantastic logo.
First random question... the main page refers to using the TF object detection API, i.e., under "mewc-train", it says:
"This Docker image is used to train an EfficientNetV2 model using the TensorFlow Object Detection API."
...but it also says (consistent with what you wrote in your message here) that you're using EfficientNet for classification. How does the TFODAPI fit in to the training process?
Second random question... you've jumped through some hoops to support both MDv4 and MDv5. Have you found cases where MDv4 performs better, that make it worth all those hoops (and slower inference)?
Thanks Dan, I'll ask Zach (who maintains the GitHub repo) about that inconsistency. We're definitely using EfficientNet in the classifier training, although it would be straightforward to plug-in other CNN. I'm currently working on the next version of MEWC which will use JAX as a back-end, and include option for a ViT classifier, but what we have up right now, using Tensorflow 2.11, works, so we froze it at that during development.
We kept the v4 option in there as more of a legacy, as we initially had problems with v5 on newer GPUs due to some PyTorch incompatibilities. We've since fixed that, but the option to use v4 remains. We default to v5a though, and that's all I use now.
Yep, that was a residual. Fixed on GitHub now, thanks Dan!
Hi @Peter van Lunteren, did you try out the copy-paste approach with SAM segmentation? I am curious if you achieved successful results. I attempted something similar for rare insect species that exist in our lab collection, but for which there are minimal images available on the internet. However, I was not successful. I think the model learns the "artificial" edges of the segmented insect more than the features of the insect or that the insects are dead and their coloration differs, among other variables (it's hard to disentangle the problem, as there are many variables). I am curious what results did you get and about similar studies as well.
Hi all! Iโm looking for suggestions for storing camera trap data that is easily transferable and accessible to multiple parties. I am working on a wildlife conflict effort. Ideally academics/wildlife managers help run the cameras and manage the data then give photos back to private landowners along with relevant discoveries. The functionality of Wildlife Insights is appealing, However I prefer the interface of Timelapse2. Excuse me if this is a rather basic question that has been beat to death.
Have you explored leveraging an end-to-end solution like the TRAPPER web application? It offers the flexibility to be installed on your local machine or server, providing customizable access for your stakeholders. TRAPPER boasts the capability to detect various objects, including humans, animals, vehicles, and blank images.. Additionally, it extends beyond detection, offering classification capabilities for over 20 European mammal species.
The Citizen Science UI is designed for user-friendly human annotation and expert review processes, making it particularly useful for non-technical and non-ecology-oriented users.
With its robust functionality, open source TRAPPER stands out as a comprehensive tool to optimize your camera trap initiatives
Paper (2016)
https://besjournals.onlinelibrary.wiley.com/doi/10.1111/2041-210X.12571
Documentation
https://trapper-project.readthedocs.io/
Gitlab repository
https://gitlab.com/trapper-project/trapper
Hey @Piotr Tynecki - do you know how i can access the demo?
@Casey Clifton https://demo.trapper-project.org/ register a new account, I will active it
Hi @Piotr Tynecki, is it possible to activate my account as well? I've been very curious to try the demo. notbot@gmail.com
@Michael Bunsen sure, I shared data access on PW
Hello! Do folks have experience selling your porjects' camera trap photos as prints, to raise funds for your project? I'm a PhD student hoping to raise funds for undergrads, which frequently are ineligible for stipends through typical small grant avenues. I realize this needs to be appropriately done based permit permissions etc...Looking for an easy to function service. I do have a newsletter through mailchimp which can be linked to shopify. Any other comment on this topic would be appreciate. Thanks!
Not exactly an answer to your question, but Iโve heard of some labs allowing people to โadoptโ a camera to support grad research. When someone adopts a camera, they pay some flat rate and all the images taken by that camera (minus human photos for privacy purposes) are delivered to the person who adopted the camera. Makes it a little more exciting when you can email someone saying โyouโll never guess what YOUR camera just caught!!โ
I actually built an open source tool that does something like this! Uses a text model to generate a dataset and then applies a smaller DINO model for inference. It works pretty well, and Iโm able to get it running in real time on an iPhone. Classification not object detection though
Iโm late to the party but do you just need to know if a shark is in frame or is the bounding box important?
Hi Nate! bbox is important because we need to extract the patch for a downstream classifier. How come?
๐ฃ Hi all! Please note that the paper submission deadline for the Special Issue on "Camera traps, AI, and ecology" in the IET Computer Vision Journal has been extended to March 4th. More details can be found here. Looking forward to receiving your contributions and to read about your latest research.
Thanks Dan and Stefan for the hints!
Dan, my problem is that the training data (as attached) doesnโt well-represent the bait occlusion. So I have two avenues:
Wow that sounds like a great idea! Will take that as an inspiration for my project. Thanks!
Personally I'm tempted to say that avenue (2) would give you better results. Also, how diverse are the bait objects (shape, angle, position etc)? Does your model perform poorly on occluded sharks (false negatives) or on empty bait-only images (false positives)? If the latter, maybe just showing the model some baits in training and say they are empty images without any shark in them would be enough.
I agree with Stefan, my guess is that you already have enough data to train a preliminary model to make annotation faster in the cases where it works, and if you have plenty of unlabeled data available, annotating a few hundred images should be very fast with small numbers of objects present in each image.
I did some annotation recently for a related issue where objects could be split across an occlusion (in this case, very small pieces of the object on either side of a large occlusion), and it helped a lot to set up a hotkey to merge the boxes (i.e., delete all the boxes on the screen and create a new box that surrounds both boxes). If you have a bunch of occlusions in a row and your detector is getting the objects but splitting them into two, now it's just two keystrokes per image (merge, next, merge, next, etc.).
@Dan Morris and I have been discussing annotation alot. @ศtefan Istrate can you tell us your annotation process in a very literal way. How did you go about annotating these images, what tools did you use, how did you decide what would be the highest value images to annotate?
@Ben Weinstein: I guess you wanted to tag @Filippo Varini instead, to explain his annotation process.
Hi @Ben Weinstein I have not performed any manual annotation. I have collated open source annotated datasets of sharks together.
I have then performed the data augmentation suggested in this paper for 20% of images.
Why don't you try inserting those "bait boxes" in images where they are not present. Let the model learn the features.
This would be similar to generating new images with bait-occlusions being added in the pipeline.
@Filippo Varini, what is your test domain? I.e., where do you want to run this model? Are you running it on images that all have the occluding objects in them? And do you already have lots of unlabeled data from those cameras?
If that's your target domain and you have unlabeled data, IMO the best marginal use of your time is labeling some of that data.
If that's your target domain and you don't have unlabeled data (in which case I would set your expectations low for your initial model), then I agree with Aakash's suggestion to paste that bait box over the fish in your training data, and - just as important - in images where they don't occlude the fish.
Hi @Dan Morris and @Aakash Gupta, thanks for the tips.
Yes Dan, I have loads of unlabelled data and my test domain always has the occlusion, so I will try that avenue - thanks for the advice!
How many images do you suggest labelling, considering an existing training dataset of ~5k images?
Personally I would set aside maybe 3-4 hours for your first round of adding boxes, not counting the time it takes you to set up your workflow. If you have to create boxes from scratch, and you have ~1 object per image, and you already have long runs of images that you know have sharks, that's ~5 seconds per image, so that's maybe 3k boxes, after which I would train at least a preliminary model, then repeat the process one more time. If you already have a preliminary model that works OK, and mostly you're confirming/merging/deleting boxes, you can probably get that down to <1 second per image, but once you're doing it, the marginal cost of doing a bunch more is pretty low, so I would still set aside 3-4 hours and get maybe 10k-20k boxes. I would prioritize diversity across sites as much as you can, even if it results in slightly lower volume. You may or may not even end up using your current labeled dataset once you have a bunch of boxes from your target domain.
@Filippo Varini we have a segmentation model at https://github.com/fishial/fish-identification you maybe able to use for labeling. Also Fishial.ai is a non profit project that has created a labeling portal that you can checkout at fishial.ai if you share your annotations back to the public usage is free
Hi all, do you have any suggestion for a simple UI tool to visualise and clean annotations of an object detector?
Input:
@Filippo Varini Did you try to look at the Roboflow / CVAT software? How they resolve this kind of situation could inspire you.
I know how it was resolved in TRAPPER software but the old UI is not so fancy and robus as the new one "Citizen Science" (not published yet).
Hi Piotr, thanks for the suggestion, I will have a look at it!
I use labelme for this:
https://github.com/labelmeai/labelme
I found labelme to be very easy to modify for minor workflow customizations, and it was easy to get data into the format it likes. IMO the goal in making a review workflow efficient is always to get your hands off the mouse entirely, and for what you're describing, I think you could easily get everything down to keyboard shortcuts with minor changes to labelme. I did this for a few camera trap data sets, though I expect the specific changes I made are particular to the fact that I had a small number of objects in each image, and if you have lots of objects in each image, you might need slightly different tweaks:
https://github.com/agentmorris/labelme
I also really like BoundingBoxEditor, though I mostly only use it as a viewer, and my lack of Java-ness makes it hard for me to modify, but it's quite slick:
https://github.com/mfl28/BoundingBoxEditor
Robo-flow and labelme are both great solutions.
Here's a longer list of freely available annotation tools:
https://www.thinkevolveconsulting.com/list-of-open-source-annotation-tools-for-machine-learning-research/
Hello! Is anyone is aware of attempts to detect fire in images (camera traps or otherwise)? I am working in a system that has frequent, short-duration fires that are regularly captured on camera. It would be useful to be able to detect when these events happen. We use a YOLO multiclass model for species ID, and I suppose we could draw bounding boxes around flames and add a new class, but this doesn't quite seem like the right approach. I am also not convinced that training a model would be any more efficient than scrolling through to find fire images manually (although we do have a LOT of false triggers), but I thought it could be interesting ๐ Some example images attached. Thanks everyone!
Given how drastically different fire looks from most other things in the photos, I would imagine running a classification algorithm (something akin to the ct_classifier we used this summer) would suffice. Just a binary classifier to say fire vs. no fire?
Hi Cara, try Yolo World โ zero shot object detector. It should work well on your data. Here is a link --> https://github.com/AILab-CVC/YOLO-World
Hi Cara. We've thought about doing something similar in adding another class for 'fire' to our YOLO multiclass model for species ID but haven't tried it yet due to limited resources, wanting to build a bigger training dataset (we have about 200 images with fire or smoke), and uncertainty whether it would be a useful approach. Our use case is real-time detection, and I'd be very interested if you come up with something. I'd be happy to contribute our data for training, and I'll let you know if/when we try it out.
I used a different approach in one of our projects. I use a small ViT Q&A model. You need to prompt it with the image an a simple query on whether there is a fire in the image. And it will give you a relevant output.
This is what you will call as a zero-shot approach
There are some companies and NGOs doing this already. Here is one example: https://pyronear.org/en/
Added a HF space using a VQA model
https://huggingface.co/spaces/skylord/FireDetector
Hi all, has anyone faced an issue with reading GoPro videos with OpenCV?
Basically, by using the standard video-reading workflow, CV2 issues the following warning
[ WARN:0@2.186] global capffmpegimpl.hpp:1505 grabFrame packet read max attempts exceeded, if your video have multiple streams (video, audio) try to increase attempt limit by setting environment variable OPENCVFFMPEGREAD_ATTEMPTS (current value is 4096)
As recorded here and here, apparently this is a known issue where OpenCV fails with GoProโs audio, encoded as GoPro AAC.
In fact, removing all the streams but video with ffmpeg -i
If youโre using Python, I recommend trying https://github.com/PyAV-Org/PyAV which is much more flexible compared to OpenCVs video support
Hi All, As part of extending the work we are doing at the BearID Project, we are thinking about integrating the models we are developing into open source camera trap project. This could include MegaDetector, swappable specias detectors and swappable individual reID. I'd like to aim for something that could be run locally or as a service, and possibly across platforms. I'd like to support images and videos. My leading candidates at the moment are TRAPPER and Camelot.
Any thoughts? Is someone already doing this?
@Ed Miller I'm available to discuss TRAPPER and TrapperAI with you (as a Trapper core developer). Our platform now supports object detection, anonymization of humans/vehicles, and species classification (european mammals and birds) for both images and videos as well as Citizen Science mode. TrapperAI module is able to execute any kind of AI model for wildlife in the cloud/standalone, so it should not be a problem to dockerize your models and include them in the pipeline.
Happy to talk ๐.
One other option I would take a look at, at least for workflow inspiration, even if you don't use the actual code... TrapTagger is also open-source, and their workflow incorporates an individual ID stage (based on HotSpotter that last time I looked, I don't know how modular it is):
https://wildeyeconservation.org/traptagger/
https://github.com/WildEyeConservation/TrapTagger
I can't really speak to the ease of deployment, but the workflow is nice. That said, Piotr's quick response is a good reason to focus on TRAPPER first. ๐
@Piotr Tynecki Thank you for the quick response! I will follow up with you via DM.
@Dan Morris Thanks for the link to WildEye. I didn't realize they had open source. I'll check it out.
Hi @Ed Miller, I have used TrapTagger a little and incorporate a fancy workflow for the re-id, and also a early integration with Wildbook. But I think only support images, not videos.
Hi @Ed Miller we are also developing a pipeline at SDZWA
https://github.com/conservationtechlab/animl-r
https://github.com/conservationtechlab/animl-py
with integration with CameraBase and eventually other forms of ReID. We process videos by extracting a small number of frames first. It currently uses MegaDetector for bounding boxes and our own trained models for classification, but they are swappable.
Hi @Kyra Swanson. I spoke with @Ian Ingram a while back (via Russ V.). I am very famliar with your great work! In fact, we have used animl-py to test some of your existing models on some of our data. I was not familiar with CameraBase. Is this still under active development?
I am looking to potentially integrate AI packages with TRAPPER, using the TRAPPER AI package they will release soon. TRAPPER already has some integration with MegaDetector and species classifiers like their own model for Europe. What I like about TRAPPER is it is platform independent (runs on Docker), uses a web browser interface, and can be run locally or in the cloud.
It would be great if we can collaborate to build out more models for the Americas and integrate them with relevant software packages like TRAPPER or CameraBase. I believe you are already extending your S. America models, which would be beneficial for work we are starting in Ecuador. We also have data for Western Canada we could use for training.
Happy to discuss here, via email and/or on a call!
Ed
Yeah we're a little behind in terms of gui, but I'm more than happy to talk to you about a specially trained model that might incorporate species from the other models we have. If you'd like to chat directly im at tswanson@sdzwa.org.
Camera Base was made by our own Mathias Tobler about a decade ago and while it is still technically under development, we have long term plans to completely redo it and fully integrate aniML.
@Ed Miller @Kyra Swanson From my experience, joining forces is always the best and optimal solution. TRAPPER team is always open to meeting with a larger group of researchers and engineers. For your information, we are working on a next version of TrapperAI Model and have also added initial support for MegaDetector v6 (beta). Happy to share more details during the meeting.
Hi! We have camera trap video data annotated with Bounding Boxes and we would like to publish them in a repo, do you have any recommendations on where to publish them? Thanks!
Hi Alba, the Labeled Information Library of Alexandria: Biology and Conservation would be perfect for that! It is maintained by @Dan Morris, but you can also send an email to info@lila.science for upload instructions or more info.
Place it on HuggingFace dataset for greater visibility!
Hi friends, I wonder if anyone has advice for an image classification problem I am trying to tackle. I am looking to identify turtles in top-down camera trap images, or rather split them into 3 classes: [turtle, other_animal, empty]. Unfortunately, the top-down nature of these images seemingly renders off-the-shelf tools like megadetector helpless.
I have a modest data set of about 50k images, about 10% of which contain turtles. They are labeled into the 3 classes but they are uncropped and contain no bounding boxes or other annotations. The turtles are fairly large in the frame, so Iโm hoping it might be possible to train a whole-image classifier for this problem as off-the-shelf detectors arenโt helpful
As a first stab I started playing around (rather unsuccessfully) with ResNet-18 on this dataset via pytorch/timm. Unfortunately, I donโt have much experience with this sort of thing, so Iโm wondering if anyone has any opinions about architectures and/or resources theyโd recommend that would be helpful for such a problem?
@Dan Morris loves to hear about cases where megadetector fails! And he likely will have advice for other options for ya
Hi Carly! Yes Dan has previously weighed in on this and is actually the one who steered me down the classifier path
This is a โmiddle of the roadโ example in terms of clarity. Some are more clear (more contrast/not submerged or muddy), others are more obstructed or partially out of frame
There are a few more examples from this data set on the "MegaDetector challenges" page; they are the ones credited to Michael Knoerr:
https://github.com/agentmorris/MegaDetector/blob/main/megadetector-challenges.md#reptiles-and-other-under-represented-species
@Eric Cunningham, it may be helpful to share the rough data set size and class distribution. The dataset is relatively small, but not silly-small, so IMO ResNet-18 is about as much as one could train without freezing anything, but I don't have a great sense for the tradeoffs wrt training about the same number of parameters in a larger model. Inference time is not a big issue.
Here is the class breakdown for the dataset:
other_animal 3015These are from 8 cameras with a dozen or so placements each
turtle 5227
no_animal 41195
total 49437
Do you need to classify these images, count the turtles in it, or localize them precisely in the frame? These are different CV tasks. A very good off the shelf solution is just to go with YOLO (v10 is out now but v8 is still a great pick) from ultralytics and prepare your dataset for training. It can do image classification and object detection (even bytetracking if you need to count animals using video streams).
Its not clear if you are trying to train a classifier the task or trying to train a model that can localize it (generate bounding boxes around the detection) If you are looking at the later (generating bboxes). You can check the Yolo family.
Also try out zero-shot segmentation engines. Like the recent segment-anything-2 model. Should work for such usecases. Just run the images which have turtles in them first and mark the area of interest (the turtles)
For now Iโm am looking to classify the images. Thanks for the suggestions, will check these out
I tried out YOLOv8 over the weekend and Iโm seeing some pretty promising results! Thanks for the recommendation @Aakash Gupta and @Arthur Caillau!
Just chiming in here, might be late to the party but you may find success in using BIOCLIP with zero-shot text inputs for your classes. https://huggingface.co/spaces/imageomics/bioclip-demo
Letterboxing or not? We use the MegaDetector followed by image classifier (mostly EfficientNetV2 now) pipeline for all of our camera trap image processing. We were wondering if there was a difference between using letterboxing (zero-padding) vs just resizing when creating cropped images for the classification step. Intuitively, resizing can significantly distort images as aspect ratios of crops can vary greatly. What are others doing? Has anyone compare the two with camera trap data?
Hi @Mathias Tobler, Iโm using square crops with padding. This makes sure that the animals are not distorted. Iโve also heard some people just squeezing it in a square, which also works well since an animal is generally squeezed in the same manner. I never compared the two thoughโฆ
With regards to the padding, I use a fixed padding for โnormalโ sized animals and a larger padding for small animals like rodents etc. This to make sure a mouse doesnโt look like a bear when resized ๐
Let me know if you want the Python code for this.
Thanks @Peter van Lunteren. Interesting about the padding size, first time I hear that.
Hi @Mathias Tobler, I'm a bit late on this thread, but if it helps: I've tried both square crops and resizing on a large dataset (2M images, 25 classes) and there was no significant difference on the overall performance. Of course this would require finer analysis. Would love to know your conclusions if you look into it.
Hi @Hugo Magaldi thanks for sharing those results. We have used letterboxing in earlier model and just standard resize more recently. There have been many other changes (training data size, model architecture) so a direct comparison is not possible. We might need to run some experiments to compare the two.
Widlife insights insight need, pun intended, we have been uploading and classifying photos on wildlife insights for a project. We've noticed that in the 'sequence' format, some empty photos get grouped in as 'empty' AND 'human'. They are usually within a few seconds of one another, could it be wildlife insights classifier just groups photos as 'human' if they are within a few seconds of a human detection? Any experience with this?
Can you clarify what you mean by "get grouped in as 'empty' AND 'human'"?
For example if its 3 photos: animal, animal, empty, the AI has tagged all as an animal. However, the cameras aren't set to take bursts, pictures are at least 30s apart, but the grouping on WI makes it into a 'burst'.
Ah, thanks, I understand now. When you upload images to a sequence-based project, sequence boundaries are based on a fixed 60-second timeout. The image content isn't used when creating sequences, so AI isn't a factor here.
The relevant bit of documentation is here:
https://www.wildlifeinsights.org/get-started/basics/projects
Hope that helps!
ohhh that explains it all! thank you!!!
If you are on BSky let me know Iโll add you to the camera trap community list https://go.bsky.app/CbJkbVw
[ MESSAGE TEXT EMPTY ]
Hi Adrien, its a timelapse camera right? does it not capture passerby wildlife too?
Sure it does ! But unlike camera traps it is not triggered by event dรฉtection (yet). It does have other features compared to traps: autonomy, resolution, field of view...
If you are interested in more info or have specific questions or needs, please do ask me ๐
can it be attached to a drone ? Or it requires to be on a stable platform?
not really, it weight about 2kg. It is designed to be installed on a stable support. It has various fixation accessories .
To crop or not to crop? We're excited to share our new paper on the benefits of cropping with MegaDetector prior to species classification in camera trap images. One funky detail: we do not discard low confidence detections before running the classifier; instead, we train the classifier on "blank" bounding boxes as well! Read more in the IET Computer Vision journal (https://ietresearch.onlinelibrary.wiley.com/doi/10.1049/cvi2.12318), where we also share lots of details about our complex data curation and model training decisions. Kudos to a whole team of dedicated nature enthusiasts!
Hi everyone, I am looking for advice on selecting journals to publish applied AI work with camera trap data. What journals do folks follow for these types of papers?
Before we found the special issue where we published the paper that Stefan mentioned one message earlier on this chat, we put together this list of journals with relevant examples:
Journal of Applied Ecology is another good one, that's where the original random encounter model (REM) for camera trapping was published, so novel methods might be of interest. Not sure about UW but my uni has agreements with some publishers where we can publish there for free (!!), and we've been selecting from that list, which covers some good ones.
Thank you both! Looks like I was on the right track ๐
Hi everyone ๐
Quick question: how do I correctly cite Megadetector?
I assume it is this (taken from https://github.com/microsoft/CameraTraps ), I just want to make sure ๐
@misc{hernandez2024pytorchwildlife,
title={Pytorch-Wildlife: A Collaborative Deep Learning Framework for Conservation},
author={Andres Hernandez and Zhongqi Miao and Luisa Vargas and Rahul Dodhia and Juan Lavista},
year={2024},
eprint={2405.12930},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
I think the correct citation is this one for megadetector the model:
@article{DBLP:journals/corr/abs-1907-06772,
author = {Sara Beery and
Dan Morris and
Siyu Yang},
title = {Efficient Pipeline for Camera Trap Image Review},
journal = {CoRR},
volume = {abs/1907.06772},
year = {2019},
url = {http://arxiv.org/abs/1907.06772},
eprinttype = {arXiv},
eprint = {1907.06772},
timestamp = {Wed, 01 Jun 2022 08:38:40 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-1907-06772.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
And that one for the new putorch wildlife codebase, which provides a wrapper around the model
Okay, I came across this publication first, I was just confused because it doesn't explicitly include the term โMegaDetectorโ. But now I know, I'm glad I asked, thanks for the quick help! ๐
We never wrote more than this short workshop paper for it, but this used to be the listed citation on the codebase. I think it got lost in the migration, but we'll try to make it more clear :)
Hey guys, what are some Python OS pretrained models for African species classification? I looked at AI4GSnapshotSerengeti from PytorchWildlife, but the classes are limited. Found some other papers, but I don't think they have released their models. Thanks!
I try to track publicly-available models here:
https://agentmorris.github.io/camera-trap-ml-survey/#publicly-available-ml-models-for-camera-traps
Other models specific to Africa are:
https://huggingface.co/Addax-Data-Science/Namib-Desert-v1
https://github.com/Appsilon/mbaza/releases/tag/v2.1.1
https://sandiegozoo.app.box.com/s/9f3xuqldvg9ysaix9c9ug8tdcrmc2eqx/folder/196933085878
Thank you very much Dan! I'll be looking into those ๐
Reading about Tappan Gregory, an early camera trapper. Anyone know where his photos ended up? I hope an archive somewhere https://naturemuseum.org/cas/blog/tappan-gregory
https://explore.chicagocollections.org/records/?f1-names=Tappan%20Gregory
Hi!
I'm sharing a prototype for exploring camera traps data once it has been labeled. Working on earthtoolsmaker.org, we noticed there was a need in this area and curious what you think about it.
The idea is that anyone can easily import (locally) annotated coco data and quickly start interacting with it.
https://www.youtube.com/watch?v=PTHzQVjly64
I like this a lot! It would be nice to display brief summaries for each filtered search as well (e.g., number of sites, number of photos)
ho yeah that makes sense! The panel with pictures could indeed show more informations. I had a similar observation with the timeline: showing marker for pictures on the timeline to get a sense of the distribution
This is cool @Jeremy Vuillermet. Is the code available on GitHub somewhere?
thanks! No it's mostly a design prototype so far with hardcoded data
Wow, super cool visualisation! Thanks for sharing
[ MESSAGE TEXT EMPTY ]
Is MegaDetector still called MegaDetector? Or should I call it Pytorch-Wildlife in my paper?
MegaDetector is still called MegaDetector! Pytorch Wildlife is intended to be infrastructure that supports the use of many such models, including but not limited to MegaDetector
There are newer depth estimation models out there, e.g. DepthAnythignv2. You can try a demo here:
https://huggingface.co/spaces/depth-anything/Depth-Anything-V2
Dear channel, I recently explored the best software solutions for processing Wildlife Watcher photos, focusing on tools that enhance species identification, data management, and workflow efficiency.
I tried to discover which options are best suited for
monitoring New Zealand geckos and how wildlife.ai could plan to integrate them for better conservation outcomes.
Feel free to DM me any feedbacks ๐๐ฆ
thanks for sharing. I'm currently working on this area and it's a valuable source to compare what's existing!
My name is Vinay (Linkedin profile) and I have just started a company in Biodiversity conservation from Bangalore, India.
Brief about Urvara.Life
"Earth's biodiversity - our strongest defence against climate change - is vanishing at an alarming rate. Current financial flows are accelerating biodiversity loss. For every $1 we invest in protecting nature, we spend $35 degrading it. At Urvara.Life, we're exploring a radical solution: what if we could convert biodiversity into an investable asset class? Imagine a world where you could IPO a forest, where preserving nature generates competitive returns! We're starting with the foundation: developing a cutting-edge Biodiversity MRV (Measurement, Reporting & Verification) platform that combines eDNA, Bioacoustics, and Camera traps to measure ecosystem health โ to make natureโs value visible and tradeable."
What do I seek?
Saket Anand at IIIT Delhi is working building a strong camera trap model for India in partnership with WRI, you can reach out to him at anands@iiitd.ac.in
The first thing I would recommend is putting a very fine point on what you mean by "automated". There are close to zero cases where camera trap image processing is fully automated in the sense of every image being classified to species level without human intervention, and the cases where that happens tend to be pretty simple cases with a small number of very stable cameras, or a very small number of species (e.g. in semi-captive environments). That doesn't mean automation is impossible, but total automation with 100% accuracy is probably impossible, so you have to pick the compromises you're comfortable with. I recommend thinking about what you care about most and how much human time you can afford to get there... e.g., maybe you want to make sure you achieve 90% recall on species x/y/z, and you don't care what happens to the other species, and you can have humans spending k hours per month on image review.
Once you have goals that are as quantitative as possible and you're focused on efficiency, rather than total automation, it becomes easier to evaluate existing systems, whether or not they are even aware of your specific species (this is not always a requirement for an AI system to help you meet your goals, as long as that AI system has seen species that are visually similar to your species).
To help people get pointed in the right direction wrt choosing a system, I usually start with this series of questions:
http://lila.science/camera-trap-questions
Maybe those questions are useful just to get you thinking about your system, but if you want to talk through the implications of some of the answers, feel free to reply here or to email me at agentmorris@gmail.com .
Hi Vinay - interesting concept of IPO a forest. and I have a lot of questions regarding this concept. There are a number of individuals who are buying up large tracts of forest land in India. Whats the best way of connecting with you?
Please do checkout VanNetra that we have developed
Can anyone recommend a camera trap for open desert landscapes. We are finding the UV radiation and sun exposure destroys cameras fairly quickly. Small rodents in Arizona. The first thing to go is the solar panels or batteries.
definitely following (as someone who lives in new mexico). i can consult the local lora/meshtasic group, which i know has talked a lot about solar/batteries here. (anecdotally, i have not heard of solar failing; but definitely remember threads about batteries vs heat/cold)
Hi, we made a desktop app to explore camtrap DP datasets and looking for beta testers. Here is a demo https://www.youtube.com/watch?v=qATvYKzqGQs
Please ping me if you want to test it! Also ping me if you have non camtrap DP dataset but still want to use the app, we can probably make it work.
Hi, can I make Wildlife Insight automatically read the EXIF information from a CamTrap DP formatted dataset?
That would be amazing to drag and drop a whole CamTrap DP formatted folder and get the annotation done ๐
If not, any tools that could do the job?
Best regards!
Can you clarify your scenario a bit? Camtrap DP is (mostly) a format used to archive and transfer labeled data.
If you have a Camtrap DP package of labeled images, what is your goal with Wildlife Insights?
If you have a Camtrap DP package of unlabeled images... (a) that would be unusual, so mostly out of curiosity, where did it originate? and (b) how would uploading it to Wildlife Insights be different than just letting Wildlife Insights read the EXIF information directly from the images?
Hey Dan ๐
The scenario is:
All clear.
No, Wildlife Insights doesn't support this (at least not that I'm aware of, I'll confirm, but if I don't reply to this thread to say otherwise, assume I confirmed that).
Wildlife Insights has a beta version of what you describe, but it still requires some manual steps and the intervention of one of the project administrators. However, Jorge (the Executive Director at WI) indicated that he is happy to help folks with this if they send him data in the WI bulk upload format.
Outside of WI... I think CamtrapDP is not the important bit here, since without labels, it's relatively easy to move metadata between formats; I think the important part is "are there Web-based annotation platforms that allow bulk upload of unlabeled data with deployment information"? This is a good question! I haven't tried this personally, but TRAPPER appears to support exactly what you're looking for:
https://trapper-project.readthedocs.io/en/latest/tutorial.html#add-deployments-to-trapper
I'm interested in whether folks know of other tools with similar functionality; this is a level below the depth of my familiarity with most Web-based systems.
Also if you are working locally in AddaxAI, and you're happy with that, and you are happy to keep working locally, it's straightforward to import both AI results and deployment information into Timelapse (https://timelapse.ucalgary.ca/). It doesn't literally support CamtrapDP import, but it's straightforward to import arbitrary metadata from a .csv file.
Hi all, does anyone know of any publicly available camera trap datasets containing people? We're testing some existing pedestrian detection models and I wanted to see how well they worked with camera trap images.
This dataset might be a good start: https://lila.science/datasets/seattleish-camera-traps/
There are also some people in Caltech Camera Traps, but they are generally not labeled as people, since annotators were mostly only reviewing animals:
https://lila.science/datasets/caltech-camera-traps
Timm is correct that "Seattle-ish Camera Traps" is the only dataset I'm aware of that has people... no, not "people", just "person", since I removed everyone who wasn't me... that are labeled correctly.
You can extensively evaluate whether your model can detect specifically Dan ๐
Thanks guys! Seems like an awkward space with the permissions. Dan may very well become our first guinea pig!
I feel like there's an opportunity for researchers to contribute pictures of themselves on their camera traps consensually. I wouldn't mind people using pictures of me, maybe this could be something we build as a community? I know this comes up all the time
Hello. Have you tried applying ByteTrack, BoT-SORT or SambaMOTR trackers in your AI-camtrap-based research? I'm wondering if anyone from the community has created a benchmark or just a post/note or articule thatโs publicly available for analysis?
Hello Piotr, we used ByteTrack to create MammAlps (from MegaDetector detections). Had to make few adjustments to the association process for it to work well, and still needed quite some manual correction afterwards. We have not evaluate it yet on the corrected dataset though. Happy to talk about it if needed.
Would anyone here be willing to zoom chat about comparisons of species richness estimators/accumulation plateaus from different habitats? PhD student in the weeds of a non-camera trap project, but I think a lot of the same methods would apply.
Hi fellow camera trappers! ๐
If you, like me, often need to downsample large image datasets without losing too much variation, Iโve put together a small tool that might be useful:
https://github.com/PetervanLunteren/smartdownsample
Itโs not meant for perfect deduplication or fully optimal selection, but if you need a practical, lightweight solution that preserves diversity with minimal computation.
I released it today, so there may still be a few bugs crawling around... Please give it a try, kick the tyres, and let me know if you run into any issues!
Hello! Hope everyone had a nice summer
I'm trying to make an alarm system using a camera trap and an elephant detector, that triggers a sound whenever an elephant is detected. It seems this could rather easily be done with a raspberry pi but I have zero knowledge in electronics. Would someone with experience in this area be willing to have a quick chat, to get started on the right tracks ? ๐
Hi Hugo, we've been working on similar things - not a deterrent system but an edge-AI device. Happy to chat anytime. I believe there are some people that specifically work on edge-AI powered deterrent systems @Thijs at https://www.hack-the-planet.io/ and I'm sure @Peter van Lunteren knows some more people working on things like that. Also worth checking out this group on Wildlabs. Always useful to check out @Dan Morris lists, among other things he's very good at making useful lists. Oh and maybe @Ed Miller
Thank you! Happy to chat, I'll reach out in pm
There are some Wildlabs groups, that you can check out
๐ Full announcement: https://wildlabs.net/article/new-group-announcement-edge-computing
๐ Join the group: https://wildlabs.net/groups/edge-computing
Also working on edge devices. Happy to chat, pm me!
Hello !!
Can anyone suggest a good camera equipment to collect freshwater fish and micro invertebrate data ?
Hey everyone, is anybody aware of any camera trap datasets that provide both latitude/longitude as well as the geographic heading of the camera trap? Camtrap DP has a field cameraHeading, but that seems to be null for any dataset except the example one. I'm mostly looking for a way to validate an approach for computing camera trap heading using sun altitude/azimuth and/or shadows
I canโt think of any datasets that provide the cameraHeading but some of the timelapse cameras + snow poles datasets have the lat/long of the camera and the lat/long of the pole. You could deduce the cameraHeading by looking at those two locations in relation to each other. One of those datasets is available here: https://nsidc.org/data/snex20_tli/versions/1
Thanks Catherine, I love that idea! Hadn't thought about snow cameras
Yes, no problem! This is the website we use to track some of the various snow pole datasets: https://catherine-m-breen.github.io/snowpolesmap.html. It's still in progress, so lmk if any of it is confusing! I just scanned it, and none of the other datasets besides the one I shared jumped out as having cameraHeading information (some people track the lat/long of the pole, and some don't unfortunately). However, cameraHeading would be really nice information because it would give an indication of aspect and radiation which is a key driver for snowmelt and other snow processes!
Hi everyone, I am curious about best practices for using MegaDetector-generated crops for training species classifiers. We have ground-truth labels at the image level and are using MD to generate bounding boxes, which then receive the image-level class label (we are only using images with one species). Obviously we donโt want errors in our training data but want to balance human-review time. How much manual review are people doing at this step to ensure the boxes are reasonable before training a classifier? If we use a high MD threshold, I assume we could do less review (but risk having fewer examples for training). Thanks!
What are ballpark estimates for (a) number of images (including blanks), (b) number of images with animals, and (c) number of animals? If you don't have lots of big groups, (b) and (c) are likely about the same.
(a) About 40k images currently, not including blanks, although we have more we could use. We haven't added blanks to training yet. (b/c) This project does get lots of groups, so estimated 1/3 of the images have >1 animal in them
At that (relatively low) number of total crops, I would personally review them all, at least to remove obvious outliers. Specifically, I would render all the crops to species-specific folders (with flat files in each species folder, i.e. no subfolders) with maybe 100px of padding on each side for each crop (that's not what I would use for training, but it makes it easier for your eyes to review), then I would use any fast image viewer to page through them very quickly and delete anything that doesn't fit. You should be able to check at least 4-5 crops per second this way, and you can do it while you listen to a podcast, and in a couple of hours you've removed outliers and you know your dataset really well (and you can't put a price on knowing your dataset really well!). Ergonomics matter a lot here, e.g. I wouldn't use a browser-based tool for this. Personally I use IrfanView.
If you had said a larger number, I would have recommended the following (both of which will likely take longer than manually reviewing your crops if you're only doing this once). YMMV, if you don't have a high tolerance for paging through images, or if you are going to do this frequently and want to invest the time to add some new processes that will pay dividends later, you can use these approaches instead:
Also I would consider at least keeping a record of all of the false detections you review and remove, and putting them in a "blank" class in your classifier. This is another good reason to review everything above a relatively low threshold. Having an ecosystem-specific "blank" class might turn out to save you more time in the long run than the species classification part of your species classifier.
@Dan Morris we should think about how to codify this with whatever tooling is needed to get this off the ground, I sense a vibe coding session in the works.
@Dan Morris Extremely helpful as always, thanks Dan! I agree that manual review is good if we keep the dataset this size. I'll bookmark your other suggestions for down the road. We are using 0.2 as a threshold which I think makes sense, especially given your point about wanting more difficult examples for training also.
If this review process doesn't generate many "blank" crops, would you generate some from the empty images to add to training?
Re: generating blank crops from empty images...
I probably would, yes. You might not end up using them, but it's pretty close to free training data. A couple other thoughts about sampling blanks:
Great ideas. For (2), what is the confidence in this case? If MD was used to separate animals/empties first?
Ooooh, sorry, I didn't get that you used MD to do the blank labeling in the first place. That does make this less "free". If you get enough false detections when you review the labeled images, I would probably stop there in terms of mining blank examples. You could also use the detections between, e.g., 0.1 and 0.2 confidence, but you would now have to review those carefully, because a small but non-negligible percentage will be animals, and no one has reviewed those yet.
No, you were right, I think I made this confusing. We did not use MD to do blank labeling; imagine we just have a folder of manually sorted empty images and want to create some blank crops from them. Maybe I'm not following your suggestion in (2) above?
Oh yes, in that case I would run MD on the folder of known blanks and use crops over maybe 0.1 or 0.2 as a training example for a "blank" class (balancing across cameras as per (1) above). If you are 100% sure they are really blank, no further review required. My point in (2) above is that... how sure are you they are really blank? Sometimes MD finds things humans miss, so additional review of your "blank" class doesn't hurt if it's just a couple thousand crops.
Where 0.1 or 0.2 confidence are for the "animal" class?
I would probably include all MD detection categories. If your backgrounds are natural scenes, MD false positives are almost always the "animal" category. With human-made objects in the background, you are more likely to get person/vehicle FPs. I would probably use all of them if your "empty" images aren't expect to have people or vehicles in them.
I think this thread is the most the universe has ever thought about these questions, so, let us know what you decide and how it goes!
๐
I figured it was a well-worn path but I have only worked with manual boxes before.
For the sake of discussion, then, what is the rationale for not including empty examples with MD predictions <0.1? These very-low-confidence ones are more likely to be actual background and not objects, right? But therefore less likely to be things that MD would confuse for animals and so less useful for training?
Correct, my assumption is that when you run this classifier, you'll still be running MD and accepting detections over some threshold, so you want the animal-i-est of the false detections. There are an essentially infinite number of very-low-confidence detections, so you have to threshold somewhere, and I would set it at whatever number gives you a useful number of examples (i.e., around the same order of magnitude as your other classes), and I'm guessing that's maybe 0.1 or 0.2. But there's nothing wrong with using, e.g., 0.05. At 0.001, for example (the default threshold applied at inference time if you use rundetectorbatch), there's a lot of junk that wouldn't be very useful.
Gotcha, and yes, we would be running MD prior to the classifier for our inference runs
Also don't forget to tell us what podcast you listened to while you pressed "page down" >40,000 times.
For sure, although I may need to battle an undergrad for the honor
I have a pretty high tolerance for that kind of clicking, up to a point. Theoretically I find value in getting to know the data, in practice I think maybe I just really like podcasts.
Totally agree. The amount of camera trap images I have looked through, while working on projects with the goal of NOT having to look through camera trap images, is much higher than my advisors would have liked, I'm sure ๐
@Lucas Mateo Waldburger joined #camera_traps. Theyโre also new to AI for Conservation.
@Edwin Arkel Rios has joined the channel
@Jason Holmberg (Wild Me) has joined the channel
Hi camera trappers! I've been working on a real-time wildlife monitoring system with AI predictions, notifications and web interface: https://github.com/PetervanLunteren/AddaxAI-Connect
If you have 4G camera's laying around and are comfortable with CLI commands, feel free to give it a try! Its open-source and you can run it on your own private server ;)
Hi everyone ๐ โ wanted to share something we've been building that feels right at home in this community: Biowatch, a free and open-source desktop app for wildlife researchers and conservationists working with camera trap data.
The idea is simple: everything runs locally on your machine. Species identification models, image browsing, spatial maps, temporal activity analysis โ no uploads, no accounts, no tracking. It's CamtrapDP-compatible for clean import/export with GBIF, and works on Windows, macOS, and Linux. We'd really love feedback from folks here โ especially on which models you'd like to see integrated next, and what analyses would actually save you time in the field. Download + docs: https://www.earthtoolsmaker.org/tools/biowatch/
this is actually quite amazing Arthur!
We just shipped a manual to explain how Biowatch works: https://biowatch.earthtoolsmaker.org/
Amazing Arthur ๐ I might reach out in the near future to know more about what you guys are doing!
Anytime. You can gain some insights from our website here: https://www.earthtoolsmaker.org/
Yes i was already checking your site, we are also working with individual identifications from images. I really enjoyed the elephant example also ๐
Hi Arthur, ive been going deeper into your tool and it has so much great potential to help our teams on the ground. There are some QoL features it would be nice to have i reckon soon i'll be "adding more work" to you on the github repo. Its really a lean and clean solution for CT deployment and analysis ๐
Hey Nuno ๐,
Thanks for your kind word. Feel free to file any ticket/features you would like added to Biowatch. We evaluate these carefully to not turn Biowatch into a big bowl of features so I can't promise we'll add them all.
Also, we are always looking for sponsors and partners to keep the work going on Biowatch. If you know anyone that would be interested, let us know ๐ค
Yes, "KISS principle" is often forgotten. Ok so a bit of context, i work with WWF and some of our work is in remote areas so i've been looking out for solutions that brings the CV to the ground like this or AddaxAI. I like that yours also allows for managing the deployments. For them to go from whichever process that they are doing to using another tool for labelling it must be better (accurate and easy to use) than what they currently have. So in all likelihood is we will create a fine tuned model and reach out to have it added to your platform in the future. If there is real uptake its guaranteed we will be interested to work together more. The work with bioaccoustics and individual ID is also so interesting for our teams
Thanks for sharing this extra piece of context. We have invested some time into the annotation layer in Biowatch for labelling camtrap data. That's also something we could work on to make best in class as well. That would benefit the larger user base of Biowatch as well.
yeah the ability to manage/label the data very easily is definitely a plus teams and can easily use the map and the info to divide and schedule work between them. Its flimsy though, often after my own labelling the software comes and labels again
Before I take a stab at this myself, does anyone have a script to convert from COCO to Camtrap DP format? (Recognizing that not all fields will be directly compatible.) I know @Dan Morris has one for Camtrap DP to COCO, but I want the opposite ๐
Unfortunately I think that conversion is underspecified by nature. COCO is just pixel geometry (boxes/polygons with labels), which you can store in CamtrapDP, but that's not typical. The heart of CamtrapDP is observational data - locations and taxonomic information - which are not specified in COCO, or even in the slightly-more-specific COCO Camera Traps interpretation of COCO that we use on LILA (http://lila.science/coco-camera-traps).
COCO is just .json, so you can store anything in COCO in nonstandard fields and COCO validators should be OK with that, but if you have that information in COCO, I think you're really asking for a "Cara's COCO to CamtrapDP" converter, more than a "COCO to CamtrapDP" converter.
Thanks Dan, yes, I see what you mean. COCO would really only be useful for populating the media and observations components of CamtrapDP, and I'd need to read in a separate input with deployment info anyway.
COCO would only be a little useful for populating the observations fields, which are very specific about taxonomy.
All of that said, I think CamtrapDP is awesome and the fact that you're asking this question suggests that you're looking to publish data in CamtrapDP format, and you've got lots of camera-trap-data-publication-nerds here, so let us know how we can help! E.g. I'm happy to help with the taxonomy mapping piece, I do this a lot for SpeciesNet work.
I will, thank you! I'll do some more thinking through the use cases I had in mind. It's a combination of 1) yes, publishing data in Camtrap DP that has been stored in various formats previously, and 2) various internal tasks of moving/querying data, importing to visualization tools, etc. For 1, all the data exist elsewhere besides COCO so it's probably just as easy to create CamtrapDP from the original sources. For 2, COCO is probably all that I actually need.
Biowatch makes it possible to import a LILA dataset (COCO) and export it as a camtrapDP package.
So supporting COCO as an import could be done. Even better if your datasets are already published and you want to just export them. As Dan mentioned, some fields are missing and you could fill the deployment info directly from Biowatch or as a postprocessing stage.
Re-processing your entire dataset through an Images Directory import would also automatically populate deployments information but that would require some compute time and also probably fixing some issues with SpeciesNet spurious predictions.
@Arthur Caillau Playing around with Biowatch has inspired me to get serious about CamtrapDP format. I just tried the export to CamtrapDP for our Nkhotakota LILA project. This is a great start, thanks!
Awesome to hear! We are constantly improving Biowatch to make it seamless to curate, annotate and identify species automatically, keeping in mind the CamtrapDP format ๐ If there is anything we can do to improve your experience let me know
India runs one of the largest camera trap surveys in the world. Hidden in those millions of frames is everything worth knowing. But a landscape can only wait so long, because the decisions that protect it move no faster than the analysis behind them.
That gap is where we started. Me with Santhosh Pavagada years of expertise and months of talks with conservation teams across India, we began not by building, but by listening. What breaks in your workflow? Where does time go? What do you expect from AI in a tool like this? And we kept hearing the same thing: we need something "end-to-end, coherent and intuitive".
HabiDATA came out of those conversations, and the research behind it continues. We believe technology should be built around the user, ask for minimal adaptation, and earn trust over time. Soft-launching. More coming soon...
Check it out now! habidata.in
Let us know if Wild Me can help with the individual ID.