Heim >Technologie-Peripheriegeräte >KI >Basierend auf PyTorch ist die benutzerfreundliche, feinkörnige Bilderkennungs-Deep-Learning-Tool-Bibliothek Hawkeye Open Source

Basierend auf PyTorch ist die benutzerfreundliche, feinkörnige Bilderkennungs-Deep-Learning-Tool-Bibliothek Hawkeye Open Source

WBOY
WBOYnach vorne
2023-04-12 20:43:031660Durchsuche

Die feinkörnige Bilderkennung [1] ist ein wichtiges Forschungsthema beim Lernen der visuellen Wahrnehmung. Sie hat einen großen Anwendungswert in der intelligenten neuen Wirtschaft und im industriellen Internet und wird in vielen realen Szenarien häufig eingesetzt Das Fehlen dieses Aspekts im aktuellen Bereich Eine Deep-Learning-Open-Source-Toolbibliothek für Deep Learning Das Team von Professor Wei Xushen von der Nanjing University of Science and Technology verbrachte fast ein Jahr damit, Hawkeye zu entwickeln, zu verfeinern und zu vervollständigen – ein Deep-Learning-Open-Source-Tool Bibliothek für feinkörnige Bilderkennung als Referenz für Forscher und Ingenieure in verwandten Bereichen. Dieser Artikel ist eine detaillierte Einführung in Hawkeye.

1. Was ist die Hawkeye-Bibliothek?

Hawkeye ist eine detaillierte Bilderkennungs-Deep-Learning-Tool-Bibliothek auf Basis von PyTorch, die speziell für Forscher und Ingenieure in verwandten Bereichen entwickelt wurde. Derzeit umfasst Hawkeye eine Vielzahl feinkörniger Erkennungsmethoden repräsentativer Paradigmen, darunter „basierend auf Tiefenfiltern“, „basierend auf Aufmerksamkeitsmechanismen“, „basierend auf Merkmalsinteraktionen hoher Ordnung“, „basierend auf speziellen Verlustfunktionen“, „ basierend auf Netzwerkdaten" und anderen Methoden.

Der Codestil des Hawkeye-Projekts ist gut, die Struktur ist klar und leicht lesbar und die Skalierbarkeit ist stark. Für diejenigen, die neu auf dem Gebiet der feinkörnigen Bilderkennung sind, ist der Einstieg in Hawkeye einfacher, da es für sie einfacher ist, die Hauptprozesse und repräsentativen Methoden der feinkörnigen Bilderkennung zu verstehen, und es auch bequem für sie ist Implementieren Sie schnell Ihre eigenen Algorithmen auf dieser Tool-Bibliothek. Darüber hinaus stellen wir für jedes Modell in der Bibliothek auch Trainingsbeispielcodes bereit. Auch selbst entwickelte Methoden können anhand der Beispiele schnell angepasst und zu Hawkeye hinzugefügt werden.

Link zur Open-Source-Bibliothek von Hawkeye: https://github.com/Hawkeye-FineGrained/Hawkeye

2. Von Hawkeye unterstützte Modelle und Methoden

Hawkeye unterstützt derzeit insgesamt 16 Modelle und Methoden der wichtigsten Lernparadigmen -körnige Bilderkennung, die Details sind wie folgt:

Basierend auf Tiefenfilter

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

Basierend auf Aufmerksamkeit Mechanismus

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

basierend auf High-Order-Feature-Interaktion

  • BCNN. (ICC V 2015)
  • CBCNN (CVPR 2016)
  • Fast MPN-COV (CVPR 2018)

basierend auf spezieller Verlustfunktion

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

basierend auf Netzwerkdaten

Peer-Learning (ICCV 2021)

Andere Methoden

NTS-Net (ECCV 2018)

CrossX (ICCV 2019)

DCL (CVPR. 2019)

3 Hawkeye

Abhängigkeiten installieren

Verwenden Sie Conda- oder Pip-Installationsabhängige Abhängigkeiten:

  • Python 3.8
  • PyTorch 1.11.0 oder höher
  • torchvison 0.12.0 oder höher
  • numpy
  • yacs
  • tqdm

Klonen Sie das Repository:

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

Datensätze vorbereiten

Wir stellen 8 häufig verwendete feinkörnige Erkennungsdatensätze und den neuesten Download-Link zur Verfügung :

  • CUB200: https://data .caltech.edu/records/65de6-vp158/files/CUB_200_2011.tgz
  • Stanford Dog: http://vision.stanford.edu/aditya86/ImageNetDogs/images.tar
  • Stanford-Auto: http://ai.stanford .edu/~jkrause/car196/car_ims.tgz
  • FGVC-Flugzeug: 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

Laden Sie zunächst einen Datensatz herunter (am Beispiel von CUB200):

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/

Wir stellen Metadatendateien für die oben genannten 8 Datensätze bereit, die mit dem FGDataset in der Bibliothek übereinstimmen können, um den Trainingssatz einfach zu laden und zu testen Der Trainingssatz und der Testsatz werden offiziell von jedem Datensatz bereitgestellt. Wenn Sie unterschiedliche Datensätze verwenden, müssen Sie lediglich die Datensatzkonfiguration in der Konfigurationsdatei des Experiments ändern, um den Wechsel zu erleichtern.

Ändern Sie die Datensatzkonfiguration in der Konfigurationsdatei des Experiments. Das Beispiel lautet wie folgt:

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

4. Verwenden Sie Hawkeye, um das Modell zu trainieren. Für jede von Hawkeye unterstützte Methode stellen wir eine separate Trainingsvorlage und Konfigurationsdatei bereit. Für das Training von APINet ist beispielsweise nur ein Befehl erforderlich:

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

Die Parameter des Experiments befinden sich alle in der entsprechenden Yaml-Datei, die gut lesbar und leicht zu ändern ist, wie zum Beispiel:

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​​

Der Trainer APINetTrainer im Hauptprogramm Beispiele/ APINet.py erbt das Experiment seit Trainer, es ist nicht erforderlich, komplizierte Codes für Training, Logger, Modellspeicherung, Konfigurationsladen und andere zu schreiben. Sie müssen nur einige Module nach Bedarf ändern. Wir stellen in der Trainingsphase auch mehrere Hooks bereit, die der speziellen Implementierung einiger Methoden gerecht werden können.

Protokolldateien, Modellgewichtsdateien, für das Training verwendete Trainingscodes und Konfigurationsdateien werden zu diesem Zeitpunkt im Experimentausgabeverzeichnis log_dir gespeichert. Das Sichern des Konfigurations- und Trainingscodes erleichtert den Vergleich verschiedener Experimente in der Zukunft.

Detailliertere Beispiele finden Sie in den spezifischen Informationen im Projektlink: https://github.com/Hawkeye-FineGrained/Hawkeye

Das obige ist der detaillierte Inhalt vonBasierend auf PyTorch ist die benutzerfreundliche, feinkörnige Bilderkennungs-Deep-Learning-Tool-Bibliothek Hawkeye Open Source. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen