Hallo Leute,
ich suche ein Paper, einen Algorithmus, eine Idee, eine fertige Library oder ähnliches, das mir hilft auf Bildern Menschen zu erkennen. Man stelle sich vor ein Raum wird von einer 360° Kamera von der Decke aus überwacht. Nun möchte ich feststellen können, ob sich in diesem Raum mindestens eine Person befindet. Mir reicht es nicht Bewegung zu erkennen, denn ein laufender Fernseher oder Hunde und Katzen dürfen nicht erkannt werden. Die Information soll entweder aus einem einzelnen Bild oder aus zwei schnell zeitlich aufeinander folgenden Bildern erschlossen werden können. Die Auswertung eines kompletten Videostreams ist also nicht möglich.
Hat da jemand Ideen zu? Bisher habe ich z.B. das hier gefunden: Shape matching and object recognition using shape contexts. Das klingt zumindest mal danach als ob man bspw. aus einer Silhouette eines Menschen den Menschen als solchen erkennen kann. Die Erstellung der Silhouette sollte eigentlich dadurch möglich sein, indem man die Differenz der zwei Bilder erstellt und die Unterschiede in eine Silhouette umrechnet.
Sonst habe ich noch nicht so viel gefunden, was tatsächlich nur einen Menschen erkennen kann und alles andere ignoriert.
Ich bin für Ideen und Vorschläge dankbar!
Erkennung von Menschen auf Bildern
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Erkennung von Menschen auf Bildern
Normalerweise nimmt man ja Gesichtserkennung um Menschen (und Brüste) zu erkennen. Siehe select a face from an image.
Das ganze 'von oben' zu machen ist wohl noch schwieriger, da dann nicht mal ein Gesicht zur Verfügung steht, sondern vielleicht nur eine Mütze
oder einfach nur wilde Haare. Wobei Gesichtserkennung schon schwierig, und nicht fehlerfrei, ist. Bei der Erkennung einer Silhouette sehe ich da
ziemlich schwarz, da es dann auch erstmal auf den genauen Kamerawinkel ankommt. Ein anderer Kamerawinkel ergibt eine komplett andere Silhouette.
Das ganze 'von oben' zu machen ist wohl noch schwieriger, da dann nicht mal ein Gesicht zur Verfügung steht, sondern vielleicht nur eine Mütze
oder einfach nur wilde Haare. Wobei Gesichtserkennung schon schwierig, und nicht fehlerfrei, ist. Bei der Erkennung einer Silhouette sehe ich da
ziemlich schwarz, da es dann auch erstmal auf den genauen Kamerawinkel ankommt. Ein anderer Kamerawinkel ergibt eine komplett andere Silhouette.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Erkennung von Menschen auf Bildern
Wir haben uns überlegt doch keine Deckenkamera zu nutzen, sondern eher eine, die in der Ecke eines Zimmers befestigt ist. Das macht doch vieles einfacher. Dann habe ich mal zwei Bilder gemacht und ein bisschen ausprobiert, wie man mit Gimp die Form extrahieren könnte. Dazu haben wir uns überlegt, dass der überwachte Raum ja oft genug leer ist, sodass man eine Art Hintergrundbild erstellen kann. Zusammen mit diesem Bild ist es wesentlich einfacher den geänderten Bildausschnitt festzustellen.
So sieht es bisher aus. Klicken öffnet das Bild in voller Größe.
Hintergrund:
Bild mit Person:
Differenz der Bilder:
Graustufen und Threshold:
Schwarzer Rahmen:
Closing:
Form:
So sieht es bisher aus. Klicken öffnet das Bild in voller Größe.
Hintergrund:
Bild mit Person:
Differenz der Bilder:
Graustufen und Threshold:
Schwarzer Rahmen:
Closing:
Form:
Re: Erkennung von Menschen auf Bildern
Eine Kinect geht nicht dafür?
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Erkennung von Menschen auf Bildern
Hi Nik,
ich denke die Bewegungserkennung ist erstmal der richtige Weg. Allerdings gibt es einige Faktoren die Du verwenden kannst, um das Ergebnis zu konkretisieren:
1) Ein Mensch ist eher hoch als breit. Erkannte Muster die dem nicht entsprechen, sind keine Menschen (ja, es könnte auch jemand liegen, aber ich gehe mal davon aus dass sich die Menschen auch bewegen. Und das tun Sie am meisten wenn sie stehen).
2) Nur belebte Dinge bewegen sich durch den Raum. Ein Fernseher wird seine Position im Raum nicht verändern. Daher könnte auch das ein Kriterium sein (zu betrachtender Zeitraum ist aber etwas länger).
Weitere (ungeprüfte) Idee: Im erkannten Bewegungsbereich die horizontalen und vertikalen Kannten ermitteln. Möglicherweise hat ein Mensch einen auffälligen Ratio zwischen den beiden? Oder die Längen? Oder die Tatsache, dass sich die vertikalen Kanten beim Mensch meist im unteren Bereich bewegen und die horizontalen durchaus mehr im oberen?
Das ganze sind nur Ideen. Eine wirklich gute Erkennung braucht wohl mehr Information (siehe Kinect mit Tiefensensor). Alternativ kann ich mir noch neuronale Netze vorstellen (Hopfield-Netz, Bidirektionaler Assoziativspeicher oder Autoassoziative Backpropagation).
Kukulkan
ich denke die Bewegungserkennung ist erstmal der richtige Weg. Allerdings gibt es einige Faktoren die Du verwenden kannst, um das Ergebnis zu konkretisieren:
1) Ein Mensch ist eher hoch als breit. Erkannte Muster die dem nicht entsprechen, sind keine Menschen (ja, es könnte auch jemand liegen, aber ich gehe mal davon aus dass sich die Menschen auch bewegen. Und das tun Sie am meisten wenn sie stehen).
2) Nur belebte Dinge bewegen sich durch den Raum. Ein Fernseher wird seine Position im Raum nicht verändern. Daher könnte auch das ein Kriterium sein (zu betrachtender Zeitraum ist aber etwas länger).
Weitere (ungeprüfte) Idee: Im erkannten Bewegungsbereich die horizontalen und vertikalen Kannten ermitteln. Möglicherweise hat ein Mensch einen auffälligen Ratio zwischen den beiden? Oder die Längen? Oder die Tatsache, dass sich die vertikalen Kanten beim Mensch meist im unteren Bereich bewegen und die horizontalen durchaus mehr im oberen?
Das ganze sind nur Ideen. Eine wirklich gute Erkennung braucht wohl mehr Information (siehe Kinect mit Tiefensensor). Alternativ kann ich mir noch neuronale Netze vorstellen (Hopfield-Netz, Bidirektionaler Assoziativspeicher oder Autoassoziative Backpropagation).
Kukulkan
Re: Erkennung von Menschen auf Bildern
DrShrek hat geschrieben:Eine Kinect geht nicht dafür?
Also eine einigermassen zuverlässige Erkennung günstiger als mit Hilfe von Kinect halte ich für sehr unwahrscheinlich. Die Erkennung von Menschen läuft zu 99% immer über die Gesichtserkennung. Dabei spielen in erster Linie die Faktoren Augen, Nase und Mund eine Rolle. Danach kommt meistens eine zweite Ebene mit "Foto Vergleich". Es ist grundsätzlich sehr schwer nur annähernd eine einigermassen zuverlässige Software für Menschen (Gesicht) Erkennung zu erstellen. Fertige Lösungen in diesem Bereich kosten schnell mal einen 5 Stelligen Bereich und können auch locker einen 6 Stelligen Bereich erreichen. Die zur Zeit jeweils beste Software wird wohl in Flughäfen, wichtigen Regierungsgebäuden usw. eingesetzt.NicTheQuick hat geschrieben:Nein, so teuer darf es nicht werden.
So oder so für mich ein spannendes Thema, bin gespannt ob es Wiedererwartens doch mit einfachen mitteln möglich ist bez. jemand eine gute Idee dazu hat.
Entwicklungsumgebung: Intel i7 Laptop mit 8GB RAM und Windows 8.1 drauf. PureBasic 5.24 LTS.
Re: Erkennung von Menschen auf Bildern
Vielleicht gibt es auf dieser Seite mehr Informationen / Algorithmen, bzw. weiterführende links:
http://www.face-rec.org/
http://www.face-rec.org/
PB 5.23LTS // Windows 7 // MacOsX 10.7.5 // Linux Mint 16