Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 00:32

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Objekterkennung

Discussion on Objekterkennung within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
BlackOperations's Avatar
 
elite*gold: 0
Join Date: Nov 2010
Posts: 1,006
Received Thanks: 130
Objekterkennung

Hey Leute,

im Internet gibt es viele verschiedene Tutorials und ich wollte euch fragen, welche fandet ihr am besten?
Ich möchte nämlich ein Objekt Erkenner programmieren der speziell in Videos Objekte erkennt, aber bei der Flut von Tutorials weiß ich nicht so recht welches sich am besten eignet.
Falls jemand was empfehlen kann, würde ich mich sehr freuen.
BlackOperations is offline  
Old 04/14/2020, 19:09   #2
 
elite*gold: 0
Join Date: Oct 2019
Posts: 11
Received Thanks: 4
Falls jemand was empfehlen kann, würde ich mich sehr freuen.
SLPHR is offline  
Old 04/15/2020, 01:49   #3


 
Hawkk's Avatar
 
elite*gold: 0
The Black Market: 204/0/0
Join Date: Nov 2012
Posts: 31,625
Received Thanks: 2,349
Quote:
Originally Posted by BlackOperations View Post
Hey Leute,

im Internet gibt es viele verschiedene Tutorials und ich wollte euch fragen, welche fandet ihr am besten?
gib doch mal ein paar Beispiele dafür
Hawkk is offline  
Old 04/15/2020, 14:46   #4

Trade Restricted

 
Kraizy's Avatar
 
elite*gold: 395
The Black Market: 540/1/4
Join Date: Jan 2012
Posts: 12,908
Received Thanks: 5,360
Arrow Off Topic -> General Coding

#moved
Kraizy is offline  
Old 04/15/2020, 19:15   #5
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Ich könnte jetzt ewig darauf antworten, ich machs aber kurz:

1. Was für Objekte möchtest du erkennen?
2. Wie viele und wie schnell?
3. Wie viele Trainingsdaten hast du?
4. ...

Die Fragen laufen alle darauf hinaus, dir dabei zu helfen welche Algorithmen angebracht sind und welche nicht.

Dabei bleibt aber noch die ganz fundamentale Frage über:

Möchtest du das selbst programmieren oder möchtest du eine Lösung, die "einfach funktioniert"?

Wenn dus selbst machen möchtest, schau dir mal mein (altes) kostenloses E-Book zur Gesichtserkennung an:



Ansonsten wenn du etwas möchtest was "einfach funktioniert" bietet sich Yolo vX an für Echtzeit-Erkennung und beliebige Region-CNNs bzw. Mask-CNNs für eine "bessere Erkennungsrate".

Wenn du mehr Details lieferst, schreib ich vielleicht auch mehr und detailreicher, aber so könnte ich dir das ganze Internet zusammen fassen und darauf hab ich echt keine Lust.

Edit:
Wobei die Codebeispiele in Caffe sind, was natürlich semi-gut ist, jetzt wo es dicontinued ist...
Aber als Anfänger ist es nicht soooo veraltet als dass man es sich net trotzdem mal anschauen könnte. Du solltest dich halt nur nicht bis in die tiefen Vorarbeiten von Caffe, sondern danach dann gleich auf Caffe2, PyTorch oder TensorFlow umsteigen.
Shadow992 is offline  
Old 04/16/2020, 09:41   #6
 
BlackOperations's Avatar
 
elite*gold: 0
Join Date: Nov 2010
Posts: 1,006
Received Thanks: 130
Quote:
Originally Posted by Shadow992 View Post
Ich könnte jetzt ewig darauf antworten, ich machs aber kurz:

1. Was für Objekte möchtest du erkennen?
2. Wie viele und wie schnell?
3. Wie viele Trainingsdaten hast du?
4. ...

Die Fragen laufen alle darauf hinaus, dir dabei zu helfen welche Algorithmen angebracht sind und welche nicht.

Dabei bleibt aber noch die ganz fundamentale Frage über:

Möchtest du das selbst programmieren oder möchtest du eine Lösung, die "einfach funktioniert"?

Wenn dus selbst machen möchtest, schau dir mal mein (altes) kostenloses E-Book zur Gesichtserkennung an:



Ansonsten wenn du etwas möchtest was "einfach funktioniert" bietet sich Yolo vX an für Echtzeit-Erkennung und beliebige Region-CNNs bzw. Mask-CNNs für eine "bessere Erkennungsrate".

