Maison  >  Article  >  Périphériques technologiques  >  Basée sur PyTorch, la bibliothèque d'outils d'apprentissage en profondeur de reconnaissance d'image facile à utiliser et à granularité fine Hawkeye est open source

Basée sur PyTorch, la bibliothèque d'outils d'apprentissage en profondeur de reconnaissance d'image facile à utiliser et à granularité fine Hawkeye est open source

WBOY
WBOYavant
2023-04-12 20:43:031599parcourir

La reconnaissance d'images à grain fin [1] est un sujet de recherche important dans l'apprentissage de la perception visuelle. Elle a une grande valeur d'application dans la nouvelle économie intelligente et l'Internet industriel, et a été largement utilisée dans de nombreux scénarios du monde réel... Compte tenu de l'absence de cet aspect dans le domaine actuel Une bibliothèque d'outils open source d'apprentissage profond pour l'apprentissage profond L'équipe du professeur Wei Xiushen de l'Université des sciences et technologies de Nanjing a passé près d'un an à développer, peaufiner et compléter Hawkeye - un outil open source d'apprentissage profond. bibliothèque de reconnaissance d'images fine pour référence par les chercheurs et les ingénieurs dans des domaines connexes. Cet article est une introduction détaillée à Hawkeye.

1. Qu'est-ce que la bibliothèque Hawkeye ?

Hawkeye est une bibliothèque d'outils d'apprentissage profond de reconnaissance d'images à grain fin basée sur PyTorch, spécialement conçue pour les chercheurs et les ingénieurs dans des domaines connexes. Actuellement, Hawkeye inclut des méthodes de reconnaissance fines issues d'une variété de paradigmes représentatifs, notamment "basées sur des filtres de profondeur", "basées sur des mécanismes d'attention", "basées sur des interactions de fonctionnalités d'ordre élevé", "basées sur des fonctions de perte spéciales", " basé sur les données du réseau" et d'autres méthodes.

Le style de code du projet Hawkeye est bon, la structure est claire et facile à lire et l'évolutivité est forte. Pour ceux qui sont nouveaux dans le domaine de la reconnaissance d'images à granularité fine, Hawkeye est plus facile à démarrer, ce qui leur permet de comprendre plus facilement les principaux processus et les méthodes représentatives de la reconnaissance d'images à granularité fine, et il leur est également pratique de implémenter rapidement leurs propres algorithmes sur cette bibliothèque d'outils. De plus, nous fournissons également des exemples de codes de formation pour chaque modèle de la bibliothèque. Les méthodes auto-développées peuvent également être rapidement adaptées et ajoutées à Hawkeye en fonction des exemples.

Lien de la bibliothèque open source Hawkeye : https://github.com/Hawkeye-FineGrained/Hawkeye

2 Modèles et méthodes pris en charge par Hawkeye

Hawkeye prend actuellement en charge un total de 16 modèles et méthodes des principaux paradigmes d'apprentissage in fine. -reconnaissance d'image granuleuse, les détails sont les suivants :

Basé sur le filtre de profondeur

  • S3N (ICCV 2019)
  • Interp-Parts (CVPR 2020)
  • ProtoTree (CVPR 2021)

Bas mis au garde-à-vous mécanisme

  • OSME+ MAMC (ECCV 2018)
  • MGE-CNN (ICCV 2019)
  • APCNN (IEEE TIP 2021)

basé sur une interaction de fonctionnalités d'ordre élevé

  • BCNN (ICCV 2015)
  • CBCNN (CVPR 2016)
  • Fast MPN-COV (CVPR 2018)

basé sur une fonction de perte spéciale

  • Pairwise Confusion (ECCV 2018)
  • API-Net (AAAI 2020)
  • CIN (AA IA 2020)

basé sur les données du réseau

Peer-Learning (ICCV 2021)

Autres méthodes

NTS-Net (ECCV 2018)

CrossX (ICCV 2019)

DCL (CVPR 201 9)

3. Installer Hawkeye

Installer les dépendances

Utilisez les dépendances liées à l'installation de Conda ou pip :

  • Python 3.8
  • PyTorch 1.11.0 ou supérieur
  • torchvison 0.12.0 ou supérieur
  • numpy
  • yacs
  • tqdm

Clonez le référentiel :

git clone https:// /github.com/Hawkeye-FineGrained/Hawkeye.gitcd Hawkeye

Préparer les ensembles de données

Nous fournissons 8 ensembles de données de reconnaissance à granularité fine couramment utilisés et le dernier lien de téléchargement :

  • CUB200 : https://data .caltech.edu/records/65de6-vp158/files/CUB_200_2011.tgz
  • Stanford Dog : http://vision.stanford.edu/aditya86/ImageNetDogs/images.tar
  • Voiture Stanford : http://ai.stanford .edu/~jkrause/car196/car_ims.tgz
  • Avion FGVC : https://www.robots.ox.ac.uk/~vgg/data/fgvc-aircraft/ archives/fgvc-aircraft-2013b.tar.gz
  • iNat2018 : https://ml-inat-competition-datasets.s3.amazonaws.com/2018/train_val2018.tar.gz
  • WebFG-bird : https:// web-fgvc-496-5089-sh.oss -cn-shanghai.aliyuncs.com/web-bird.tar.gz
  • WebFG-car : https://web-fgvc-496-5089-sh.oss-cn -shanghai.aliyuncs.com/web-car. tar.gz
  • WebFG-aircraft : https://web-fgvc-496-5089-sh.oss-cn-shanghai.aliyuncs.com/web-aircraft.tar. gz

