OpenCV Videoanalyse von Kopfbewegungen im Schlaf

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DanHWS
User
Beiträge: 6
Registriert: Samstag 14. April 2018, 22:39

Liebe Forumsmitglieder,
ich hoffe auf deisem Weg einen kundigen Programmierer zu finden, welcher Interesse hätte, ein (nach meinem leihenhaften Verständnis) nicht allzu umfangreiches Projekt zu erstellen (gegen Bezahlung versteht sich).

Darum gehts: Ich leide an einer Krankheit namens „Jactatio capitis nucturna“, oder profan „nächtlichem Kopfwackeln“, dh. ich werfe meinen Kopf nachts im Traum u. vor allem in Stressphasen von einer Seite auf die andere; hierdurch kommt es zu einer erheblichen Belastung der Halswirbelsäule.
Vor mehreren Jahren habe ich mir bereits einen Beschleunigungssensor programmieren lassen, der an einem Kopfband befestigt bei den beschriebenen Kopfbewegungen ein Signal an meinen Laptop sendet, welcher dann ein Alarmsignal ertönen lässt dass mich weckt. Nun hat dieser Sensor allerdings eine gewisse Größe, und das Schlafen mit Selbigem ist auf Dauer nicht praktikabel.

Meine Idee war nun, eine Infrarotkamera über meinem Bett zu befestigen und meine Kopfbewegungen auf diese Art über z.B. Open CV auszuwerten.
Ich habe diverse Videos auf Youtube gesehen, welche in mir als Laien die Hoffnung geweckt haben, dass dies möglich sein sollte.

Hilfreich wäre vermutlich – auch um Zeitaufwand u. Kosten im Rahmen zu halten – wenn einzelne Programmkomponenten hierfür bereits vorhanden wären.

Sollte jemand Interesse an einem solchen Projekt haben, würde ich mich über eine Nachricht sehr freuen.
Falls ich mit meinem Anliegen grundsätzlich im falschen Forum gelandet sein sollte, wäre ich für Tipps, wo ich meine Suche mit größeren Erfolgsaussichten fortsetzten kann ebenfalls dankbar.

Viele Grüße
D.Fust
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was es alles gibt. Der Wissenschaftler in mir sagt “abgefahren”. Der Mensch eher was anderes.

Als jemand, der schon ein Interesse und ein paar Projekte mit Computer Vision hinter sich hat, fürchte ich muss ich dir einen Zahn ziehen: das ist umfangreich. So weit die Technik sich da entwickelt hat, das katapultiert ein solches Projekt von “unmöglich” nach “nur ein paar Wochen Arbeit”. Das macht viele Anwendungen umsetzbar, die es eben vorher nicht waren. Und das es dabei um deinen Kopf respektive das Gesicht geht hilft auch sehr, weil Gesichts- und Kopfhaltung zu erkennen ein wichtiges und entsprechend gut bearbeitetes Gebiet ist. Aber das ist immer noch krass viel Arbeit. Und zb für ein neuronales Netz, welches aller Wahrscheinlichkeit zum Einsatz kommt, kostet eine GPU um es zu trainieren und zu nutzen nen 1000er. Plus PC & Kamera sind das 3-4000 die man mal eben rumstehen haben muss.

Es gibt aber auch gute Nachrichten: du kannst viel beitragen, um diese Arbeit zu vereinfachen. Im Grunde geht es dabei immer nur um Rohdaten. Je mehr, je qualitativer, je kontrollierbarer die Bedingungen - je besser. Du sprichst selbst von einer IR Kamera. Auflösung ist denke ich weniger wichtig (VGA und mehr ok), aber zb eine hohe frame Rate von 120 oder mehr wäre wünschenswert. Denn bei hohen Geschwindigkeiten deines Kopfes sieht man sonst nur schlieren. Nicht auf Motivbettwäsche, sondern einfachen weißen Kopfkissen liegen. Und von dieser Situation dann Videos herstellen, die dein Problem darstellen. Damit man darauf basierend eine Klassifikation durch NNs oder klassischere Verfahren angehen kann.

