So erstellen Sie eine Ranking-App / Bilderkennung

Inhalt

Dieser Beitrag wurde im Rahmen der Data Science Blogathon.

Einführung

793797-beste-bilderkennung-apis-e1587080882739-2831707

Anwendungen

  1. Gesichtsakkreditierung – Telefonkameras verwenden Gesichtsabzeichen, um das Telefon zu entsperren. Gesichtsakkreditierungssysteme könnten an den Eingangstüren von Bürogebäuden implementiert werden.
  2. Bildklassifizierung – Wird verwendet, um zwischen mehreren Bildsätzen zu unterscheiden. Branchen wie das Automobil, Einzelhandel, die Spiele, etc. Sie verwenden es für mehrere Zwecke.
  3. Bildakkreditierung Sicherheitsunternehmen nutzen die Bildakkreditierung, um verschiedene Dinge in Koffern auf Flughäfen zu erkennen, Bildscanner, etc.

Schritte zum Erstellen der Anwendung

  • Holen Sie sich die Daten
  • Datenaufbereitung
  • Datenmodellierung
  • Gestalten Sie die Benutzeroberfläche
  • Integrieren Sie Benutzeroberfläche und Modellierung

Holen Sie sich die Daten

Die Daten wären in Form von Bildern, Mit anderen Worten, Fotos. Bilder sind ein Array von Pixeln. Eine größere Anzahl von Bildern wäre erforderlich, um die gesamte End-to-End-Anwendung zu erstellen. Die Daten werden innerhalb der Organisation selbst verfügbar sein oder müssen aus dem offenen Internet bezogen werden. Je nach Art der Anwendung, die Art der erforderlichen Daten variiert. Wenn es sich um einen Antrag auf Gesichtsakkreditierung handelt, Wir können sogar Daten durch die Sammlung von Bildern verschiedener Personen erstellen. Wenn die Bilder aus dem offenen Internet bezogen werden sollen, Wir können die Bilder aus dem Web kratzen.

Die aufgenommenen Bilder müssen eine hohe Auflösung haben und können leicht verzerrt sein. In den Bildern kann ein gewisses Rauschen vorhanden sein, damit der Algorithmus die Bilder richtig kategorisieren kann.

Beispiel für Web-Scraping von Bildern auf einer Webseite –

vom Selen-Import-Webtreiber

options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument("--Testtyp")
options.binary_location = "/usr/bin/chrom"
Treiber = webdriver.Chrome(chrome_options=Optionen)

fahrer.get('https://imgur.com/')

images = driver.find_elements_by_tag_name('img')
für Bild in Bildern:
    drucken(image.get_attribute('src'))

Fahrer.schließen()

Datenaufbereitung

  • Bilder müssen in der Größe geändert werden, damit alle Bilder die gleiche Größe haben
  • Bilder können mit hoher Auflösung scharf sein, sowie etwas verschwommen und laut.
  • Transformationsoperationen als Übersetzung, Rotation und Skalierung sollten so angewendet werden, dass die aufgenommenen Bilder in allen Winkeln vorhanden sind.
  • Bilder können verzerrt oder abgeschnitten werden, um sie gut zu verallgemeinern.
  • Bringen Sie Rauschen in Bilder ein, wenn es nicht vorhanden ist
  • In jeder der Klassen muss eine gleichmäßige Verteilung der Anzahl der Bilder vorliegen.

– Autor von Sapiens

Code zum Ändern der Bildgröße

img = cv2.imread('/home/img/python.png', cv2.IMREAD_UNCHANGED)
drucken('Ursprüngliche Abmessungen : ',img.shape)
scale_percent = 60
Breite = int(img.shape[1] * scale_percent / 100)
Höhe = int(img.shape[0] * scale_percent / 100)
schwach = (Breite, Höhe)
# Bildgröße anpassen
resize = cv2.resize(img, trübe, Interpolation = cv2.INTER_AREA)

Datenmodellierung

Sobald alle Bilder erhalten sind, lege sie in den entsprechenden Ordner für jede der Klassen. Sorgen Sie für eine ausreichende Verteilung der Bilder für das Training, Validierungs- und Testdatensätze. Für die Klassifizierung und Akkreditierung von Bildern müssen wir neuronale Netze verwenden. Convolutional Neural Network Architecture ist besser für Bilder geeignet, wenn mit Matrizen gearbeitet wird.

