>기술 주변기기 >일체 포함 >PyTorch를 기반으로 사용하기 쉽고 세밀한 이미지 인식 딥 러닝 도구 라이브러리 Hawkeye는 오픈 소스입니다.

PyTorch를 기반으로 사용하기 쉽고 세밀한 이미지 인식 딥 러닝 도구 라이브러리 Hawkeye는 오픈 소스입니다.

WBOY
WBOY앞으로
2023-04-12 20:43:031658검색

세밀한 이미지 인식[1]은 시지각 학습의 중요한 연구 주제로 지능형 신경제와 산업 인터넷 분야에서 활용 가치가 뛰어나며 많은 실제 시나리오에서 널리 사용되고 있습니다. 현재 분야에서는 이러한 측면이 부족합니다. 딥 러닝을 위한 딥 러닝 오픈 소스 도구 라이브러리입니다. 난징 과학 기술 대학의 Wei Xiushen 교수 팀은 딥 러닝 오픈 소스 도구인 Hawkeye를 개발, 연마 및 완성하는 데 거의 1년을 보냈습니다. 관련 분야의 연구자 및 엔지니어가 참고할 수 있는 세밀한 이미지 인식을 위한 라이브러리입니다. 이 글은 Hawkeye에 대한 자세한 소개입니다.

1. Hawkeye 라이브러리란 무엇인가요?

Hawkeye는 관련 분야의 연구자 및 엔지니어를 위해 특별히 설계된 PyTorch 기반의 세분화된 이미지 인식 딥러닝 도구 라이브러리입니다. 현재 Hawkeye에는 "심도 필터 기반", "주의 메커니즘 기반", "고차 기능 상호 작용 기반", "특수 손실 함수 기반", "" 등 다양한 대표적인 패러다임의 세분화된 인식 방법이 포함되어 있습니다. 네트워크 데이터 기반" 및 기타 방법을 사용합니다.

Hawkeye 프로젝트 코드 스타일이 좋고, 구조가 명확하고 읽기 쉽고, 확장성이 강합니다. 세밀한 이미지 인식 분야를 처음 접하는 사람들도 Hawkeye를 사용하면 시작하기가 더 쉬워서 세밀한 이미지 인식의 주요 프로세스와 대표적인 방법을 더 쉽게 이해할 수 있으며, 이 도구 라이브러리에서 자체 알고리즘을 신속하게 구현합니다. 또한 라이브러리의 각 모델에 대한 훈련 예제 코드도 제공합니다. 자체 개발 방법도 예제에 따라 빠르게 조정되고 Hawkeye에 추가될 수 있습니다.

Hawkeye 오픈 소스 라이브러리 링크: https://github.com/Hawkeye-FineGrained/Hawkeye

2. Hawkeye에서 지원하는 모델 및 방법

Hawkeye는 현재 Fine에서 주요 학습 패러다임의 총 16개 모델 및 방법을 지원합니다. -grained 이미지 인식, 세부 사항은 다음과 같습니다:

Based on Depth Filter

  • S3N (ICCV 2019)
  • Interp-Parts (CVPR 2020)
  • ProtoTree (CVPR 2021)

Base d 주의 메커니즘

  • OSME+ MAMC (ECCV 2018)
  • MGE-CNN (ICCV 2019)
  • APCNN (IEEE TIP 2021)

고차 기능 상호 작용 기반

  • BCNN (ICCV 2015)
  • CBCNN(CVPR 2016)
  • 빠른 MPN-COV(CVPR 2018)

특수 손실 함수 기반

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

네트워크 데이터 기반

Peer-Learning(ICCV 2021)

다른 방법

NTS-Net(ECCV 2018)

CrossX(ICCV 2019)

DCL(CVPR 20 19)

3. 설치 Hawkeye

종속성 설치

Conda 또는 pip 설치 관련 종속성 사용:

  • Python 3.8
  • PyTorch 1.11.0 이상
  • torchvison 0.12.0 이상
  • 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
  • 스탠포드 독: http://vision.stanford.edu/aditya86/ImageNetDogs/images.tar
  • 스탠포드 자동차: http://ai.stanford .edu/~jkrause/car196/car_ims.tgz
  • FGVC 항공기: 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-항공기: 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개 데이터 세트에 대한 메타데이터 파일을 제공합니다. 이는 라이브러리의 FGDataset와 일치하여 훈련 세트를 쉽게 로드하고 테스트할 수 있습니다. 훈련 세트와 테스트 세트는 각 데이터 세트별로 공식적으로 제공됩니다. 다른 데이터 세트를 사용하는 경우 전환을 용이하게 하려면 실험의 구성 파일에서 데이터 세트 구성을 수정하기만 하면 됩니다.

실험의 구성 파일에서 데이터 세트 구성을 수정합니다. 예는 다음과 같습니다.

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​​

기본 프로그램의 트레이너 APINetTrainer 예/ 실험의 APINet.py는 Trainer이므로 복잡한 학습 과정, 로거, 모델 저장, 구성 로딩 및 기타 코드를 작성할 필요가 없으며 필요에 따라 일부 모듈만 수정하면 됩니다. 또한 훈련 단계에서 일부 방법의 특수 구현을 충족할 수 있는 여러 후크를 제공합니다.

훈련에 사용된 로그 파일, 모델 가중치 파일, 훈련 코드, 구성 파일은 실험 출력 디렉터리 log_dir에 저장됩니다. 구성 및 훈련 코드를 백업하면 향후 다양한 실험을 쉽게 비교할 수 있습니다.

더 자세한 예시는 프로젝트 링크의 구체적인 정보를 참고해주세요: https://github.com/Hawkeye-FineGrained/Hawkeye

위 내용은 PyTorch를 기반으로 사용하기 쉽고 세밀한 이미지 인식 딥 러닝 도구 라이브러리 Hawkeye는 오픈 소스입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제