![]() |
Webcam Alarmanlage - Neuronales Netz
Liste der Anhänge anzeigen (Anzahl: 2)
Übersicht:
Das Programm ist in der Lage, aus jeder Kamera ein Bildüberwachungssystem zu machen. Es nutzt dazu ein neuronales Netz, vergleichbar mit den Neuronen im Gehirn welche über sog. Synapsen (Gewichte) miteinander verbunden sind, nur sehr viel weniger komplex. (In diesem Fall sind nur 76801 Neuronen im Einsatz) Das besondere daran ist, dass es v.a. für qualitativ nicht sehr hochwertige (flimmernde) Kamera sehr gut geeignet ist, da die Überwachung eben auf solch einem Netz basiert. Das neuronale Netz fungiert als eine Art KI und flimmernde Pixel zählen daher bei der Bewertung weniger als (relativ) konstant bleibende Pixel. Beta 0.6
Achtung: Bei einem Alarm wird ein Bild im Programmordner gespeichert (output.bmp) Wahrscheinlich besitzt das Programm noch einige Design -und GUIBugs (falsch deaktivierte Buttons usw...). Sollte jemand Dinge wie ne AV oder andere schwerwiegende Fehler reproduzierbar erzeugen können, bitte ich um Rückmeldung (+OS). Beim Start erscheinen zwei Kameradialoge. Bitte im ersten Dialog folgende Daten angeben: Auflösung: 320 * 240 Komprimierung: I420 oder RGB24 (geht auf jeden Fall, bevorzugt ist allerdings I420) Eine Anleitung (leider nich ganz aktuell) findet ihr im Programm bei Klick auf den Hilfe-Button Code-Snippets (PSEUDO-CODE)
Delphi-Quellcode:
procedure Lernen;
begin (* Das ist natürlich nicht meine ganze Lernroutine, aber das Grundgerüst. Die ganze will ich dann doch noch nicht hergeben :-) *) for i := 0 to length(InputNeuronen) - 1 do begin ai := OutputNeuron.Output; aj := InputNeuronen[i].NettoInput; deltaGewicht := (ai-aj); //Damit die Änderungen nicht ZU minimal werden if (deltaGewicht < 0.015) and (deltaGewicht > 0) then deltaGewicht := 0.015 else if (dGewicht > -0.015) and (deltaGewicht < 0) then deltaGewicht := -0.015; //Lernkonstante Epsilon wird stetig kleiner um Überlernung vorzubeugen neuesGewicht := Lernkonstante * deltaGewicht; InputNeuronen[i].Gewicht := InputNeuronen[i].Gewicht + nGewicht; if InputNeuronen[i].Gewicht < 0 then InputNeuronen[i].Gewicht := 0; end; end;
Delphi-Quellcode:
Thx, lg Flips
procedure BerechneOutput;
begin OutputNeuron.Output:= 0; for i := 0 to length(InputNeuronen) - 1 do begin a := InputNeuronen[i].NettoInput * InputNeuronen[i].Gewicht; //Evtl. Aktivierungsfunktion ?? //a := f(a); OutputNeuron.Output:= OutputNeuron.Output + a; end; OutputNeuron.Output := OutputNeuron.Output / length(InputNeuronen); end; |
Re: Webcam Alarmanlage - Neuronales Netz
Habs mir nicht angeschaut, da ich keine Webcam hab. Aber :thumb: für die Umsetzung. Die gleiche Idee hatte ich vor zig Jahren, allerdings mangels Wissen und Erfahrung wieder seingelassen. :mrgreen:
|
Re: Webcam Alarmanlage - Neuronales Netz
Gut, du weißt ja, dass ich
![]() Die Umsetzung ist erst die Spitze des Eisbergs (hoffe ich jedenfalls :-) ). Zur noch besseren Analyse möchte ich noch ein paar Hidden-Layers (zusätzliche Zwischenneuronen) einbauen, zur Zeit arbeite ich ja nur mit ner Inputschicht und einem (hab auch ne Version mit zwei) Outputneuronen. Aber alles zu seiner Zeit :-) |
Re: Webcam Alarmanlage - Neuronales Netz
Hallo Flips,
schau mir gerade mal dein Alarm-Programm an, sieht vielversprechend aus! :thumb: Webcam läuft, und wird angezeigt. Bei Normbild gibts nur ein schwarzes Bild. Ist das beabsichtigt? lg Luwo |
Re: Webcam Alarmanlage - Neuronales Netz
Hehe nein ist es nicht :-)
Haste die Checkbox SW aktiviert? dann kanns sein das du erstmal den kontrast umstellen musst (mit der Trackbar im Normbild-Fenster) |
Re: Webcam Alarmanlage - Neuronales Netz
Zitat:
Zitat:
Kontrast rauf-runter-fahren ändern nix am Bild, bleibt kompletto schwarz. Hast Du ne Idee woran es liegen könnte? Luwo |
Re: Webcam Alarmanlage - Neuronales Netz
Liste der Anhänge anzeigen (Anzahl: 1)
Probiers mal mit dieser Version
|
Re: Webcam Alarmanlage - Neuronales Netz
Zitat:
Kann das vielleicht mit der Webcam selbst zusammenhängen? Oder capturest du das Bild aus dem Cam-stream? |
Re: Webcam Alarmanlage - Neuronales Netz
Ich capture das aus dem Stream.
Was für ein OS hast du? |
Re: Webcam Alarmanlage - Neuronales Netz
Zitat:
|
Re: Webcam Alarmanlage - Neuronales Netz
Das ist ja schon ne USB Kamera oder?
Vielleicht liegts daran. Aber ansonsten weiß ichs echt nicht... :gruebel: Aber das vorschaubild geht? |
Re: Webcam Alarmanlage - Neuronales Netz
Habe leider genau das gleiche Problem (Vorschaubild geht, Normbild ist schwarz), die Kamera ist über den Composite-Eingang meiner TV-Karte angeschlossen. Ich kann es auch nochmal über USB-Probieren, da müsste ich jetzt aber das entsprechende Kabel suchen gehen.
|
Re: Webcam Alarmanlage - Neuronales Netz
Zitat:
Mit so einer hab ich meine erste Webcam-Applikation geschrieben. Zum Test: Das Vorschaubild funzt prima. Vielleicht hilft dir der Hinweis, dass die Checkbox "[x] SW" (bei meiner cam) keinerlei Auswirkung hat. (Vermutlich sollte dann das Bild in Graustufen sein, oder?) |
Re: Webcam Alarmanlage - Neuronales Netz
Liste der Anhänge anzeigen (Anzahl: 1)
Nur das Normbild.
Hab jetzt mal einen Button hinzugefügt. Wenn du den klickst sollte im Programmverzeichniss ein Bild sein mit dem Webcambild. Wäre nett wenn du das mal testen könntest ob das Bild da ist bzw. nicht schwarz. |
Re: Webcam Alarmanlage - Neuronales Netz
Das erstellte Bild ist in Ordnung.
|
Re: Webcam Alarmanlage - Neuronales Netz
Zitat:
|
Re: Webcam Alarmanlage - Neuronales Netz
Liste der Anhänge anzeigen (Anzahl: 1)
OK, erstmal danke das ihr mir Debuggen helft ;-)
Hab jetzt mal ein wenig mehr Variationen eingebaut damit ich nich so viel verschiedene Programme hochladen muss. Jetzt entstehen beim Klick 3 Bilder, test1-test3.bmp. Wie schauts mit denen aus? |
Re: Webcam Alarmanlage - Neuronales Netz
Alle drei (unter C:) erstellten Bilder sind nun Schwarz.
|
Re: Webcam Alarmanlage - Neuronales Netz
Liste der Anhänge anzeigen (Anzahl: 1)
Danke du hast mir gerade sehr geholfen.
Leider muss ich wieder einen Probedurchgang hochladen, hoffe die Mods verzeihen mir den ganzen Traffic und Datenmüll^^ 2 Bilder, diesmal sollten sie aber im Programmverzeichniss sein :-) |
Re: Webcam Alarmanlage - Neuronales Netz
Nach wie vor - schwarz.
|
Re: Webcam Alarmanlage - Neuronales Netz
OK dann weiß ich an was es liegt, fixed version ist in ner minute ersten Post zu finden!
Und noch ein großes Danke euch BEIDEN!!!!!! |
Re: Webcam Alarmanlage - Neuronales Netz
Zitat:
Habe das Videoformat von RGB24 auf I420 umgestellt, und siehe da, Normalbild kommt. Vielleicht noch ein paar kleine Anmerkungen zur Programmbedienung: Beim Klick auf [Alarm aktivieren] passiert (sichtbar für den Benutzer) erstmal irritierenderweise gar nix. Da sollte irgendein Feedback sichtbar/hörbar sein (z.b. Countdown in der Caption: "Starte Alarm in 5,4,3,2,... Sekunden") Wenn der Alarm aktiviert wird (rotes Formular) passiert wiederum für ein paar Sekunden gar nix (oder nur für den Benutzer nicht sichtbar?) Auch die Anzeige unten bleibt scheinbar stehen, nach ein paar Sekunden gehts dann weiter. btw: Für die Anzeige des Alarms würde ich ein kleines TShape (Kringel irgendwo auf dem Hauptfenster) verwenden (ist aber nur meine kleine ästhetische Meinung :-) ) Ein kleiner Bug: Wenn ohne vorher auf [Normalbild] zuerst auf [x-mal lernen] geklickt wird, kommt folgende Fehlermeldung: "Bereichsüberschreitung bei Zeilenindex." Sicherlich nur ne Kleinigkeit :-) Ansonsten finde ich das Programm und die hinterliegende Idee super! :thumb: Güße Luwo |
Re: Webcam Alarmanlage - Neuronales Netz
Bei mir funktioniert es jetzt auch. :thumb:
|
Re: Webcam Alarmanlage - Neuronales Netz
Eine Frage zu den Programm (ich selber habe keine Webcam, kann es also net testen):
Wie häufig nimmt das Programm ein Bild auf, sobald eine Störung reinläuft? Nur einmal? Dann müsste man sich ja nur mit dem Rücken voran reinkommen xD MfG xZise |
Re: Webcam Alarmanlage - Neuronales Netz
Zitat:
Zitat:
Ich denke nächste Woche kann ich ne Beta releasen, dann wird das schon :-) Zitat:
Zitat:
Zitat:
Zitat:
Allerdings hast du insofern recht, dass mir schon der (Logik-)Fehler aufgefallen ist. Man erkennt ihn in der Reihenfolge, in welcher eine Überschreitung des Grenzwerts abgearbeitet wird. Bild capturen Überprüfen Alarm ausgeben Bild capturen Bild speichern Da die Überprüfung ja einige ms dauern kann sollte ich das 2. "Bild capturen" wohl rauslassen, da dann unter Umständen niemand mehr zu sehen ist :-D |
Re: Webcam Alarmanlage - Neuronales Netz
Ich habe gerade keinen Zugriff auf Windowsrechner, finde den Ansatz mit einem NN aber interessant. Könntest du vielleicht etwas über den Aufbau sagen (inputNeuronen, wieviele verdeckte Schichten, Anzahl OutputNeuronen, Lernfunktion,usw)?
Warum hast du dich überhaupt für ein NN entschieden? Einfach so, weil die Teile lustig sind, und du es ausprobieren wolltest? Spontan wäre mir bei einer Alarmanlage eingefallen, die Differenz zweier Bilder zu berechnen und dann den Fehler aufzusummieren. |
Re: Webcam Alarmanlage - Neuronales Netz
Zitat:
Bei mir kommt "Indexüberschreitung" oder so was in der art... |
Re: Webcam Alarmanlage - Neuronales Netz
Zitat:
Habe auch einen eigenen Interpolierungsalgorithmus für SW-Bilder geschrieben, damit das Flimmern ein wenig gefiltert wird. Das geht auch gut, aber dann ist mir der Gedanke mit einem NN gekommen, zumal ich ja schonmal ein Programm mit einem NN hier vorgestellt habe. Ein NN arbeitet ja eigentlich ganz grob gesagt danach: Lerne, wichtiges von unwichtigem zu unterscheiden bzw. was welcher Zustand aussagt. Und das NN ist jetzt so programmiert, dass es lernt, Pixel die sich stark verändern (Beispielsweise ein Blinklicht) oder einfach nur stark flimmernde Pixel weniger zu zählen als Pixel die nahezu konstant bleiben. Zur Veranschaulichung: Ich ordne jedem Pixel ein Inputneuron zu. (Eine gute Idee für einen Hidden-Layer wäre, 4 Pixel die ein Quadrat bilden zu einem Neuron zusammenzufassen). In der Lernfunktion wird nun die Abweichung jedes aktuellen Pixels zum Normbild geprüft. Vorgabe ist : Unterschied soll 0 sein. Wenn der Unterschied jetzt einen gewissen Toleranzwert (5% hier) überschreitet, dann hat das Neuron die Anforderung nicht erfüllt -> es bekommt den Output 1, anders bekommt es den Output 0. Dann in der eigentlichen Lernfunktion wird jenachdem ob ein Neuron sich verändert (=1) oder gleich geblieben ist (=0) die Synapse (das Gewicht) zum Endergebnis berechnet. Als Beispiel: 2 Neuronen, das eine flimmert, das andere bleibt relativ konstant. Beide haben zu Anfang ein Gewicht von 0. Das flimmernde Neuron ist beim Vergleich mit dem Normbild durchgefallen, das andere hat bestanden. D.h. das konstane Neuron bekommt Gewicht gutgeschrieben, das andere Gewicht abgezogen. Wenn dieser Lernvorgang oft genug gemacht wurde, weiß das NN wie es die Pixel einzustufen hat. Inputneuronen gibts 320*240 stück, Outputneuronen gibt es 1. :-) Hidden-Layers gibt es noch (!) keine, werd ich mich aber jetzt ans Werk machen. Zitat:
|
Re: Webcam Alarmanlage - Neuronales Netz
Zitat:
Hatte auch schon mal ein kleines Projekt zur MotionDetection implementiert. Prinzipielles Vorgehen war, wie Nikolas schon anmerkte: Differenzbilder berechnen (möglichst über MEHR als nur 2 Bilder!) und dann dem Benutzer die Möglichkeit geben innerhalb des Videofensters Bereiche definieren zu lassen (z.B. Eingangstür) die besonderer Beachtung bedürfen. (Hotspots) Habe dazu auch erstmal die Bilder in Graustufen umgerechnet, weil die Farbinformation (in meinem Fall) völlig irrelevant waren. Wenn ich mich recht erinnere hab ich auch noch ein Histogramm der Bilder errechnet um möglichen Lichtschwankungen (die ja nicht wirklich am Bildinhalt was ändern) herauszufiltern. Quasi ein Entschärfen von Bildänderungen. Tipp: Zum Thema n Pixel zusammenfassen, Graustufenfilter usw. gibt es viele (schnelle) Routinen in der ![]() Grüße Luwo |
Re: Webcam Alarmanlage - Neuronales Netz
also bei mir funktioniert die anzeige der webcam leider garnicht.
aber anscheinend liegt das wohl irgendwie an meiner kamera (Logitech QuickCam). In anderen Anwendungen wie z.b. Skype oder ICQ geht sie einwandfrei. Die Funktion aus der CodeLib funktioniert bei mir auch nicht und zeigt immer nur ein blaues Bild an, genau wie bei dieser Anwendung hier.. |
Re: Webcam Alarmanlage - Neuronales Netz
Die Idee die du "Hotspots" nennst ist mir auch schon eingefallen.
So könnte ich eine Hidden-Layer Schicht für Pixel die einen Hotspot bilden erstellen...Das wäre echt nicht schlecht^^ @GeMo Hast du noch andere Geräte wie beispielsweise eine TV-Karte? Die schieben sich nämlich meistens vor Webcams. Ich bau in der Beta noch einen Dialog ein, mit dem Mann die Quelle des Signals wählen kann, dann solltest du deine Quickcam (die ich auch habe ;-)) auswählen können. |
Re: Webcam Alarmanlage - Neuronales Netz
Wenn du diesen Code hier unter die anderen SendMessage Aufrufe in dem Codelyb-Code schreibst und die Quelle richtig auswählst, dann sollte es gehen!
Delphi-Quellcode:
const
WM_CAP_DLG_VIDEO_SOURCE = WM_USER + 42; [..] SendMessage (capHandle, WM_CAP_DLG_VIDEO_SOURCE, 1, 0); |
Re: Webcam Alarmanlage - Neuronales Netz
hi
finde es ganz toll :thumb: nur wenn man es startet, dann ist die zweite Checkbox (in...) enabled, wenn man SW checked auf true setzt und dann wieder auf false geht, ist die zweite Checkbox disabled |
Re: Webcam Alarmanlage - Neuronales Netz
Zitat:
EDIT: hat sich schon erledigt mit meiner frage :) dann hat sich wohl die tv-karte vor die kamera gesetzt.. |
Re: Webcam Alarmanlage - Neuronales Netz
*Push* :oops:
BETA online Erfolgreich getestet! |
Re: Webcam Alarmanlage - Neuronales Netz
Läuft super (nachdem ich endlich den Treiber für meine Webcam gefunden habe :mrgreen: )!
|
Re: Webcam Alarmanlage - Neuronales Netz
So, die Version 5 ist online.
Features sind unter anderem eine skalierte Rot-Färbung geänderter Pixel und eine neue Lernformel, sowie diverse kleine Änderungen. Wäre schön wenn ihr es testen würdet :-) Achso und noch was: Auch interessant wäre die CPU-Auslastung während des Lernens...die ist bei mir nämlich nur ~20%, trotz while-schleife :gruebel: |
Re: Webcam Alarmanlage - Neuronales Netz
wenn ich die anwendung starte kommt von windows die meldung "beta.exe" funktioniert nicht mehr und das programm wird beendet.
Mein System: Windows Vista Home Premium 32bit -> kein Sp1 Logitech QuickCam |
Re: Webcam Alarmanlage - Neuronales Netz
Hmm scheinbar ist das ganze nicht Vista kompatibel.
Kann es leider nicht ändern, habe kein Vista zur Verfügung. :( |
Re: Webcam Alarmanlage - Neuronales Netz
Hmm, beim start kommt der besagte Dialog für Auflösung, Komprimierung und Größe (?!) allerdings hab ich nur MJPG als Auswahl.
Wenn ich nu ok drück kommt ein Dialog zur Auswahl der Videoquelle wo die Kamera auch angezeigt wird. Wenn ich erneut auf OK drück dauert es ne weile bis dann "Kein passender Codec gefunden" kommt. Form wird angezeigt allerdings ohne bilder (verständlich). Beim beenden meldet sich dann der liebe Just-In-Time Debugger von VS moep ^^ OS: win xp pro kamera ist ne panasonic video kamera die über usb/firewire als webcam dient. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz