La reconnaissance d'images basée sur l'apprentissage zéro-shot est une technologie émergente, différente des méthodes traditionnelles de reconnaissance d'images. La reconnaissance d'images traditionnelle nécessite l'apprentissage de fonctionnalités et de règles de classification via des données d'entraînement, tandis que l'apprentissage zéro-shot ne nécessite pas de pré-entraînement du modèle. Il effectue une classification en temps réel en fonction des caractéristiques de l'image à reconnaître, obtenant ainsi une reconnaissance rapide et précise. La reconnaissance d'images avec apprentissage sans tir a été largement utilisée dans la maison intelligente, la reconnaissance faciale, la sécurité intelligente et d'autres domaines. Il peut aider les appareils domestiques intelligents à identifier rapidement les besoins des utilisateurs et à y répondre en conséquence. En matière de reconnaissance faciale, l'apprentissage zéro tir peut identifier avec précision les visages en fonction de leurs caractéristiques et améliorer la précision de la reconnaissance. Dans le domaine de la sécurité intelligente, l'apprentissage zéro-shot peut aider à identifier les objets dangereux et fournir un système de surveillance plus sûr et plus fiable. En bref, la technologie de reconnaissance d'images basée sur l'apprentissage zéro-shot est rapide et précise, offrant des solutions plus intelligentes pour divers domaines.
La reconnaissance d'images avec apprentissage zéro-shot est principalement divisée en deux étapes : l'extraction des caractéristiques et la classification.
Dans l'étape d'extraction des caractéristiques, l'algorithme de reconnaissance d'image d'apprentissage par passe zéro analysera automatiquement diverses caractéristiques de l'image à reconnaître, telles que la couleur, la forme, la texture, etc., et les représentera sous forme de vecteurs. Ces vecteurs peuvent être considérés comme les « empreintes digitales » de l’image à reconnaître et à utiliser pour une classification ultérieure.
Dans la phase de classification, l'algorithme de reconnaissance d'image d'apprentissage zéro-shot utilise des vecteurs de caractéristiques pour comparer avec les vecteurs de caractéristiques de catégorie précédemment appris afin de trouver la catégorie la plus proche de l'image à reconnaître. Ces vecteurs de caractéristiques de catégorie sont extraits d’autres images et représentent les caractéristiques de chaque catégorie. Lors de la reconnaissance d'une nouvelle image, l'algorithme de reconnaissance d'image par apprentissage zéro-shot attribue l'image à reconnaître à la catégorie la plus proche en fonction de sa similitude avec les vecteurs caractéristiques de chaque catégorie.
Afin de mieux comprendre l'apprentissage zéro-shot, nous pouvons l'illustrer avec un exemple. Nous adoptons l'ensemble de données Animals with Attributes 2 (AWA2), qui contient 50 catégories d'animaux différentes, chaque catégorie étant décrite par 85 attributs. Nous avons sélectionné au hasard 10 catégories comme ensemble de formation et les 40 catégories restantes comme ensemble de tests. Nous avons utilisé une approche basée sur les attributs pour la formation des modèles.
Tout d'abord, nous devons importer les bibliothèques et les ensembles de données nécessaires :
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'])
Ensuite, nous devons convertir les descriptions d'attributs en vecteurs dans l'espace d'intégration. Nous utilisons l'analyse en composantes principales (ACP) pour convertir les descriptions d'attributs en vecteurs dans l'espace d'intégration. Nous sélectionnons les 10 premières composantes principales comme vecteurs d'intégration.
from sklearn.decomposition import PCA # 将属性描述转换为嵌入空间中的向量 pca = PCA(n_components=10) train_embed = pca.fit_transform(train_attributes) test_embed = pca.transform(test_attributes)
Ensuite, nous devons former un classificateur pour prédire les catégories dans l'ensemble de test. Nous utilisons la régression logistique comme classificateur.
# 训练分类器 clf = LogisticRegression(random_state=0, max_iter=1000) clf.fit(train_embed, train_labels) # 在测试集上进行预测 predicted_labels = clf.predict(test_embed)
Enfin, nous pouvons calculer la précision pour évaluer les performances du modèle.
# 计算准确率 accuracy = np.mean(predicted_labels == test_labels) print('Accuracy:', accuracy)
Dans cet exemple, nous avons utilisé une approche basée sur les attributs pour entraîner le modèle et sélectionné les 10 premiers composants principaux comme vecteurs d'intégration. Finalement, nous avons obtenu un modèle avec une précision de 0,55 sur l'ensemble de test.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!