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.
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
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
Bas mis au garde-à-vous mécanisme
basé sur une interaction de fonctionnalités d'ordre élevé
basé sur une fonction de perte spéciale
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)
Installer les dépendances
Utilisez les dépendances liées à l'installation de Conda ou pip :
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 :
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
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!