目录
1.什么是 Hawkeye 库
2.Hawkeye 支持的模型及方法
3.安装 Hawkeye
4.使用 Hawkeye 训练模型
首页 科技周边 人工智能 基于PyTorch、易上手,细粒度图像识别深度学习工具库Hawkeye开源

基于PyTorch、易上手,细粒度图像识别深度学习工具库Hawkeye开源

Apr 12, 2023 pm 08:43 PM
开源 深度学习

细粒度图像识别 [1] 是视觉感知学习的重要研究课题,在智能新经济和工业互联网等方面具有巨大应用价值,且在诸多现实场景已有广泛应用…… 鉴于当前领域内尚缺乏该方面的深度学习开源工具库,南京理工大学魏秀参教授团队用时近一年时间,开发、打磨、完成了 Hawkeye——细粒度图像识别深度学习开源工具库,供相关领域研究人员和工程师参考使用。本文是对 Hawkeye 的详细介绍。

1.什么是 Hawkeye 库

Hawkeye 是一个基于 PyTorch 的细粒度图像识别深度学习工具库,专为相关领域研究人员和工程师设计。目前,Hawkeye 包含多种代表性范式的细粒度识别方法,包括 “基于深度滤波器”、“基于注意力机制”、“基于高阶特征交互”、“基于特殊损失函数”、“基于网络数据” 以及其他方法。

Hawkeye 项目代码风格良好,结构清晰易读,可拓展性较强。对于刚接触细粒度图像识别领域的相关人员而言,Hawkeye 较易上手,便于其理解细粒度图像识别的主要流程和代表性方法,同时也方便在本工具库上快速实现自己的算法。此外,我们还给出了库中各模型的训练示例代码,自研方法也可按照示例快速适配并添加至 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)

基于特殊损失函数

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

基于网络数据

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.gitcd Hawkeye

准备数据集

我们提供了 8 个常用的细粒度识别数据集及最新的下载链接:

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