Ich mag nicht anmaßend klingen - aber da es ja um ein Gesundheitsproblem geht, hast du da mal mit Unis geredet? Die Kombination aus Machine Learning und Gesundheit/gutes tun klingt für mich zumindest verlockend.
Tholo
User
Beiträge: 177
Registriert: Sonntag 7. Januar 2018, 20:36

Ich bin da auch bei Deets und würde dich an eine Fakultät verweisen wollen. Vielleicht kannst du deine Anfrage nochmals bei Rechenkraft.net ( Gemeinnütziger Verein zur Förderung von Bildung, Forschung und Wissenschaft durch Einsatz vernetzter Computer) stellen.
Ich selbst bin dort Mitglied und kenne verschiedene Mitglieder die an Lehrstühlen tätig sind. Vielleicht haben die genauere Ansprechpartner.


@all
Habt ihr vielleicht eine Idee mit welchen Unis man den Kreis angrenzen könnte? Bestenfalls Standorte mit Medizinischer und Technischer Fakultät.
Mir würde ja Jena einfallen wollen...
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe beim Rad fahren nich mal ein bisschen nachgedacht. Eine Alternative zur echten Bilderkennung via NNs oder anderen Verfahren bestünde darin, die Bewegungserkennung eines h264 Videokompressors wie ihn zB auch der raspberry pi sein eigen nennt zu benuzten.

Da fallen Vektoren mit Blockbewegungen raus. Die diskretisiert und über einen gewissen Zeitraum zu einem Histogramm zusammengefasst erlaubt ggf die Klassifikation von einer Reihe von Bildern als “da geht viel ab”.

Das ist dann zwar nicht unbedingt robust gegenüber anderen Bildinhalten - zb kopulierend Katzen - aber das sollte ja recht egal sein. Wenn das System scharf geschaltet ist, liegst ja du im Bett.

Damit ist der Aufwand von Hard- und Softwareseite deutlich reduziert. Super simpel ist es immer noch nicht. Und die schon von mir genannte Vorraussetzung von gutem Videomaterial, am besten auch noch annotiert mit timecodes wann die gewünschte (bzw ungewünschte) Aktivität vorliegt, bleibt natürlich bestehen.
Piet Lotus
User
Beiträge: 80
Registriert: Dienstag 14. November 2006, 10:40

Hallo zusammen,
ich finde das Thema sehr spannend und hätte ggf. auch Interesse am Thema, habe aber wahrscheinlich nicht so viel Ahnung wie meine "Vorredner" und bin da deshalb sehr naiv. :wink:
Aber müsste man bei dem Thema nicht was mittels Motion Capture hinbekommen können? So was kann doch auch schon ein Raspberry.
@DanHWS: Wäre es ggf. nicht auch eine Möglichkeit ein Schlafbrille oder ein Stirnband mit entsprechenden Reflektoren (Aufkleber oder so was) in der Nacht zu tragen, um die Erkennung zu erleichtern?
Viele Grüße
Piet Lotus

P.S. Mit fällt gerade ein, vielleicht kann man auch was mit der "Kinect" oder ähnliches hinbekommen?
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

@piet motion capture ist etwas anderes als du denkst. Der PI bekommt das ganz bestimmt nicht hin. Dabei geht es um die Aufzeichnung komplexer Bewegungen von Mensch oder Tier, die dann zur Grundlage von Computeranimationen werden.

Was du wohl meinst ist Motion Detection. DAS kann der PI, wie ich ja schon schrieb. Nur liegt der Clou genau darin, diese Erkennung robust zu machen. Nur mal von einer auf die andere Seite drehen soll ja nicht gleich den 3ten Weltkrieg auslösen. Gesucht ist also ein Algorithmus, der eine solche Einschätzung vornimmt.

