Heim >Technologie-Peripheriegeräte >KI >Lernmethode zur nullbasierten Bilderkennung
Die auf Zero-Shot-Lernen basierende Bilderkennung ist eine aufstrebende Technologie, die sich von herkömmlichen Bilderkennungsmethoden unterscheidet. Herkömmliche Bilderkennung erfordert das Erlernen von Funktionen und Klassifizierungsregeln durch Trainingsdaten, während Zero-Shot-Lernen kein vorheriges Training des Modells erfordert. Es führt eine Echtzeitklassifizierung basierend auf den Merkmalen des zu erkennenden Bildes durch und ermöglicht so eine schnelle und genaue Erkennung. Bilderkennung mit Zero-Shot-Learning wird häufig in den Bereichen Smart Home, Gesichtserkennung, intelligente Sicherheit und anderen Bereichen eingesetzt. Es kann Smart-Home-Geräten helfen, Benutzerbedürfnisse schnell zu erkennen und entsprechend zu reagieren. Bei der Gesichtserkennung kann Zero-Shot-Learning Gesichter anhand ihrer Merkmale genau identifizieren und die Erkennungsgenauigkeit verbessern. Im Bereich der intelligenten Sicherheit kann Zero-Shot-Learning dabei helfen, gefährliche Objekte zu identifizieren und ein sichereres und zuverlässigeres Überwachungssystem bereitzustellen. Kurz gesagt, die auf Zero-Shot-Learning basierende Bilderkennungstechnologie ist schnell und genau und bietet intelligentere Lösungen für verschiedene Bereiche.
Die Bilderkennung mit Zero-Shot-Lernen ist hauptsächlich in zwei Phasen unterteilt: Merkmalsextraktion und Klassifizierung.
In der Phase der Merkmalsextraktion analysiert der Zero-Pass-Bilderkennungsalgorithmus automatisch verschiedene Merkmale im zu erkennenden Bild, wie z. B. Farbe, Form, Textur usw., und stellt sie als Vektoren dar. Diese Vektoren können als „Fingerabdrücke“ des zu erkennenden Bildes betrachtet und für die anschließende Klassifizierung verwendet werden.
In der Klassifizierungsphase verwendet der lernende Zero-Shot-Bilderkennungsalgorithmus Merkmalsvektoren zum Vergleich mit zuvor erlernten Kategorie-Merkmalsvektoren, um die Kategorie zu finden, die dem zu erkennenden Bild am nächsten kommt. Diese Kategoriemerkmalsvektoren werden aus anderen Bildern extrahiert und stellen Merkmale jeder Kategorie dar. Beim Erkennen eines neuen Bildes ordnet der lernende Zero-Shot-Bilderkennungsalgorithmus das zu erkennende Bild der nächstkommenden Kategorie zu, basierend darauf, wie ähnlich es den Merkmalsvektoren jeder Kategorie ist.
Um Zero-Shot-Learning besser zu verstehen, können wir es anhand eines Beispiels veranschaulichen. Wir verwenden den Datensatz „Animals with Attributes 2“ (AWA2), der 50 verschiedene Tierkategorien enthält. Jede Kategorie wird durch 85 Attribute beschrieben. Wir haben zufällig 10 Kategorien als Trainingssatz und die restlichen 40 Kategorien als Testsatz ausgewählt. Für das Modelltraining verwendeten wir einen attributbasierten Ansatz.
Zuerst müssen wir die notwendigen Bibliotheken und Datensätze importieren:
import numpy as np import pandas as pd import scipy.io as sio from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression # 导入数据集 data = sio.loadmat('data/awa2.mat') train_labels = data['train_labels'].astype(int).squeeze() test_labels = data['test_labels'].astype(int).squeeze() train_attributes = StandardScaler().fit_transform(data['train_attributes']) test_attributes = StandardScaler().fit_transform(data['test_attributes'])
Dann müssen wir die Attributbeschreibungen im Einbettungsraum in Vektoren umwandeln. Wir verwenden die Hauptkomponentenanalyse (PCA), um Attributbeschreibungen im Einbettungsraum in Vektoren umzuwandeln. Wir wählen die ersten 10 Hauptkomponenten als Einbettungsvektoren aus.
from sklearn.decomposition import PCA # 将属性描述转换为嵌入空间中的向量 pca = PCA(n_components=10) train_embed = pca.fit_transform(train_attributes) test_embed = pca.transform(test_attributes)
Als nächstes müssen wir einen Klassifikator trainieren, um die Kategorien im Testsatz vorherzusagen. Als Klassifikator verwenden wir die logistische Regression.
# 训练分类器 clf = LogisticRegression(random_state=0, max_iter=1000) clf.fit(train_embed, train_labels) # 在测试集上进行预测 predicted_labels = clf.predict(test_embed)
Schließlich können wir die Genauigkeit berechnen, um die Leistung des Modells zu bewerten.
# 计算准确率 accuracy = np.mean(predicted_labels == test_labels) print('Accuracy:', accuracy)
In diesem Beispiel haben wir einen attributbasierten Ansatz zum Trainieren des Modells verwendet und die ersten 10 Hauptkomponenten als Einbettungsvektoren ausgewählt. Schließlich haben wir auf dem Testsatz ein Modell mit einer Genauigkeit von 0,55 erhalten.
Das obige ist der detaillierte Inhalt vonLernmethode zur nullbasierten Bilderkennung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!