 Hallo Asthma, ich bin der Stefan aus Chemnitz. Ich habe meinen Thema mitgebracht, was relativ selten war in CCC-Umfeld in letzter Zeit. Es geht um das Maschinelles Sehen, auch als Bildverarbeitung bekannt oder Computerwischen. Ich bin im Chaos of Chemnitz aktiv und beruflich bin ich Wissenschaftler an der TU Chemnitz und beschäftige mich da mit diesen Computerwischen. Es gibt viele aktuelle Entwicklungen in dem Bereich. In der Bevölkerung habe ich eigentlich so das Gefühl, da kommt das meistens nicht so rüber. Wenn man das sagt, ja ich mache mal was mit Maschinelles Sehen, dann ist sofort der Eindruck da, naja, das ist ja das mit den selbstfahrten Autos und mit den selbst schießenden Panzern. Da gibt es dann vielleicht so ein Tablet PC mit so einer App und das ist ja eigentlich sowieso nur militär. Da gibt es den Soldaten und der wählt dann irgendeinen Facebook-Bild aus vom Feind und dann kann die Drohne den identifizieren und abschießen. Mehr ist irgendwie nicht so richtig bekannt aus der Bildverarbeitung. Wenn man plätschen länger darüber nachdenkt, kennt man vielleicht noch, ja okay, da gab es dieses OCR. Da wird Adresse gelesen vom Brief oder vom Paket bei den entsprechenden Paketzustellern und dann geht es auch. Ja, dann hat man eigentlich so das Gefühl, vielleicht ist es in letzter Zeit gar nicht mehr so viel passiert in der IT so in den letzten Jahren, aber gerade in diesem ganzen Computer-Wishen-Bereich, künstliche Intelligenz, das ist auch ein großes Thema, neuronale Netze, da hat sich sehr viel getan. Da werde ich mal erzählen, was so die Ziele sind in dem Bereich, wo das angewendet wird, wie das so grundsätzlich funktioniert, jetzt keine so anspruchsvollen Details. Da hat man, was gibt es da ungefähr, was es verfügbar, was könnte man selber machen. Ja, bisher war das immer so, man hat relativ schnell gemerkt, wenn es irgendetwas Neues gibt, also beim Computer müssen Daten irgendwie immer per Hand eingeben oder vielleicht gab es spezielle Sensoren, die auf eine Aufgabe zugeschnitten waren, also wenn wir gerade zum Thema Bild sind, haben wir ja Barcode oder QR-Code und irgendwie hat man als Mensch so die Kontrolle, was da als Daten rein- und rausgeht, was damit passiert, die man ist sozusagen selbst die Schnittstelle und jetzt kommt aber so der Moment, wo der Computer nicht mehr so mundgerecht vorbereitete Daten braucht, sondern der hat eben Sinne wie der Mensch, da hat er Augen und Ohren und kann einfach so die Umgebung wahrnehmen, wie sie ist und auswerten mit allen Unzulänglichkeiten dieser Daten und trotzdem kann der am Ende sinnvolle Informationen rausziehen und für uns Menschen ist teilweise gar nicht nachvollziehbar, was da eigentlich passiert und da kommen auch einige Überraschungsoffekte raus, also die physikalische Welt ist mit der Cyber-Welt verbunden und da hat man auch den schönen Begriff geprägt, Cyber-Physik. Und ja, also eigentlich, man bekommt es nicht so richtig mit, was in den letzten Jahren passiert, aber man muss mal so irgendwelche Dienste nutzt, also Suchmaschinen, zum Beispiel, da gibt man Begriff ein und guckt mal auf die Bildersuche und da sieht man auch das, was man da gesucht hat und wenn man dann noch ein paar Nebenbedingungen mitstellt, also ich habe mal hier Violett zum Beispiel ausgewählt, werden diese Bilder auch noch ein bisschen nach der Farbe klassifiziert. Nun können man denken, da sitzt jemand da und gibt da vielleicht ein, ja, das Bild enthält das oder vielleicht steht bei dem Text der Begriff dazu und dann wird das vielleicht irgendwie zugeordnet, aber wenn man die Qualität der Suchergebnisse beobachtet, erscheint das schon eher so, als würde tatsächlich das Bild ausgewertet werden. Nun gibt es natürlich Möglichkeiten, das zu anotieren, also die Daten festzulegen, was darauf zu sehen ist. Ein Beispiel durch diese Cupchars, wo dann gefragt wird, ist das jetzt ein Hund oder eine Katze und wenn man das Richtige nennt, geht es weiter. Somit generieren die entsprechenden Daten, aber das ist nicht das Einzige. Auch die neuen Bilder werden dann durch automatische Verfahren automatisch identifiziert. Das geht auch recht gut und dann. So, natürlich ist die Frage, warum macht man das? Spielerei ist halt schön, aber da gibt es ein paar Gründe, warum sich das so sehr durchsetzt. Der Hauptgrund ist so mein achtes Kostensparen, das ist eigentlich bei allen Technologien primärer Grund. Da gibt es eben dann die Lieferthrone, die das Paket nach Hause liefert, irgendwann. Und ohne dass da jemand da sitzt und ein Joystick bedient, da gibt es das selbstfahrende Fahrzeug, was natürlich auch ein bisschen Luxus ist. Also man fährt vor die Haustür, wo kein Parkplatz ist, und dann fährt das idealerweise ohne Insassen weiter weg zu einem Parkplatz im Stadtrand. Und das ist halt dann so eine echte Erleichterung, weil dann sprich tatsächlich Zeit und damit ja auch indirekt Kosten. Genauso der Taxifahrer, der dann in Form als humaner Ressource wieder dem Arbeitsmarkt zur Verfügung gestellt wird, wenn man das so schön ausdrückt. Ja, noch ein Thema ist natürlich ganz Großsicherheit. Das ist einerseits Fahrerassistenzsysteme, was halt sich dahingehend durchsetzt, dass es eben viele Menschen gibt, die auf Insassensicherheit von Fußgängern wertlegen, bereits sind auch viel Geld dafür zu zahlen. Dann auch noch ein bisschen weniger bekannt. E-Core-Systeme im Hausumfeld, also Home-E-Core ist so ein Begriff. Es geht darum, es kann ja immer passieren, dass aufgrund von Krankheit oder irgendwas oder Unfälle passieren zu Hause. Morgen Herzinfarkt, sonst was. Und das wird eben auch daran geforscht, dass automatische Kamerasysteme, die eben nicht übers Internet das Bild in die Cloud streamen oder irgendwas, sondern das Embedded verarbeiten, dann Alarm auslösen können. Das ist auch ein relativ großer Markt. Es gibt Menschen, die dafür sehr viel Geld zahlen, diese Zusatzsicherheit zu haben. Ja, genauso Überprüfung für Notausgänge, dass da nichts dasteht oder irgend sowas. Baustellen-Sicherheit, Roboter, die gucken, dass niemand die Baustelle betritt oder dass niemand in eine Gefahrensituation hineinläuft. Und was halt auch noch so ein Thema ist Unterhaltung. Also es geht ja durch die Medien, es gibt diese Xbox One mit der Kinect von, eine Kamera, die dann den Menschen identifiziert, die Puzzle identifiziert und dann kann man so spielen wie Singstar, aber halt zum Thema Tanzen da spielen. Oder gibt es euren Punktesystem. Ich weiß nicht, kennt jemand sowas oder benutzt jemand sowas. Hier aus dem Raum traut euch. Also es sieht aus wie niemand. Das ist halt auch so ein Ding. Also für Unterhaltung, für so privat gebrauchen, so hat sich das noch nicht so richtig durchgesetzt. Das sieht man halt einfach nicht so richtig. Ja, überlegen wir uns mal so ein Anwendungsbeispiel. Wir hatten vorhin die Erkennung für die Bildersuche. Und da hat man natürlich mehrere Aufgaben. Bildverarbeitung klingt immer schön und einfach und alles gleich. Aber wenn man sich das mal genauer anguckt, was müssen wir da eigentlich machen? Wir müssen erst mal klassifizieren, was ist auf so ein Bild zu sehen. Hier zum Beispiel Pferd, Hund, Mensch, Auto. Und da gibt es noch eine Zahl dazu. Das ist so die Erkennungssicherheit. Also so ein Algorithmus, der schreibt, der jetzt so ein Objekt erkennt. Es gibt auch einen Wert aus zwischen 0 und 1. Der Aussagt mit so viel Prozent bin ich mir sicher, dass es auch wirklich das ist. Und dann kann man natürlich ein Schwellwert einstellen, ob es dann eher falsch positive oder eher falsch negative liefern darf. Das kommt halt auf den Anwendungsfall an, was jetzt ein größeres Risiko darstellt. Das ist der Punkt Nummer 1, Klassifikation. Punkt Nummer 2 ist Lokalisierung. Also wo befindet sich das im Bild? Und dann gibt es noch einen weiteren Teil, die Aktivitätsbeschreibung. Also hier haben wir das nicht drin, in dem Beispiel, die Aktivitätsbeschreibung. Es wird dann so was dastehen, wie Person reitet auf Pferd. Also das kann dann auch aufgrund dieser lokalen Zuordnung noch genauere Informationen darüber herausfinden. Und dann geht es halt noch ein bisschen weiter. So richtig bei Videoportalen habe ich das noch nicht bemerkt, dass bei der Suchfunktion direkt der Videoinhalt durchsucht wird. Es gibt Technologien, die das können. Und da gibt es die Teilbereiche visuelles Tracking. Also wenn sich ein Objekt da drin bewegt, muss ich wieder identifizieren, dass es auch das selber Objekt ist, was in dem vorherigen Bild war. Dann gibt es die Bewegungsklassifikation. Das heißt, wenn sich ein Objekt über die Zeit auf dem Bild bewegt, dann kann man auch eine Aussage darüber ableiten kennen, was das jetzt ist. Zum Beispiel fliegt da ein Ball, rollt da ein Ball, ist da eine Person, die läuft oder rennt oder ähnliches. Die Posenklassifikation gehört dazu. Und zwar so was, wie man hier sieht. Da arbeitet eine Person in der Küche und schneidet da irgendwas aus. Da sieht man, das sind so viele kleinteilige Dinge, also Körperteile, die da im Kontext zueinander stehen. Und daraus wird dann entsprechend die Information gewonnen. Genau so die Handlungserkennung. Es wird am Ende eine klasse zugeordnete Handlung. Auch mal darauf achten, ich habe da unten immer mal so eine URL angegeben. Also das Stand von dem Algorithmus P-CNN. Das ist meistens Open Source. Eigentlich ist fast alles Open Source aus dem Bereich, den habe ich auch mal getestet, kurz funktioniert. Was auch noch so ein Ding ist, was auch noch was Sinnvolles ist, ist vielleicht auch so Gebärdensprache in Textumwandeln, also automatisch jemand, der zum Beispiel nur Gebärdensprache beherrscht, weil er vielleicht schon von Geburt an Taub ist, also nicht die richtige Internation hat, wo das einfach nicht gut genug verständlich ist, wäre das ja gut, der kann sich einfach mit Gebärdensprache unterhalten, sondern automatisch übersetzt. Und dazu gibt es halt auch wieder das Problem, man muss den Menschen erst in einem Bild ziehen und muss die Pose, also die Stellung der einzelnen Liedmaßen, kennen. Hier habe ich das mal für eine Steuerung gemacht. Also es gibt auch die Idee, die Geräte, Roboter per Posen zu steuern, ganz einfach zum Beispiel im Krankenhausumfeld, ist ja hier keine eine wichtige Sache, wenn man da alles Mögliche anfasst, kann man doch mal Krankenhauskeime übertragen und so kann man das Kontakt losmachen. So, es gibt vier, also es gibt sehr viele Anwendungsfälle, auch bei gerade Assistenzsystemen von Fahrzeugen. Da muss man Fußgänger erkennen, Absicht erkennen, dass es von Zebra- Streifen gehen, was auch immer. Muss er kennen, gibt es eine Baustelle, blinkt das viertere Fahrzeug, muss mehreres kombinieren, also Navi zum Beispiel und umgebung kann, wenn da irgendwas ist, was da nicht zusammenpasst. Also die Straße ist nur mit einer Linkskurve da sichtbar und das Navi sagt aber geradeaus, kann ja sein durch irgendein Fehler. Man braucht das visuelle Tracking, damit man auch sieht, dass stehen vielleicht mehrere Fußgänger, die über Zebra- Streifen, Ampel oder irgendwas drüber wollen und muss die ja dann von Bild zu Bild zuordnen, damit man auch wieder die Absicht erkennen kann, das darf ja nicht verwechselt werden, sonst funktioniert ja der nachfallende Algorithm nicht. Das muss in Echtzeit gehen, harte Echtzeit und da gehören auch Regelschleifen dazu, denn wenn zu einem Algorithmus das Fahrzeug steuert, verändert sich ja wieder der sichtbare Bild, das darf sich ja auch nicht aufschaukeln. So die Erkennungssicherheit von diesen Algorithmen, die nur klassifizieren und lokalisieren von Objekten, ist recht hoch. Hier haben wir ein Beispiel, das habe ich in Gang vom Universitätsgubereiter aufgenommen, dass da vorne mit der Kleinbox da, das bin ich, ist relativ dunkel, da umgebung, man sieht halt, den Mensch erkennt es mit 77,6 Prozent Sicherheit und die Angaben hier, das sind meterausgehend Vermittelpunkt, das ist dann x, y ist 0 und dann ist die Z-Achse da hinten noch angegeben, also wenn ich jetzt, ich bin hier 9,18 Meter entfernt von der Kamera, diese Messung war es eigentlich relativ einfach gewesen, gerade auch die Abstandsmessung, das ist zwar eine Kamera, die eigentlich Entfernung messen kann, aber die Ergebnisse waren so schlecht, wenn man ungefähr die Größe aus dem Algorithmus nimmt, kann man auch den Abstand relativ sicher berechnen, die Menschen ungefähr gleich groß erscheinen. Auch so ein Einsatzbereich ist Pflege, also da geht es ja auch um das Thema Privatsphäre, vielleicht möchte man nicht unbedingt fremde Pflegepersonal bei sich ins Haus lassen und Körperpflege Ähnliches machen lassen, es wäre vielleicht gut, wenn man Maschinen hätte, die das unterstützen, also ich stelle mir das halt so vor, wenn eine Person gebehindert ist, irgendwas, das sich in eine Dusche reinhockt oder Ähnliches und dann hat man einen Roboter, der automatisch den Durchkopf bewegt, das reduziert halt den Kontakt zu dem Pflegepersonal, gut wäre es natürlich, wenn die Software und die Hardware dann open source wäre und auch sichergestellt wird, dass da keine Internetverbindung da ist, während das System in Betrieb ist und auch kein großes Speicher, der dann irgendwie die Daten noch aufhebt, die Bilder, das ist auch ein Problem, das dann auch Echtzeitregelungstechnik reingehört, also da ist noch sehr viel zu erforschen, dass das funktioniert. So mal die Idee hinter dem Ganzen, Konzept der Bildverarbeitung, das ist ja irgendwo eine Art inverses Problem und die Grundlage hinter dem System ist die sogenannte Kompression, also ähnlich wie man es von JPEG oder Videokompression ähnlichen kennt, denn die Information besteht aus so grob drei Kategorien, Entropie, also was dann die Relevanz darstellen soll, in dem Fall die Irrelevanz und die Redundanz und jetzt habe ich einfach mal als Beispiel Objekt halt ein Bildschirm mitgebracht und wenn man den erkennen soll, ja jetzt erstmal die Frage, der Teil ist jetzt von dem Objekt die Irrelevanz, ist da jemand eine Idee? Ja genau, also das Bild auf dem Monitor ist die Irrelevanz, der Algorithmus darf sich daran nicht festhalten und die Klassifikationen davon abhängig machen, ja vielleicht eine Idee für die Redundanz, ich sage es nochmal, also zum Beispiel, dass die Farbe von dem Rahmen gleich ist oder dass die Front ungefähr gerade ist, also wenn man jetzt den von der Seite sehen würde, wird das sicher rettundant die gesamte Vorderfläche drehen, es wird es ja sich nicht in sich verformen und die Entropie, also die Relevanz und die Eigenschaft, das sind halt Ecken, das ist halt Vier-Ecke, recht-Ecke, sonst was, so ein Algorithmus muss natürlich dann entsprechende Filter in einem drinnen besitzen, sodass er das erkennt und da sind wir eigentlich schon anhand des Beispiels bei den Besonderheiten von einzelnen Objekten, die man was sehen kann, es gibt Objekte, die Stassen mit dieser Bildschirm, dann gibt es Segmentstaches, also zum Beispiel der menschliche Körper, der hat halt Gelenke und inzwischen ist was Staches, also Notburg, das kann man aufklappen, zuglappen kann, oder die Winkelkatze zum Beispiel, da ist auch der Arm da, Segmentster, oder ganz flexibel, also sowas wie Kleidung, einen Seil, ein Kabel, sonst was und je mehr da natürlich Flexibilität drin ist in der ganzen Geschichte, umso schwieriger ist natürlich dann die Objekterkennung, dann gibt es noch Besonderheiten in der Umgebung, so vor zehn Jahren oder vor 20 Jahren waren halt die Algorithmen so, da war die Umgebung irgendwo festgelegt, das sah gut aus, es hat gut funktioniert, aber jetzt, wo es darum geht, im allgemeinen Umfeld zu funktionieren, da muss man halt mit Verdeckung zurechtkommen, Objekte sind manchmal nur zu ein paar Prozent sichtbar, es gibt Licht- und Schatteneffekte, Spiegelung, es gibt natürlich auch so ein Fall wie bei dem Bildschirm, wo ein Objekt nochmal auf einem Ausdruck oder auf einem Bildschirm sichtbar ist, das sollte am besten auch noch erkannt werden, dass das nicht fehlinterpretiert wird, das Ganze ist wie schon gesagt die Lösung eines inversen Problems, so jetzt mal zu der Technik dahinter, auch die aktuellen Zauberverfahren, muss man so auszudrücken, basieren noch auf grundlegende Theorien, also wie die Kreuzkorrelation, wenn man jetzt mal so ein Dokument einscanned, würde jetzt ein OCR-System, wenn man sich das mal so überlegt, so ein Referenzobjekt nehmen, also wie dieses E da und mit dem Scan vergleichen, da kommen dann die Kreuzkorrelationen raus, die da sichtbar ist mit ein paar so weißen Wolken, aber das sind so drei Stellen, wo das besonders hell ist und wenn man jetzt noch eine Schwellwertbildung durchführt, sieht man das tatsächlich an den Stellen, wo das E ist, also so grundsätzlich funktioniert es, das ist natürlich sehr fehleranfällig und das ausgebleicht das an den Stellen geht es nicht, wenn es woanders zu stark ist, geht es auch nicht richtig, das liegt einfach an dem Problem der Autokorrelation, also das Objekt ist selber mit sich ähnlich, wenn es ja auch mit anderen Dingen ähnlich ist, wenn man das mal zurückgeht und sagt, das E ist so ähnlich wie das D, also das ist nur der Strich in der Mitte ein bisschen anders oder wie es errt, da ist auch diese Rundung da oben dran, das ist alles nur ein geringer Unterschied und trotzdem muss das am Ende das Objekt korrekt identifizieren können, Autokorrelation des Scans, da ist sehr viel Selbstähnlichkeit drin, Autokorrelation der Referenz, man sieht das jetzt hier in den Ecken, also der Koordinatenursprung ist die Ecke, das ist eigentlich nur so eine Art Wolke, eigentlich will man eine Autokorrelation, was einfach nur ein weißer Punkt ist, also möglichst keine Selbstähnlichkeit, aber das ist eben trotzdem Redundanz drin und das kann man halt nicht ausschließen, das sind halt reale Abbildungen. Wer kennt das Konzept der Korrelation, Kreuzkorrelation nicht, es sind doch einige, ich erklär's mal, anhand eines Beispiels, das ist jetzt was Eindimensionales, kein Bild, hier oben habe ich einfach mal einen Verlauf, das können jetzt Helligkeitswerte oder bei Sprachsignalen, eben Auslenkungen sein, 3 minus 6 minus 5, 0 und 8, in Summe ist das 0 und jetzt nehme ich das Gleiche und schiebe das von links nach rechts durch und multipliziere das jetzt immer wieder, man sieht dann, wenn ich da 3 mal 8, das sind 24 oder ich gehe dann weiter runter, gerade jetzt in der Mitte, wo ich das Ganze exakt mit sich selbst multipliziere, da habe ich dann den größten Wert von 134 und da sehe ich, an der Stelle, wo diese sehr große Wert entsteht, ich multipliziere das ja jetzt Element für Element, bildet da eine Summe und das ist dann die Autokorrelation in dem Fall, weil ich habe ja das Objekt mit sich selber korreliert und erkennt das wieder, also an der selben Stelle wieder existiert in der Praxis, ist das so, wenn ich eine Kreuzkorrelation durchführe, dann sind das oben nicht exakt diese Werte, sondern das sind irgendwie andere Zahlen, aber der Gedanke dahinter ist, dass mein Objekt einfach als Summe auf etwas anderes überlagelt ist, also man hat zum Beispiel das Bild und das Kamerarauschen oder irgendwelche Helligkeitseffekte da drauf oder beim Ton, bei der Audioanalyse, da habe ich Hintergrundgeräusche und die eigentliche Sprache und durch diese Multiplikation mit dem Referenzwert und dieses ständige Schieben, dann finde ich irgendwo den Punkt, finde ich, dass ich drüber schiebe, wo das exakt aufeinander liegt und dann habe ich eben diese große Summe und dort muss es sich befinden an der Stelle. Aber man sieht natürlich, das funktioniert nicht immer, obwohl ich ja gar keine Störungen drin habe, sondern nur, dass die Referenz mit sich selbst vergleiche, habe ich ja diese Autokorrelation, habe dann woanders auch relativ große Werte dazwischen, das ist also nicht so ganz einfach, damit was zu finden. Dann habe ich jetzt mal diese Folie noch dazu genommen, weil wenn man da ein bisschen Literatur liest, liest man was von Korrelation und Faltung. Man weiß immer nicht so richtig, was ist denn jetzt das eine und was ist das andere und was hat das miteinander zu tun. Und zwar ist die Kreuzkorrelation eigentlich das Gleiche wie die Faltung, aber es so definiert, dass ich einfach das Argument tausche, also das einfach eine Spiegelung von dem Referenzsignal gegenüber dem zu suchenden Signal, zu einem untersuchten Signal vorhanden und im Komplexen ist da immer ein Generteil getauscht, aber das ist jetzt nicht wichtig, das Komplex bleiben wir jetzt erst mit dem Reelen, aber grundsätzlich ist halt immer das Ding, man führt immer diese Multiplikation durch, das Referenz mit dem Original anschiebt, dann kann man diese Kreuzkorrelation anhand der Faltung berechnen, da das halt relativ schwierig ist und immer mal eigentlich viele Fehler mit sich bringt, durch die Selbstähnlichkeiten, die Störungseffekte, ist man dann übergegangen dazu, neuronale Netze für das Ganze einzusetzen und die sind ein bisschen aufwendiger aufgebaut momentan, man hat eine Eingabe, wo das Bild reinkommt, die Ausgabe, wo das Ergebnis rauskommt und sogenannte Hittendlayer, also das ist mehrlagig aufgebaut, nicht so wie man vielleicht die Vorstellungen haben könnte, wie im Gehirn, dass das alles kreuz und quer miteinander vernetzt ist, nein, es ist Schicht für Schicht aufgebaut, es geht am Anfang rein, geht zunächst über die Information und so weiter, bis es am Ende rauskommt, da gibt es keinen Rückweg zwischendrin und die Neuronen verarbeiten eben jede kleine Information, am Ende kommt zwar aber auf der Weise die Information raus, die Nutzinformation raus, da gibt es mehrere solcher Schichten, also die sind klassifiziert nach der sogenannten Convolution-Schicht, die ist dafür da diese Kreuz-Korrelation auszuführen, danach gibt es eine nicht-len Jahre Schicht, diese Relu- oder Aktivierungs-Schicht, die bildet den Schwellwert, wenn wir das vorhin in dem Beispiel gesehen haben, dann Pooling, das geht ja darum, man hat ja ein relativ großes Bild mit vielen Bildpunkten, am Ende will man da vielleicht nur ein paar Klassen haben, die man am Ende ausrechnet oder ein Bild, wo man grob das Objekt identifizieren kann, einfach Reduktion des gesamten Datenraums, dann gibt es die Normalisierungs-Schicht, das hat halt technische Gründe, man muss irgendwo den Definitionsbereich anpassen, gerade wegen dieser Aktivierung, wegen diesen Nicht-Linearitäten, dann gibt es die sogenannte Fully-Connected-Schicht, das ist eine Neuronschicht, wo jeder Eingang auf den jeweiligen Ausgang rückt, dann komme ich dann noch dazu, das geht darum, für diese Klassifikation die Daten zu liefern und der Loslayer, der dazu, irgendwie müssen wir sehr ein Modell in dieses Neuronschichten rein, und das geht halt nur über sogenanntes Training und das ist eine mathematische Optimierung dazu braucht, eine Kostenfunktion, das ist der Loslayer gut. Die Faltungsschicht funktioniert so, man hat eben diesen Filter, also das war wie diese Referenz von in diesem UCA Beispiel, und hier sieht man vielleicht auch die Faltung noch mal besser auf der Funktionsweise, man hat das Eingabebild und schiebt das dann wirklich Pixel für Pixel da drüber und generiert dann diese Summe der Produkte und das ist dann hier diese Minus 8 in dem Fall, das gibt dann dieses Korrelationsbild, am Ende, und das Entscheidende ist eben diese Referenz zu finden, dieses Referenzbild, denn wenn ich dann nicht einfach nur das Objekt suche, sondern vielleicht nur bestimmte Eigenschaften von dem Objekt, dann komme ich vielleicht mit irgendwelchen Störungen oder mit Selbstähnlichkeit besser zurecht. Und jetzt mal so eine Überlegung, was wäre, ist das eigentlich wichtig, dass dieser Referenz 3 mal 3 hat oder wäre das jetzt schlimm, wenn wir das über 20 mal 20 oder 100 mal 100 machen und dann das Netz zu trainieren? Irgendeine Idee? Also es funktioniert theoretisch auch, wenn es zu groß ist, weil nach dem Lernprozess, wenn diese Parameter optimiert werden, können wir den Rest ja null machen und dann wäre es ja wieder so ein kleiner Filter. Und hier sieht man nochmal das Grundproblem, wenn man jetzt so ein Filter hat, der nur diese obere Ecke da erkennt von dem A oder nur diese Kreuzungspunkte und ich tüte das jetzt in solche kleinen Elemente einteilen, dann habe ich zum Beispiel schon das Skalierungsinvariant, das ist egal, welche Schriftgröße das Dokument hat. Ich kann das dann trotzdem wieder erkennen, weil ich ja nur diese kleinen Features, also nur diese kleinen Eigenschaften da suche und dann habe ich dann entsprechend 3 Bilder am Ende, 3 solche Korrelationsbilder. Das erste zeigt halt, wo sich die Spitze befindet, eine wo sich das linke Bein da befindet, das andere das rechte und dann kann ich das weiterverarbeiten in einer tieferen Neuronschicht. Noch mal zur Aktivierung. Ich muss das ja trainieren, dieses ganze Netz. Also muss ich ja auch die Nichtliniarität wann eben diese Schwelle wie wirkt, damit ich am Ende wirklich sagen kann, das ist eine Klasse, also sonst wäre ich ja nur eine rein linieere Operation. Die muss ich ja mit berücksichtigen und da gibt es so ein paar Eigenschaften, also ich will zum Beispiel den Wert zwischen 0 und 1 haben, damit ich sagen kann, das ist das Objekt so nicht und dann nehme ich als Nichtliniare Eigenschaft diese Sigma-IT-Funktion oder damit es schneller zu berechnen gibt, diese Rectified-Linear-Unit rechts, dass ich eben keinen negativen Wert habe. Dann gibt es so noch dieses Pooling, damit ich diesen Raum verkleide, also wenn ich jetzt einen großen Bildausschnitt habe und will nur ungefähr die Nachbarschaften kennen, dann suche ich einfach immer wieder in 2er-Pixelschritten die Maxima und hier sehe ich dann auch, dass ich immer nur die, wo ich diese kleinen Elemente gefunden habe, wenn wir nochmal auf das A zurückgehen, was wir gesucht haben, da werde ich jetzt das kleine Art dazuführen, dass die inneren Elemente von diesem 4x4-Element die großen Werte enthalten, weil es dort diese Teilgebiete erkannt hat. Bei den großen werden es halt die äußeren Bereiche, aber das soll ja am Ende das Gleiche sein und deshalb sieht man auch diese Verkleinerung des Ganzen, so ein kleineres 2x2-Element, was dann immer wieder die gleiche Aussage liefert, egal wie groß das Objekt ist, es kommt immer das Gleiche raus, damit habe ich die Skalierungsinvarianz geschaffen. Pooling, da gibt es halt mehrere Möglichkeiten, man kann das Maximum suchen, Durchschnitt finden, das kommt halt drauf an. Am Ende, das sind halt so kleine Optimierungssachen, ob das dann das bisschen besser funktioniert und nicht, da kann man sich halt ewig streiten und dann wieder Optimierungsmöglichkeiten finden, lange Doktorarbeiten schreiben, sonst was. Dann gibt es die Normierung oder Normalisierung. Das ist auch noch ein interessanter Aspekt, die sogenannte laterale Inhibition, hat da jemand eine Idee, was das bedeuten könnte. Es hängt damit zusammen, wenn ich jetzt so ein neuronales Netz habe und ich berechne da zum Beispiel den Durchschnitt zu einem mittleren Vektor, oder maximal wert sonst was und normiere den gesamten Vektor auf diesen Wert, dann reduziert sich ja der Anteil dieser kleineren Bereiche, also sobald ich irgendwo vielleicht ein Objekt oder irgendetwas gefunden habe, unterdrückt die ganzen anderen Aktivierungen. Das ist halt für die Klassifikation wiederum wichtig. Und dann gibt es am Ende noch den Loslayer, die Kostenfunktion. Da geht es eben darum, zum Beispiel den Ausgang des Netzes mit dem Zielwert, also was da drauf trainiert werden soll, zu vergleichen. Diese Differenz bestimmt dann, wie dieses Netz verändert wird, also die sogenannten Gewichte. Das wären zum Beispiel diese Filterschichten, diese Referenzen in dem Convolution-Layer. Wenn am Ende der Unterschied sehr gering ist, dann bricht man das Ganze ab. Da gibt es verschiedene Losfunktionen, Hingeloß, sonst was. Aber ich habe mal ein Beispiel, das ist vielleicht interessanter. Der erste Teil mit dem Hingeloß, dort oben, da geht es um eine Klassifikation. Jetzt, wenn man sich so was anguckt, rein, maßig, grob überschlagen. Die Idee, man will jetzt drei Klassen unterscheiden, von den Objekten, die ich da sehe. Und jetzt interessiert mich erst mal nur diese letzte Klasse da. Und jetzt muss ich das Netz so anpassen, dass das idealerweise mit den Eingabepiltern das Signal 001 erzeugt, weil das genau das Bild ist, was diese Klasse hat, auf die ich das trainieren will. Also gehe ich einfach so ran. Ich nehme den ersten Wert, subtrahiert den zweiten Wert, ich nehme den ersten Wert und subtrahiert den letzten, plus eins und den zweiten Wert, nämlich auch, und subtrahiert den letzten, plus eins. Und wenn jetzt 001 wäre, wäre die der Los null. Ich muss nichts mehr anpassen. Wenn aber der letzte Wert klein ist, und einer der ersten Werte ist groß, da habe ich einen großen Lass. Also ich teile dem mit, dass ich das noch eine weitere Anpassung erfolgen muss. Oder unten dieses Cross-Entropie, da geht es nochmal um ein anderes Prinzip. Also ich gebe diese Ausgabe des neuronalen Netz-bildlichen Exponenten, dann mache ich wieder diese Normalisierung mit dieser lateralen Inhibition und gehe dann wieder auf den Logarithmus. Da ist die Idee dahinter einfach, dass man nicht mit den tatsächlichen Wert arbeitet, sondern mit dem Informationsgehalt der Logarithmus zu quasi zurückrechnen, auf wie viel Bit wäre das. Und damit kann ich das Netz besser auf einen eigentlichen Informationsgehalt anpassen. Das ist ja nie so, dass ich am Ende wirklich perfekt das auf null trainieren kann. Es bleibt ja immer ein Restloss. Ich will ja eigentlich ein Modell lernen, nachdem das Netz klassifiziert und nicht nur eine 1 zu 1 Tabellen-Abbildung generieren mit einem unendlich großen Netz. Da will ich natürlich das so machen, dass da irgendwo eine Logik dahinter ist, nachdem das klassifiziert und kompakt ausdrückt dieses Modell. So normalerweise zeigt man so ein Modell eines Neurons am Anfang. Ich habe das mal nicht gemacht, weil die Neuronen lagen eben nicht genau dem entsprechend was hier ist. Das zeigt eigentlich nicht so eine Lage, sondern das Teil zeigt zwei Lagen. Und zwar diese Aktivierungsfunktion, ist ja die Aktivierungslage und der vordere Teil ist so ein lineares Neuron. Und jetzt ist die Idee ganz einfach. Man legt einen Eingangsbild an. Am Ausgang gibt man halt vor, was soll das sein. Ich rechne das vorwärts durch, indem ich da diese Gewichte, also dieses Wehe, mit einem Zufallswert oder mit einem Referenzwert initialisiere. Man multipliziert. Ich habe eine Summe. Am Ende habe ich die Aktivierungsfunktion. Das kommt was raus. Das weicht natürlich davon ab, was das für eine Klasse von Objekt ist. Dann berechne ich die Abweichung und gehe dann zurück durch die Aktivierungsfunktion. Ich muss durch die An der Stelle linearisieren und sehe dann, welche Abweichung ist dort an der Stelle Netzeingabe und kann dann dementsprechend die Gewichte wieder anpassen. Und da gehe ich natürlich so ran, wenn ich da bei Eingaben 0 habe, da brauche ich kein Gewicht anpassen, weil dieses Gewicht hat keinen Einfluss. Ich brauche natürlich nur das Gewicht anpassen, weil entsprechend große Eingaben vorhanden sind. Und dann halt auch in die Richtung, wie die Eingabe einflusshaft ist. Positiv ist so negativ. Und wenn ich das immer noch ein kleines Stück weiter anpasse, dann habe ich am Ende natürlich, wenn ich tausende Bilder zeige, da vielleicht zwei Klassen habe, in die ich die eingeteilt habe, irgendwann die Neurons soweit angepasst, dass es das klassifizieren kann. Das sind natürlich sehr viele Schichten vorhanden von so einer Sache. Dann gibt es noch ein paar Tricks, das ist Batch Normalization, denn man hat das ja gesehen, immer wieder diesen Schritt geht, das berechnen, dann wieder rückrechnen, welcher Fehler das ist. Man kann nicht parallelisieren. Dann geht man halt den anderen Weg, man arbeitet mit Batches, also man geht nicht sofort diesen Schritt, diese Differenz zu berechnen. Man analysiert die statistische Ausgabe mit Mittelwert und Varianz. Dann kann man gleich mit einem Schritt diese Gewichte im großen Sprung anpassen. Da gehe ich jetzt noch weiter. Jetzt sieht man mal so ein Neuron alles netz, wie das dann tatsächlich aussieht. Man hat ein Eingabebild und mehrere Filter. Hier in dem Fall vier Filter, und dann hatten wir am Ende tatsächlich vier Bilder, wo immer unterschiedliche Teilaspekte rausgefiltert werden. Das sind irgendwelche Geraten, Kreise, irgendwelche Grundelemente. Das ist natürlich alles nur aufgrund des Trainings entstanden, dann dieser Filter. Dann geht man einfach immer weiter runter, also man macht so einen Pooling oder man filtert wieder mit so einer Faltungsschicht, bis man am Ende sehr viele solche Filter hat. Dann kann man halt diesen fallfundenen Layer zu einer entsprechenden Objektklasse bringen. Es gibt dazu, damit man sich das nicht alles selber angucken und implementieren muss, seit man wahrscheinlich relativ schnell aufgegeben und keine Lust mehr, vor allem weil das Ganze ja relativ rechenaufwändig ist und man dann auch noch Grafikarten dafür braucht. Deshalb gibt es fertige Frameworks, die sowas können. Das Cafe ist häufig sehr verbreitet. Ich würde aber TensorFlow empfehlen und sehe, man probiert, da kann man in Python direkt dieses Netz beschreiben. Also welche Eigenschaften die Lagen haben soll, wie viele Wandsalsentfaltungslayer sein, wann so ein Relu und wie das, wie soll der Pooling Layer aussehen, sonst bei diesen anderen, bei Cafe oder C and Decay bräuchte man noch mal eine extra Programmierspaare, wo das Modell noch mal extra beschrieben wird. Also das TensorFlow ist ein bisschen angenehmer zu benutzen. Das ist von Google. Tiano geht auch in die Richtung. TensorFlow hat noch die Vorteile, man kann es auf mehrere Grafikarten aufteilen. Gerade das Training dauert halt sehr lang, weil immer nur kleine Anpassungen vorhanden sind. Jetzt eigentlich das ist noch das, was ich zeigen wollte, was jetzt noch ein bisschen High Level ist, so der Gedanke hinter dem Ganzen. Das zeigt mal dieses Netz, was am Anfang die Klassifikation des Bildes durchgeführt hat, wenn man das gesehen hat mit diesem Pferd und den Menschen und dem Hund. Da hat man tatsächlich, wenn man sich das anguckt, das ist schon wieder mal anders als die Theorie. Man hat nämlich hier fünf Eingabeschichten und dann ein sogenanntes Region Proposal Network. Und dieses gibt am Ende einfach nur Bereiche aus, indem sich was befinden könnte. Danach geht es wieder runter in der Stelle und dann wird nämlich diese Region, wenn ihr jetzt irgendwie rechteckig eine beliebige Größe hat, genommen und einfach gestaucht und skaliert, dass wieder ein Quadrat ist. Danach erfolgt eine Klassifikation, also was ist da tatsächlich sichtbar. Das eine gibt den Ort und das nächste die Klasse. Natürlich gehe ich nicht wieder ganz zurück zu dem Bild, sondern ich optimiere das. Ich habe ja am Anfang so was wie Eigenschaften extrahiert, ob es jetzt was rundes oder eckliches oder sonst was ist. Und das brauche ich ja dann sowieso wieder bei der Klassifikation. Also kann ich schon direkt mit diesen vorverarbeiteten Informationen in der fünften Lage weiterarbeiten und finde dann am Ende die Klasse raus, dann kann ich das entsprechend ausgeben. Und dann habe ich die Frage, wie trainiert man schon wieder so ein Netz, wenn das aufgeteilt ist. Und das geht natürlich entsprechend zu. Man hat Referenzdaten, die zeigen das Bild und so ein Bereich, also dann so ein Bereich abgesteckt, das sind halt XY-Koordinaten breite und höher. Und diese Klasse, dann trainiere ich am Anfang nur das erste Netz mit diesen fünf Lagen und diesen Regionproposional Network, was ja auch wieder einfach nur ein paar solche Faltungslagen sind und diese Aktivierungslagen. Ich lasse dann erstmal den Teil weg mit der Klassifikation. Dann habe ich den ersten Teil trainiert, dann trainiere ich nur den zweiten Teil. Dazu verwende ich aber wieder zum Ausschneiden des Bereichs direkt meinen anotierten Daten und gebe noch die Klasse dazu. Also ich trainiere das dann mit dieser Klassifikation und in einem dritten Schritt gehe ich sofort, dass ich dann nicht mehr diesen Bereich nehme, den ich in meinen anotierten Daten habe, sondern ich lasse jetzt das erste Netz tatsächlich den Bereich erkennen und trainiere das Zeitennetz anhand des erkannten Bereichs. Das hat natürlich einen Grund. Die Erkennung ist ja nicht hundertprozentgenau für den ersten Teil und wenn ich jetzt die Klassifikation da drauf mache, kommt ein bisschen bessere Gesamtgenauigkeit raus. Also das ist am Ende so eine Idee hinter der ganzen Sache. So, jetzt habe ich schon ein bisschen mehr Zeit verbraucht. Dann wäre noch die Posenerkennung, der dich jetzt noch vorbereitet, aber hat jetzt bisher jemand Fragen? Ja, hier hinten. Du hattest diese Klassenwahrscheinlichkeiten gezeigt bei der Objekterkennung und wenn wir als Menschen ein Objekt erkennen, dann haben wir auch nicht immer eine Wahrscheinlichkeit von 1 oder 0, obwohl wir eigentlich evolutionär dafür optimiert sind, dass wir Menschen unter allen Umständen erkennen. Habt ihr das mal verglichen? Wer besser erkennt, Menschen oder ein gut trainiertes Netz? Ja, okay. Das habe ich jetzt vergessen zu sagen. Es ist so, dass Menschen glaube so 95% die Sicherheit haben bei der Objekterkennung. Also wenn man tatsächlich solche Bilder vorliegt und ein Mensch soll dann das recht echter Drumzeichen, Objekt zuordnen, was es ist. Und momentan ist der Schritt erreicht, dass tatsächlich die Maschine besser ist als der Mensch. Aber das ist natürlich nur bei dieser Klassifikationssache so. Wenn es um komplexere Dinge geht, also tatsächlich zeitlicher Ablauf, eine detaillierte Beschreibung, also sowas wie Mensch sitzt auf Pferd oder Mensch reitet da oder was auch immer, dann ist natürlich der Mensch wieder ein bisschen besser, weil es einfach eine komplexere Aufgabe ist. Und das muss natürlich die Maschine auskennen. Da brauchen wir einfach ein großes Netz. Man braucht viele Trainingsdaten, leistungsfähige Systeme, die das alles abbilden können. Noch was? Ja, also ich kann nochmal kurz hier zurückgehen. Wer sich das mal genauer anschauen will, für die Objekterkennung, es gibt dieses Pifaster RCNN. RCNN steht für Region Proposal Network, Convolutional Neural Network, ist von Microsoft Research entwickelt. Und eine Weiterentwicklung ist dieses Pifaster RCNN, das nennt sich Fully Convolutional Network. Die arbeiten dann darauf, dass sie, also sie wollen eigentlich diese ganzen Pooling Layer weglassen und dafür wird einfach direkt um ein Pixel reduziert. Also diese Faltung funktioniert so, dass man einfach nur zwei Pixel weitergeht. Das hängt einfach damit zusammen. Was ich eben von gerade noch nicht erklärt hatte, man muss ja komplett durch das Netz zurück trainieren. Also muss ja den Fehler, der am Ende kommt, irgendwie zurückpropagieren. Und gerade diese Nichtliniaritäten, diese Aktivierungsfunktionen bringen einem Schwierigkeiten mit sich. Gerade diese Maximumsuche bei dem Max Pooling führt dazu, dass er eigentlich immer noch in die eine Richtung zurückpropagiert wird, was eben größeren Wert gibt. Das ganze Netz angepasst. Und da ist das halt einfach eine Optimierung. Das sind also die Optimierungen, die jetzt kommen. Ja, war noch was? Nee, das war halt jetzt nicht so gut. Ja, dann gibt es noch ein paar Sachen zu der Posenerkennung, was mittlerweile auch recht gut funktioniert. Da gibt es auch entsprechende Papers, wo dann tatsächlich diese Laken der einzelnen Neuronalen Layer mal abgebildet werden. Also wie groß ist jetzt diese Convolution-Lake? Und wie geht es dann weiter? An welchen Stellen wird dann Training reingebracht? Es gibt relativ gut beschriebene Papers bei sowas. Es gibt, was ich auch noch spannend fand, das visuelle Tracking, dieses MD-Net. Kann man sich auch mal anschauen, die geht es eben um die Wiedererkennung von bestimmten Objekten. Denn bisher habe ich nur erzählt, man kann so ein Netz drauf trainieren, dann kann das klassifizieren, aber es gibt eben auch die Variante, man trainiert das allgemein auf vielen Bildern und dann gibt es so eine Art Eigenschaftsvektor, da jetzt irgendwo nichts sagen ist. Das ist ähnlich, wenn Objekte sich ähneln. Also wenn jetzt von ein Bild auf das nächste Bild von einem Video sich einfach nur ein Objekt bewegt, dann sieht das ja trotzdem ähnlich aus. Und da kann man anhand dieses Vektors das Ganze wieder erkennen. Und baut für sowas eine relativ gute Grafikkarte, damit das trainieren kann, auch das Erkennen, die Bilderkennung, die ich vorhin gezeigt hatte, da sind CPU auf einer aktuellen 20 Sekunden auf einer Grafikkarte, das sind es vielleicht 70 Millisekunden. Vieles davon ist für Python verfügbar, es ist Open Source, man kann also relativ kostenfrei das alles selbst hinbekommen zu. Noch irgendwelche Fragen, irgendwie Ideen, was man machen könnte damit, irgendwie Lust, so was selbst einzusetzen, sich damit zu beschäftigen. Okay, dann bedanke ich mich.