Was ist Einspruchserkennung mit Tensorflow? und wie es funktioniert [Beispiele]
Veröffentlicht: 2021-06-18Inhaltsverzeichnis
Objekterkennung – was bedeutet das?
Objekterkennung ist ein Prozess, bei dem ein Objekt mithilfe von Computer Vision in einem Bild oder Video identifiziert oder lokalisiert werden kann. Wenn wir ein Bild mit einer Katze und einer Person haben und die Objekte innerhalb eines Bildes klassifizieren müssen, dann kann die Technik der Objekterkennung, dh Objekterkennung, angewendet werden, und die erforderlichen Objekte, dh die Katze und die Person, können lokalisiert werden. Dies kann durch Begrenzungsrahmen erreicht werden, die um die erkannten Objekte gezogen werden. Somit ist der Ort der gewünschten Objekte bekannt.
Die meisten Menschen werden immer noch mit Objekterkennung und Bilderkennung verwechselt. Der Unterschied zwischen den beiden liegt darin, dass bei der Bilderkennung ein ganzes Bild beschriftet wird, während bei der Objekterkennung Objekte innerhalb des Bildes beschriftet werden.
Die Klasse des Objekts, wie etwa eine Person, ein Tisch usw., und die Koordinaten der Position des Objekts in einem gegebenen Bild können durch die Technik des Erfassens von Objekten identifiziert werden. Die Leistung eines Objekterkennungsalgorithmus hängt von seiner Fähigkeit ab, Objekte innerhalb eines Bildes zu lokalisieren. Ein solches Beispiel für die Erkennung von Objekten ist die Gesichtserkennung.
Warum Objekterkennung?
Aufgrund der einzigartigen Fähigkeiten der Objekterkennung kann das Verfahren bei vielen wichtigen Aufgaben eingesetzt werden, wie z.
- Zählen von Menschen in einer Menschenmenge.
- Fahren bei selbstfahrenden Autos.
- Videoüberwachung.
- Erkennung des Gesichts.
- Anomalieerkennung
Ansätze zur Objekterkennung
Die für das Objekterkennungsverfahren verwendeten Algorithmen können vor ihrer Verwendung oder unbeaufsichtigt trainiert werden.
Für die Erkennung von Objekten werden zwei Ansätze verwendet, nämlich Machine-Learning-basierte und Deep-Learning-basierte Ansätze.
- Verschiedene Merkmale eines Bildes wie das Farbhistogramm oder Kanten usw. werden von den ML-basierten Ansätzen betrachtet. Auf diesen Merkmalen basierende Regressionsmodelle werden dann generiert und der Ort des Objekts vorhergesagt.
- Convolutional Neural Networks (CNNs) werden bei auf Deep Learning basierenden Ansätzen zur Detektion eines Objekts durch unüberwachte Verfahren eingesetzt.
Funktionsweise eines Objekterkennungsverfahrens
Die Objekterkennungsaufgabe kann durch die folgenden Schritte ausgeführt werden:
- Das Eingangsbild wird in mehrere kleine Segmente zerlegt. Es werden Sätze von miteinander verbundenen Kästchen erstellt, die sich über das gesamte Bild erstrecken.
- Jeder segmentierte Bereich wird dem Prozess der Merkmalsextraktion unterzogen. Es sagt dann das Vorhandensein gültiger Objekte innerhalb der Box voraus. Der Prozess bestimmt, ob irgendwelche visuellen Merkmale in der Box vorhanden sind.
- Für die überlappenden Kästen wird ein einziger Kasten konstruiert.
Objekterkennung mit TensorFlow
TensorFlow kann als eine Open-Source-Bibliothek für maschinelles Lernen definiert werden, die in verschiedenen Anwendungen wie Bilderkennung, Sprachsuche, Objekterkennung usw. weit verbreitet ist. Sowohl Python- als auch C++-APIs werden von TensorFlow bereitgestellt.
- In TensorFlow sind sowohl Deep-Learning-Algorithmen als auch Machine-Learning-Algorithmen vorhanden.
- Python wird als Frontend-Sprache eingesetzt und läuft auch effizient in C++.
- Ein Berechnungsdiagramm wird von den Entwicklern mit TensorFlow erstellt.
- Mathematische Operationen werden durch Knoten in einem Diagramm dargestellt und die Daten werden durch die Verbindungen dargestellt.
TensorFlow wurde vom Google Brain-Team innerhalb der Machine Intelligence Research Organization von Google für die Durchführung von Forschungen über maschinelles Lernen und tiefe neuronale Netze entwickelt.
Eine API (Application Programming Interface) verhindert, dass die Entwickler Codes von Grund auf neu schreiben, indem sie eine Reihe gemeinsamer Operationen bereitstellt. Die TensorFlow-Objekterkennungs-API wird angewendet, um die Modelle für die Objekterkennung zu trainieren. Das Framework baut auf TensorFlow auf. Die zur Objekterkennung TensorFlow gehörenden Features sind:
- Bereits trainierte Models heißen „Model Zoo“ und stehen im Framework zur Verfügung.
- Die zum Trainieren der verschiedenen trainierten Modelle verwendeten Datensätze sind:
- COCO-Datensatz.
- KITTI-Datensatz.
- Datensatz offener Bilder
Das Objekterkennungs- Framework TensorFlow besteht aus verschiedenen Modellen mit unterschiedlicher Architektur und damit unterschiedlicher Vorhersagegenauigkeit. Die Architekturtypen der bereits trainierten Modelle sind:
1. MobileNet-SSD
Ein Netzwerk aus Einzelfaltung identifiziert die Position des Begrenzungsrahmens bei einem einzigen Durchgang. Die Architektur besteht aus einer Basisschicht (MobileNet) mit mehreren Faltungsschichten. Die Positionen der Begrenzungsrahmen werden durch die Operation auf den Merkmalskarten vorhergesagt. Die Informationen, die mit jedem Begrenzungsrahmen vorhanden sind, sind unten aufgeführt:
- Versatzpositionen des Begrenzungsrahmens in den vier Ecken (cx, cy, w, h).
- Wahrscheinlichkeiten der Klasse C (c1, c2, …cp)
Die Kastenform wird nicht von SSD vorhergesagt, sondern die Orte des Kastens werden vorhergesagt. Die Anzahl K der Begrenzungsboxen wird für jeden Merkmalskartenort bestimmt. Die Form der k-Begrenzungsbox wird bereits vor dem eigentlichen Training festgelegt.
Die folgende Gleichung berechnet den Verlust.
L=1/N (L-Klasse + L-Box)
Wobei N: Nummer der übereinstimmenden Boxen, L-Klasse: Softmax-Verlust, L-Box: Fehler, der den übereinstimmenden Boxen zugeordnet ist.
2. MobileNet
Eine standardisierte Faltung wird in eine Faltung und eine punktweise Faltung zerlegt, dh 1*1 Faltungen. Die Berechnung wird mit einer Verringerung der Modellgröße durch Faktorisierung reduziert.
3. Inception-SSD
Inception-SSD hat die gleiche Architektur wie MobileNet-SSD, jedoch war die Basis der Architektur im Fall von MobileNet-SSD MobileNet, und hier ist es das Inception-Modell.
4. Schnelleres RCNN
Die Vorhersage des Standorts des Objekts basiert auf Algorithmen des Regionsvorschlags. Die Erkennungsnetzwerke haben ihre Laufzeit durch die Weiterentwicklung von SSPnet und Fast R-CNN reduziert. Bei Faster RCNN wird eine Convolutional Feature Map generiert, wenn ein Eingabebild in das neuronale Netzwerk eingespeist wird.
Der Regionsvorschlag wird dann durch die Convolutional Feature Map identifiziert und in Quadrate verzerrt. Die Quadrate werden dann in eine Größe umgeformt, die durch eine ROL-Pooling-Schicht (Region Of Interest Layer) festgelegt wird. Es wird dann als Eingabe für eine Schicht verwendet, die vollständig verbunden ist.
Die Softmax-Schicht wird zum Vorhersagen der Bereichsvorschlagsklasse aus dem ROL-Merkmalsvektor verwendet. Auch Begrenzungsrahmen-Versatzwerte werden vorhergesagt.
Auswahl des Objekterkennungs-TensorFlow-Modells
Das passende Objekterkennungs-TensorFlow-Modell kann basierend auf den spezifischen Anforderungen des Benutzers aus der TensorFlow-API ausgewählt werden. Das Single-Shot-Erkennungsnetzwerk, dh das SSD-Netzwerk, kann verwendet werden, wenn der Benutzer ein Hochgeschwindigkeitsmodell benötigt. Das Modell ist ziemlich schneller und kann Video-Feeds mit hohen fps erkennen.
Wenn jedoch mehr Genauigkeit erforderlich ist, ist FasterRCNN möglicherweise die bessere Wahl, da die Modellgenauigkeit hoch ist, aber eine vergleichsweise langsamere Geschwindigkeit aufweist. Daher kann der Benutzer die verschiedenen verfügbaren Möglichkeiten gemäß seinen Anforderungen erkunden.
Ein Beispiel für TensorFlow zur Objekterkennung
Die Verwendung der TensorFlow-API zur Objekterkennung erfordert keine Vorkenntnisse über maschinelles Lernen oder die neuronalen Netze. Die von der API bereitgestellten Dateien werden hauptsächlich verwendet. Die einzige Voraussetzung ist die Kenntnis der Grundlagen von Python.
1. Herunterladen von TensorFlow
- TensorFlow kann entweder über Git oder manuell heruntergeladen werden.
- Das Herunterladen von TensorFlow über Git ist eine der einfachsten Möglichkeiten zum Herunterladen. Für das Herunterladen über Git sollte das System Git bereits vorinstalliert haben. Sobald git installiert ist, sollte der folgende Befehl im Terminal eingegeben werden.
- Der folgende Link muss besucht und der grüne Button angeklickt werden. Die gezippten Dateien müssen heruntergeladen und entpackt werden.
- Der Ordner muss in models from models-master umbenannt werden.
- Eine Umgebung muss virtuell geschaffen werden. Eines der Hauptziele beim Erstellen einer virtuellen Python-Umgebung ist das Erstellen einer isolierten Python-Umgebung. Es soll für Projekte unter Python verwendet werden. Daher sind die Abhängigkeiten jedes Projekts unterschiedlich.
- Die folgenden Befehle müssen in der Eingabeaufforderung von Anaconda verwendet werden:
In diesem Fall heißt die virtuelle Umgebung obj_detection
conda create -n obj_detection -> zum virtuellen Einrichten der Umgebung
conda activate obj_detection -> zum Aktivieren der virtuellen Umgebung
2. Installieren von Abhängigkeiten
- Abhängigkeiten, die von der API benötigt werden, müssen auf dem lokalen PC installiert werden.
- Die Abhängigkeiten können nach Aktivierung der virtuellen Umgebung installiert werden.
- Der folgende Befehl sollte eingegeben werden
pip installieren tensorflow
- Wenn eine GPU vorhanden ist, ist der folgende Befehl erforderlich
pip installiere tensorflow-gpu
- Die anderen Abhängigkeiten müssen mit dem folgenden Befehl installiert werden
pip Kissen installieren Cython lxml jupyter matplotlib contextlib2 tf_slim
3. Herunterladen von Protokollpuffern (Protobuff)
- Die Protokollpuffer sind bestimmte Mechanismen, um die Daten seriell wie XML zu strukturieren.
- 'Protobuff' muss über den Link heruntergeladen werden .
- Extrahieren Sie die Dateien und kopieren Sie die Dateien in den Unterordner namens „research“ im bereits heruntergeladenen Ordner „models“.
- Der Ordner mit den Protobuf-Dateien muss aufgerufen werden und den folgenden Befehl ausführen
protoc object_detection/protos/*.proto –python_out=.
- Die erfolgreiche Ausführung des Befehls erstellt eine Python-Datei für jede der Proto-Dateien im Ordner Protos unter Objekterkennung im Ordner Models.
Fazit
Die Objekterkennung ist eine weit verbreitete Technik in verschiedenen Echtzeitanwendungen. Wir haben gelernt, dass die Technik durch die Anwendung von maschinellem Lernen oder Deep-Learning-Algorithmen erreicht werden kann.
Auch bei der Anwendung einer API, dh TensorFlow, müssen die Benutzer über Vorkenntnisse des Python-Programmierkonzepts verfügen. Nur dann konnten die Objekterkennungsmethoden mit der TensorFlow-API richtig verstanden werden. TensorFlow ist eine Open-Source-Plattform für maschinelles Lernen. Um den Funktionsmechanismus von TensorFlow und seine Anwendung zu verstehen, ist es daher besser, sich mit den Konzepten des maschinellen Lernens vertraut zu machen.
Wenn Sie ein Profi auf mittlerem Niveau sind, der die Python-Programmierung erlernen und ML-Modelle zusammen mit Cloud Computing einsetzen möchte, können Sie sich den von upGrad angebotenen Kurs „ Master of Science in Machine Learning & Artificial Intelligence “ ansehen. Der von IIIT Bangalore & LJMU gemeinsam zertifizierte Kurs gleicht Ihre Ziele mit der Expertenausbildung ab und bereitet Sie auf den Einstieg in Ihre Traumunternehmen vor. Alles, was Sie brauchen, ist ein Bachelor-Abschluss. Bei Fragen zum Kurs von upGrad steht Ihnen unser Support-Team zur Verfügung.