KI-Bilderkennung - Modell um Tiere auf Bildern zu erkennen?

Falc410

Vice Admiral
Registriert
Juni 2006
Beiträge
6.474
Kennt jemand eine Software die automatisch Fotos markiert auf denen Tiere abgebildet sind? Hintergrund ist, dass mein Vater mehrere Wildkameras haben die täglich oft mehrere hundert Bilder machen wenn sich Bäume oder ähnliches durch Wind bewegen (lösen bei Bewegung aus). Aber wir sind nur an Fotos interessiert auf den Rehe, Füchse oder ähnliches ist.

Theoretisch könnte ich sicher mein eigenes Model trainieren - Trainingsdaten hätte ich mehr als genug. Aber da müsste ich mich erst einmal ein Wochenende reinfuchsen. Hatte gehofft dass es so etwas vielleicht schon von der Stange gibt -sind ja sicher nicht die einzigen mit dem Problem. Kennt da jemand was?
 
Für Details bin ich gerade zu müde und mir fehlt die Zeit aber schau die mal codeproject ai server an:
https://www.codeproject.com/Articles/5322557/CodeProject-AI-Server-AI-the-easy-way

setzt auf YOLO (YouOnlyLookOnce) und lässt aber auch eigene training mit eigenen bildern zu.
man kann auch Pretrained (.pt Dateien) models einpflegen: https://github.com/MikeLud/CodeProject.AI-Custom-IPcam-Models (z.B. IPcam-animal Labels:- bird, cat, dog, horse, sheep, cow, bear, deer, rabbit, raccoon, fox, skunk, squirrel, pig)
 
  • Gefällt mir
Reaktionen: Falc410
  • Gefällt mir
Reaktionen: Falc410
Danke für die Links - ich gucke das mal durch. Am besten natürlich etwas das kostenlos oder Opensource ist, aber zur Not zahlen wir auch dafür. Als Input stelle ich mir halt einen Ordner mit 1000 Bildern vor und Output sollte ein Ordner sein der nur noch Bilder enthält wo etwas erkannt worden ist.
Was ich auf die schnelle gefunden habe waren irgendwelche Onlinedienste wo ich die Bilder hochladen muss (und die sind dann public) oder mir werden irgendwelche CSVs erstellt mit den ganzen Tags - das könnte zur Not auch gehen. Muss ich halt ein Script schreiben welches hinterher die Liste wieder auswertet und die Dateien entsprechend verschiebt.

Beim ersten Link muss ich selbst noch was schreiben um die API anzusprechen und beim zweiten habe ich mal in die main.py geschaut, das sieht auch wieder nach Video aus (da werden einzelne Frames dann analysiert). Hatte gehofft es gibt hier ein simpleres Script.

Input ist z.b so etwas
1713204104534.png

1713204125307.png
 
  • Gefällt mir
Reaktionen: CyborgBeta und SpartanerTom
Also ich bin kein Experte aber wenn das tagging nicht live passieren muss könnte man z.B. intervallweise ein ganzes Batch Bilder taggen lassen und dann die Bilder welche nicht die passenden Tags bekommen haben automatisch löschen.

Aber ob es da schon etwas fertiges gibt ist die andere Frage.

Allerdings sind rudimentäre Python CV Skripte nicht übermäßig schwer.
Gibt auch viele mehr oder weniger gute Ressourcen online als Sprungbrett

https://github.com/yash42828/YOLO-object-detection-with-OpenCV
 
  • Gefällt mir
Reaktionen: [ChAoZ] und Falc410
@Falc410
Ich glaube du brauchst hier gar keine Object-Detection... im Prinzip willst du ja nur die Bilder "herausfiltern", auf denen eine Anomalie (in Form eines Tiers) zu sehen ist. Ohne das jetzt geprüft zu haben, ändert sich ja bei einer Wildkamera wenig zwischen zwei Bildern, es sei denn, ein Tier taucht auf.

Was ich mal testweise machen würde: Schreib ein kleines Programm, was das erste Bild einer Kameraeinstellung nimmt und mit allen anderen dieser Kameraeinstellung vergleicht). Bei größeren Änderungen nimmst du an, dass ein Tier aufgekreuzt ist:

https://gist.github.com/zwcloud/2b52825bcc4408d4d5e076409adaf44a

Object-Detection geht mit OpenCV.
 
Ganz so leicht ist es dann doch nicht. Wird zwar für viele Funktionieren aber es ändert sich ja auch das Licht etc.
 
@Falc410

Ja, aber von Bild zu Bild sind die Änderungen marginal. Das es "leicht" ist habe ich damit nicht sagen wollen. Nur heute wird all zu oft einfach ein Machine-Learning auf ein Problem geworfen, dass ich unter Umständen mit deutlich weniger Aufwand auch lösen lassen würde.