Tout d'abord, téléchargez un ensemble de données (en prenant le CUB200 comme exemple) :

cd Hawkeye/data
wget https://data.caltech.edu/records/65de6-vp158/files/CUB_200_2011.tgz
mkdir bird && tar -xvf CUB_200_2011.tgz -C bird/

Nous fournissons des fichiers de métadonnées pour les 8 ensembles de données ci-dessus, qui peuvent correspondre au FGDataset dans la bibliothèque pour charger facilement l'ensemble d'entraînement et tester L'ensemble de formation et l'ensemble de test sont officiellement fournis par chaque ensemble de données. Lorsque vous utilisez différents ensembles de données, il vous suffit de modifier la configuration de l'ensemble de données dans le fichier de configuration de l'expérience pour faciliter la commutation.

Modifiez la configuration de l'ensemble de données dans le fichier de configuration de l'expérience, l'exemple est le suivant :

dataset:
name: cub
root_dir: data/bird/CUB_200_2011/images
meta_dir: metadata/cub

4. Utilisez Hawkeye pour entraîner le modèle

Pour chaque méthode prise en charge par Hawkeye, nous fournissons un modèle de formation et un fichier de configuration distincts. Par exemple, la formation d'APINet ne nécessite qu'une seule commande :

python Examples/APINet.py --config configs/APINet.yaml

Les paramètres de l'expérience sont tous dans le fichier yaml correspondant, très lisible et facile à modifier, comme par exemple :

experiment:
name: API_res101 2# 实验名称
log_dir: results/APINet # 实验日志、结果等的输出目录
seed: 42# 可以选择固定的随机数种子
resume: results/APINet/API_res101 2/checkpoint_epoch_19.pth# 可以从训练中断的 checkpoint 中恢复训练
dataset:
name: cub# 使用 CUB200 数据集
root_dir: data/bird/CUB_200_2011/images # 数据集中图像放置的路径
meta_dir: metadata/cub# CUB200 的 metadata 路径
n_classes: 10 # 类别数,APINet 需要的数据集
n_samples: 4# 每个类别的样本数
batch_size: 24# 测试时的批样本数
num_workers: 4# Dataloader 加载数据集的线程数
transformer:# 数据增强的参数配置
image_size: 224# 图像输入模型的尺寸 224x224
resize_size: 256# 图像增强前缩放的尺寸 256x256
model:
name: APINet# 使用 APINet 模型,见 ​​model/methods/APINet.py​​
num_classes: 200# 类别数目
load: results/APINet/API_res101 1/best_model.pth # 可以加载训练过的模型参数
train:
cuda: [4]# 使用的 GPU 设备 ID 列表,[] 时使用 CPU
epoch: 100# 训练的 epoch 数量
save_frequence: 10# 自动保存模型的频率
val_first: False# 可选是否在训练前进行一次模型精度的测试
optimizer:
name: Adam# 使用 Adam 优化器
lr: 0.0001# 学习率为 0.0001
weight_decay: 0.00000002
scheduler:
# 本例使用自定义组合的 scheduler,由 warmup 和余弦退火学习率组合而成,见 ​​Examples/APINet.py​​
name: ''
T_max: 100# scheduler 的总迭代次数
warmup_epochs: 8# warmup 的 epoch 数
lr_warmup_decay: 0.01# warmup 衰减的比例
criterion:
name: APINetLoss# APINet 使用的损失函数,见 ​​model/loss/APINet_loss.py​​

Le formateur APINetTrainer dans le programme principal Exemples/ APINet.py de l'expérience hérite de Depuis Trainer, il n'est pas nécessaire d'écrire un processus de formation compliqué, un enregistreur, une sauvegarde de modèle, un chargement de configuration et d'autres codes. Il vous suffit de modifier certains modules si nécessaire. Nous proposons également plusieurs hooks en phase de formation, qui peuvent répondre à la mise en œuvre particulière de certaines méthodes.

Les fichiers journaux, les fichiers de poids du modèle, les codes d'entraînement utilisés pour l'entraînement et les fichiers de configuration à ce moment-là seront enregistrés dans le répertoire de sortie de l'expérience log_dir. La sauvegarde de la configuration et du code d'entraînement facilite la comparaison de différentes expériences à l'avenir.

Pour des exemples plus détaillés, veuillez vous référer aux informations spécifiques dans le lien du projet : https://github.com/Hawkeye-FineGrained/Hawkeye

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer