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.
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
Hawkeye unterstützt derzeit insgesamt 16 Modelle und Methoden der wichtigsten Lernparadigmen -körnige Bilderkennung, die Details sind wie folgt:
Basierend auf Tiefenfilter
Basierend auf Aufmerksamkeit Mechanismus
basierend auf High-Order-Feature-Interaktion
basierend auf spezieller Verlustfunktion
basierend auf Netzwerkdaten
Peer-Learning (ICCV 2021)
Andere Methoden
NTS-Net (ECCV 2018)
CrossX (ICCV 2019)
DCL (CVPR. 2019)
Abhängigkeiten installieren
Verwenden Sie Conda- oder Pip-Installationsabhängige Abhängigkeiten:
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 :
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
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!