Die Kinect ist diesbezüglich auch nicht groß anders - einen echten Vorteil erkenne ich da auch nicht, denn mir wäre jetzt nicht bekannt, das deren Pose Estimation nur auf den Kopf angewandt werden kann, vor allem, wenn er im Kopfkissen liegt.
Piet Lotus
User
Beiträge: 80
Registriert: Dienstag 14. November 2006, 10:40

Hallo __deets__,
danke für deine Hinweise. :)
Ich hab mich mit dem Thema noch nicht so stark beschäftigt, das Thema "Bewegungserkennung" ist aber wohl eines, dass ich demnächst mal angehen möchte.
Viele Grüße
Piet Lotus
DanHWS
User
Beiträge: 6
Registriert: Samstag 14. April 2018, 22:39

Jeeeeses... da wird hier also seit über ner Woche eifrig diskutiert und ich bekomm' nichts davon mit; vielleicht hätte ich von den weitergeleiteten Antworten aus einem anderen Forum an meine Mailadresse nicht darauf schließen sollen dass das hier genauso läuft, aber nun gut.
Tatsächlich bin ich von der Fülle der engagierten, ausführlichen u. von einiger Fachkenntnis zeugenden Antworten schwer beindruckt und auch ein wenig sprachlos... dafür erst einmal vielen Dank an alle!!
Angesichts der fortgeschrittenen Stunde sollte ich allerdings tapfer der Versuchung widerstehen an dieser Stelle eine Antwort zu geben, die qualitativ entsprechend bescheiden ausfallen würde... das wird aber morgen (resp. später heute) nach ein paar Stunden Schlaf mit der gebotenen Sorgfalt nachgeholt!!

Viele Grüße
DF
DanHWS
User
Beiträge: 6
Registriert: Samstag 14. April 2018, 22:39

So, jetzt is fast schon wieder so spät wie gestern, allerdings ist die Warscheinlichkeit nicht gering dass sich das in den nächsten Tagen so wiederholen wird... also ran.
@deets: 4000 allein für Hardware wäre allerdings heftig. Der Sensor, den ich aktuell noch benutze (Shimmer) den mir ein netter Mensch für fast lau programmiert (und sich daran wochenlang die Zähne ausgebissen hat), hat mich damals nen 1000er gekostet.
Deinen zweiten Vorschlag die günstigere Variante betreffend - so wie ich es verstanden habe - hätte ich doch gewisse Zweifel bez. eines Verfahrens das lediglich erkennt „da geht was“: die Aufgabe wäre ja gerade das spezifische Bewegungsmuster „Kopf dreht hin u. her“ von z.B. unruhigem Schlaf zu differenzieren. Bei meinem Gyrosensor haben wir das so gelöst indem wir eine Neutralposition (Kopf mittig) gesetzt und davon abweichend das spezifische Muster als n Lageveränderungen im Wechsel von links nach rechts über eine bestimmte Gradzahl hinaus innerhalb eines Zeitintervalls definiert haben.
Mir kam schon damals der Gedanke das Ganze per Videoeanalyse anzugehen, dabei bin ich auf dieses Video gestoßen:
https://www.youtube.com/watch?v=Etj_aktbnwM
In der Beschreibung befindet sich ein Link zum Blog des Kanalinhabers;ungünstiger Weise hat selbiger bereits eine Anfrage in den Kommentaren nach dem Programmcode negativ beschieden. Von dem Video ausgehend wäre man mit der Implementierung des oben beschreibenen Verfahrens ja fast schon am Ziel. Hab vorhin meine alte IR Kamera gecheckt, mehr als 30fps sind da nicht drin – werd morgen trotzdem mal ein paar Testaufnahmen anfertigen. Auf Alibaba gibt’s ab 40€ IR Kameras die bis zu 120 Bilder schaffen, falls die was taugen..
Solltest du ernsthaftes Interesse an dem Projekt (bzw. mir zu helfen) haben würde sich bei der Fülle der Fragen anbieten das Ganze mal am Telefon zu bequatschen – natürlich ohne mich aufdrängen zu wollen.