Wenn du mehr Details lieferst, schreib ich vielleicht auch mehr und detailreicher, aber so könnte ich dir das ganze Internet zusammen fassen und darauf hab ich echt keine Lust.

Edit:
Wobei die Codebeispiele in Caffe sind, was natürlich semi-gut ist, jetzt wo es dicontinued ist...
Aber als Anfänger ist es nicht soooo veraltet als dass man es sich net trotzdem mal anschauen könnte. Du solltest dich halt nur nicht bis in die tiefen Vorarbeiten von Caffe, sondern danach dann gleich auf Caffe2, PyTorch oder TensorFlow umsteigen.
Hey Danke für deine schnelle Antwort.
Ich möchte Pferde erkennen und dann deren Koordinaten in der echten Welt berechnen.
Am besten sollte es genau diesem Prinzip gehen:

Ich habe bloß voll die Probleme mit TensorFlow, habe einen Laptop mit Windows7 von 2012 welcher eine zu alte NVIDIA Grafikkarte hat. CUDA wird also nichts und die CPU hat auch nicht die beste Leistung.

Ansonsten dachte ich, dass ich diese Basis nehme:
Und einfach den PixelMapper hinzufüge um die Koordinaten zu berechnen.
Soll übrigens alles für eine Bachelorarbeit gemacht werden, studiere Geodäsie & Geoinformatik.

Was sagst du zu dem pyimagesearch Sachen?


Quote:
Originally Posted by Hawkk View Post
gib doch mal ein paar Beispiele dafür
Nehme an du denkst ich hab mich gar nicht damit befasst und möchte nun direkt die Lösungen haben.
Habe folgendes probiert:

Hatte aber mit Tensorflow und pycocotools schon genug Kopfschmerzen, deswegen lasse ich TensorFlow sein.
Ansonsten ist das Tutorial das beste bis jetzt, aber vielleicht gibt es bessere für meine Aufgabe:
BlackOperations is offline  
Old 04/16/2020, 12:26   #7
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by BlackOperations View Post
Hey Danke für deine schnelle Antwort.
Ich möchte Pferde erkennen und dann deren Koordinaten in der echten Welt berechnen.
Am besten sollte es genau diesem Prinzip gehen:

Ich habe bloß voll die Probleme mit TensorFlow, habe einen Laptop mit Windows7 von 2012 welcher eine zu alte NVIDIA Grafikkarte hat. CUDA wird also nichts und die CPU hat auch nicht die beste Leistung.

Ansonsten dachte ich, dass ich diese Basis nehme:
Und einfach den PixelMapper hinzufüge um die Koordinaten zu berechnen.
Soll übrigens alles für eine Bachelorarbeit gemacht werden, studiere Geodäsie & Geoinformatik.

Was sagst du zu dem pyimagesearch Sachen?



Nehme an du denkst ich hab mich gar nicht damit befasst und möchte nun direkt die Lösungen haben.
Habe folgendes probiert:

Hatte aber mit Tensorflow und pycocotools schon genug Kopfschmerzen, deswegen lasse ich TensorFlow sein.
Ansonsten ist das Tutorial das beste bis jetzt, aber vielleicht gibt es bessere für meine Aufgabe:
Also Tensorflow bzw. deep learning Zeugs läuft eigentlich meistens ganz ordentlich schnell auf 0815 CPUs, wenns nicht ums trainieren geht. Vermutlich niemals in Echtzeit, aber wenn du nur jedes Xte Frame deep learning nutzt und dazwischen simple Heuristiken, sollte das gut machbar sein.

Aus meiner Sicht macht dein Vorhaben aber echt keinen Sinn. Es gibt praktisch keinen fertigen Tracker für dein Anwendungsgebiet und wenn doch dann wirst du um etwas Handarbeit wohl nicht drum rum kommen, also würde sich anbieten sich einfach allgemein in das Thema der Objekterkennung einzuarbeiten.

Je nachdem wie schwer die Pferde zu erkennen sind, etc. braucht es auch nicht zwingend Deep Learning. Meistens liefert Adaboost mit sowas wie LBP-Patterns auch ganz gute Ergebnisse, läuft aber meisten in einem Bruchteil der Zeit und braucht meistens auch nur einen Bruchteill an Trainingsdaten.