Convolutional neuronale Netze haben verschiedene Schichten, die bei den mathematischen Operationen helfen, die an den Bildern ausgeführt werden. Schichten umfassen die Faltungsschicht, Gruppierungsebene, die Batch-Normalisierungsschicht, Triggerfunktionen und vollständig verbundene Layer. Pass-Through-Learning gibt Ihnen die Möglichkeit, vortrainierte Netzwerkmodellarchitekturen zu verwenden, die gut mit Standard-Dataset-Images funktionieren. Beginnen Sie also damit, Ihr eigenes Netzwerk zu schreiben, Sie werden jedoch feststellen, dass vortrainierte Netzwerke Ihnen eine viel bessere Leistung bieten.

Beginnen Sie mit einigen der grundlegenden vortrainierten Modelle wie:

  • VGG16
  • Start
  • Xception
  • MobileNet
  • ResNet50

Sie können die Tensorflow- oder Keras-Bibliotheken verwenden, um diese Modelle zu verwenden, die ihre Implementierungen in der Bibliothek darstellen. Dies wird es Ihnen erleichtern, die Parameter der verschiedenen Schichten der Architektur zu ändern. Sie können Hyperparameter-Tuning vermeiden, um die Leistung zu steigern. Beim Training der Modelle, Achten Sie darauf, die Koeffizientenwerte oder Modellgewichte zu speichern. Diese Werte, die Sie speichern, können verwendet werden, um zukünftige Bilder vorherzusagen, die Sie Ihrer Anwendung zur Verfügung stellen.

Modellcode VGG16

image_size=224
aus keras.applications importieren VGG16
von keras importmodellen
aus keras importieren ebenen
von keras Importoptimierern
#Laden Sie das VGG-Modell
vgg_conv = VGG16(Gewichte="imagenet", include_top=Falsch, input_shape=(224, 224, 3))
für Layer in vgg_conv.layers[:-4]:
    layer.trainable = False
für Layer in vgg_conv.layers:
    drucken(Schicht, schicht.trainierbar)
model = models.Sequential()
# Fügen Sie das VGG-Faltungsbasismodell hinzu
model.add(vgg_conv)
# Neue Ebenen hinzufügen
model.add(Schichten.Abflachen())
model.add(Schichten.Dichte(1024, Aktivierung = 'neu lesen'))
model.add(Schichten.Ausfall(0.5))
model.add(Schichten.Dichte(29, Aktivierung='Softmax'))
# Eine Zusammenfassung des Modells anzeigen. Überprüfen Sie die Anzahl der trainierbaren Parameter
Modell.Zusammenfassung()

Die Keras-Bibliothek bietet Ihnen eine einfache Möglichkeit, Modellkoeffizienten mithilfe von:

model.save('Dateiname.h5')

Gestalten Sie die Benutzeroberfläche

Sobald das Modell einsatzbereit ist, sollte in der Benutzeroberfläche funktionieren. Wenn Sie eine Android-Anwendung entwerfen, Sie können die Benutzeroberfläche mit Hilfe von Kotlin oder Flutter gestalten. Die Benutzeroberfläche muss einfach zu lesen und zu interpretieren sein. Es muss so gestaltet sein, dass es dem Hauptzweck der Anwendung entspricht.

Wenn Sie eine Webanwendung entwerfen, Flask oder Django könnten für den gleichen Zweck verwendet werden. Die GUI könnte mit Python-Bibliotheken wie Tkinter entworfen werden, etc.

Integrieren Sie Benutzeroberfläche und Modellierung

Für Android-Apps, Flutter ermöglicht Ihnen die Integration Ihrer Klassifikationsmodelle mit Hilfe einer Bibliothek namens Tensorflow Lite. Die tensorflow lite-Implementierung benötigt nur zwei Dateien für die Bildklassifizierung, Mit anderen Worten, die Textdatei mit den Klassenbezeichnungen und die Datei mit den Modellgewichten oder -koeffizienten. Sobald diese beiden Dateien in der Ordnerstruktur platziert sind, Die Android-Anwendung ist vollständig und kann getestet werden. Das mit Flutter erstellte Kamera-Widget kann verwendet werden, um das Eingabebild aufzunehmen.

Code zum Einschließen der beiden Dateien –

Lademodell() asynchron {
  warten auf Tflite.loadModel(
    Modell: "Assets/model_unquant.tflite",
    Etiketten: "Assets/labels.txt",
  );
}

Hier, Die .tflite-Datei ist die Koeffizientendatei, die aus dem Modell erstellt wird, und tags.txt sind die Namen der Bildklassen, die durch eine neue Zeile getrennt sind. Betten Sie dies in die Android-Struktur ein.

Für Webanwendungen, Mit Flask können Sie die Tensorflow-Bibliothek integrieren und die Modellgewichtungen verwenden, um die richtige Vorhersage für das Eingabebild zu treffen.

Nach diesem Verfahren, Schritt für Schritt, Sie können sofort Ihr eigenes Klassifizierungsmodell erstellen.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.