Die Frage ist ja auch, mit welcher Fehlerrate du leben kannst.


Wenn du ein bisschen Java kannst, kannst du es mal mit der wirklich hervorragenden Bibliothek BoofCV versuchen. Die habe ich mal verwendet, um einen Bookscanner zu schreiben (Erkennung von Buchkanten). Inzwischen kann die viel mehr, z.B.:
  • Dense-Optical-Flow: Der Unterschied zwischen zwei Bildern wird verglichen und eine "Animation" von sich bewegenden Objekten erstellt (das ist grob das, was ich meinte - mein Ansatz ist nur viel trivialer gewesen)
  • Background Moving Camera: Hier wird versucht, den Hintergrund zu bestimmen und sich bewegende Objekte hervorzuheben
  • CNN Classifier: Echtes Machine Learning - hier benötigst du allerdings ein trainiertes Modell, dafür dürften 1000 Bilder als Trainingsdatensatz aber nicht ausreichen. Vortrainierte Modelle für Wildkameras kenne ich jetzt keine, das würde ne Menge Arbeit werden.

Vielleicht hilft dir ja eines der Beispiele. BoofCV hat auch eine schöne kleine Demo App für Android, wo man mal mit rumspielen kann. Einen Youtube-Kanal mit einigen Beispielvideos gibts auch.

Falls das nix ist, sieht das hier auch recht vielversprechend aus: https://github.com/szejkerek/AnimalDetection
Ist aber Python und stark KI basiert...
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Falc410
Falc410 schrieb:
Theoretisch könnte ich sicher mein eigenes Model trainieren - Trainingsdaten hätte ich mehr als genug. Aber da müsste ich mich erst einmal ein Wochenende reinfuchsen. Hatte gehofft dass es so etwas vielleicht schon von der Stange gibt -sind ja sicher nicht die einzigen mit dem Problem. Kennt da jemand was?

Similarity hash der Bilder berechnen und gut is ... Nach Standardabweichung sortieren + filtern, und dann bleiben nur Bilder übrig, auf denen höchstwahrscheinlich ein Tier (oder Mensch) zu sehen ist, und der Noise ist weg.

Ist aber programmiertechnisch selber (ohne Lib) nicht sehr leicht umzusetzen.

... Das aber mit etwas Vorbehalt genießen, denn ich hab mich vor der Bilderkennungsvorlesung erfolgreich gedrückt. ;)
 
Tja hätte ich die mal lieber besucht...habe mir gestern jetzt einiges angeschaut und auch noch weitere Software ausprobiert - aber alles was ich gefunden habe, war entweder nur für Videos oder halt überhaupt nicht geeignet um es out-of-the-box zu betreiben. Wenn ich erst einen Webserver betreiben muss der dann eine REST API bietet und das alles scripten muss, spare ich mir auch keine Zeit.
Irgendwie ist AI / ML noch weit weg davon, wirklich nutzbar zu sein für normale Menschen. Also es fehlen einfach ready-to-use Anwendungen. Selbst wenn es vortrainierte Modelle gibt, hilft mir das wenig aktuell. Das einzige was semi useful aussah war eine Bachelorarbeit eines Studenten aber wenn ich mir dessen Python Code anschaue dann kann ich das auch gleich selbst neu schreiben. Nur möchte ich halt kein neues Produkt entwickeln müssen.
Ironischerweise habe ich viele Reddits und Foren gefunden in denen Leute vor dem selben Problem standen / stehen. Marktlücke? Wenn ich keinen Job hätte der mich mehr als auslastet, würde ich da vielleicht mal echt was entwickeln und verkaufen. Markt ist auf jeden Fall vorhanden.
 
  • Gefällt mir
Reaktionen: CyborgBeta
Also mal allgemein gesprochen, KI (oder Machine Learning) kommt eigentlich erst zum Einsatz, wenn du Bär von Reh unterscheiden möchtest. ;)
 
Auch wieder wahr. Wobei es schon verschiedene Objekt gibt die sich da fotografieren lassen. Von Rehen über Kühe bis hin zu Spaziergängern oder Motorradfahrern. Letztere beide zu erkennen ist auch nicht ganz verkehrt, da diese Aufnahmen gelöscht werden sollen.
 
Installiert habe ich die ganzen Abhängigkeiten nicht nachdem ich mir den Code in der main.py angeschaut habe. Das trainiert nur ein Model. Steht auch so in der README unter Output:
Each training run saved multiple files, such as a file with learning statistics, a file with the neural network configuration, a file with the learning curve plot, and results from the test datase

Nicht das was ich suche.
 
Zurück
Oben