Würde sich also anbieten sich einmal damit zu beschäftigen. Auch mit opencv allgemein. OpenCV könnte für deinen Fall eventuell sogar schon genug sein, da braucht man vermutlich gar nicht sowas wie TensorFlow o.ä. Auch wenn du im Kopf behalten musst, dass die Algorithmen in der Regel schlechter sind, wenn sie nicht auf Deep Learning basieren.

Aber egal was du nimmst, du solltest dir erst einmal Grundlagen der Mustererkennung aneignen, sonst macht das alles wenig Sinn. Paar Stichwörter:

Decision Trees, Computer Vision, Object Detection, Adaboost, Local Binary Patern, Histogram of oriented Gradients, ORB keypoints

Das sollte für die Grundlagen eigentlich gut reichen. Ansonsten bietet es sich für bessere Ergebnisse an alle X Frames ein Deep Learning Model deiner Wahl draufzuklatschen und dann Keypoints extrahieren, die du trackst, um nach X weiteren Frames die mit den Deep learning vorhergesagten Punkten abzugleichen und zu refinen.

Edit:
Wenn du mir nicht glaubst zwecks CPU sollte reichen, kannst auch mal in meinem alten projekt reinschauen, da hab ich auch ne relativ alte Laptop CPU genommen und die Zeiten waren ganz ordentlich (Da ist auch ein Vergleich CPU vs. GPU):

Shadow992 is offline  
Old 04/16/2020, 13:17   #8
 
BlackOperations's Avatar
 
elite*gold: 0
Join Date: Nov 2010
Posts: 1,006
Received Thanks: 130
Quote:
Originally Posted by Shadow992 View Post
Also Tensorflow bzw. deep learning Zeugs läuft eigentlich meistens ganz ordentlich schnell auf 0815 CPUs, wenns nicht ums trainieren geht. Vermutlich niemals in Echtzeit, aber wenn du nur jedes Xte Frame deep learning nutzt und dazwischen simple Heuristiken, sollte das gut machbar sein.

Aus meiner Sicht macht dein Vorhaben aber echt keinen Sinn. Es gibt praktisch keinen fertigen Tracker für dein Anwendungsgebiet und wenn doch dann wirst du um etwas Handarbeit wohl nicht drum rum kommen, also würde sich anbieten sich einfach allgemein in das Thema der Objekterkennung einzuarbeiten.

Je nachdem wie schwer die Pferde zu erkennen sind, etc. braucht es auch nicht zwingend Deep Learning. Meistens liefert Adaboost mit sowas wie LBP-Patterns auch ganz gute Ergebnisse, läuft aber meisten in einem Bruchteil der Zeit und braucht meistens auch nur einen Bruchteill an Trainingsdaten.

Würde sich also anbieten sich einmal damit zu beschäftigen. Auch mit opencv allgemein. OpenCV könnte für deinen Fall eventuell sogar schon genug sein, da braucht man vermutlich gar nicht sowas wie TensorFlow o.ä. Auch wenn du im Kopf behalten musst, dass die Algorithmen in der Regel schlechter sind, wenn sie nicht auf Deep Learning basieren.

Aber egal was du nimmst, du solltest dir erst einmal Grundlagen der Mustererkennung aneignen, sonst macht das alles wenig Sinn. Paar Stichwörter:

Decision Trees, Computer Vision, Object Detection, Adaboost, Local Binary Patern, Histogram of oriented Gradients, ORB keypoints

Das sollte für die Grundlagen eigentlich gut reichen. Ansonsten bietet es sich für bessere Ergebnisse an alle X Frames ein Deep Learning Model deiner Wahl draufzuklatschen und dann Keypoints extrahieren, die du trackst, um nach X weiteren Frames die mit den Deep learning vorhergesagten Punkten abzugleichen und zu refinen.

Edit:
Wenn du mir nicht glaubst zwecks CPU sollte reichen, kannst auch mal in meinem alten projekt reinschauen, da hab ich auch ne relativ alte Laptop CPU genommen und die Zeiten waren ganz ordentlich (Da ist auch ein Vergleich CPU vs. GPU):

