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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

細粒度圖像識別深度學習開源工具庫Hawkeye解析

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

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

目錄

1. 什么是 Hawkeye 庫

2. Hawkeye 支持的模型及方法

3. 安裝 Hawkeye

4. 使用 Hawkeye 訓練模型

1. 什么是 Hawkeye 庫

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

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

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

2. Hawkeye 支持的模型及方法

Hawkeye 目前支持細粒度圖像識別中主要學習范式的共 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)絡數(shù)據(jù)

Peer-Learning (ICCV 2021)

其他方法

NTS-Net (ECCV 2018)

CrossX (ICCV 2019)

DCL (CVPR 2019)

3. 安裝 Hawkeye

安裝依賴

使用 conda 或者 pip 安裝相關依賴:

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

準備數(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 方便地加載訓練集和測試集,訓練集和測試集為各個數(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 訓練模型

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

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

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

experiment:
name: API_res101 2        # 實驗名稱
  log_dir: results/APINet   # 實驗日志、結果等的輸出目錄
  seed: 42                  # 可以選擇固定的隨機數(shù)種子
#  resume: results/APINet/API_res101 2/checkpoint_epoch_19.pth    # 可以從訓練中斷的 checkpoint 中恢復訓練
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     # 可以加載訓練過的模型參數(shù)
train:
  cuda: [4]          # 使用的 GPU 設備 ID 列表,[] 時使用 CPU
  epoch: 100        # 訓練的 epoch 數(shù)量
  save_frequence: 10    # 自動保存模型的頻率
#  val_first: False      # 可選是否在訓練前進行一次模型精度的測試
  optimizer:
    name: Adam        # 使用 Adam 優(yōu)化器
    lr: 0.0001        # 學習率為 0.0001
    weight_decay: 0.00000002
  scheduler:
    # 本例使用自定義組合的 scheduler,由 warmup 和余弦退火學習率組合而成,見 `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 中的訓練器 APINetTrainer 繼承自 Trainer,不需要再寫復雜的訓練流程、logger、模型保存、配置加載等代碼,只用按需修改部分模塊即可。我們也提供了訓練階段的多個 hook 鉤子,可以滿足一些方法特別的實現(xiàn)方式。

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

審核編輯:郭婷

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

    關注

    30

    文章

    4726

    瀏覽量

    68248
  • 深度學習
    +關注

    關注

    73

    文章

    5471

    瀏覽量

    120903

原文標題:基于PyTorch、易上手,細粒度圖像識別深度學習工具庫Hawkeye開源

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

收藏 人收藏

    評論

    相關推薦

    AI圖像識別攝像機

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

    GPU深度學習應用案例

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

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

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

    圖像識別算法有哪幾種

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

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

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

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

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

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

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

    圖像識別算法的核心技術是什么

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

    圖像識別技術的原理是什么

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

    圖像識別屬于人工智能嗎

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

    opencv圖像識別有什么算法

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

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

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

    圖像識別技術原理 圖像識別技術的應用領域

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

    基于TensorFlow和Keras的圖像識別

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

    如何使用Python進行圖像識別的自動學習自動訓練?

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