0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

細粒度圖像識別深度學(xué)習(xí)開源工具庫Hawkeye解析

新機器視覺 ? 來源:機器之心 ? 作者:機器之心 ? 2022-11-06 20:26 ? 次閱讀

細粒度圖像識別是視覺感知學(xué)習(xí)的重要研究課題,在智能新經(jīng)濟和工業(yè)互聯(lián)網(wǎng)等方面具有巨大應(yīng)用價值,且在諸多現(xiàn)實場景已有廣泛應(yīng)用…… 鑒于當(dāng)前領(lǐng)域內(nèi)尚缺乏該方面的深度學(xué)習(xí)開源工具庫,南京理工大學(xué)魏秀參教授團隊用時近一年時間,開發(fā)、打磨、完成了 Hawkeye——細粒度圖像識別深度學(xué)習(xí)開源工具庫,供相關(guān)領(lǐng)域研究人員和工程師參考使用。本文是對 Hawkeye 的詳細介紹。

目錄

1. 什么是 Hawkeye 庫

2. Hawkeye 支持的模型及方法

3. 安裝 Hawkeye

4. 使用 Hawkeye 訓(xùn)練模型

1. 什么是 Hawkeye 庫

Hawkeye 是一個基于 PyTorch 的細粒度圖像識別深度學(xué)習(xí)工具庫,專為相關(guān)領(lǐng)域研究人員和工程師設(shè)計。目前,Hawkeye 包含多種代表性范式的細粒度識別方法,包括 “基于深度濾波器”、“基于注意力機制”、“基于高階特征交互”、“基于特殊損失函數(shù)”、“基于網(wǎng)絡(luò)數(shù)據(jù)” 以及其他方法。

Hawkeye 項目代碼風(fēng)格良好,結(jié)構(gòu)清晰易讀,可拓展性較強。對于剛接觸細粒度圖像識別領(lǐng)域的相關(guān)人員而言,Hawkeye 較易上手,便于其理解細粒度圖像識別的主要流程和代表性方法,同時也方便在本工具庫上快速實現(xiàn)自己的算法。此外,我們還給出了庫中各模型的訓(xùn)練示例代碼,自研方法也可按照示例快速適配并添加至 Hawkeye 中。

Hawkeye 開源庫鏈接:https://github.com/Hawkeye-FineGrained/Hawkeye

2. Hawkeye 支持的模型及方法

Hawkeye 目前支持細粒度圖像識別中主要學(xué)習(xí)范式的共 16 個模型與方法,具體如下:

基于深度濾波器

S3N (ICCV 2019)

Interp-Parts (CVPR 2020)

ProtoTree (CVPR 2021)

基于注意力機制

OSME+MAMC (ECCV 2018)

MGE-CNN (ICCV 2019)

APCNN (IEEE TIP 2021)

基于高階特征交互

BCNN (ICCV 2015)

CBCNN (CVPR 2016)

Fast MPN-COV (CVPR 2018)

基于特殊損失函數(shù)

Pairwise Confusion (ECCV 2018)

API-Net (AAAI 2020)

CIN (AAAI 2020)

基于網(wǎng)絡(luò)數(shù)據(jù)

Peer-Learning (ICCV 2021)

其他方法

NTS-Net (ECCV 2018)

CrossX (ICCV 2019)

DCL (CVPR 2019)

3. 安裝 Hawkeye

安裝依賴

使用 conda 或者 pip 安裝相關(guān)依賴:

Python 3.8

PyTorch 1.11.0 or higher

torchvison 0.12.0 or higher

numpy

yacs

tqdm

克隆倉庫:

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

cd Hawkeye

準(zhǔn)備數(shù)據(jù)集