Danke erstmal für deine schnelle Antwort.
Echtzeit ist definitiv kein muss, hauptsache ich kann am Ende durch ein Video die Koordinaten vom Pferd bestimmen und daraus eine Trajektorie berechnen.
Und es gibt unzählige Tracker für Pferde.
Hier ist meine erster Versuch mit OpenCV:
Problem ist einfach, das hier MobilenetSSD als Detection-Model benutzt wird und ich denke, dass ist nicht das beste.
Werde versuchen andere Modelle anzuwenden, vlt. gibt es dann bessere Ergebnisse.
Die Frage ist halt, inwiefern TensorFlow sich besser eignen würde.
Vielleicht weißt du da besser Bescheid, hast ja jetzt das Video und kannst die Situation besser einschätzen.
Also zusammengefasst: es soll ein Pferd erkannt werden und davon soll später die Trajektorie bestimmt werden -> da muss ich einfach nur Bildkoordinaten in Objektkoordinaten umrechnen und dafür brauche ich Passpunkte (werde das in einem lokalen Koordinatensystem machen).

Du hast nun noch Adaboost genannt.
Was denkst eignet sich am besten: OpenCV, Tensorflow oder Adaboost?

Danke schonmal im Voraus.
BlackOperations is offline  
Old 04/16/2020, 15:40   #9
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by BlackOperations View Post
Danke erstmal für deine schnelle Antwort.
Echtzeit ist definitiv kein muss, hauptsache ich kann am Ende durch ein Video die Koordinaten vom Pferd bestimmen und daraus eine Trajektorie berechnen.
Und es gibt unzählige Tracker für Pferde.
Hier ist meine erster Versuch mit OpenCV:

Problem ist einfach, das hier MobilenetSSD als Detection-Model benutzt wird und ich denke, dass ist nicht das beste.
Werde versuchen andere Modelle anzuwenden, vlt. gibt es dann bessere Ergebnisse.
Die Frage ist halt, inwiefern TensorFlow sich besser eignen würde.
Vielleicht weißt du da besser Bescheid, hast ja jetzt das Video und kannst die Situation besser einschätzen.
Also zusammengefasst: es soll ein Pferd erkannt werden und davon soll später die Trajektorie bestimmt werden -> da muss ich einfach nur Bildkoordinaten in Objektkoordinaten umrechnen und dafür brauche ich Passpunkte (werde das in einem lokalen Koordinatensystem machen).

Du hast nun noch Adaboost genannt.
Was denkst eignet sich am besten: OpenCV, Tensorflow oder Adaboost?

Danke schonmal im Voraus.
Du wirfst da halt alles durcheinander was man durcheinander werfen kann.
  1. Es gibt keine und wenn dann nur extrem spezielle bzw. veraltete Pferde Tracker. Das was du benutzt ist ein generelles Modell, um Objekte zu erkennen. Das hat jedoch nichts mit tracking zu tun und ist auch kein explizites Pferde-Erkennungs-Tool. Man kann es schon verwenden, klar. Aber die Ergebnisse werden niemals an explizit für Pferde-Tracking entwickelte Tools rankommen. Ist halt so wie wenn du mit dem Schraubenzieher isst statt mit Messer und Gabel, geht schon aber ist halt nur semi-effektiv.
  2. OpenCV ist eine allgemein Computer Vision Bibliothek, die unter anderem auch das Ausführen von Deep Learning Modellen erlaubt (was du tust). Tensorflow ist eine Bibliothek ausgelegt auf das Konstruieren von statischen mathematischen Graphen, die dann (im best case) auf der GPU laufen und auf die "irgendeine Art" von mathematische Optimierung angewandt wird. Heutzutage kennt TensorFlow aber jeder nur als Deep Learning Plattform. AdaBoost hingegen ist ein konkreter Lern Algorithmus.
  3. MobilenetSSD passt schon. Das ist ganz gut. Aber für deine Zwecke ist wie gesagt halt selbst das beste Deep Learning Modell, welches auf Objekterkennung allgemein trainiert wurde niemals so gut wie ein explizites Pferde-Tracking Modell. Die Unterschiede zwischen den verschiedenen Objekterkennung-Modellen dürften da echt marginal sein. Also würde ich da gar nicht groß Zeit ins Suchen stecken und MobilenetSSD nehmen.

Daher mein Fazit, wie bisher:
Wenn du was deutlich besseres willst, kommst du nicht um selbst mache herum. Ansonsten tut es jedes einigermaßen aktuelle Neuronale Netz. Da es auch total wurst ist ob das Netz in TensorFlow oder OpenCV läuft, kannst du auch weiterhin bei OpenCV bleiben.
Shadow992 is offline  
Old 04/16/2020, 16:00   #10
 
