This repository provides Python code that identifies plants, birds, and insects in photos.
This project was inspired by the amazing progress in identifying plants, animals and mushrooms in photos that has been made by iNaturalist in the past years. The iNaturalist team has trained machine learning models with their vast collection of photos and research-grade identifications. In 2019, iNaturalist released Seek by iNaturalist which identifies photos offline on the phone and identifies to a higher level than species when an identification to species cannot be made.
Google provides three models that have been trained with iNaturalist data - classification models for plants, birds, and insects. These Google models can be downloaded and used with Google's TensorFlow and TensorFlow Lite tools.
This code is based on the trained models that Google provides. It has been written to experiment with identification of species from photos and to give Seek's approach a try and compute probabilities across the taxonomic hierarchy.
This tool nature_id.py has been tested on Linux and Windows. It likely works on macOS as well.
This is a command-line tool. It is called with photos or directories that contain photos and identifies the plants, birds, and insects in these pictures.Here is an example. This is the command for Linux and macOS:
./nature_id.py -m plants plant_images/Persicaria_amphibia.jpg
On Windows the command is:python .\nature_id.py -m plants plant_images\Persicaria_amphibia.jpg
https://github.com/joergmlpts/nature-id
These probabitities can guide the identification: define a threshold and as result report the taxon with the lowest probability that is larger or equal to this threshold. In this example for a threshold of 95% an [code.identification to species Persicaria amphibia has been achieved. For a threshold of 99%, this is only an identification to order Caryophyllales. 95% and 99% would be unusually high thresholds; Seek, I think, uses a threshold of 70%.
These probabitities can guide the identification: define a threshold and as result report the taxon with the lowest probability that is larger or equal to this threshold. In this example for a threshold of 95% an identification to species Persicaria amphibia has been achieved. For a threshold of 99%, this is only an identification to order Caryophyllales. 95% and 99% would be unusually high thresholds; Seek, I think, uses a threshold of 70%.
https://kde-bugs-dist.kde.narkive.com/panmA7c6/digikam-bug-394544-new-export-to-inaturalist
See https://www.inaturalist.org/pages/developers and
https://www.inaturalist.org/pages/api+reference which provides a place for
developers to start on this.
I'm trying to use Digikam to establish a photo processing workflow entirely
based on open source software.
On the input/import end, I'm using OsmAnd on Android to collect GPS tracks,
OpenCamera on Android to take photos. Then I use Digikam to GPS correlate
tracks & photos from my discrete camera (and also to supplement Android photos
with DOP values from the OsmAnd tracks, which the Android platform doesn't yet
support recording in EXIF natively). Currently, I do all other editing & photo
processing within Digikam.
For exporting, I typically publish (currently via batch uploads of files
through the web interfaces of each platform) to five different target
platforms: Strava (a group for stewards of our local wilderness trail),
Facebook (valuable to support discussions with a broader community not on other
platforms), Flickr (mostly as fairly large, "free" cloud storage), Wordpress
(self-hosted), and iNaturalist. Anything I can do to automate / optimize / cut
out redundancy in my workflow would greatly improve life for me.
A significant barrier in this workflow to uploading efficiently to the
iNaturalist platform is submissions through their web interface of large photo
sets. In Chromium, it is necessary to partition sets of greater than about 30
photos at a time into subsets, otherwise my Atom-based workstation with 8G RAM
runs out of memory to handle the page. Integration with Digikam done properly
would likely help with this.
The main feature request & other useful features all sound like things that
would help me too. I'd love to see something started, and then those additional
requests filed as separate wishlists once work is underway.
As a professional software developer, primarily in Ruby these days, but with
some proficiency in other languages, and also as a Debian developer of some
years, helping develop an iNaturalist export extension for digikam is certainly
something I'd be interested in exploring. I must caution, though, that I have
no KDE development experience. I don't think that's a huge barrier to me making
some sort of contribution, but it probably rules me out as being a driver for
this effort.
Tot 2010 hebben de schelpenkenners gewerkt aan de fossiele tweekleppigen, stoottanden en keverslakken. Het boek daarover, dat zo’n 340 soorten omvat, is niet meer verkrijgbaar, maar wordt nu online beschikbaar gesteld door Naturalis. Met de uitgave kan je opzoeken of een stenige schelp die je hebt opgeraapt bij Hoek van Holland mogelijk een 50 miljoen jaar oude zwinkokkel is, en of een prachtige geknobbelde en geribde schelp van Terschelling wellicht een hartschelp uit de laatste tussenijstijd van 125.000 jaar geleden kan zijn.
https://repository.naturalis.nl/pub/800043/
https://repository.naturalis.nl/pub/800043/Wesselingh-en-Moerdijk-2010-De-fossiele-schelpen-van-de-Nederlandse-kust.pdf
Sommige groepen schelpen zijn echt heel erg lastig om op naam te brengen. Gelukkig kunnen we steeds weer terugvallen op de enorme verzamelingen en kundige blik van de verzamelaars, die vaak als eerste bijzondere soorten herkennen. De liefhebbers zijn de ogen en handen van de wetenschap. Velen van hen hebben zich in de loop der jaren zo verdiept in bepaalde groepen fossielen dat ze experts zijn geworden waarop ook de professionals van Naturalis een beroep doen.
https://repository.naturalis.nl/pub/800043/
Fauna in beeld
Momenteel werkt het onderzoeksnetwerk aan het tweede deel dat gaat over de fossiele slakken: een faunagroep die mogelijk wel 400 soorten omvat. De verschillende families worden in afleveringen behandeld in het tijdschrift Spirula van de Nederlandse Malacologische Vereniging en het is de bedoeling die na afloop te bundelen in een nieuw boek. Over twee jaar zou de volledige Nederlandse fossiele schelpenfauna, dankzi
https://repository.naturalis.nl/pub/800043/Wesselingh-en-Moerdijk-2010-De-fossiele-schelpen-van-de-Nederlandse-kust.pdf
einig mensen zullen zich realiseren dat een schelp die opgeraapt wordt op het strand zomaar duizenden jaren oud kan zijn. Maar langs vrijwel de hele kust zijn ook schelpen van meer dan honderdduizend jaar oud te vinden. Deze stammen uit het Eemien, de voorlaatste tussenijstijd, toen de zee tot aan Amersfoort reikte. Ook schelpen van miljoenen jaren oud zijn op de Nederlandse stranden te vinden, met name in Zeeland. Het zijn getuigen uit tijden dat er ijsbergen ronddreven in de Noordzee of dat er juist mangrovebossen langs de kust groeiden. In totaal zijn er van de Nederlandse stranden en uit de estuaria zo'n 700 soorten fossiele schelpen bekend. In deze uitgave worden de fossiele tweekleppigen, keverslakken en stoottanden behandeld. Ongeveer 350 soorten komen aan bod: hoe zien ze eruit, uit welke laag komen ze, hoe hebben ze geleefd? Deze uitgave is vooral mogelijk door de inzet van liefhebbers, door wiens collecties en kennis de fossielenrijkdom van ons land nu goed in kaart is gebracht. https://repository.naturalis.nl/pub/800043/Wesselingh-en-Moerdijk-2010-De-fossiele-schelpen-van-de-Nederlandse-kust.pdf
https://www.vliz.be/docs/HAROkit-Zoekkaart-Roggen_versieApril2016.pdf
anemoon.org/DesktopModules/Bring2mind/DMX/API/Entries/Download?command=core_download&entryid=1119&language=nl-NL&PortalId=0&TabId=165
https://edepot.wur.nl/446037
Op het strand kun je ook eieren zoeken. Namelijk de lege eikapsels van haaien en roggen. Download de zoekkaart: http://go.wnf.nl/glcmv2
https://observation.org/download/Biodiv%20Next%20-%20Dutch_Belgian%20species%20ID%20.pptx
https://www.inaturalist.org/journal/ahospers/61053-272-identify-plants-birds-and-insects-in-photos
https://twitter.com/search?q=pypsa Ik dacht dat ergens door betere voorspellingen negatieve prizjen bijna zouden verdwijn maar ik kan he net vindne
Naturalis Biodiversity Center (2022). Eindrapportage project Automatische beeldherkenning voor museumcollecties.pdf
https://www.nlbif.nl/verborgen-biodata/ wist je dit...geleid door gallenman
https://twitter.com/hashtag/EnergyTwitterVrijMiBo?src=hashtag_click
https://www.researchgate.net/publication/341278898_Big_Data_Ja_Natuurlijk
https://www.knawonderwijsprijs.nl/bestandenafbeeldingen/2016/modelleren-van-vegetatiepatronen.pdf
https://www.techthics.nl/wp-content/uploads/2022/02/erdincsacan-inclusieveartificialintelligence.pdf
https://arxiv.org/pdf/1906.10742.pdf
https://arxiv.org/pdf/2103.10703.pdf
https://www.tmgonline.nl/article/10.18146/tmg.815/
https://forum.inaturalist.org/t/computer-vision-update-july-2021/24728 1
https://www.inaturalist.org/blog/63931-the-latest-computer-vision-model-updates 1
https://forum.inaturalist.org/t/new-computer-vision-model-released/31030 1
https://forum.inaturalist.org/t/new-vision-model-training-started/27378 1
https://www.inaturalist.org/blog/59122-new-vision-model-training-started 1
https://github.com/inaturalist/inatVisionTraining
The file https://github.com/inaturalist/inatVisionTraining/blob/main/nets/nets.py 1 appears to have the relevant code for instantiating models. The main chunk of the model is Xception which involves something called “depthwise separable convolutions” (I have not read the paper yet). The output of Xception is then put through a global average pooling layer, then a dropout layer, then a dense layer (i.e. like you would find in a perceptron model), and then a softmax layer.
With some further reading of the paper, I think the Github repo will have given me a much clearer picture of what the computer vision model actually is
Als API endpoint my-api.plantnet.org/v2/identify/all gebruikt wordt, wordt de foto vergeleken met planten uit de gehele wereld. Zie bovenstaande test met API met project: all (Had oorspronkelijk k-world-all geschreven)
Als endpoint my-api.plantnet.org/v2/identify/k-middle-europe gebruikt wordt, wordt gekeken naar foto's enkel uit midden Europa.
Dat lijkt mij al een verbetering t.o.v. een resultaat dat een niet in Nederland voorkomende plantensoort als 1e optie geeft.
De app PlantNet zelf geeft overigens weer een ander resultaat dan de API:
19% Ranunculus tuberosus,
4% Ranunculus sardous
3% Ranunculus bulbosus
Terzijde...
Ideaal zijn de apps nog niet. Als een leek gewoon de plant met de hoogste score accepteert en de AI engine gebruikt dat weer als input, dan is het garbage in, garbage out.
Flora Incognita, van een Duitse universiteit. Volgens een research paper, waarin de Flora Incognita engine beschreven wordt en verschillende apps in een benchmark vergeleken worden, scoren zij erg goed.
https://besjournals.onlinelibrary.wiley.com/doi/10.1111/2041-210X.13611
Flora Incognita heeft overigens ook een API, maar op dit moment worden er geen keys meer beschikbaar gesteld
Comentarios
https://nofreehunch.org/2023/08/09/image-classification-in-the-real-wild/
https://forum.inaturalist.org/t/what-i-learned-after-training-my-own-computer-vision-model-on-inats-data/44052
ooks like the web app, shut down some time back. I have restarted it and updated the links.
Just in case, this is address http://35.224.94.168:8080/ 45 (the ip address should not change)
This app visualizes model predictions for a Computer Vision model trained on iNaturalist data
You can read more about how this model was trained here
Here is a rough guide to use this app :
Look at the predictions on a Random image from the validation set
Look at the Accuracy Summary for different taxonomic groups
For example to look at the summary by Kingdom
I personally find the summary by Order most useful
Look at the errors at different levels in the taxonomic heirarchy.
For example to look at errors where the model got the Kingdom wrong !
For example to look at errors where the the model got the Species wrong
This is a personal project by Satyajit Gupte
http://35.224.94.168:8080/about
I would be happy to hear anything you have to say. You can reach me at gupte.satyajit@gmail.com or on iNat
https://nofreehunch.org/2023/08/09/image-classification-in-the-real-wild/
http://35.224.94.168:8080/
https://nofreehunch.org/2023/07/24/make-the-most-of-your-gpu/
https://nofreehunch.org/2023/03/22/ads-auction/
https://nofreehunch.org/about-me/
https://forum.inaturalist.org/t/better-use-of-location-in-computer-vision-suggestions/915/41
Google provides three models that have been trained with iNaturalist data - classification models for plants, birds, and insects. These Google models can be downloaded and used with Google's TensorFlow and TensorFlow Lite tools.
https://techbrij.com/setup-tensorflow-jupyter-notebook-vscode-deep-learning
Publicado por optilete hace 9 meses
https://techbrij.com/setup-tensorflow-jupyter-notebook-vscode-deep-learninghttps://techbrij.com/setup-tensorflow-jupyter-notebook-vscode-deep-learning
Further Reading
The Recipe from PyTorch
A nice paper on tuning hyper-parameters. The same author also came up with cyclical learning rates.
Trivial Auto Augment
How label smoothing helps
CutMix, another clever augmentation strategy , which I did not try out.
Geo Prior Model that encodes location and time
How biologists think about classification ! This is a very good read.
It seems like someone has worked on that topic. Here is a paper from 2021 I found: https://arxiv.org/pdf/2103.08894.pdf Ik kan de 2 pdfs die Sluis noemde niet vinden..zoui het gedelete zijn door HIsko?
Bij 2 is er vanzelf invloed op door de locaties van de gevalideerde waarnemingen,
die worden dan in feite gebruikt als een extra stukje data. Is ook veel gedetailleerder, bij
voorbeeld planten die alleen langs de kust voorkomen, waarbij een vergelijkbare soort alleen in
het binnenland te vinden is. Dat red je niet met nafilteren, dan moeten veel te kleine gebieden
worden ingesteld. En bij 2 zou ook fenologie automatisch meegenomen kunnen worden, analoog aan hoe d
e locatie mee wordt genomen. Ik kan de tweede link die ik eerder stuurde van harte aanraden, daar wo
rdt het beter toegelicht dan ik hier in een kort bericht kan: https://arxiv.org/pdf/2203.03253v1.pdf.
Participate in the annual iNaturalist challenges: Our collaborators Grant Van Horn and Oisin Mac Aodha continue to run machine learning challenges with iNaturalist data as part of the annual Computer Vision and Pattern Recognition conference. By participating you can help us all learn new techniques for improving these models.
Start building your own model with the iNaturalist data now: If you can’t wait for the next CVPR conference, thanks to the Amazon Open Data Program you can start downloading iNaturalist data to train your own models now. Please share with us what you’ve learned by contributing to iNaturalist on Github.
Donate to iNaturalist: For the rest of us, you can help by donating! Your donations help offset the substantial staff and infrastructure costs associated with training, evaluating, and deploying model updates. Thank you for your support!
Deze links zocht ik wrsch Wordt dat een kwestie van de resultaten nafilteren of wordt de locatie straks meegenomen tijdens het trainen van het model (dus ipv foto geven aan model, foto + locatie geven) (location embedding, zie bijv. https://inf.news/en/tech/fe120ee6c96f52c780e3a562e6de7f88.html, maar zeker ook https://arxiv.org/pdf/2203.03253v1.pdf)? https://forum.waarneming.nl/index.php/topic,499061.msg2565165.html#msg2565165
Añade un comentario