set the channel description: We all need help sometimes: this is a place to advertise large projects and citizen science tasks for research in conservation
has renamed the channel from "helpneeeded" to "helpneeded"
Wild Me has an ongoing project to ID a large population of Grevy’s Zebra. Wild Me has been working with the Grevy’s Zebra Trust to track the resident animal population in Kenya. The project organizes the Great Grevy’s Rally, a two-day event where a large team of volunteer photographers drive around looking for this endangered species. The most recent rally (GGR 2020) completed in January and we need help processing the images. The 2020 rally was a repeat of rallies in 2016 and 2018, where a combined 150,000 images of Grevy’s zebra have been collected. Our goal is to automate as much of the GGR-2020 processing as possible with Machine Leaning algorithms, which we need ground-truth data to validate our accuracy.
For those who are interested, we will be holding a 1-hour training session this week to walk through the machine learning data annotation tools and explain the scope of the work ahead. We are looking for volunteers who are willing to donate any amount of their time, day or night, towards the conservation of this species.
If you are interested in volunteering, please fill out your availability here: https://doodle.com/poll/hfb35bb32ka6xsyf
@Jason Parham Do you want us to share this to others? Or is it semi-private for now?
There is a high bar for quality, but participating in the training session should help to standardize the results
Cool. I don't have a lot of bandwidth, but I'll try to help out with the cycles I have 🙂
Hi @Jason Parham, just to be super clear, is the task for people to ID individual zebras from a database of previous sightings?
We will be working through a large series of tasks but will culminate in doing a prioritized ID of individual zebras based on their appearance. The system will compare the stripes of the different sightings and show pairs with high correspondence to a user for review.
Sorry i missed these. Is there anything that i can help with?
we will start with bounding box regression for detection, then box metadata, then do ID at the end once we filter
species, viewpoint, quality and other siimilar metrics
Would anyone (without zoology training) be able to do all the steps?
it takes a bit to build confidence, but that’s what the training session(s) will be for
@Suzanne Stathatos has joined the channel
Wild Me will be hosting a two-hour training session for the zebra “help needed” project starting at 11AM Pacific tomorrow morning, Thursday April 30th. The plan is to spend the first hour going over the entire tutorial and then the second hour will be a back-to-back repeat of the same content (starting at noon Pacific) just in case somebody cannot attend at 11AM. Below are links to the Google Hangouts for each session:
Wild Me Zebra Training Session A - 11 AM Pacific - https://meet.google.com/bpd-ynky-env
Wild Me Zebra Training Session B - Noon Pacific - https://meet.google.com/nfy-gocb-obo
Please plan to attend with a computer so that you can follow along the display at a higher resolution. We thank all of the volunteers in advance for contributing their time to this project
@Ștefan Istrate has joined the channel
Thank you to everybody who attended the training session today. If you missed the training and still wanted to volunteer, I will be hosting a make-up session at 10AM Pacific Monday morning next week.
Hi Jason! Is there a Google Hangouts link for the make-up session?
For those who attended a session today and did not receive the work link via email, please PM me on Slack
Hi are there any projects/things for beginners? I don't have any zoology/biology experience but am willing to learn what I can!
I think @Jason Parham still needs help with the Grevy's Zebra data! It's a good way to get familiar with the types of tasks we're asking models to do, and their associated challenges.
i had a thought for a portfolio project, tracking the conditions of certain organisms, for example let's use a bear. So looking at things like its mother's health, number of siblings, food quality (and quantity) and then seeing which bears survive to adulthood. Then tracking the reasons most don't survive or something. Is there already something like this out there? Thanks.
This paper that just came out seems kinda relevant? https://www.pnas.org/content/early/2020/07/02/1922097117
I'll check this out, thanks! This has more focus on human activity than I was thinking but it's the same problem.
guess it could work for plants too, might be easier, plants are easier to monitor
Does anyone have any current projects or anything that they need help with?
Hi guys, I have a couple of questions. I am training a Tensorflow model (Faster R-CNN Inception ResNet V2 640x640) on my PC:
Hey. Having to use excessively small batches is somewhat common when training large models (which the original authors often trained on huge servers). Having said that, here are a few quick thoughts:
Hi Lukas. Thanks for the response -- it's very useful!
Seems like your only guidance is some maximum number of iterationsYep, I was looking at the max iterations I had set and estimated the time based on the avg. time per step I was getting at the time. I realise now that that is not what I should be doing -- I should be stopping the job once I achieve a reasonable loss (I think?)
I was under the impression that I'd be doing "fine tuning" and not training from scratch...Well, maybe you are? 😄 Are you loading pre-trained weights and using a suspiciously small LR? 😉
Well now I am not sure 😆 My LR config is:
learning_rate {
cosine_decay_learning_rate {
learning_rate_base: 0.03999999910593033
total_steps: 25000
warmup_learning_rate: 0.013333000242710114
warmup_steps: 2000
}
}
momentum_optimizer_value: 0.8999999761581421Here is a link to the tutorial I am following, maybe you'd be able to tell quicker than me: https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html#configuring-a-training-job
Considering that one of the steps in this tutorial reads: "Download Pre-Trained Model" I guess you were on the right track with your guess that you are merely fine tuning a network. There's also this part in your config:
fine_tune_checkpoint: "pre-trained-models/ssd_resnet50_v1_fpn_640x640_coco17_tpu-8/checkpoint/ckpt-0" # Path to checkpoint of pre-trained model
num_steps: 25000
startup_delay_steps: 0.0
replicas_to_aggregate: 8
max_number_of_boxes: 100
unpad_groundtruth_tensors: false
fine_tune_checkpoint_type: "detection" # Set this to "detection" since we want to be training the full detection model
use_bfloat16: false # Set this to false if you are not training on a TPU
fine_tune_checkpoint_version: V2
}
I guess I am a little confused because in one of the official TF tutorials they take a different approach -- what stands out to me here is that they explicitly "restore all but the classification layer at the top", where as the tutorial above doesn't really mention doing anything of the sort.
Cutting off the top layer implies that you want to keep the "deep features" learned by the lower layers but want to re-purpose the net for a different classification problem. You'll often see them freezing the weights of the lower layers to keep them intact while only really training the classifier head. The other tutorial may follow a slightly different strategy. Yet, if you start off with pre-trained weights and only wiggle them slightly to adapt to your new dataset you're still fine tuning (which will require far less training data and training time). Just follow along some of the mentioned tutorials and you'll get the hang of it quickly 🙂 If you even intend to learn more about it. If this is just a tool you want to use once, maybe you can find someone here who can help you with training and deploying the network! 🙂
Cutting off the top layer implies that you want to keep the "deep features" learned by the lower layers but want to re-purpose the net for a different classification problem. You'll often see them freezing the weights of the lower layers to keep them intact while only really training the classifier headThis is what I initially set out to do, because my understanding was that it's the way to fine tune an existing model. Looks like I need to read further 🙂 In any case, things are clearer in my head now -- thanks for the help Lukas! 😄
You're very welcome 🙂 Good luck with your project. Let us know what you came up with!
Super late to this, but in case it might be useful in the future, what was the data type of your input? Float64? Sometimes you can reduce it to float16 or even float8, although last time I did this it required some tinkering to get smaller data types to work
@Isaac Griswold-Steiner I don't quite remember; I think it was float64. Will keep this in mind, thanks 🙂
Ahoy! Does anyone know of any aerial datasets of disappearing land-surrounded water bodies over the past few decades?
I reviewed a paper on something similar for a conference a year or so ago, let me see if I can find it.
Ok, I can't find the paper I reviewed (not sure if it's been published yet) but while searching I found some papers looking at general water body identification if you're interested? I'm not sure of these have the change over time component you're interested in though.
This one is looking at floods, which is kinda the reverse of what you described https://openaccess.thecvf.com/content_CVPRW_2020/html/w11/Bonafilia_Sen1Floods11_A_Geor[…]aset_to_Train_and_Test_Deep_Learning_CVPRW_2020_paper.html
https://link.springer.com/article/10.1007/s40899-020-00425-4
This one looks at surface water change https://www.tandfonline.com/doi/abs/10.1080/01431161.2020.1723817
This has multi-source/multi-temporal which sounds neat, but is urban-focused https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7014233/
What are you working on? Seems like a cool project 🙂
ouf thanks for your patience on this reply - this week was a blackhole. I’m living and working remote in an ML+art residency near Bombay Beach on the coast of the Salton Sea and I’ve become fascinated with the bizarre-ness of this place. Last summer, myself, @Björn Lütjens and a few others used pix2pixHD and SLOSH to generate physics-informed satellite images “of the future” in the eastern parts of the US. I want to do something similar for the Salton Sea with styleGAN and try to find some “drought vector” ? We’ll see! I’ve attached a proof-of-concept whipped up in illustrator. The moonshot goal would be to have this on a timescale UI.
Hi everyone! I was wondering if anyone has any experience using the zooniversesubjectuploader.R from GitHub? I am attempting to modify it so it will work on my Mac (it is currently written for a PC).
I got stuck in the first part of this function:
resizephotos <- function(toresize = NULL, fileinfo = NULL, output = NULL,
crop_drop = FALSE, border = FALSE){
im <- system("where /r \"C:\Program Files\" convert.exe", intern = TRUE) #change "where" to "which" for Mac
if(length(im) == 0){
stop("convert.exe not found in imageMagick.")
}
I think the “where” function on a PC is “which” on a Mac? but I’m not sure how to fix this otherwise…. also is imageMagick something I need on a Mac?
Thank you!
Not sure about the other stuff, but ImageMagick is something I've needed to install in the past on my Mac!
Hi everyone, I'm a french ecologist/cognitive scientist working on behaviour, cognition and conservation of birds so far but I have new projects starting in other taxa. I recently moved to CV for bird species and behaviour identification at feeders because of injury issue I met with RFID technology. Our goal is to deploy models on a raspberry pi to preprocess data on the edge and only log and transfer labels. We started object detection with a computer scientist student on a custom dataset training a SSD mobilnet V2 and we are facing 2 issue. The 1st one is that although global metrics such as mAP(IoU=0,5)=0.87 are pretty good. We have a very low AP (=0,004) for the most abundant class (MESCHA). Any idea of what could happen or how we could move forward to understand what is the issue? Thanks for your help!
Bellow the results provided by COCO and PASCAL VOC evaluation scripts.
If you’re doing Edge stuff, the folks at Edge Impulse may be able to help! I’d also perhaps post about this in WILDLABS (wildlabs.net), an online conservation tech community full of people doing all sorts of CV, ML & tech for conservation 🙂
So this is a RasPi camera trap type thing then? If so, this paper may also be of use/interest if you haven’t already ready it: https://doi.org/10.1111/2041-210X.13610 (“A Raspberry Pi-based camera system & image processing procedure for low-cost and long-term monitoring of forest canopy dynamics”)
hi @Carly Batist, thanks for the paper and advice. My main issue is not edge stuff for now but a evaluation of the SSD mobinet trained on a GPU
@Maxime Cauchoix, I'm no expert but my first impression is: would it be helpful to include a background/other class? That is if you don't already have one. Since it is failing when predicting the most frequent class, I wonder if the model has not just learned to chuck the kitchen sink into the most frequent class?
Hi folks, I'm a graduate student at the University of Montana studying ways to facilitate Aquatic Invasive Species management using Remote Sensing Imagery and Machine Learning algorithms. I have developed a workflow for generating rapid risk assessment maps using species occurrence data, a library of remote sensing inputs, and an ensemble modeling technique.
Right now, I'm needing to defend my weighted average Species Distribution Modeling consensus technique and am looking for resources specifically detailing or recommending a threshold value from which to drop models (i.e. if models have an AUC score < 0.7, don't include them in the ensemble). I swear that I read this recommendation somewhere, but can't seem to find it in any resources (e.g. Thuiller et al., 2009, Araujo et al., 2009 , Marmion et al., 2009, etc) at the moment. Can anybody point me to such a paper? Thanks in advance!! 🙏
Hi all, I was wondering if anyone has a way to write a tag into the metadata of a photo in R? I’ve looked at exifr and exiftoolr… but all I’ve found so far is reading tags that already exist in the metadata.
Any resources or advice would be greatly appreciated!
I'm not an R dev, so I may be way off, but it looks like it may be easier to call an external program or script from R to do this.
Hi, I was wondering if anyone could help me estimate how much compute power is needed to train a species classifier. I should have about 2TB of images, which should turn into about less than 500K images. I'm sure this is highly variable, but if I were to train something like YOLO (some classifier, not a detector) on such dataset what would be the GPU/CPU/memory requirements?
I can request access to V100 GPUs for example.
It'd be useful to know what size image you're training on (and also how many images are in your dataset). You can train a Yolov5 medium model (for example) on a fairly small desktop GPU (8-10 GB). With that many images I would consider looking at some sort of selection strategy to reduce your dataset size, though with augmentation and a huge dataset epochs are less meaningful and you can just keep training until your loss flattens.
Basically your VRAM requirement is dependent on model size, batch size and input image size, but I think something like 4-8GB x batch_size is a fair estimate for a medium model (last time I did this with 640x480px images). CPU requirements aren't that high, 4-8 cores per GPU should be OK to keep it fed. Most cloud platforms will enforce reasonable defaults for the number of vCPUs per GPU per instance.
e.g. https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-high.yaml is the config for YOLOv5 on COCO. They use a 4xA100 (40 GB?) instance I think, with batch size 32 and 1280px images (I guess even for the XL models). But it's unlikely you'd need that unless you were training from scratch, that thing would burn ~250 bucks a day.
Thanks for this! The plan is indeed not to train from scratch but to do transfer learning. It will happen on compute canada's HPCs.
Yes, now that you mention it my training set will of course be much smaller, I just don't know yet how much. I'll be cropping out detections from megadetector, so I will have to resize the cropped images.
Ah so is this just a classifier, not an object detector? (you mentioned YOLO). If that's the case then you need even less. Object detectors are pretty heavy.
Oh my bad, I don't know why I wrote YOLO
For classification you could even try a quick test with a library like fastai (just run it in Colab), and see how well that does before throwing it at a cluster 🙂
Ok, but basically you would expect the needs to be rather modest?
I've just done a quick estimate, but the whole set should be around 300-400k detections. For sure below 500k.
Yeah, it really depends on what the data looks like and if your species are easy to differentiate. I would try something very simple like a resnet50 (or even a resnet18/34) and see how well it does.
If you're looking for someone to throw out a number to help you estimate budget, I will throw out a number, then duck while people caution you about all the caveats... on a V100, training a model like what you're describing is probably on the order of a week. Longer than a day, shorter than a month. YMMV.
I also wouldn't think about it in terms of "needs". You can train anything on anything (within reason) if you have enough time to wait. I would think of it as a tradeoff between up-front cost and time.
Yeah I can see how it's a bit of an unfair question to ask when I haven't done any benchmarks... The issue is that the deadline for applying for resources is way earlier than when I'll be able to start benchmarking. So I have to guess a bit
Also remember the first model you train almost never works the way you hope it will; I'm answering (as are others) wrt the requirements for training one model. I would assume you will train ~3 times, so if I were budgeting cloud costs, for example, I would ask for a couple months of V100 time.
Yes that makes sense. Thanks for the ballpark, that is helpful. In my case, it's better to undershoot and ask for more later than to overshoot.
Hi all, does anyone have experience with ensuring reproducibility of train-test splits between different machines? I am building a project locally and am deploying it on Google Colab. I use sklearn's train_test_split to randomly split the items in a list. Even though I specify the same random_state argument and initialize my RNGs (random, numpy, and torch) with the same seed on both machines, I get different splits of the list on each machine. I'd like to ensure that the list is split the same way regardless of what machine is being used. Does anyone know what might be the best way to do this? I could create my own splitting function but was wondering if there's a "best practice" method that I should look into. Thanks in advance!
You could generate indices for samples, then random.shuffle and then partitioning the list into train/test/split etc. Is that still not repeatable if you call random.seed just before?
Safest would just be to generate a split once and then upload it or store it in your repo.
Hi, I am sorry for not answering your question, but I would like to add a comment, which I hope you find useful:
depending on the type, amount, and variation of your data, you might want to make the splits yourself to ensure approximately equal distribution of classes, number of objects per sequence, or what else you can use as a complexity measure for your data. Using a random function to generate your train/test splits is (in my opinion) often not a good idea. E.g., you could end up having complex and varied data in the train split and the opposite in the test split, which would most likely provide you with a non-representative high performance of your model.
We published a paper at ECCV this year aimed at handling this problem within the multi-object tracking domain https://arxiv.org/pdf/2207.10031.pdf
@Josh Veitch-Michaelis Thanks for the suggestions. I will try the index shuffling method and if it doesn't work I'll likely resort to the offline split. @Malte Pedersen Thanks for your note as well. I have this implemented in a stratified manner such that the class distributions of the training/validation/testing sets are the same, so I don't think there should be a problem
That's great, it's often not taken into consideration
Hi all, this is a similar question to the one above of @Vinicius Amaral. I try to run two identical YOLOv5 (or YOLOv7) training scripts on a cluster, so using multiple GPUs, but I get very different results on the validation dataset. Maybe I do something wrong, or possibly when using multiple GPUs, reproducibility cannot be assured. I opened an issue here if you need more details: https://github.com/WongKinYiu/yolov7/issues/1144 If you have some thoughts to share, you can also comment on the GitHub issue. Did someone else encountered this and how did you solve it?
I am aware that with the v6.2 release YOLOv5 addresses the reproducibility issue, but it sounds to me that when using multiple GPUs, then this is still a problem:
"Training Reproducibility: Single-GPU YOLOv5 training with torch>=1.12.0 is now fully reproducible, and a new --seed argument can be used (default seed=0) (ultralytics/yolov5#8213)"
Hi Valentin, this might be related to the non-deterministic computations on GPUs (even on single ones). Just quickly found the following link: https://github.com/NVIDIA/framework-determinism
You probably need to search for "GPU and determinism" to find out more in this direction, but there are various known issues, e.g., with respect to the cudnn library. Hope this pointer helps.
Yes, it does help. At least I know what key words to use and that helps a lot already. Thanks!
Just a note that we've also had trouble with this in Detectron2.
IMO the main impact of randomisation should be the order in which your model sees new training data, and what augmentation is applied. For an "ideal" dataset that's sufficiently representative, etc, that order shouldn't matter too much. I would argue that if you're seeing significant differences due to framework determinism (things like rounding errors) then that's a "smell" that you should investigate your training data and try to figure out if the model is really generalising. In the talk the difference between the deterministic and non-deterministic models is pretty small (like 5-6% I think?).
You could also look at doing a bunch of runs and seeing what the variance is as a function of epoch. Perhaps you just need to train for longer, or lower the learning rate a bit if the model is jumping around? I'm not sure I'd trust the results if you can get a 10-20% improvement just by tweaking a random seed (is it a fluke on your validation set?). A more computationally intensive workaround for this is to ensemble a bunch of models. I agree it's tricky, especially if you want to try and reproduce a run with an identical seed.
Thanks for sharing your thoughts Josh.
I trained for 300 epochs each time and it looked like enough. The two identical runs give so different results that makes me think that I implemented something wrong, but I can't see what and I need to see how they perform on the identical test dataset. I have 100 images for training, 50 for validation and 50 for testing (a total of 200 images per species). I run it the 3rd time and I also get again different results. If this is inherently a problem in the YOLOv5 or v7 implementation when using multiple GPUs (as mentioned for example here https://github.com/ultralytics/yolov5/discussions/9288#discussioncomment-3560835), then how am I supposed to even optimize a model? Should I bite the bullet and just train on a single GPU every time? It is very hard to get a sense of direction when things feel random.
It is fascinating that detectron2 has the same issue. Is this a current huge problem in the field?
see here for example: https://github.com/facebookresearch/detectron2/issues/4260
I'm not sure if you have seen this already, but since it seems you are working with pytorch, this may be helpful as well: https://pytorch.org/docs/stable/notes/randomness.html
Yes, I saw that. I realize that it was mentioned by Glen Jocher at the link above too https://github.com/ultralytics/yolov5/discussions/9288#discussioncomment-3560835 I have no idea how to solve this. I am more of a person who wants to learn how to drive the car, not how to fix the engine 🙂 I mean, I am not at the level of building architectures and fixing bugs within them, but more on the side of making use of them for our research questions
I'll try to collaborate with the Cluster support team and see what I find out. But any other suggestions are welcomed as I cannot solve this by myself 🙂 It looks like this is an open issue when using multiple GPUs both for YOLO and detectron2.
Yeah this was from a colleague - I'm also using Detectron but I've not tried to measure the effect on my own data yet.
I'll try to investigate more and share what I get. As an alternative we could run a model N times, so that we get a distribution of performance metrics and we would always compare distributions to decide how to optimize models or to compare different approaches.
But that is easily overkill and not so affordable if a model takes days to run. Perhaps running it several times with less epochs might be also a compromise (like 50 epochs or so, or maybe even less, but then the results might not be stable / variance is really high and not informative)
Updates:
Indeed YOLOv5, starting with the release v6.2 (as mentione above), implemented reproducibility only for using a single GPU. With YOLOv7 I couldn't get reproducible results on a single GPU. Reproducibility with parallel processing, using multiple GPUs at once, seems to remain an open issue both for YOLOv5 and v7.
Perhaps someone who can edit their code might implement this, but it is out of my reach for now. If anyone else makes progress with this please let me know as I find this extremely crucial for open science, reproducibility & transparency.
Hi everyone!
I'm new to this slack group, as well as computer science in general, but I want to combine my knowledge of animal behavior and wildlife conservation with AI and ML to improve our data collection and processing methods. For example, the PhD opportunities listed with WildDrone look like incredible projects that I would love to join, but I'm concerned that my CS skills are lacking 😅
Does anyone have advice as to how I could improve my CS skills? I would love to take classes (and am currently working through Harvard's CS50!), but my current job would only allow for virtual self-paced education. I'd also love to volunteer with an AI/ML project to learn by doing, but I don't know of any projects accepting volunteers, especially those without a solid skill set (I don't want to slow any projects/groups down while trying to help 😵💫)
Thank you! ☺️
If you’re totally new to computer science, I strongly recommend starting with these lectures. These will, in theory, give you a good foundation on computers in general, and help you use tools like AWS/Azure/GCP if you’d like! Afterward, I’d focus on honing your python skills
https://missing.csail.mit.edu/
Would also love to chat with you as you go more about your process and learning experience.
Also, if your job would allow/if your drone work is vision-focused, I’d highly recommend applying for the CV4 ecology summer workshop. More info here
Hi Remi, I just want to say that, generally, the ecology/behavior focused PhD projects in WildDrone do not require a computer science background, and would provide lots of opportunities for gaining such skills and collaborating with CS folks to apply their skills to wildlife/behavior problems. So if any of the projects (particularly those in Theme 1) appeal to you I would encourage you to apply!
In fact, I would say that the Theme 1 projects are generally aimed at people such as yourself - who have a strong background in the wildlife side of things, and are motivated to combine these skills with drone technology and computer vision through skills development, but most importantly through collaboration. A grounding principle of the WildDrone project is that no one can be an expert in all three areas (wildlife, drone technology and computer vision), so collaboration is the necessary and best way forward. Please apply!
I was looking at the theme one projects! This is really reassuring, I'll definitely plan to apply ☺️
Does anyone have some recommendations/have some practical experience on integrating low-dimensional metadata+context into image processing CNNs (or any model which accepts a high-dimensional input like an image)? See table 1 here. Think geolocation, image scale, all the good stuff we get from field work, etc.
I've had a look at the literature on context-aware ML, but it's mostly fairly abstract and I've struggled to find anything that spells out a simple experiment or model architecture where you have a vector of contextual information and you want to use it to aid prediction. In most cases we don't need to predict the metadata, since we almost always have it a-priori from the image (e.g. we only predict on geo-located data, so we can infer biome etc), but we might want to try and force the model to discriminate better using it.
The main choice I can see is where/how you insert the metadata and how you exploit it during training/inference. Do you insert it at the start (with the image), do you add it onto the embedding at the output of the model? Do you just use it during training as an assist, or do you use it at test-time too? Do you try to predict the metadata and use an additional loss term? Lots of stuff to consider 🙂
An interesting idea here is to "brand" the information into the image: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8857478 - i.e. insert metadata at a low level in the network
There's also this paper on "nuisance" features (altitude, weather, etc) https://openaccess.thecvf.com/content_ICCV_2019/papers/Wu_Delving_Into_Robust_Object_Detection_From_Unmanned_Aerial_Vehicles_A_ICCV_2019_paper.pdf This approach basically co-trains a bunch of predictor heads to also classify/regress things like weather, altitude, etc. It works well, though I think the terminology is over-complicated; the "NDFT" is just the backbone model of the object detector. The downside of this approach is that it only works at training time, it doesn't allow us to condition the model during inference.
Have you looked into transformers? There is a lot of work coming out where people are exploiting additional metadata by appending them to the patches, in a similar way to how you append positional encodings on the vision transformer
Interesting, do you have a reference? At the moment we're using Mask-RCNN because it's pretty stable, but should be simple enough to swap out.
Hi everyone. Happy Friday! 👋
Does anyone know of any approaches that allow a NN to understand the 3D shape of an object from a collection of images? For instance, imagine a collection of images of a single tree, starting from its base, spiralling around it, all the way to the top. I am interested in being able to separate each branch from the rest and keep track of it as the images change (for example, the same branch might be visible from a different angle in some images; it needs to be identified as the same exact branch/entity)
I am thinking I need to delve into NeRFs for this, but wondering if people here have any ideas. Also this isn’t specifically for trees/branches, it could be just about anything I suppose.
Is there a reason you need to use a NN for the reconstruction and not something like photogrammetry? I would explore whether you can simply take a bunch of photos of the tree from various angles and stitch them together.
For example, do you need "understanding" or just a good, consistent 3D model?
I would suggest that you split this into two stages - one would be to generate a model, and second would be to segment/classify. NeRFs look good, but they require a lot of compute power and the results may be sensitive to the scene. Depending on the conditions and scale, you might be able to use things like structured light scanning, time of flight, etc.
I've used TLS for this and it's quite effective up to 20-30m, but very expensive (the scanners are, anyway).
I second that computer vision approaches for photogrammetry (e.g. Structure From Motion) might be a good first step to build a 3D model prior to implementing your NN.
Yes, a two stage approach is likely what I need…
Photogrammetry is a good shout but ultimately I don’t care about actually having a 3D model. I’m thinking I need something like instance segmentation on steroids.
I’ll give you a bit more context using the tree analogy again. For a given image I need to identify unique branches. I can train a segmentation model to do that do some degree but likely not very granular. Branches are just too similar in nature to get good results… I could probably segment the background, the tree trunk and all branches together as one entity.
Hence why I am interested in a model that can “understand” the shape/characteristics of the whole tree as opposed to just what’s present in a single image.
Also, what is TLS in this context? Thanks.
(have a look at MicMac - https://micmac.ensg.eu/index.php/Accueil)
TLS is Terrestrial Laser Scanning
I suppose I am curious about the second step… segmentation in 3D space? Similar to point cloud classification maybe?
Yes, basically. You can do 3D convolution instead of 2D, for example. Depends a little on whether you're doing voxel based classification or true point clouds (which are a lot more difficult in some ways because they're unstructured).
See https://arxiv.org/abs/1612.00593
But the inputs to all these models is a 3D representation of the scene, so you still need to generate that first. And if you get a good reconstruction, you'll solve the problem of disambiguating branches because they're just part of the point cloud.
Makes sense, thank you! That cleared up some things in my head.
Hi all! Does anyone know of great labeling tools in which I can upload many images (~200k) with corresponding COCO-formatted bounding box labels for refinement?
I have use makesense.ai and was good for my usecase. Here's a partial list of urls with similar toolset:
https://www.makesense.ai/
http://labelme.csail.mit.edu/Release3.0/
https://scalabel.ai/
https://github.com/tzutalin/labelImg
A larger list of open-source tools
https://www.simonwenkel.com/lists/software/list-of-annotation-tools-for-machine-learning-research.html#computer-vision:~:tex[…]D%20Pose%20Annotation
Closely-related thread from a few days ago:
https://aiforconservation.slack.com/archives/CLWGQ4BJ6/p1678977264828679
But now you've piqued all of our curiosity... what are you putting boxes on?
thank you! And primate faces— happy to chat more if interested!
Neat! Let this Slack know what you end up using for annotations, this is a question that comes up a lot here.
@Felipe Parodi this is pretty doable in CVAT if you're just after boxes. Though I would suggest batching your data into subtasks for convenience (like 1k images at at time). The upload system is pedantic, but it works.
It's not super clear from your question, but you already have labels and you want to tighten the boxes? I would imagine that you'd be able to do well by fixing even 5% of the data, re-training and re-labelling.
@Josh Veitch-Michaelis yes i do have boxes to tighten-- thanks for the tip!
Hi! Quick question about Megadetector, we've ran into an issue that I dont think is a bug, just maybe a corner case that maybe others may have ran into as well.
We place our cameras in the winter in marshy areas where it is very hard to predict what vegetation will look like in the spring. We often end up with sites where a lot of plants/bushes have grown rigth in front of the sensor. Add to this a lot of windy episodes, and you get a recipe for lots of false triggers and a lot of false positives in the case of Megadetector detections (we use a confidence threshold of 0.1, but a lot of these false vegetation triggers have pretty high confidence over 0.5). Its often not possible to filter for repeating bounding boxes as the vegetation will noticeably shift in the wind at this distance from the sensor. Has anyone ran into this specific MD behaviour?
We re considering training some model to tease apart false from true positives for our specific use case (either using characteristics of the BB or directly training a classifier.. we think a classifier will not generalise to future wind events at different sites though).
Can you show the whole images for the boxes above?
there are so many of these windy images that even if MD's error rate on this is low, it still produces 10s of thousands of "relatively confident" false positives due to near sensor vegetation
yeah, that's definitely tough. How much motion are we talking about? Also, what species are of interest? Maybe there's a way to tweak the box location based filtering for this use case
a lot of these if I squint could maybe look similar to the tip of an ear or something
How much motion are we talking about? => its only really a pain to sort through when the vegetation is fairly mobile. Im gonna make a gif to examplify that.
what species are of interest? => we dont have targets, we are looking at everything (which of course doesnt help)
that branch on the side is an example of what will trigger a lot of false positives and we have this on a lot of our sites due to the biome we work in and the extreme seasonality
[Also see this answer from a couple weeks ago, where I said basically the same thing I'm about to say here. 🙂 ]
What are the overall rates of true positives MD false positives at your confidence threshold? In general, if MD (or any AI tools) are substantially reducing the number of images you have to deal with, false positives are just a part of life, and the only way to reliably get rid of them is to sacrifice some recall. So the first thing I would ask is whether any steps to reduce those FP numbers are going to take more time than it would take to just review those false positives.
That said, there are a few tricks we recommend if you really want to put some time in:
Thanks for all this.
Concerning the rate of FP: out of the 65,338 detections (for a total of 54,677 images) we have manually verified so far, 30,621 were false positives (or 46.87 %), and 33,237 were true positives (or 50.87 %), to which 1,480 false negatives were added (manually added bounding boxes, 2.27 %). Out of the 33,237 true positives, 1,738 had to have their bounding box adjusted.
I am now doubting that I ran the model properly, which actually brings to mind another issue we ran into, where sometimes in a sequence of images where an animal was detected, there would be an image in the middle of that sequence where MD just completely missed the animal even if found it in all of the previous and subsequent images (does that happen?).
Below is the code I used to run the model, to give you an idea. I dont think I departed from the doc. I apply the threshold of 0.1 later.
python $MD_FOLDER/detection/run_detector_batch.py <br> $MD_FOLDER/$MODEL $RUN_DIR $STORAGE_DIR/$OUTPUT_JSON <br> --output_relative_filenames --recursive <br> --checkpoint_frequency $CHECKPOINT_FREQ <br> --checkpoint_path $STORAGE_DIR/$CHECKPOINT_PATH <br> --quiet <br> --resume_from_checkpoint $STORAGE_DIR/$CHECKPOINT_PATH <br> --allow_checkpoint_overwrite
Also, we try to process the detections with highest confidence first, so my number above are skewed toward true positives.
I completely agree with having to think hard as to whether this is even worth solving. I want to know if my number of false positives are really above normal, and unless ive ran the model wrong, it seems to be the case.
Your code looks reasonable... I'm actually not sure what happens if you specify --resumefromcheckpoint when starting a job for the first time (that's used to resume processing if, e.g., your machine reboots), but whatever it is, I don't think it's something we need to worry about wrt accuracy.
A 50% false positive rate would be pretty high... but what was the total number of images from which those 55k detections came? If that was 30k false detections out of 100k total images, these results would be... not good. If that was 30k false detections out of 5M images, I would be thrilled with those results.
Re: missing an animal in the middle of a sequence... everything that could possibly go wrong will eventually go wrong. 🙂 Is this common? And is this a subtle case where the detections were close to the confidence boundary, and maybe the middle one just dipped to a slightly lower confidence? Sometimes in postprocessing we'll smooth detections over sequences, e.g., in a second pass, apply a lower confidence threshold to images in the same sequence as an image with a high-confidence detection. I don't usually do this until after doing whatever steps you're going to do to remove false positives.
In any case, I'm always curious to learn more about MD failures; if you want to send some images for me to take a look at, email cameratraps@lila.science.
Sorry I actually copied the chunk for after checkpoint restart. The new run code is the same minus that.
I cant say how many iamges that comes from because we are processing more certain detections first, and I dont have a proper "set" estimate at hand. But it is more along the line of 30k in 100k.
thanks again for all this. I will first try the repeat detection scripts and probably come back with more targeted estimates and discussion points
Does it make sense to make calibration to the camera trap. Reduce the number of images captured (sleep time between images) or reduce the sensitivity parameters of the sensors?
I am also a little inclined towards wondering if different geographies can impact the output of MD? This is more of an intuition, rather than based on any hard scientific analysis. But I have attached the geographic distribution of Wildlife Insights and Wildcam data. There is a gross imbalance with respect to data from the Indian subcontinent. This could be one of the reasons for MDv5 having a high number of false positives.
I have not worked with Megadetector before, but have you considered training a post-hoc filtering algorithm? You should be able to fine-tune a pre-trained off the shelf model for your sites to reduce false positives.
Variability in background can definitely impact accuracy, although I would think of it as a function of background and target taxa, more than geography. Background is slightly correlated with geography, but only a little. Dense rainforests are hard whether they're in Vietnam or Peru, and relatively open areas are easier whether they're in Tanzania or Montana. Reptiles and tiny nocturnal rodents are enormously difficult whether they're in India or Florida. That said, a few random notes:
@Dan Morris, Ive tested the repeat detection scripts (it required to add a few packages to the conda env btw, i dont know if this is intentional?) and the default iouThreshold (0.85) doesnt yield anything, so ive lowered it to 0.5 and its looking like it will be useful, as its catching more of that wind movement. I was wondering if you had any advice on choosing the Threshold. Have you had to change it significantly in the past?
Re: conda environment... sorry, there's a separate conda environment for everything that isn't literally running the model (environment.yml, rather than environment-detector.yml).
Note to self: maybe this is a little silly at this point and we should just add the other packages to environment-detector.yml. (Self says "noted").
Re: IoU threshold... I personally wouldn't use 0.5 unless you also set a very small maximum box size, at that point you're de facto just deleting all detections in an area of the image, which is a totally reasonable thing to do, but there are easier ways to do it, that don't require looking at lots of images. I never reduce this below 0.85.
But what confidence threshold are you using? I noticed that the default threshold is set to 0.8, which was sensible for MDv4, but not sensible for MDv5. I typically set this to just a little lower than the confidence threshold I'm going to use for image review, so maybe something like 0.1. If that's still at the default, try it at 0.1?
Oh, i did not notice that the default --confidenceMin was at 0.8. I should def try to lower that.
FWIW the only parameter I usually play with is the occurrenceThreshold (the number of matching detections in the same place that are required to generate a candidate), and I typically never lower this below the default of 20. I tune this number to make sure that I'm going to spend around five minutes on the whole review process, so if I have a batch that's 50,000 images in total, I'll leave it at 20, but if I have a batch that's 2M images, I might raise this as high as 75 and just worry about the really egregious repeat detections. It's a little bit of guesswork, but I'm basically shooting for around 1000 candidate detections (which could be a couple hundred thousand of actual images).
And the other important bit is making sure that the script's concept of "camera" is accurate. If each folder is a camera, you're good to go with the defaults, but if you have a more complex folder structure, or if your camera creates overflow folders, you may have to tinker just a bit.
And the important bit is making sure that the script's concept of "camera" is accurate.Oh that's useful, thank you
When running this at the command line, the only tool you have to get non-default camera identification (other than moving your images around) is the "nDirLevelsFromLeaf" parameter. But if sometimes a "leaf node" folder is a camera, and sometimes it's not, you can't easily catch that. It may not be worth worrying about, nothing bad happens in the case of typical RCNX100/RCNX101/etc. overflow folders, you just miss some opportunities for repeat detections to stack up. But if you need to do something more complicated, you may have to call this from Python and use the "customDirNameFunction" option:
https://github.com/microsoft/CameraTraps/blob/main/api/batch_processing/postprocessing/repeat_detection_elimination/repeat_detections_core.py#L139
I can't think of a great way to expose this at the command line.
Ok, in my case, setting nDirLevelsFromLeaf = 1 instead of 0 is just what I need. We just have overflow folders at the last level. And that is already exposed at CL. Thanks Dan!
That's fine as long as you always have that overflow folder. I would just double-check. I think this is the default on most cameras, but Bad Stuff will happen if nDirLevelsFromLeaf == 1 and that RCNX100 folder or similar isn't present for every camera.
So far, the number of folder detected by the script is my expected number of cameras in my site folder (the folder I'm running the script on). I'll double check, but I'm pretty sure we always have that (at least) RCNX100.
There is so much information here. I will save it as a reference!
Also see this thread (more stuff about repeat detection elimination):
https://aiforconservation.slack.com/archives/CM7GR4DB6/p1686105494925979
Hi all! I joined recently and am Co Founder of Terraspect. We're trying to mitigate terrestrial ecosystems services impact from buildings during their operational life by identifying light, noise and heat mitigants. Does anyone know of any datasets on embodied ecological impacts of building stock and casual drivers in the urban global south?
curious if anyone has suggestions for CV/ML systems that might assist in finding/mapping irrigation systems from satellite/aerial photos? in particular, i am wondering if this might assist in mapping efforts for the acequias here in new mexico u.s., a centuries-old irrigation system that treats water as a fundamental, communal resource.
Hi all! Does anyone have thoughts/feelings on the numerous data science and machine learning boot camps online? I'm looking to enroll in one but there are just so many to choose from 😵💫
What do you want from it? How much time dd you want to deficate? Per day/in total? How much money?
I did Le wagon in person in brussels (after seeing a post from @Alessandra Sellini mentioning it). For me it was really good. It is quite expensive, but i really needed the intensity and the peer pressure (as in learning with others and being pushed), and i was satisfied with the content and pedagogy too.
I used to work in ed tech and did all kinds of courses before, which also worked, (and probably you can find the content online for cheap/free) but when i did the bootcamp i didnt have the right frame of mind to be able to succeed in such a time frame (9 weeks) on my own.
I want to shift my career from strictly animal behavior to conservative technology, and I'm really interested in data science and machine learning experience so I can be prepared for a PhD in that field
I'm planning to do something full time, preferably remotely, and am on the hunt for various scholarships to help with funding
I tried doing part time courses but my current job schedule is too hectic to keep up with anything on the side, so I'm using self-pressure of being a full time student again to make sure I'm really focused on finishing the programs I sign up for! I'd love to chat more about the various programs you've had experience with!!
I haven't found any useful scholarship options. Sometimes jobs give edu budget. Some courses offer discounts (for example for women in stem).
I did Le wagon and was very satisfied, a friend did founders and coders (but not the ML one, they added that one more recently, and I am also not sure if they offer an online version).
Online masters are also an option, but I think the fastest you could finish that is 1.5/2 years. There are some offered by University of London (Data and CS), Colorado via coursera, https://omscs.gatech.edu/home. But not sure how much peer pressure and peer learning comes with these options. (somewhere between 5-15k)
I went to do my bootcamp in person because I knew that that's the surest way that I'll be focused on learning for 8+ hours a day. And in the case of le wagon, it's 9 weeks, so one can deal with an unsustainable amount of pressure as well.
How much time do you want to give it?
Hi everyone! I'm hoping to get some help with the application of CV to our new camera system, to help highlight when interesting things have happened on a video timeline (eg, an Interestingness score). We have a brief for an MVP version so if anyone is up for a chat about what we're looking to achieve, I'd love to learn more about potential costs/timelines for achieving it.
Hi everyone... I need to produce some 3D model of insects form microscope images. But there are just a few each sample so the way I usually proceed through canonical photogrammetric software is not working. I was wondering if anyone has some suggestion with AI-based algorithms that can perform better. Thanks
Hi @matteo redana - this is a hot research area, where you build a 3D model, using few images. I can share some existing research which may be useful for your research.
In this paper they have created a 3D rendered model of a zebra using an open-source technique GRADE to identify them later in drone imagery. Maybe it gives you some ideas to work on!
https://arxiv.org/abs/2305.00432
Can A.I. identify and count my fish for me?
My organization operates multiple projects that use underwater cameras to record passing salmon (and other species). Technicians then review the recordings and ID and count the fish. I'm wondering if A.I. can id and count the fish for me? I'd love to connect with someone who might be able to help me. Thanks.
Yes there are models to count fish. You can also check this blog which uses Segment Anything for counting grains.
https://www.thinkevolveconsulting.com/2050-2-counting-grains/
Here's a version of the megadetector for fishes:
https://github.com/warplab/megafishdetector
Another interesting usecase in case you want to identify the species is run the image crop through one of the multi-modal generative models like Bard and you can even get the species classified.
I have been maintaining a list of all the publicly-available models for finding fish in imagery that I'm aware of (including MegaFishDetector, which Aakash mentioned):
https://github.com/agentmorris/agentmorrispublic/blob/main/fish-datasets.md#publicly-available-models-for-fish-detection
@Filippo Varini and I have also been keeping track of datasets suitable for training models like this:
https://github.com/filippovarini/filippo_public/blob/master/fish-datasets.md
Hi, I’m Indu 👋 and I’m a graduate student conducting research on explainable AI. I’m sending some information for a paid user study about XAI and bird identification that may be of interest to members of this Slack! 🐦
Our research team (Indu Panigrahi, Sunnie Kim, Rohan Jinturkar, Olga Russakovsky, Amna Liaqat, Ruth Fong, and Parastoo Abtahi) is conducting research on understanding the Explainable AI (XAI) needs of technical and non-technical users, and how certain designs of explanation can satisfy or not satisfy these needs, for the task of bird identification.
We’re looking to interview users with a diverse range of experiences with computer vision and machine learning (from no to a lot of experience) and a variety of birding expertise (from no birding experience to experienced birder). If you are interested in participating in this ~1.5-hour study over Zoom, please fill out this short Google form (https://forms.gle/F7bmWkVG7JyT6XA27). Study participants will be compensated with a $25 Amazon gift card (which will be sent electronically).
If you have any questions, please feel free to DM or email me. Thank you!
Hi folks, I'm a postdoc at the University of Michigan studying red squirrels, particularly the endangered Mt. Graham red squirrel! It's great to be here.
I'm trained as a reproductive neuroendocrinologist but I'm fascinated by AI and striking out into the machine learning wilderness with my current project--something my lab has no experience with! So I'm hoping to connect with someone who has experience using machine learning (random forests, Bayesian optimization) for conservation and the capacity for some involvement with my Smith Conservation Biology Fellowship application--at this point I'm just looking for some feedback on the ML part of my proposed project, but also ideally a willingness to participate in 1-2 meetings per academic year with my mentorship team during the 2-year fellowship period if the project gets funded. Please feel free to DM me with any questions about the the work. Thanks!
Hello everyone; We are looking for a dataset of fish images 🐟 which are geolocated 📍. We would like to evaluate the impact of a geolocalized prior on the performances of fish classification. If you know about large datasets that are either single individuals, bounding boxes or masks, as soon as these are geolocalized, that would be great. For now, we only work with latitude/longitude but not yet depth.
We expect geographical diversity but could consider merging multiple datasets if necessary. Thank you very much for your help 🙏
You could also take a look at https://lila.science/otherdatasets#:~:text=horses%20(code)-,Marine/freshwater%20images,-Also%20see%20the
Hello everyone, I am looking to automate data entry from data frames on paper into Excel or similar. I am a marine scientist and i print an empty dataframe onto underwater paper, then hand write my data to the paper when in the field. Back at the office, I have thousands of these pages per month to enter the data to the computer. I'm looking to automate this from a scanned image of the data. Of the software/ models I tried, most do a decent job of the typed text but struggle with integrating the handwriting at the same time and in a structured format. Has anyone successfully done something similar? Attached are two examples of my data frames. Thanks in advance, Jess
Hey @Jessica Bellworthy, I'm aware of HandwritingOCR (a subscription service) which offers structured outputs (e.g. the screenshot I attached) but if you want it to be really reliable you may want to finetune the process on your scans and the expected format (I bet you're reusing the same dataframe templates for these thousands of pages?)
I also tried gpt4vision to export JSON and it does okay, not sure how cost-effective it would be with thousands though (second picture attached).
I don't know how much effort you want to spend automating this process but I'd be happy to chat more/help out.
Oh Nice thank you. Already better than I did. I'm going to check out HandwritingOCR and get back to you with questions. Thank you for the reply.
Hi @Jessica Bellworthy I was hoping for something similar, but when I tried img2table I got hung up installing dependencies on my M2 Macbook. Might be worth a test.
https://github.com/xavctn/img2table/tree/main
I had one question about your table: Some of the cells have mixed content in them (like a number and a note). Would it be possible to add a separate Comment column? Or is there too much of a legacy? Seems it would be easier to parse if the cells always contained just numbers.
https://medium.com/@lidores98/image-table-to-dataframe-using-python-ocr-773c8afb713d
Calling all frog lovers!! 🐸
We're a team of graduate students in the Masters in Information and Data Science (MIDS) program at UC Berkeley, currently working on our capstone project, a citizen science app for automated frog call identification to reduce the biodiversity data gap.
We're interested in knowing how users of citizen science apps interact with the apps and what their pain points are. The https://forms.gle/aP2nttCAQCKHE7g56 should take 5 minutes to complete, and it would greatly help us in our design.
Thank you in advance,
Haissam Akhras, Lia Cappellari, Farouk Ghandour, Erica Nakabayashi and Juliana Gómez Consuegra
We value your privacy: the information from this survey is confidential. We will only report aggregated results from all survey participants; no individually identifiable information will be stored or reported. All survey results will be deleted on December of 2024, as soon as the project is over.
Hi everyone
Does anyone have any experience with RAID0 on nvme SSD in Linux?
I want to increase my read/write speed of imge files of the camtraps(200-1000KB) , I did a software RAID0 but performance of 2 SSD RAID0 is the same or even a little worse than one SSD. Why does this happen? Is it because the files are small? Should I use small strip sizes?
Thanks.
Interesting, I’ve only used RAID with HDD arrays, where it provides a large speedup. What kind of connection do you have from computer to hard drives? Is it possible that you are i/o bottlenecked by the physical connection?
Has anyone tried using DeepLabCut on JPGs instead of videos? I've read the docs but there doesn't seem to have info on image inferences. Would love to use SuperAnimal, but once again I couldn't find much on their website https://deeplabcut.github.io/DeepLabCut/README.html
So far I have only used it on videos but based on the way the pipeline is set up you extract the videos into frames to do the annotations for training 🙂
So i think you would just need to skip the extraction part and i think this may be easier if you are using their jupyter notebook instead of the software...
here are some notebooks with examples : https://github.com/DeepLabCut/DeepLabCut/blob/main/examples/README.md
I'm happy to help if I can 🙂
Thanks heaps! I got a helpful response from the DLC team on GitHub and there is now a direct implementation for image inference with SuperAnimal (here: https://github.com/DeepLabCut/DeepLabCut/issues/2789). Although the notebook wasn't in the main branch which explains why it was so hard to find!
Hi everyone! New here (thanks for the invite). I'm a researcher working on animal-plant interactions and seed-dispersal networks in Madagascar. My student has a dataset of a few hundred short footages of mouse lemurs caught on camera traps. We would like to have some idea as to the number of individuals we have, i.e. a crude identification of individuals. We are not really from the AI field so. I was wondering if anyone wishes to have a look and help us out? We can't offer much but if this ends up being published we are more than happy to offer authorship on an academic paper.
Hey Omer! I'm a ML practitioner and I'd be happy to have a look at your dataset (no need for compensation). You can DM me if you'd like
Just confirming: you are trying to identify individuals, right, not just the number of individuals present in a given image?
Assuming I've got that right, my first question for individual ID problems is always: can you tell one individual apart from another in a video? I.e., are the markings sufficiently distinct that human experts do this? It's not quite never the case that AI can do an identification task that human experts can't, but it's almost never the case.
Thanks both! @Sebastien Ouellet I'll DM you.
@Dan Morris I see these as two sides of the same coin. If I can identify individuals, I can count how many I had.
We are aware that this is a difficult task, which is why our hopes would not be to have full id of all individuals, but to be able to have a good estimate of the minimum number of individuals.
I think human experts should be able to it at least partially, but it might require an insane attention to little details like the combination of variables like the length of the tail and the distance between the ears.
Hi Omer - believe you have got some good inputs from Dan and Sebastian. But still I would like to offer my help, if its required. This will be a pro-bono.
Alternatively, you could open source the dataset on Zenodo (or other platform) and let us work on it! 🙂
Hi All! Just joined this community and I'm and wondering if there are any State or Federal personnel working on AI for Conservation who would be willing to discuss their projects for a report my organization is putting together for the Walton Family Foundation? Full details are in the pdf included here.
The Upshot - We're hosting listening sessions with government employees using (or developing) AI solutions for conservation impacts. We're specifically focused on the uses, barriers, and landscape factors that impact adoption. The goal is to connect these folks, develop a library of initiatives, and publish a report on the opportunities, barriers, strategies, and cost-benefit analysis of AI for conservation.
If you're interested (or know someone who might be!) please reach out to me either through here or via email at cole@policyinnovation.org.
Thanks!
If you are interested. I can share a few usecases/connects to govt officials from India.
Hi all,
I'm looking for a large-scale dataset (preferably thousands of images) containing semantic segmentation of vegetation types—such as trees, shrubs, etc.—ideally sourced from drone or aerial imagery.
If you know of any relevant datasets or resources, I’d really appreciate the recommendation!
Thanks in advance!
Hi - is there a list (or does anyone just have an opinion on) what the most impactful/important "AI for Conservation" papers are?
Hi all - someone reached out to me looking for some in person training on Raven in the Cambridge, Massachusetts area. This group is trying to analyze rat vocalizations and would find a tutorial useful). They will pay (an unspecified) fee for lessons. Happy to share more, feel free to message me if you could provide help or have suggestions!
My collaborators and I are looking for someone to take on a project developing a deep learning computer vision model to identify and measure duckweed species growing together. While we don’t have much in the way of funding, this project could be perfect for a thesis. We believe it would make a nice paper in and of itself, but then it would facilitate using our data to produce at least one more paper (and likely more in the future) which a successful model developer would be invited to co-author.
Duckweed are used as a model system in biology/ecology experiments due to their small size, rapid growth, and relative ease of care. However, it is difficult to quantify species’ growth when in co-culture because the species are very similar in color and shape, and are often occluded (see attached pictures). This means that a successful model would open the door to a lot of ecology experiments and insight, so there is opportunity here for significant impact in the field.
Our current image dataset was produced from an experiment investigating higher order interactions/emergent species interactions. We have thousands of images from hundreds of containers/communities, and have already labeled some in Roboflow.
Please spread the word and DM me with any questions. Thanks much.
check out this approach that i used for counting grains. maybe it can be adopted for your usecase
https://www.thinkevolveconsulting.com/2050-2-counting-grains/
Nice, thanks for sharing, Aakash.
Hi! 👋
I would like to ask for help on behalf of my friend, who is trying to publish an AI4E dataset - we got some guidance from chatgpt but anyone with relevant experience with this would be greatly appreaciated, please let me know 🙂
Hello, our paper on computer vision for fish recognition is currently under review in an interdisciplinary journal. Among other things, our contribution is the dataset which we published on zenodo. However, the editor says that zenodo perhaps is not a good data platform and that we might look at the alternatives. Does anyone know why zenodo would not be a good platform? We picked zenodo as it is free and offers dataset publishing according to FAIR principles, which was required by the editor as well. Editor also requires us to publish ISO metadata. Has anyone had experience with this? What is the best way to create this ISO metadata and publish it on zenodo?
Did the editor express specific concerns about Zenodo? Zenodo is widely accepted and checks all the boxes editors usually like.
Also, can you describe the dataset a bit? Is it new data, or is it a composite of datasets collected from the Web or from other datasets? About how large is it?
Thanks @Dan Morris for the reply! And sorry for my late reply, I thought it is best @Josip Saric takes over as one of the authors, but then I forgot to add him to the slack last week 🙈
Hey Dan, thanks for the interest in our situation. Sorry for the late reply. No specific concerns about Zenodo were expressed. Perhaps the issue is that it does not support automatic metadata export in ISO format. My plan is to create the ISO metada xml with some other tool, and then upload it to the dataset repository. What do you think about this solution?
Dataset contains around 2000 high-res images of fish each labeled with 18 keypoints. The data has not been previously published and has been collected by one of the coauthors. It is like 12.0 GB in size.
This sounds like a perfect fit for Zenodo: the only downsides of Zenodo are that (1) there's a size limit of 50GB (a little more by request IIURC) and (2) downloads are a little slow, which only matters when you get close to 50GB. Neither of these are an issue here. I agree that there's no benefit to having the site generate metadata automatically, for datasets that are updated infrequently it's almost definitely better to just upload the metadata you want. COCO is probably the most standard format for keypoint annotations, but any standard-ish format will be fine.
I asked all these questions because I'm happy to host this dataset on lila.science, but in this case, given the small size of the dataset, I think you're better off on zenodo where you have total control and don't have to go through me as an intermediate. But if I'm missing something and there's a reason LILA is a better fit than Zenodo, reach out to me at agentmorris@gmail.com .
Thank you for your thoughts. I had a look at your project, and it looks great! I think I already found some interesting datasets that we might find useful in our future work!
I’m wondering if anyone knows stats consultants who are familiar with standard practice in behavioral ecology and have good experience with analysing observational datasets
I'm working on my PhD in ecology doing stats on a field study. Happy to discuss approaches. Whats your question/data?
Hey thanks so much for being in touch! Our group has a lot of different datasets & questions, and so we were looking for someone who we might be able to check in with, in a somewhat consistent way
Hi all,
Hope you're well!
Is there anyone able to help me in developping and training an AI-agent (probably on a LLM, such as Co-pilot) that would help in pushing internally within my organisation & guiding my team in using social science (according to our vision/framework) to tackle wildlife crime? Or do you have any recommendation? Any help would be appreciated!
Thanks!
Hi Lionel — this sounds like a really interesting direction! Could you share a bit more context?
Hey everyone! I realized that there wasn't a good awesome list for scientific ML, so I started one! Would appreciate any stars or pull requests for more resources! https://github.com/breadboardfoundry/awesome-ml-for-scientists
CV4Ecology 🙂
https://cv4ecology.caltech.edu/
oh that's a great resource we should add! I'll do that now!
Hello everyone, I was looking for some resources on training a model to identify individuals on BirdNET. Are there any resources available here? Very new to slack so any directions would be very appreciated.
@Inês Nolasco wrote a paper about individual id recently, not birdnet tho https://arxiv.org/pdf/2409.08673
Hi Eriberto, we actually have a tutorial notebook from today's workshop at ICTC that does exactly this!
https://colab.research.google.com/drive/1unHYpWmoFLjnErOszQyjF-7KzA9CB3N3
For more context you can also check out the workshop slides and other workshop materials
https://drive.google.com/drive/folders/1ybiRy1Wk2r5EswUeLAA2H4SqzCI0POKc
And this GitHub associated with my Ovenbird individual ID project
https://github.com/sammlapp/ovenbird-individual-recognition
Of course reach out if you have any questions or want to discuss your project
Thanks a bunch everyone! @Sam Lapp would you potentially have any materials using the BirdNET analyzer gui? I have been attempting to use that with my recordings. My next step is using python and I will practice with the material you shared (I am very new to python).
I don't have experience with using the BirdNet gui for this, but it does provide support for generating embeddings
Thank you again! I will post my progress with BirdNet gui and try out your tutorial.
@Kate Reed joined #help_needed. They’re also new to AI for Conservation.
@Taneea S Agrawaal has joined the channel
@Rodrigo Oyanedel joined #help_needed. They’re also new to AI for Conservation.
@Francisco Gonzalez joined #help_needed. They’re also new to AI for Conservation.
@Amanda Swayze-Rebeaud joined #help_needed. They’re also new to AI for Conservation.
@Greg White joined #help_needed. They’re also new to AI for Conservation.
Our organization is considering hiring a data architect (i.e., building AWS cloud data pipelines for multiple input sources and end products), but I have limited experience with that type of position. If anyone has experience in that position or has hired one, could you please DM me? I have a few questions I'd like to ask.
Being a total sap here, but I LOVE how much this community shows up to help each other
@Jason Holmberg (Wild Me) has joined the channel
@Tedi Yankov joined #help_needed. They’re also new to AI for Conservation.
@Lucas Mateo Waldburger has joined the channel
@Edwin Arkel Rios has joined the channel
Hello everyone, I posted a message some time ago asking for assistance for reidentification of individual parrots using birdnet through python and wondering if that can be reshared as I can no longer access the link. I also had another question. Does anyone have any guidance on building a strong computer to do machine learning and using the birdNET analyzer GUI?
Re-your old post, you can find it in the message archive 🙂 http://beerylab.csail.mit.edu/AIforConservationArchive/
Good reminder that we need to re-up the archive!
Hi @Eriberto, as far as I know the BirdNET analyzer GUI does not leverage GPU hardware. Therefore, having a powerful computer won’t speed up your workflow very much. Most modern laptops will work decently well. For larger throughput, the github.com/kitzeslab/bioacoustics-model-zoo provides gpu-compatible embedding models with a Python API, and the Dipper app has Beta functionality for running these workflows from a desktop gui
Hello @Sam Lapp, thanks so much for that information. I remember seeing that github from your lab and I plan to get into that as I learn more python. I will look into the dipper app as well. Thanks!
Hi everyone! As part of my masters thesis I created this survey comparing the explainability of two re-identification models and two explainability techniques, applied to identifying lynx individuals. If you could fill it/share it with some colleagues who might be able to that'd be great! Especially people with experience in individual recognition and in CV, but it asks at the end the level of familiarity with each topic tally.so/r/MeGyMY
Happy to work with you on this. We just implemented PairX to explain MiewID results. Happy to share our thinking and benefit from yours. Looks like a great survey!
Nice! Here, I'm comparing CRP and HiResCAM on MiewID and MegaDescriptor (swin based). I will take a look at PairX, I didn't know it, but I just found the paper for it. Happy to be in touch and share thoughts yes, thank you!