BlackOperations's Avatar
 
elite*gold: 0
Join Date: Nov 2010
Posts: 1,006
Received Thanks: 130
Quote:
Originally Posted by Shadow992 View Post
Du wirfst da halt alles durcheinander was man durcheinander werfen kann.
  1. Es gibt keine und wenn dann nur extrem spezielle bzw. veraltete Pferde Tracker. Das was du benutzt ist ein generelles Modell, um Objekte zu erkennen. Das hat jedoch nichts mit tracking zu tun und ist auch kein explizites Pferde-Erkennungs-Tool. Man kann es schon verwenden, klar. Aber die Ergebnisse werden niemals an explizit für Pferde-Tracking entwickelte Tools rankommen. Ist halt so wie wenn du mit dem Schraubenzieher isst statt mit Messer und Gabel, geht schon aber ist halt nur semi-effektiv.
  2. OpenCV ist eine allgemein Computer Vision Bibliothek, die unter anderem auch das Ausführen von Deep Learning Modellen erlaubt (was du tust). Tensorflow ist eine Bibliothek ausgelegt auf das Konstruieren von statischen mathematischen Graphen, die dann (im best case) auf der GPU laufen und auf die "irgendeine Art" von mathematische Optimierung angewandt wird. Heutzutage kennt TensorFlow aber jeder nur als Deep Learning Plattform. AdaBoost hingegen ist ein konkreter Lern Algorithmus.
  3. MobilenetSSD passt schon. Das ist ganz gut. Aber für deine Zwecke ist wie gesagt halt selbst das beste Deep Learning Modell, welches auf Objekterkennung allgemein trainiert wurde niemals so gut wie ein explizites Pferde-Tracking Modell. Die Unterschiede zwischen den verschiedenen Objekterkennung-Modellen dürften da echt marginal sein. Also würde ich da gar nicht groß Zeit ins Suchen stecken und MobilenetSSD nehmen.

Daher mein Fazit, wie bisher:
Wenn du was deutlich besseres willst, kommst du nicht um selbst mache herum. Ansonsten tut es jedes einigermaßen aktuelle Neuronale Netz. Da es auch total wurst ist ob das Netz in TensorFlow oder OpenCV läuft, kannst du auch weiterhin bei OpenCV bleiben.
Danke für deine ausführliche und schnelle Antwort
Zu Punkt 1: Gibt es Literatur zu der Aussage bezüglich dessen, das dies ein generelles Modell ist und deswegen als Beispiel für Pferde keine optimalen Ergebnisse gibt?
Punkt 2: Danke für die Erklärungen.
Punkt 3: Ich denke für die Bachelorarbeit ist es ausreichend, wenn ich erkläre wieso die Ergebnisse nicht gut sind. Es würde den Rahmen sprengen ein eigenes Modell zu trainieren. Da du oft von Erkennen und Tracking gesprochen hast. Auf meinem Video wird offensichtlich nur das Pferd erkannt und nicht getrackt. Ich habe vom SORT-Algorithmus gelesen, denkt du er eignet sich in meinem Falle um die Pferde zu tracken?
BlackOperations is offline  
Old 04/16/2020, 16:57   #11
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by BlackOperations View Post
Danke für deine ausführliche und schnelle Antwort
Zu Punkt 1: Gibt es Literatur zu der Aussage bezüglich dessen, das dies ein generelles Modell ist und deswegen als Beispiel für Pferde keine optimalen Ergebnisse gibt?
Punkt 2: Danke für die Erklärungen.
Punkt 3: Ich denke für die Bachelorarbeit ist es ausreichend, wenn ich erkläre wieso die Ergebnisse nicht gut sind. Es würde den Rahmen sprengen ein eigenes Modell zu trainieren. Da du oft von Erkennen und Tracking gesprochen hast. Auf meinem Video wird offensichtlich nur das Pferd erkannt und nicht getrackt. Ich habe vom SORT-Algorithmus gelesen, denkt du er eignet sich in meinem Falle um die Pferde zu tracken?
1. Du kannst das MobilenetSSD auf das trainieren was du willst. Es sollte also bei deiner Quelle von der du das MobilenetSSD beziehst dabei stehen welcher Trainingsdatensatz benutzt wurde und damit auch welche Klassen/Labels. Aber gegeben der Tatsache, dass ich kein einziges Neuronales Netz kenne, das ausschließlich auf Pferde trainiert wurde, bezweifle ich ebenso extrem, dass dieses Model was ursprünglich auf ImageNet und CIFAR100 angewendet wurde, jetzt nur auf Pferde trainiert sein soll. Halte ich einfach für extrem unwahrscheinlich.

