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

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

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

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

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

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

目錄

1. 什么是 Hawkeye 庫

2. Hawkeye 支持的模型及方法

3. 安裝 Hawkeye

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

1. 什么是 Hawkeye 庫

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

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

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

2. Hawkeye 支持的模型及方法

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

基于深度濾波器

S3N (ICCV 2019)

Interp-Parts (CVPR 2020)

ProtoTree (CVPR 2021)

基于注意力機(jī)制

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ù)集

首先,下載一個(gè)數(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 個(gè)數(shù)據(jù)集的 meta-data 文件,能夠匹配庫中的 FGDataset 方便地加載訓(xùn)練集和測(cè)試集,訓(xùn)練集和測(cè)試集為各個(gè)數(shù)據(jù)集官方提供的劃分。使用不同數(shù)據(jù)集時(shí),只需在實(shí)驗(yàn)的 config 文件中修改 dataset 配置即可,方便切換。

在實(shí)驗(yàn)的 config 文件中修改 dataset 配置,示例如下:

dataset:

name: cub

root_dir: data/bird/CUB_200_2011/images

meta_dir: metadata/cub

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

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

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

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

experiment:
name: API_res101 2        # 實(shí)驗(yàn)名稱
  log_dir: results/APINet   # 實(shí)驗(yàn)日志、結(jié)果等的輸出目錄
  seed: 42                  # 可以選擇固定的隨機(jī)數(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          # 每個(gè)類別的樣本數(shù)
  batch_size: 24        # 測(cè)試時(shí)的批樣本數(shù)
  num_workers: 4      # Dataloader 加載數(shù)據(jù)集的線程數(shù)
  transformer:        # 數(shù)據(jù)增強(qiáng)的參數(shù)配置
    image_size: 224      # 圖像輸入模型的尺寸 224x224
    resize_size: 256    # 圖像增強(qiáng)前縮放的尺寸 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 列表,[] 時(shí)使用 CPU
  epoch: 100        # 訓(xùn)練的 epoch 數(shù)量
  save_frequence: 10    # 自動(dòng)保存模型的頻率
#  val_first: False      # 可選是否在訓(xùn)練前進(jìn)行一次模型精度的測(cè)試
  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`

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

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

審核編輯:郭婷

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

    關(guān)注

    30

    文章

    4701

    瀏覽量

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

    關(guān)注

    73

    文章

    5449

    瀏覽量

    120812

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    圖像識(shí)別算法有哪幾種

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

    圖像檢測(cè)和圖像識(shí)別的原理、方法及應(yīng)用場(chǎng)景

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

    圖像識(shí)別算法都有哪些方法

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

    圖像識(shí)別算法的提升有哪些

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

    圖像識(shí)別算法的優(yōu)缺點(diǎn)有哪些

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

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

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

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

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

    圖像識(shí)別屬于人工智能嗎

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

    opencv圖像識(shí)別有什么算法

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

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

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

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

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

    基于TensorFlow和Keras的圖像識(shí)別

    TensorFlow和Keras最常見的用途之一是圖像識(shí)別/分類。通過本文,您將了解如何使用Keras達(dá)到這一目的。定義如果您不了解圖像識(shí)別的基本概念,將很難完全理解本文的內(nèi)容。因此在正文開始之前
    的頭像 發(fā)表于 01-13 08:27 ?734次閱讀
    基于TensorFlow和Keras的<b class='flag-5'>圖像識(shí)別</b>

    如何使用Python進(jìn)行圖像識(shí)別的自動(dòng)學(xué)習(xí)自動(dòng)訓(xùn)練?

    如何使用Python進(jìn)行圖像識(shí)別的自動(dòng)學(xué)習(xí)自動(dòng)訓(xùn)練? 使用Python進(jìn)行圖像識(shí)別的自動(dòng)學(xué)習(xí)和自動(dòng)訓(xùn)練需要掌握一些重要的概念和技術(shù)。在本文中,我們將介紹如何使用Python中的一些常用
    的頭像 發(fā)表于 01-12 16:06 ?505次閱讀