首先,下载一个数据集(以 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 个数据集的 meta-data 文件,能够匹配库中的 FGDataset 方便地加载训练集和测试集,训练集和测试集为各个数据集官方提供的划分。使用不同数据集时,只需在实验的 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
登录后复制

实验的参数都在相应的 yaml 文件中,可读性高、便于修改,如:

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​​
登录后复制

实验的主程序 Examples/APINet.py 中的训练器 APINetTrainer 继承自 Trainer,不需要再写复杂的训练流程、logger、模型保存、配置加载等代码,只用按需修改部分模块即可。我们也提供了训练阶段的多个 hook 钩子,可以满足一些方法特别的实现方式。

日志文件、模型权重文件、训练使用的训练代码以及当时的配置文件都会保存在实验输出目录 log_dir 中,备份配置和训练代码便于日后对不同实验进行对比。

更多详细示例可参考项目链接中的具体信息:https://github.com/Hawkeye-FineGrained/Hawkeye

以上是基于PyTorch、易上手,细粒度图像识别深度学习工具库Hawkeye开源的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

十个推荐开源免费文本标注工具 十个推荐开源免费文本标注工具 Mar 26, 2024 pm 08:20 PM

文本标注工作是将标签或标记与文本中特定内容相对应的工作。其主要目的是为文本提供额外的信息,以便进行更深入的分析和处理,尤其是在人工智能领域。文本标注对于人工智能应用中的监督机器学习任务至关重要。用于训练AI模型,有助更准确地理解自然语言文本信息,提高文本分类、情感分析和语言翻译等任务的性能。通过文本标注,我们可以教AI模型识别文本中的实体、理解上下文,并在出现新的类似数据时做出准确的预测。本文主要推荐一些较好的开源文本标注工具。1.LabelStudiohttps://github.com/Hu

15个值得推荐的开源免费图像标注工具 15个值得推荐的开源免费图像标注工具 Mar 28, 2024 pm 01:21 PM

图像标注是将标签或描述性信息与图像相关联的过程,以赋予图像内容更深层次的含义和解释。这一过程对于机器学习至关重要,它有助于训练视觉模型以更准确地识别图像中的各个元素。通过为图像添加标注,使得计算机能够理解图像背后的语义和上下文,从而提高对图像内容的理解和分析能力。图像标注的应用范围广泛,涵盖了许多领域,如计算机视觉、自然语言处理和图视觉模型具有广泛的应用领域,例如,辅助车辆识别道路上的障碍物,帮助疾病的检测和诊断通过医学图像识别。本文主要推荐一些较好的开源免费的图像标注工具。1.Makesens

超越ORB-SLAM3!SL-SLAM:低光、严重抖动和弱纹理场景全搞定 超越ORB-SLAM3!SL-SLAM:低光、严重抖动和弱纹理场景全搞定 May 30, 2024 am 09:35 AM

写在前面今天我们探讨下深度学习技术如何改善在复杂环境中基于视觉的SLAM(同时定位与地图构建)性能。通过将深度特征提取和深度匹配方法相结合,这里介绍了一种多功能的混合视觉SLAM系统,旨在提高在诸如低光条件、动态光照、弱纹理区域和严重抖动等挑战性场景中的适应性。我们的系统支持多种模式,包括拓展单目、立体、单目-惯性以及立体-惯性配置。除此之外,还分析了如何将视觉SLAM与深度学习方法相结合,以启发其他研究。通过在公共数据集和自采样数据上的广泛实验,展示了SL-SLAM在定位精度和跟踪鲁棒性方面优

推荐:优秀JS开源人脸检测识别项目 推荐:优秀JS开源人脸检测识别项目 Apr 03, 2024 am 11:55 AM

人脸检测识别技术已经是一个比较成熟且应用广泛的技术。而目前最为广泛的互联网应用语言非JS莫属,在Web前端实现人脸检测识别相比后端的人脸识别有优势也有弱势。优势包括减少网络交互、实时识别,大大缩短了用户等待时间,提高了用户体验;弱势是:受到模型大小限制,其中准确率也有限。如何在web端使用js实现人脸检测呢?为了实现Web端人脸识别,需要熟悉相关的编程语言和技术,如JavaScript、HTML、CSS、WebRTC等。同时还需要掌握相关的计算机视觉和人工智能技术。值得注意的是,由于Web端的计

阿里7B多模态文档理解大模型拿下新SOTA 阿里7B多模态文档理解大模型拿下新SOTA Apr 02, 2024 am 11:31 AM

多模态文档理解能力新SOTA!阿里mPLUG团队发布最新开源工作mPLUG-DocOwl1.5,针对高分辨率图片文字识别、通用文档结构理解、指令遵循、外部知识引入四大挑战,提出了一系列解决方案。话不多说,先来看效果。复杂结构的图表一键识别转换为Markdown格式:不同样式的图表都可以:更细节的文字识别和定位也能轻松搞定:还能对文档理解给出详细解释:要知道,“文档理解”目前是大语言模型实现落地的一个重要场景,市面上有很多辅助文档阅读的产品,有的主要通过OCR系统进行文字识别,配合LLM进行文字理

一文搞懂:AI、机器学习与深度学习的联系与区别 一文搞懂:AI、机器学习与深度学习的联系与区别 Mar 02, 2024 am 11:19 AM

在当今科技日新月异的浪潮中,人工智能(ArtificialIntelligence,AI)、机器学习(MachineLearning,ML)与深度学习(DeepLearning,DL)如同璀璨星辰,引领着信息技术的新浪潮。这三个词汇频繁出现在各种前沿讨论和实际应用中,但对于许多初涉此领域的探索者来说,它们的具体含义及相互之间的内在联系可能仍笼罩着一层神秘面纱。那让我们先来看看这张图。可以看出,深度学习、机器学习和人工智能之间存在着紧密的关联和递进关系。深度学习是机器学习的一个特定领域,而机器学习

超强!深度学习Top10算法! 超强!深度学习Top10算法! Mar 15, 2024 pm 03:46 PM

自2006年深度学习概念被提出以来,20年快过去了,深度学习作为人工智能领域的一场革命,已经催生了许多具有影响力的算法。那么,你所认为深度学习的top10算法有哪些呢?以下是我心目中深度学习的顶尖算法,它们在创新性、应用价值和影响力方面都占据重要地位。1、深度神经网络(DNN)背景:深度神经网络(DNN)也叫多层感知机,是最普遍的深度学习算法,发明之初由于算力瓶颈而饱受质疑,直到近些年算力、数据的爆发才迎来突破。DNN是一种神经网络模型,它包含多个隐藏层。在该模型中,每一层将输入传递给下一层,并

单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源 单卡跑Llama 70B快过双卡,微软硬生生把FP6搞到了A100里 | 开源 Apr 29, 2024 pm 04:55 PM

FP8和更低的浮点数量化精度,不再是H100的“专利”了!老黄想让大家用INT8/INT4,微软DeepSpeed团队在没有英伟达官方支持的条件下,硬生生在A100上跑起FP6。测试结果表明,新方法TC-FPx在A100上的FP6量化,速度接近甚至偶尔超过INT4,而且拥有比后者更高的精度。在此基础之上,还有端到端的大模型支持,目前已经开源并集成到了DeepSpeed等深度学习推理框架中。这一成果对大模型的加速效果也是立竿见影——在这种框架下用单卡跑Llama,吞吐量比双卡还要高2.65倍。一名

See all articles