@deets, Tholo: Unis hab ich damals mit dem Shimmer auch versucht. Problematisch war vor allem deren Terminplanung, im Gespräch war ein länger angelegtes Projekt „vielleicht im nächsten Semester“, das hab ich dann gehakt u. hatte Glück jemanden zu finden der das privat gemacht hat. Der Königsweg wäre für mich immer noch ein schon fertiges Projekt zu finden (siehe z.B. YT-Video) und dieses dann entsprechend zu modifizieren. Falls du (Tholo) in dem von dir angesprochenen Kreis Leute kennst, die Interesse hätten wär natürlich klasse. Werde deinem Vorschlag folgend mein Problem auch noch mal bei Rechenkraft einstellen.

@Piet Lotus: Die Idee mit der Markierung hatte ich auch, allerdings hätte ich dann wieder die gleiche Situation wie jetzt (Stirnband, irgend nen Gerödel am Kopf), was ich ja gerade vermeiden will.

Aufgabe also für die nächsten Tage: Kamera in Betrieb nehmen, ggf. Kamera mit mehr fps anschaffen, danach melde ich mich wieder.
Würde mich freuen wieder von euch zu hören!

Viele Grüße
Daniel
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das was du da siehst ist FAST schon fertig verfügbar als Open Source: https://youtu.be/oWviqXI9xmI - was fehlt ist eine nachgelagerten Pose estimation, die sich aber zb mit in https://www.learnopencv.com/head-pose-e ... -and-dlib/ beschriebenen Verfahren nachrüsten lässt.

Das Video illustriert aber auch die spezifischen Probleme dieses Verfahrens, weswegen ich deine Annahme, das wäre schön alles fast so weit, massiv in frage stelle: nach ein paar Sekunden verdeckt der Schauspieler sein Gesicht mit den Armen. Natürlich bricht die landmark detection sofort zusammen. Wenn du im Bett liegst, ist dein Kopf auf der Seite. Ggf ist ein Arm im Weg. Und genau dann wenn’s spannend wird, bekommt das Bild schlieren, weil die Bewegung zu schnell ist. All diese Probleme muss man lösen. Das Video von dir hingegen arbeitet mit idealen Bedingungen. Da geht immer alles.

Insofern wäre ich da jetzt nicht so optimistisch wie du. Und mein vorgeschlagenes alternatives Verfahren muss natürlich auch erstmal beweisen, dass es funktioniert. Aber es beinhaltet durchaus die Idee, die erfasste bewegungsintensität über einen gewissen Zeitraum hin zu klassifizieren, um eben unruhigen Schlaf von problematischem Verhalten zu separieren.

Letztlich bleibt es aber bei meiner ursprünglichen Aussage: erst mit entsprechendem Bildmaterial kann man da eine Aussage treffen. Ein solches System kann nicht am grünen Tisch geplant & dann einfach abgeliefert werden.
DanHWS
User
Beiträge: 6
Registriert: Samstag 14. April 2018, 22:39

Verstehe was du meinst. Ich bin natürlich sowieso nicht in der Position igendwelche qualifizierten Vermutungen über die Leistungsfähigkeit des in meinen Videos zum Einsatz kommenden Systems u. dessen Grenzen in Bezug auf meine spezifische Anwendung anzustellen, es war lediglich das erste was ich gesehen und mir gedacht hab da könnt was gehn. Dein Alternativverfahren wäre mir natürlich auch vom Finanziellen her deutlich sympathischer.
Zum Videomaterial: Ist es für beide Verfahren gleichermaßen (für Zweiteres wahrscheinlich eher weniger) wichtig dass ich selbst Modell stehe? Das Problem ist, dass ich einige Schwierigkeiten habe die Bewegungen mit meinem lädierten Hals länger als für ein paar Sekunden zu simulieren, und auch nicht allzu schnell, aber mal sehen was ich hinbekomme. Für den Sensor damals hat’s ne Nackenrolle getan - Sensor dran u. dann hin und hergerollt. Bin die nächsten zwei Tage allerdings unterwegs, vor Sonntag wird das also nix werden.

