在ImageNet 1k数据集上训练yolov5m-cls分类模型

ImageNet 1k数据集简介

ImageNet是CV领域非常出名的数据集, 其中ISLVRC2012数据集是Large Scale Visual Recognition Challenge 2012所用的数据集,包括:

由于ISLVRC2012有1000类数据,所以很多论文把这个数据集叫做:ImageNet 1K。行业里面渐渐约定俗成用这个数据集来测试模型结构,或者从零开始训练一个全新的CNN主干网络(backbone)。

ImageNet的评价指标是固定的:top1 acc 和 top5 acc。基于ImageNet 1K训练的模型,很容易跟已发表的模型比较,看看性能是否有提高

下载并解压ImageNet 1k数据集

第一步,下载ILSVRC2012_img_test.tarILSVRC2012_img_val.tar

# parent
# ├── yolov5
# └── datasets
#     └── imagenet  ← downloads here

第二步,解压ImageNet 1k数据集:创建解压批处理文件:unpack_imagenet.sh

train=true
val=true
# Download/unzip train
if [ "$train" == "true" ]; then
  #wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_train.tar # download 138G, 1281167 images
  mkdir train && mv ILSVRC2012_img_train.tar train/ && cd train
  tar -xf ILSVRC2012_img_train.tar && rm -f ILSVRC2012_img_train.tar
  find . -name "*.tar" | while read NAME; do
    mkdir -p "${NAME%.tar}"
    tar -xf "${NAME}" -C "${NAME%.tar}"
    rm -f "${NAME}"
  done
  cd ..
fi

# Download/unzip val
if [ "$val" == "true" ]; then
  #wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_val.tar # download 6.3G, 50000 images
  mkdir val && mv ILSVRC2012_img_val.tar val/ && cd val && tar -xf ILSVRC2012_img_val.tar
  wget -qO- https://raw.githubusercontent.com/soumith/imagenetloader.torch/master/valprep.sh | bash # move into subdirs
fi

并在MINGW64中运行!

在ImageNet 1k数据集上训练yolov5m-cls分类模型

克隆YOLOv5并安装其依赖软件包:

git clone https://github.com/ultralytics/yolov5 # clone
cd yolov5
pip install -r requirements.txt # install

运行命令:

python classify/train.py --model yolov5m-cls.pt --data d:/datasets/imagenet --img 224 --batch-size 128 --workers 4

结果如下:

在训练环境: Windows11 + i7-13700k + DDR5 6400MHz + 3060 12G 下实测最佳稳定训练的参数为:--img 224 --batch-size 128 --workers 4

DDR5 高频内存 + PCIe 4.0的SSD,相对DDR4和HDD配置,对训练速度提升作用非常大

单机单卡在imagenet 1k数据集上训练yolov5m-cls模型,每轮(Epoch)耗时 36分钟, 90轮共计54小时,对比4卡 A100的训练时间10:06小时,预测8卡3060 12G训练在imagenet 1k数据集上分类模型时间要远低于4卡A100(该结论待找机器验证)


结论:感觉模型大了,例如,48.1M参数的YOLOv5x-cls模型,训练速度就比yolov5m-cls明显慢多了;大模型训练,不仅考虑显存大小,也要考虑显卡的CUDA核心数量。基于ImageNet 1k数据集在RTX3060上训练YOLOv5m-cls 20个Epoch,用时35.081小时,如下图所示:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章