Vor zehn Jahren gingen Forscher für Maschinelles Sehen davon aus, dass es für einen Computer kaum möglich sei, eine Katze von einem Hund zu unterscheiden, trotz großer Fortschritte auf dem Feld der Künstlichen Intelligenz. Mittlerweile ist das zu über 99% möglich. Man nennt diese Aufgabe "Bildklassifikation". Sie geben dem Computer ein Bild mit einer expliziten Bezeichnung, und der Computer kennt zusätzlich tausende weiterer Kategorien dafür.
Ten years ago, computer vision researchers thought that getting a computer to tell the difference between a cat and a dog would be almost impossible, even with the significant advance in the state of artificial intelligence. Now we can do it at a level greater than 99 percent accuracy. This is called image classification -- give it an image, put a label to that image -- and computers know thousands of other categories as well.
Ich studiere an der Universität von Washington und arbeite an einem Projekt namens "Darknet", einem Framework für neurale Netzwerke, mit dem Modelle zur Bilderkennung trainiert und getestet werden. Sehen wir mal, was Darknet über das Bild denkt, das wir hier haben. Wenn wir unseren Klassifikator auf dieses Bild loslassen, sehen wir, dass nicht nur "Hund" oder "Katze" vorausgesagt wird, er gibt sogar eine Aussage über die konkrete Rasse. Dieser Genauigkeitsgrad ist im Moment möglich. Und es stimmt -- es handelt sich tatsächlich um einen Alaskan Malamute.
I'm a graduate student at the University of Washington, and I work on a project called Darknet, which is a neural network framework for training and testing computer vision models. So let's just see what Darknet thinks of this image that we have. When we run our classifier on this image, we see we don't just get a prediction of dog or cat, we actually get specific breed predictions. That's the level of granularity we have now. And it's correct. My dog is in fact a malamute.
Wir haben beachtliche Fortschritte in der Bildklassifikation gemacht. Was aber passiert, wenn wir unserem Klassifikator ein solches Bild vorlegen? Nun ... Wir sehen, dass der Klassifikator so ziemlich das gleiche Ergebnis liefert. Und es stimmt wieder -- da ist ein Malamute abgebildet. Doch mit dieser Aussage allein wissen wir noch nicht viel darüber, was sich genau in dem Bild abspielt. Wir brauchen etwas Leisungsfähigeres. Ich arbeite an einer Aufgabe namens "Objekterkennung". Hier versuchen wir, alle Objekte in einem Bild zu erkennen. Wir ziehen um jedes Objekt eine Markierungsbox und versehen sie mit einer Bezeichnung. Jetzt sehen wir, was der Erkenner über das Bild sagt.
So we've made amazing strides in image classification, but what happens when we run our classifier on an image that looks like this? Well ... We see that the classifier comes back with a pretty similar prediction. And it's correct, there is a malamute in the image, but just given this label, we don't actually know that much about what's going on in the image. We need something more powerful. I work on a problem called object detection, where we look at an image and try to find all of the objects, put bounding boxes around them and say what those objects are. So here's what happens when we run a detector on this image.
Mit dieser Art Ergebnis können wir viel mehr mit den Algorithmen des Maschinellen Sehens anfangen. Wir sehen, dass eine Katze und ein Hund erkannt wird. Der Erkenner liefert ihre relativen Positionen im Bild, ihre Größe, und vielleicht sogar noch mehr: Im Hintergrund ist ein Buch zu sehen. Wenn man das Maschinelle Sehen in einem größeren System nutzen will, etwa in einem selbstfahrenden Fahrzeug oder einem Robotsystem, braucht man genau solche Informationen, auf deren Basis man mit der physischen Welt interagieren kann. Als ich damit anfing, in der Objekterkennung zu arbeiten, dauerte die Verarbeitung zwanzig Sekunden für jedes einzelne Bild. Um ein Gefühl dafür zu bekommen, warum Geschwindigkeit hier so wichtig ist, zeige ich Ihnen einen Objekterkenner, der zwei Sekunden braucht, um ein Einzelbild zu verarbeiten -- was bereits zehnmal schneller ist als der Zwanzig-Sekunden-Klassifikator. Bis dieser Erkenner seine Voraussagen bekannt gibt, hat sich der Zustand der Welt bereits völlig verändert. Das wäre für die praktische Anwendung völlig ungeeignet.
Now, with this kind of result, we can do a lot more with our computer vision algorithms. We see that it knows that there's a cat and a dog. It knows their relative locations, their size. It may even know some extra information. There's a book sitting in the background. And if you want to build a system on top of computer vision, say a self-driving vehicle or a robotic system, this is the kind of information that you want. You want something so that you can interact with the physical world. Now, when I started working on object detection, it took 20 seconds to process a single image. And to get a feel for why speed is so important in this domain, here's an example of an object detector that takes two seconds to process an image. So this is 10 times faster than the 20-seconds-per-image detector, and you can see that by the time it makes predictions, the entire state of the world has changed, and this wouldn't be very useful for an application.
Wenn wir ihn noch einmal zehnmal schneller machen, verarbeitet der Erkenner fünf Bilder pro Sekunde. Das ist deutlich besser. Wenn jedoch beispielsweise eine nennenswerte Bewegung stattfindet -- Ich würde nicht wollen, dass ein solches System mein Auto steuert.
If we speed this up by another factor of 10, this is a detector running at five frames per second. This is a lot better, but for example, if there's any significant movement, I wouldn't want a system like this driving my car.
Das ist unser Erkennungssystem. Es läuft in Echtzeit auf meinem Laptop. Es verfolgt mich flüssig, während ich mich im Bildbereich bewege, ist robust gegenüber Veränderungen der Größe, der Stellung, Vorder- oder Rückseite. Das ist großartig. So etwas brauchen wir, wenn wir das Maschinelle Sehen in Systeme einbauen wollen.
This is our detection system running in real time on my laptop. So it smoothly tracks me as I move around the frame, and it's robust to a wide variety of changes in size, pose, forward, backward. This is great. This is what we really need if we're going to build systems on top of computer vision.
(Applaus)
(Applause)
In nur ein paar Jahren haben wir es von zwanzig Sekunden pro Bild zu zwanzig Millisekunden pro Bild geschafft. Eintausendmal schneller. Wie haben wir das gemacht? Nun, in der Vergangenheit nahmen Objekterkenner ein solches Bild und teilten es in viele kleinere Bereiche ein. Der Klassifikator verarbeitete jeden einzelnen dieser Bereiche. Erreichte etwas einen hohen Score im Klassifikator, wurde es als erkanntes Objekt gewertet. Dies bedeutete aber, den Klassifikator tausende Male für ein Bild anzuwenden. Tausende von Auswertungen neuraler Netzwerke für die Erkennung. Wir haben stattdessen ein einzelnes neurales Netzwerk trainiert, das alle Markierungsboxen und Wahrscheinlichkeiten simultan berechnet. Unser System ermöglicht es, statt tausende Male ein Bild anzusehen, um die Objekte darin zu erkennen, das Bild nur ein einziges Mal anzusehen. Deswegen nennen wir unsere Methode der Objekterkennung "YOLO". Mit einer solchen Geschwindigkeit sind wir nicht auf Bilder beschränkt -- wir können ganze Videos in Echtzeit verarbeiten. Statt nur eine Katze und einen Hund zu sehen, können wir beobachten, wie sie sich bewegen und interagieren.
So in just a few years, we've gone from 20 seconds per image to 20 milliseconds per image, a thousand times faster. How did we get there? Well, in the past, object detection systems would take an image like this and split it into a bunch of regions and then run a classifier on each of these regions, and high scores for that classifier would be considered detections in the image. But this involved running a classifier thousands of times over an image, thousands of neural network evaluations to produce detection. Instead, we trained a single network to do all of detection for us. It produces all of the bounding boxes and class probabilities simultaneously. With our system, instead of looking at an image thousands of times to produce detection, you only look once, and that's why we call it the YOLO method of object detection. So with this speed, we're not just limited to images; we can process video in real time. And now, instead of just seeing that cat and dog, we can see them move around and interact with each other.
Diesen Erkenner haben wir auf 80 verschiedene Klassen aus Microsofts COCO-Daten trainiert. Er kennt alle möglichen Objekte wie Löffel, Gabel, Schüssel -- alltägliche Gegenstände, aber auch exotischere: Tiere, Autos, Zebras, Giraffen. Jetzt machen wir etwas Lustiges. Wir richten die Kamera auf das Publikum und sehen, was wir erkennen können. Möchte jemand ein Plüschtier? Hier sind ein paar Teddybären. Wir können die Empfindlichkeit des Erkenners ein wenig senken, um mehr einzelne Personen im Publikum zu erkennen. Lassen Sie uns sehen, ob wir diese Stoppschilder bekommen. Wir sehen einige Rucksäcke ... Wir zoomen etwas hinein ... Das ist großartig. Die gesamte Verarbeitung passiert in Echtzeit auf dem Laptop.
This is a detector that we trained on 80 different classes in Microsoft's COCO dataset. It has all sorts of things like spoon and fork, bowl, common objects like that. It has a variety of more exotic things: animals, cars, zebras, giraffes. And now we're going to do something fun. We're just going to go out into the audience and see what kind of things we can detect. Does anyone want a stuffed animal? There are some teddy bears out there. And we can turn down our threshold for detection a little bit, so we can find more of you guys out in the audience. Let's see if we can get these stop signs. We find some backpacks. Let's just zoom in a little bit. And this is great. And all of the processing is happening in real time on the laptop.
Man darf nicht vergessen, dass das ein ganz allgemeines Objekterkennungssystem ist. Wir können es also für jede Art von Bildern trainieren. Denselben Code, den wir benutzen, damit ein selbstfahrendes Fahrzeug Stoppschilder, Fußgänger oder Fahrräder erkennen kann, kann man auch nutzen, um Krebszellen in einer Gewebeprobe ausfindig zu machen. Forscher auf der ganzen Welt nutzen diese Technologie bereits, um Fortschritte auf Gebieten wie Medizin oder Robotik zu erzielen. Heute morgen habe ich einen Fachartikel gelesen: Im Nationalpark von Nairobi wurde eine Zählung der Tiere vorgenommen, mit YOLO als Teil des Erkennungssystems. Das ist möglich, weil Darknet quelloffen, frei zugänglich und für alle verwendbar ist.
And it's important to remember that this is a general purpose object detection system, so we can train this for any image domain. The same code that we use to find stop signs or pedestrians, bicycles in a self-driving vehicle, can be used to find cancer cells in a tissue biopsy. And there are researchers around the globe already using this technology for advances in things like medicine, robotics. This morning, I read a paper where they were taking a census of animals in Nairobi National Park with YOLO as part of this detection system. And that's because Darknet is open source and in the public domain, free for anyone to use.
(Applaus)
(Applause)
Aber wir wollten Bilderkennung sogar noch leichter nutzbar machen. Daher haben wir durch Modelloptimierung, Binarisierung des neuralen Netzes und Approximation erreicht, dass die Objekterkennung sogar auf einem Mobiltelefon läuft.
But we wanted to make detection even more accessible and usable, so through a combination of model optimization, network binarization and approximation, we actually have object detection running on a phone.
(Applaus)
(Applause)
Das ist aufregend, weil wir damit eine ziemlich mächtige Lösung für dieses grundlegende Problem des Maschinellen Sehens haben. Jeder kann sie nutzen und etwas damit bauen. Nun liegt es bei Ihnen und allen Menschen auf der Welt mit Zugang zu dieser Software. Ich bin gespannt zu sehen, welche Ideen sie mit dieser Technologie umsetzen.
And I'm really excited because now we have a pretty powerful solution to this low-level computer vision problem, and anyone can take it and build something with it. So now the rest is up to all of you and people around the world with access to this software, and I can't wait to see what people will build with this technology.
Vielen Dank.
Thank you.
(Applaus)
(Applause)