ere’s the little R script I used to make that fig from the iNat API
library(jsonlite)
options(timeout= 4000000)
dat <- fromJSON("http://api.inaturalist.org/v1/observations/histogram?date_field=created&interval=month&verifiable=true")
x = c()
y = c()
for(i in 1:(length(dat$results$month))){
x = c(x,names(dat$results$month[i]))
y = c(y,dat$results$month[[i]])
}
par(mfrow=c(1,1))
xx = (1:length(y))
plot(xx,y, type="l", axes=FALSE, xlab="", ylab="Observations per month", xlim=c(40,length(xx)))
points(xx,y, type="l", lty=2)
axis(2)
axis(1,which(strptime(x,"%Y-%m-%d")$yday==0),(2019-length(which(strptime(x,"%Y-%m-%d")$yday==0))+1):2019)
abline(h=1000000, lty=2)
Here’s the little R script I used to make that fig from the iNat API
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
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
Comments
ee natuurlijk niet. Aangezien er redelijk lange tijd tussen nieuwe versies van de herkenningssoftware zitten, zal het ongeveer als volgt in elkaar zitten, waar bij het proces telkens deels of geheel wordt doorgelopen. Men begint met de volledige gevalideerde fotodatabase. Daarop laat men een 'Convolutional Neural Network' 'leren' (hoe dit precies in zijn werk gaat wil ik je graag tot in de puntjes uitleggen, maar lijkt mij nogal buiten de strekking van dit forum).
Het belangrijkste is in ieder geval om een balans te vinden tussen 'overfitten' en geen herkenning hebben. Dat wil zeggen: voorkomen dat alleen zeer sterk gelijkende foto's op de foto's in de database herkend worden, maar er wel voor zorgen dat soorten 'gegeneraliseerd' herkend worden. Zodat dus ook nieuwe foto's van die soort worden herkend.
Wanneer de volledige database als trainingsmateriaal wordt gebruikt, en de volledige database ook als testmateriaal wordt gebruikt, kan het voorkomen dat een erg complex model superhoog scoort. Superfijn toch, 99% herkenning!! Niet dus. Vaak is dit een gevolg van 'overfitting'. Wanneer je het model een nieuwe foto aanrijkt die deze nog niet eerder heeft gezien, weet het model er vaak slecht raad mee, omdat het heeft geleerd de specifieke foto's uit de database te herkennen in plaats van patronen/'soorten'.
Om dit te voorkomen zijn allerlei trucjes bedacht, waarbij de meest gebruikte optie 'K-fold cross-validation' is, waarbij tijdens het trainen bij iedere iteratie van het proces steeds een ander stukje apart wordt gehouden (vaak ca. 20% van de data, afhankelijk van de grootte van de database), waarna vervolgens het model iedere iteratie van het proces op dat stukje getest/gescoord wordt (wederom, is hier tot in de puntjes uit te leggen, maar niet echt de juiste plaats lijkt mij).
Het uiteindelijke percentage correcte voorspellingen in die 'K-fold cross-validation' van de laatste iteratie geeft vaak al een vrij aardige indicatie van de kwaliteit van het model, maar voor de kwaliteit wordt vaak gekeken naar de 'confusion matrix', waaruit duidelijk wordt wat goed en fout gaat (de waarden en percentages correct voorspelde foto's die hieruit rollen zou je in principe 'testwaarden' kunnen noemen). In de confusion matrix is ook te zien als welke soort een foutief voorspelde soort dan wel voorspeld is etc. etc. Diegenen die statistiek in hun opleiding hebben gehad, zullen zo vast nog wel de termen 'vals positief' en 'vals negatief' herkennen. Ik kan mij zo voorstellen dat in dit geval wordt gepoogd om het aantal vals positieven zo laag mogelijk te houden. Liever geen voorspelling dan een onjuiste voorspelling.
Het bericht waarnaar je hier verwijst is dan ook slechts bedoeld om dingen eruit te vissen die tijdens de ontwikkeling over het hoofd worden gezien. Daar wordt vaak gekeken naar de grote lijnen, en het optimaliseren van het model in het algemeen (met eventueel preprocessing, en vooral neural network design (layers, aantal neurons, leersnelheid, en nog een heleboel parameters)). Wat gepoogd wordt in zo'n publieke testfase als via dit bericht is om erachter te komen of er toch niet wat 'overfitting' in het model is geslopen (er blijven altijd wat valkuilen, wat voor gekozen methode om dit te voorkomen dan ook), en om eventuele terugkerende fouten bij bepaalde soorten of soortgroepen eruit te vissen voordat het geheel in gebruik wordt genomen...
= = = Nov2020
https://forum.inaturalist.org/t/better-use-of-location-in-computer-vision-suggestions/915/32?u=ahospers
Common ancestor for the top 3 raw results
https://github.com/inaturalist/iNaturalistAPI/blob/main/lib/controllers/v1/computervision_controller.js#L368
https://www.inaturalist.org/journal/ahospers/28858-funding-infrastructure-costs-images-on-amazon
m looking for a way of finding observations without coordinates. Many of these have Location Notes, so it is basically lacking Longitude or Latitude that I am looking for.
I am not interested in those with Latitude = 0 or Longitude = 0 (see https://www.inaturalist.org/projects/null (which is very inappropriately named, as I am looking for NULLS but this project identifies zeros instead - nulls have no data (value unassigned, or empty, or missing), but 0 is a specific datum - zero - like any other value - and not a “null”)).
At present for this user, filtering on verifiable=false gives me more or less what I want, but conflates these with any Data Quality criteria, not just missing coordinates.
https://www.inaturalist.org/observations?place_id=any&subview=grid&user_id=ahospers&verifiable=false 1
I added a very basic search to atlases in response to Jane’s feature request https://www.inaturalist.org/atlases 6. So now if you wanted to see all ‘marked’, ‘active’ atlases of taxa in the LIliaceae you’d do https://www.inaturalist.org/atlases?utf8=✓&filters[taxon_name]=Lilies&filters[taxon_id]=47328&filters[is_active]=True&filters[is_marked]=True
The out-of-range is vestigal, we don’t display it anywhere anymore (except the old filter menu thats still on https://www.inaturalist.org/observations/loarie 1). It worked directly on the taxon-range, rather than using atlases
Add a Comment