Vielen Dank + bis die Tage
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Für keines ist das wichtig, das du es bist. Wir zielen ja nicht auf dein persönliches Gesicht ab. Wichtiger ist so viel Daten wie möglich, und so variantenreich wie möglich, und in guter Qualität. Und natürlich aus einem Blickwinkel, der dem Später gewünschten entspricht.
DanHWS
User
Beiträge: 6
Registriert: Samstag 14. April 2018, 22:39

Die ganze Aktion hat doch mehr Zeit in Anspruch genommen als erwartet, aber die erste Aufnahme ist endlich im Kasten. Die Kamera ist wohl mit 320x240 u. 30fps sicher nicht optimal, dazu hat sich während der Aufnahme auch noch das Klebeband der Befestigung gelöst, so dass der Lichtkegel der IR LED’s ein wenig abgewandert ist, aber für einen ersten Eindruck ob mit dem Setup überhaupt was geht sollte es reichen. Für weiter Aufnahmen werde ich definitiv nen Ersatzdarsteller engagieren müssen, mein Hals ist nach dem kurzen Gewackel bereits ziemlich am Ende. Das unflätige Gähnen bitte ich zu entschuldigen, ich hab versucht um die problematischen Momente herum möglichst viel Action zu generieren und dazu ein möglichst realitätsnahes Szenario mit hoher andersartiger Aktivität zu schaffen. Unerwünschte Bewegung findet an drei Stellen statt: Bei 2:06, 2:23 u. 3:26. Wer Interesse an den Aufnahmen hat bitte kurz anfragen, ich schick dann ne PM mit nem HiDrive –Link.
@deets: Hab dir grad ne PM mit Link geschickt, hoffe das hat funktioniert.
Ich hab meine Story im Freelancercamp gepostet u. dort von der Intel Realsense-Kamera erfahren. Nicht allzu teuer u. wohl genau für solche Zwecke entwickelt. Vielleicht macht das Sinn?
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nur kurz: PN erhalten, schaue mir das mal bei Gelegenheit an. Ist aber gerade ziemlich Land unter, weil andere Projekte begonnen haben.

Zur RealSense: ich verstehe nicht, welchen Vorteil die bringen soll. Das ist im Grunde eine Kinect mit mehr Software dazu. Sicherlich ist die interessant, aber die gleichen Probleme die ich schon angesprochen habe können auch da auftreten. Aber wenn du da jemanden findest, der dir auf deren Basis eine Lösung liefert - mach es.
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

So, nachdem ich den Film mal angeschaut habe, sieht das Bild ein bisschen anders aus. Ich hatte nach deiner Problembeschreibung mit deutlich wilderen und damit schwerer zu trackenden Bewegungen gerechnet. Die drei im Film gezeigten Beispiele sind aber ziemlich unverstellte, pendelartige Bewegungen. Da sollte tatsaechlich face tracking und pose estimation greifen. Trivial einen Klassifikator dafuer zu schreiben ist das immer noch nicht, aber trotzdem schon mal ganz gut.

Auf der anderen Seite sind meine "Befuerchtungen" trotzdem berechtigt gewesen - es gibt viele Momente, in denen das Gesicht 100%ig nicht erkennbar sein wird, weil durch Arm, Haare, Seitenlage verdeckt.

Damit wird die RealSense auch wieder interessanter, wobei die Kombination normale Kamera + dlib hier auch genug Erkenntnisse liefern sollte.

Bei Gelegenheit werde ich mal https://www.pyimagesearch.com/2018/04/0 ... with-dlib/ oder eine der anderen Implementierungen von Adrian ueber das Material laufen lassen, und schauen, was da passiert.
DanHWS
User
Beiträge: 6
Registriert: Samstag 14. April 2018, 22:39

klasse, dann werd ich mal geduldig warten wie's weitergeht - u. in der Zwischenzeit mit den Freelancern Kontakt aufnehmen was die für Ideen haben. Bin gerade selbst auch ein wenig am Rotieren, wie meine verspäteten Antworten vermuten lasssen.
Antworten