3. SORT sagt mir nichts. Aber das Prinzip vom 2D tracking ist relativ simpel. EInfach mit SIFT, ORB o.ä. Keypunkte generieren und die Verschiebung von Frame zu Frame berechnen. In 3D ists dasselbe, dabei musst du aber natürlich davor die 2D Punkte in 3D Punkte konvertieren.
Shadow992 is offline  
Old 04/16/2020, 18:13   #12
 
BlackOperations's Avatar
 
elite*gold: 0
Join Date: Nov 2010
Posts: 1,006
Received Thanks: 130
Quote:
Originally Posted by Shadow992 View Post
1. Du kannst das MobilenetSSD auf das trainieren was du willst. Es sollte also bei deiner Quelle von der du das MobilenetSSD beziehst dabei stehen welcher Trainingsdatensatz benutzt wurde und damit auch welche Klassen/Labels. Aber gegeben der Tatsache, dass ich kein einziges Neuronales Netz kenne, das ausschließlich auf Pferde trainiert wurde, bezweifle ich ebenso extrem, dass dieses Model was ursprünglich auf ImageNet und CIFAR100 angewendet wurde, jetzt nur auf Pferde trainiert sein soll. Halte ich einfach für extrem unwahrscheinlich.

3. SORT sagt mir nichts. Aber das Prinzip vom 2D tracking ist relativ simpel. EInfach mit SIFT, ORB o.ä. Keypunkte generieren und die Verschiebung von Frame zu Frame berechnen. In 3D ists dasselbe, dabei musst du aber natürlich davor die 2D Punkte in 3D Punkte konvertieren.
Mit SORT meine ich das hier:
Einfach ein Tracker und die Berechnung der Koordinaten würde so gehen:

Also quasi Bildkoordinaten durch Passpunkte in Objektkoordinaten umwandeln.

Ich komm etwas durcheinander bei deiner Erklärung zu 1.
Bei MobilenetSSD wird klar gesagt, dass Pferde als Klasse vorhanden sind.
Ich habe nie behauptet, dass es nur für Pferde trainiert ist.
Wollte nur eine Quelle haben, wo evtl. steht das dadurch das es nicht extra für Pferde trainiert ist, dadurch diese schlechter erkennt. Aber mittlerweile habe ich Zweifel das bei dem Winkel meines Videos und der Distanz überhaupt ein Modell die Pferde erkennen würde.
BlackOperations is offline  
Old 04/16/2020, 19:06   #13
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by BlackOperations View Post
Mit SORT meine ich das hier:
Einfach ein Tracker und die Berechnung der Koordinaten würde so gehen:

Also quasi Bildkoordinaten durch Passpunkte in Objektkoordinaten umwandeln.

Ich komm etwas durcheinander bei deiner Erklärung zu 1.
Bei MobilenetSSD wird klar gesagt, dass Pferde als Klasse vorhanden sind.
Ich habe nie behauptet, dass es nur für Pferde trainiert ist.
Wollte nur eine Quelle haben, wo evtl. steht das dadurch das es nicht extra für Pferde trainiert ist, dadurch diese schlechter erkennt. Aber mittlerweile habe ich Zweifel das bei dem Winkel meines Videos und der Distanz überhaupt ein Modell die Pferde erkennen würde.
Ah ok mein Fehler.

Ja SORT sieht ganz gut aus für deinen Anwendungsfall, kann man schon nehmen ist aber halt auch weit weg von einer sehr guten Lösung. Aber schön simpel und kurz.

Genau das bezweifle ich halt such, dass irgendein Standard-Modell wirklich jemals gut genug sein wird.

Das mit dem "Literatur dazu, dass Spezialisierung besser funktioniert als Generalisierung in Form von mehreren Klassen vs. eine Klasse" ist schwierig. Dazu gibt es vermutlich keine Literatur einfach weil es sowohl intuitiv ist als auch mathematisch absolut logisch. Wobei Deep Learning halt so ein Bereich ist, der allgemein manchmal komisch ist, was Zusammenhânge angeht. Also das das da vermutlich eher ein schwaches Argument.

