Objekt-Erkennung
Shiyu Chen, eine Dateningenieurin bei Zilliz, hat an der Xidian Universität einen Abschluss in Informatik gemacht. Seit sie bei Zilliz ist, hat sie Lösungen für Milvus in verschiedenen Bereichen erforscht, wie z.B. Audio- und Videoanalyse, Molekülformelabfrage usw., was die Anwendungsszenarien der Gemeinschaft sehr bereichert hat. Derzeit erforscht sie weitere interessante Lösungen. In ihrer Freizeit treibt sie gerne Sport und liest.
Als ich letztes Wochenende Free Guy sah, hatte ich das Gefühl, den Schauspieler, der Buddy, den Wachmann, spielt, schon einmal gesehen zu haben, konnte mich aber an keine seiner Arbeiten erinnern. In meinem Kopf schwirrte die Frage: "Wer ist dieser Typ?" Ich war mir sicher, dieses Gesicht schon einmal gesehen zu haben, und versuchte so sehr, mich an seinen Namen zu erinnern. Ein ähnlicher Fall ist, dass ich einmal den Hauptdarsteller in einem Video sah, der ein Getränk trank, das ich früher sehr mochte, aber ich konnte mich nicht an den Markennamen erinnern.
Die Antwort lag mir auf der Zunge, aber mein Gehirn war völlig blockiert.
Das Phänomen der Zungenspitze (TOT) macht mich verrückt, wenn ich Filme sehe. Wenn es doch nur eine umgekehrte Bildsuchmaschine für Videos gäbe, die es mir ermöglicht, Videos zu finden und Videoinhalte zu analysieren. Früher habe ich mit Milvus eine umgekehrte Bildsuchmaschine gebaut. In Anbetracht der Tatsache, dass die Analyse von Videoinhalten in gewisser Weise der Bildanalyse ähnelt, beschloss ich, eine Maschine zur Analyse von Videoinhalten auf der Grundlage von Milvus zu entwickeln.
Objekt-Erkennung
Übersicht
Bevor ein Video analysiert werden kann, müssen die Objekte in einem Video zunächst erkannt werden. Die effektive und genaue Erkennung von Objekten in einem Video ist die größte Herausforderung bei dieser Aufgabe. Sie ist auch eine wichtige Aufgabe für Anwendungen wie Autopilot, tragbare Geräte und IoT.
Zu den heute gängigen Modellen für die Objekterkennung gehören R-CNN, FRCNN, SSD und YOLO, die von traditionellen Bildverarbeitungsalgorithmen zu tiefen neuronalen Netzen (DNN) weiterentwickelt wurden. Das in diesem Thema vorgestellte Milvus-basierte Deep-Learning-Videoanalysesystem kann Objekte auf intelligente und schnelle Weise erkennen.
Implementierung
Zur Erkennung und Erkennung von Objekten in einem Video sollte das System zunächst Frames aus einem Video extrahieren und Objekte in den Frame-Bildern mithilfe der Objekterkennung erkennen, dann Merkmalsvektoren aus den erkannten Objekten extrahieren und schließlich das Objekt anhand der Merkmalsvektoren analysieren.
- Extraktion von Bildern
Die Videoanalyse wird mithilfe der Bildextraktion in eine Bildanalyse umgewandelt. Derzeit ist die Technologie der Bildextraktion sehr ausgereift. Programme wie FFmpeg und OpenCV unterstützen die Extraktion von Frames in bestimmten Intervallen. In diesem Artikel wird erläutert, wie man mit OpenCV jede Sekunde Bilder aus einem Video extrahiert.
- Objekterkennung
Bei der Objekterkennung geht es darum, Objekte in extrahierten Frames zu finden und Screenshots der Objekte entsprechend ihrer Position zu extrahieren. Wie in den folgenden Abbildungen gezeigt, wurden ein Fahrrad, ein Hund und ein Auto erkannt. In diesem Thema wird die Erkennung von Objekten mit YOLOv3 vorgestellt, das üblicherweise für die Objekterkennung verwendet wird.
- Merkmalsextraktion
Unter Merkmalsextraktion versteht man die Umwandlung unstrukturierter Daten, die für Maschinen schwer zu erkennen sind, in Merkmalsvektoren. So können beispielsweise Bilder mithilfe von Deep-Learning-Modellen in mehrdimensionale Merkmalsvektoren umgewandelt werden. Zu den derzeit beliebtesten KI-Modellen für die Bilderkennung gehören VGG, GNN und ResNet. In diesem Thema wird erläutert, wie man mit ResNet-50 Merkmale aus erkannten Objekten extrahiert.
- Vektoranalyse
Die extrahierten Merkmalsvektoren werden mit Bibliotheksvektoren verglichen, und die entsprechenden Informationen zu den ähnlichsten Vektoren werden zurückgegeben. Bei großen Merkmalsvektor-Datensätzen stellt die Berechnung eine große Herausforderung dar. In diesem Thema wird die Analyse von Merkmalsvektoren mit Milvus vorgestellt.
Schlüsseltechnologien
OpenCV
Die Open Source Computer Vision Library (OpenCV) ist eine plattformübergreifende Bildverarbeitungsbibliothek, die viele universelle Algorithmen für die Bildverarbeitung und die Computer Vision bereitstellt. OpenCV wird häufig im Bereich der Computer Vision eingesetzt.
Das folgende Beispiel zeigt, wie man mit OpenCV und Python Videobilder in bestimmten Intervallen erfasst und als Bilder speichert.
import cv2
cap = cv2.VideoCapture(file_path)
framerate = cap.get(cv2.CAP_PROP_FPS)
allframes = int(cv2.VideoCapture.get(cap, int(cv2.CAP_PROP_FRAME_COUNT)))
success, image = cap.read()
cv2.imwrite(file_name, image)
YOLOv3
You Only Look Once, Version 3 (YOLOv3 [5]) ist ein einstufiger Algorithmus zur Objekterkennung, der in den letzten Jahren vorgeschlagen wurde. Im Vergleich zu den traditionellen Objekterkennungsalgorithmen mit derselben Genauigkeit ist YOLOv3 doppelt so schnell. YOLOv3, das in diesem Thema erwähnt wird, ist die verbesserte Version von PaddlePaddle [6]. Es verwendet mehrere Optimierungsmethoden mit einer höheren Inferenzgeschwindigkeit.
ResNet-50
ResNet [7] ist aufgrund seiner Einfachheit und Praktikabilität der Gewinner des ILSVRC 2015 im Bereich Bildklassifikation. Als Grundlage vieler Bildanalysemethoden erweist sich ResNet als ein beliebtes Modell, das auf Bilderkennung, -segmentierung und -erkennung spezialisiert ist.
Milvus
Milvus ist eine Cloud-native, quelloffene Vektordatenbank zur Verwaltung von Einbettungsvektoren, die von maschinellen Lernmodellen und neuronalen Netzen erzeugt werden. Sie wird häufig in Szenarien wie Computer Vision, Verarbeitung natürlicher Sprache, computergestützte Chemie, personalisierte Empfehlungssysteme und mehr eingesetzt.
Die folgenden Verfahren beschreiben, wie Milvus funktioniert.
- Unstrukturierte Daten werden mit Hilfe von Deep-Learning-Modellen in Merkmalsvektoren umgewandelt und in Milvus importiert.
- Milvus speichert und indiziert die Merkmalsvektoren.
- Milvus gibt die Vektoren zurück, die den vom Benutzer abgefragten Vektoren am ähnlichsten sind.
Einsatz
Jetzt haben Sie ein gewisses Verständnis für Milvus-basierte Videoanalysesysteme. Das System besteht hauptsächlich aus zwei Teilen, wie in der folgenden Abbildung dargestellt.
Die roten Pfeile zeigen den Prozess des Datenimports an. Verwenden Sie ResNet-50, um Merkmalsvektoren aus dem Bilddatensatz zu extrahieren, und importieren Sie die Merkmalsvektoren in Milvus.
Die schwarzen Pfeile zeigen den Prozess der Videoanalyse an. Zunächst werden Frames aus einem Video extrahiert und als Bilder gespeichert. Zweitens: Erkennen und Extrahieren von Objekten in den Bildern mit YOLOv3. Anschließend werden mit ResNet-50 Merkmalsvektoren aus den Bildern extrahiert. Schließlich sucht Milvus die Informationen zu den Objekten mit den entsprechenden Merkmalsvektoren und gibt sie zurück.
Weitere Informationen finden Sie unter Milvus Bootcamp: Video-Objekt-Erkennungssystem.
Datenimport
Der Prozess des Datenimports ist einfach. Konvertieren Sie die Daten in 2.048-dimensionale Vektoren und importieren Sie die Vektoren in Milvus.
vector = image_encoder.execute(filename)
entities = [vector]
collection.insert(data=entities)
Video-Analyse
Wie oben beschrieben, umfasst der Videoanalyseprozess die Erfassung von Videobildern, die Erkennung von Objekten in jedem Bild, die Extraktion von Vektoren aus den Objekten, die Berechnung der Vektorähnlichkeit mit der euklidischen Distanz (L2) und die Suche nach Ergebnissen mit Milvus.
images = extract_frame(filename, 1, prefix)
detector = Detector()
run(detector, DATA_PATH)
vectors = get_object_vector(image_encoder, DATA_PATH)
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
results = collection.search(vectors, param=search_params, limit=10)
Schlussfolgerung
Derzeit sind mehr als 80 % der Daten unstrukturiert. Mit der rasanten Entwicklung der KI wurden immer mehr Deep-Learning-Modelle für die Analyse unstrukturierter Daten entwickelt. Technologien wie die Objekterkennung und die Bildverarbeitung haben sowohl in der Wissenschaft als auch in der Industrie große Durchbrüche erzielt. Mit Hilfe dieser Technologien haben immer mehr KI-Plattformen die praktischen Anforderungen erfüllt.
Das in diesem Thema behandelte Videoanalysesystem wurde mit Milvus entwickelt, das eine schnelle Analyse von Videoinhalten ermöglicht.
Als Open-Source-Vektordatenbank unterstützt Milvus Feature-Vektoren, die mit verschiedenen Deep-Learning-Modellen extrahiert werden. Durch die Integration von Bibliotheken wie Faiss, NMSLIB und Annoy bietet Milvus eine Reihe intuitiver APIs, die das Umschalten von Indextypen je nach Szenario unterstützen. Darüber hinaus unterstützt Milvus die skalare Filterung, die die Wiederfindungsrate und die Suchflexibilität erhöht. Milvus wurde bereits in vielen Bereichen eingesetzt, wie z.B. Bildverarbeitung, Computer Vision, Verarbeitung natürlicher Sprache, Spracherkennung, Empfehlungssysteme und Entdeckung neuer Medikamente.
Referenzen
[1] A. D. Bagdanov, L. Ballan, M. Bertini, A. Del Bimbo. "Trademark matching and retrieval in sports video databases". Proceedings of the international workshop on Workshop on multimedia information retrieval, ACM, 2007. https://www.researchgate.net/publication/210113141_Trademark_matching_and_retrieval_in_sports_video_databases
[2] J. Kleban, X. Xie, W.-Y. Ma. "Spatial pyramid mining for logo detection in natural scenes". IEEE International Conference, 2008. https://ieeexplore.ieee.org/document/4607625
[3] R. Boia, C. Florea, L. Florea, R. Dogaru. "Logo-Lokalisierung und -Erkennung in natürlichen Bildern unter Verwendung homographischer Klassendiagramme". Machine Vision and Applications 27 (2), 2016. https://link.springer.com/article/10.1007/s00138-015-0741-7
[4] R. Boia, C. Florea, L. Florea. "Elliptical asift agglomeration in class prototype for logo detection." BMVC, 2015. http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=5C87F52DE38AB0C90F8340DFEBB841F7?doi=10.1.1.707.9371&rep=rep1&type=pdf
[5] https://arxiv.org/abs/1804.02767
[6] https://paddlepaddle.org.cn/modelbasedetail/yolov3
[7] https://arxiv.org/abs/1512.03385
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word