首先,下載一個數(shù)據(jù)集(以 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/

我們提供了上述 8 個數(shù)據(jù)集的 meta-data 文件,能夠匹配庫中的 FGDataset 方便地加載訓(xùn)練集和測試集,訓(xùn)練集和測試集為各個數(shù)據(jù)集官方提供的劃分。使用不同數(shù)據(jù)集時,只需在實驗的 config 文件中修改 dataset 配置即可,方便切換。

在實驗的 config 文件中修改 dataset 配置,示例如下:

dataset:

name: cub

root_dir: data/bird/CUB_200_2011/images

meta_dir: metadata/cub

4. 使用 Hawkeye 訓(xùn)練模型

對于 Hawkeye 支持的每個方法,我們均提供了單獨的訓(xùn)練模板和配置文件。例如訓(xùn)練 APINet 只需一條命令:

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

實驗的參數(shù)都在相應(yīng)的 yaml 文件中,可讀性高、便于修改,如:

experiment:
name: API_res101 2        # 實驗名稱
  log_dir: results/APINet   # 實驗日志、結(jié)果等的輸出目錄
  seed: 42                  # 可以選擇固定的隨機數(shù)種子
#  resume: results/APINet/API_res101 2/checkpoint_epoch_19.pth    # 可以從訓(xùn)練中斷的 checkpoint 中恢復(fù)訓(xùn)練
dataset:
  name: cub          # 使用 CUB200 數(shù)據(jù)集
  root_dir: data/bird/CUB_200_2011/images   # 數(shù)據(jù)集中圖像放置的路徑
  meta_dir: metadata/cub                  # CUB200 的 metadata 路徑
  n_classes: 10         # 類別數(shù),APINet 需要的數(shù)據(jù)集
  n_samples: 4          # 每個類別的樣本數(shù)
  batch_size: 24        # 測試時的批樣本數(shù)
  num_workers: 4      # Dataloader 加載數(shù)據(jù)集的線程數(shù)
  transformer:        # 數(shù)據(jù)增強的參數(shù)配置
    image_size: 224      # 圖像輸入模型的尺寸 224x224
    resize_size: 256    # 圖像增強前縮放的尺寸 256x256
model:
  name: APINet        # 使用 APINet 模型,見 `model/methods/APINet.py`
  num_classes: 200      # 類別數(shù)目
#  load: results/APINet/API_res101 1/best_model.pth     # 可以加載訓(xùn)練過的模型參數(shù)
train:
  cuda: [4]          # 使用的 GPU 設(shè)備 ID 列表,[] 時使用 CPU
  epoch: 100        # 訓(xùn)練的 epoch 數(shù)量
  save_frequence: 10    # 自動保存模型的頻率
#  val_first: False      # 可選是否在訓(xùn)練前進行一次模型精度的測試
  optimizer:
    name: Adam        # 使用 Adam 優(yōu)化器
    lr: 0.0001        # 學(xué)習(xí)率為 0.0001
    weight_decay: 0.00000002
  scheduler:
    # 本例使用自定義組合的 scheduler,由 warmup 和余弦退火學(xué)習(xí)率組合而成,見 `Examples/APINet.py`
    name: ''
    T_max: 100        # scheduler 的總迭代次數(shù)
    warmup_epochs: 8    # warmup 的 epoch 數(shù)
    lr_warmup_decay: 0.01  # warmup 衰減的比例
  criterion:
    name: APINetLoss    # APINet 使用的損失函數(shù),見 `model/loss/APINet_loss.py`

實驗的主程序 Examples/APINet.py 中的訓(xùn)練器 APINetTrainer 繼承自 Trainer,不需要再寫復(fù)雜的訓(xùn)練流程、logger、模型保存、配置加載等代碼,只用按需修改部分模塊即可。我們也提供了訓(xùn)練階段的多個 hook 鉤子,可以滿足一些方法特別的實現(xiàn)方式。

日志文件、模型權(quán)重文件、訓(xùn)練使用的訓(xùn)練代碼以及當(dāng)時的配置文件都會保存在實驗輸出目錄 log_dir 中,備份配置和訓(xùn)練代碼便于日后對不同實驗進行對比。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4809

    瀏覽量

    68816
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5510

    瀏覽量

    121340

原文標(biāo)題:基于PyTorch、易上手,細粒度圖像識別深度學(xué)習(xí)工具庫Hawkeye開源

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AI圖像識別攝像機

    ?AI圖像識別攝像機是一種集成了先進算法和深度學(xué)習(xí)模型的智能監(jiān)控設(shè)備。這些攝像機不僅能夠捕捉視頻畫面,還能實時分析和處理所拍攝的內(nèi)容,從而實現(xiàn)對特定對象、場景或行
    的頭像 發(fā)表于 11-08 10:38 ?309次閱讀
    AI<b class='flag-5'>圖像識別</b>攝像機

    GPU深度學(xué)習(xí)應(yīng)用案例

    GPU在深度學(xué)習(xí)中的應(yīng)用廣泛且重要,以下是一些GPU深度學(xué)習(xí)應(yīng)用案例: 一、圖像識別 圖像識別
    的頭像 發(fā)表于 10-27 11:13 ?440次閱讀

    AI大模型在圖像識別中的優(yōu)勢

    AI大模型在圖像識別中展現(xiàn)出了顯著的優(yōu)勢,這些優(yōu)勢主要源于其強大的計算能力、深度學(xué)習(xí)算法以及大規(guī)模的數(shù)據(jù)處理能力。以下是對AI大模型在圖像識別中優(yōu)勢的介紹: 一、高效性與準(zhǔn)確性 處理速
    的頭像 發(fā)表于 10-23 15:01 ?822次閱讀

    圖像識別算法有哪幾種

    計算機科學(xué)家開始嘗試使用計算機來處理和分析圖像數(shù)據(jù)。最初的圖像識別算法主要基于模板匹配和邊緣檢測等簡單方法,但隨著計算機硬件和算法的不斷發(fā)展,圖像識別算法逐漸變得更加復(fù)雜和高效。 20世紀(jì)80年代,隨著神經(jīng)網(wǎng)絡(luò)和機器
    的頭像 發(fā)表于 07-16 11:22 ?1213次閱讀

    圖像檢測和圖像識別的原理、方法及應(yīng)用場景

    圖像檢測和圖像識別是計算機視覺領(lǐng)域的兩個重要概念,它們在許多應(yīng)用場景中發(fā)揮著關(guān)鍵作用。 1. 定義 1.1 圖像檢測 圖像檢測(Object Detection)是指在
    的頭像 發(fā)表于 07-16 11:19 ?4671次閱讀

    圖像識別算法都有哪些方法

    圖像識別算法是計算機視覺領(lǐng)域的核心任務(wù)之一,它涉及到從圖像中提取特征并進行分類、識別和分析的過程。隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,
    的頭像 發(fā)表于 07-16 11:14 ?5811次閱讀

    圖像識別算法的提升有哪些

    引言 圖像識別是計算機視覺領(lǐng)域的核心任務(wù)之一,旨在使計算機能夠自動地識別和理解圖像中的內(nèi)容。隨著計算機硬件的發(fā)展和深度學(xué)習(xí)技術(shù)的突破,
    的頭像 發(fā)表于 07-16 11:12 ?690次閱讀

    圖像識別算法的優(yōu)缺點有哪些

    圖像識別算法可以快速地處理大量圖像數(shù)據(jù),提高工作效率。與傳統(tǒng)的人工識別方法相比,圖像識別算法可以在短時間內(nèi)完成對大量圖像的分析和
    的頭像 發(fā)表于 07-16 11:09 ?1789次閱讀

    圖像識別算法的核心技術(shù)是什么

    圖像識別算法是計算機視覺領(lǐng)域的一個重要研究方向,其目標(biāo)是使計算機能夠像人類一樣理解和識別圖像中的內(nèi)容。圖像識別算法的核心技術(shù)包括以下幾個方面: 特征提取 特征提取是
    的頭像 發(fā)表于 07-16 11:02 ?693次閱讀

    圖像識別技術(shù)的原理是什么

    圖像識別技術(shù)是一種利用計算機視覺和機器學(xué)習(xí)技術(shù)對圖像進行分析和理解的技術(shù)。它可以幫助計算機識別和理解圖像中的對象、場景和活動。
    的頭像 發(fā)表于 07-16 10:46 ?1218次閱讀

    圖像識別屬于人工智能嗎

    屬于。圖像識別是人工智能(Artificial Intelligence, AI)領(lǐng)域的一個重要分支。 一、圖像識別概述 1.1 定義 圖像識別是指利用計算機技術(shù)對圖像中的內(nèi)容進行分析
    的頭像 發(fā)表于 07-16 10:44 ?1222次閱讀

    opencv圖像識別有什么算法

    OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學(xué)習(xí)軟件,提供了大量的圖像處理和計算機視覺相關(guān)的算法。以下是一些常見
    的頭像 發(fā)表于 07-16 10:40 ?1138次閱讀

    如何利用CNN實現(xiàn)圖像識別

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)是深度學(xué)習(xí)領(lǐng)域中一種特別適用于圖像識別任務(wù)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。它通過模擬人類視覺系統(tǒng)的處理方式,利用卷積、池化等操作,自動提取圖像中的特征,進而實現(xiàn)高效的
    的頭像 發(fā)表于 07-03 16:16 ?1462次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)在圖像識別中的應(yīng)用

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNNs)是一種深度學(xué)習(xí)模型,廣泛應(yīng)用于圖像識別、視頻分析、自然語言處理等領(lǐng)域。 1. 卷積神經(jīng)網(wǎng)絡(luò)的基本原理 1.1
    的頭像 發(fā)表于 07-02 14:28 ?1219次閱讀

    圖像識別技術(shù)原理 圖像識別技術(shù)的應(yīng)用領(lǐng)域

    圖像識別技術(shù)是一種通過計算機對圖像進行分析和理解的技術(shù)。它借助計算機視覺、模式識別、人工智能等相關(guān)技術(shù),通過對圖像進行特征提取和匹配,找出圖像
    的頭像 發(fā)表于 02-02 11:01 ?2621次閱讀