Aber die Grundidee ist warum das so sein sollte ist recht easy:
Gegeben einer festen Anzahl an "Neuronen" (also die kleinste logische Einheiten in einem Neuronalem Netz), wird das Netz auch nur begrenzte Mengen speichern können. Wenn man diese begrenzte Speichermenge an "Wissen" auf 1000 Klassen aufteilt, ist logischerweise jede Klasse mit maximal 1/1000 in Form von Wissen vertreten.

Ist vergleichbar mitm Menschen, ein Mensch, der 1000 verschiedene Fächer gleichzeitig macht, wird wohl nicht so schnell Experte in dem Gebiet der Quantenphysik sein.

Jetzt kann man sber argumentieren (und das ist gerade auch der Punkt warum ich etwas länger nachgedacht habe): Je mehr verschiedene Objekte ein Netz kennt, desto mehr "einfacher" kann es ein Pferd von einem Nicht-Pferd unterscheiden.

Eventuell ist die Aussage sogar richtig für wenige Klassen vs. Nur eine Klasse. Aber meine Erfahrung sagt mir, dass das definitiv nicht mehr der Fall ist bei 1000 Klassen vs. einer Klasse.

Aber google mal eventuell spuckt google doch was aus, auch wenn mir keine derartige Literatur bekannt wäre. Es wird in der Szene einfach still schweigend aktzeptiert, dass Spezialisierung immer Generalisierung schlägt.
Shadow992 is offline  
Old 05/16/2020, 19:25   #14


 
CoinLooting's Avatar
 
elite*gold: 129
The Black Market: 108/0/0
Join Date: Apr 2012
Posts: 1,648
Received Thanks: 128
Also was ich dir empfehlen kann ist OpenCV für Python. Damit sind dir keine Grenzen gesetzt. Du müsstest ja nicht mal die Pferde an sich erkennen, dass würde schon reichen wenn du die Farbe erkennen würdest.

Im Internet findest du dazu viele hilfreiche Tutorials. Python ist auch relativ leicht und schnell zu lernen.

Also Google mal einfach nach :

OpenCV color detection

oder auch

OpenCV template matching
CoinLooting is offline  
Old 05/27/2020, 11:29   #15
 
Sukai™'s Avatar
 
elite*gold: 98
The Black Market: 107/1/0
Join Date: Jun 2011
Posts: 2,153
Received Thanks: 177
So wie ich dich verstanden habe, möchtest du folgendes:
1. Pferd auf einem Frame erkennen (Bestimmung der Bounding Box)
2. Bildkoordinaten -> Objektkoordinaten (2D -> 3D)

1. Punkt:
Dazu hat der Kollege schon einiges vorgeschlagen. Im Grunde machst du eine Objekt Erkennung ().
Im Grunde kannst du das in vielen verschiedenen Varianten lösen. Heutzutage sind Deep Learning Methoden hype. Um einen DL Ansatz zu realisieren, musst du ein Netzwerk selbst trainieren oder ein schon trainiertes Modell nutzen. Netzwerke welche genutzt werden können sind: YOLO, RCNN (SORT basiert darauf), SSD (MobileNetSSD ist nur eine Variante), .... Da es um eine Bachelorarbeit geht, empfehle ich dir nicht sehr viel arbeit in die Implementierung zu stecken. Meistens reicht eine fertige Implementierung, welche du evaluierst. Als Trainingsdatensatz könntest du () nutzen.

Eine andere Variante wäre, du bestimmt am anfang die Position des Pferdes selbst. Mithilfe von Object Tracking, verfolgst du nur das Pferd. Der Vorteil an diesen Ansatz ist es, dass du kein Netzwerk trainieren musst. Eine Möglichkeit dazu wäre CamSHIFT


2. Punkt:
Mithilfe der Kamera Position und anderen Informationen, kannst du deine Koordinaten in 3D Koordinaten umwandeln.


PS: Ich denke mal du bist fast mit deiner Bachelorarbeit fertig, da der Thread schon 1 Monat alt ist. Ich hoffe du hast deine Lösung gefunden!
Sukai™ is offline  
Reply




All times are GMT +2. The time now is 00:32.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.