0

0

【悉读经典】ConvNext 在PaddleClas、Seg、Det中的应用

P粉084495128

P粉084495128

发布时间:2025-07-17 09:51:18

|

483人浏览过

|

来源于php中文网

原创

本项目基于ConvNeXt论文《A ConvNet for the 2020s》的核心思想,探索了现代卷积网络的优化路径。通过系统性地改进ResNet50架构(包括训练策略调整、宏观设计优化、ResNeXt化、倒置瓶颈结构、大卷积核应用等7大模块),在ImageNet上将准确率从76.1%提升至82.0%。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

【悉读经典】convnext 在paddleclas、seg、det中的应用 - php中文网

项目背景

本项目首先摘抄了ConvNeXt论文的观点内容


然后通过代码实现了:

  • ConvNeXt嵌入到PaddleClas、PaddleSeg、PaddleDetection等工具包中,
  • 加载预训练参数
  • 快速进行训练少量轮数
  • 推理得到预测结果

但并未进行超参优化,感兴趣的同学可以自行探索

《A ConvNet for the 2020s》

time:

release in 2020.01

read in 2022.03.27

ref:

pdf; url; code

ConvNeXt:探索CNN网络的极限潜力 ——AiStudio

key words:

Backbone;图像分类;  卷积

Modernizing a ConvNet: a Roadmap

重新以resnet50(flops与ResNet相同,且结构较为简单)为基准( 76.1% ),以swin的训练技巧训练resnet50,作为baseline,进行网络训练

并且逐步加入结构变化与tricks,以接近transformer,包括

  1. macro design,
  2. ResNeXt,
  3. inverted bottleneck,
  4. large kernel size,
  5. various layer-wise micro designs

Training Techniques

视觉transformer不仅提出了新架构,也提出了新的训练技巧,例如AdamW

本文使用的是近似于DeiT的训练策略,仅使用这些训练策略,就可以在resnet50上提升2.7精度(78.8%)√:

  • 300epoch
  • adamw
  • mixup
  • cutmix
  • randaugment
  • random erasing
  • label smoothing
  • Stochastic Depth

Macro Design

Changing stage compute ratio

借鉴Swim-T中1 1 3 1的计算比,

本文将resnet50中的3 4 6 3 计算比调整为 3 3 9 3,精度(79.4%)√:

Changing stem to “Patchify”

ResNet的stem部分使用的是 2步长卷积大卷积核+池化,将输入图像4倍下采样

视觉transformer中,使用更碎片化/patchify的策略,使用大卷积核-14或16size及不重叠卷积,swim使用了相似的策略,但是将patch size设置为4

文本使用4 * 4的4步长卷积替换stem部分,精度(79.5%)√

ResNeXt-ify

ResNeXt使用了分组卷积,降了了FLOPs,因此可以通过拓宽网络的形式来弥补网络的性能损失

深度卷积/depthwise类似于自关注的加权机制,每个通道上进行操作,只在空间维度进行信息混合;使用深度卷积+1 * 1卷积,可以将空间信息混合、通道信息混合进行分离,这种属性在视觉transformer中也有出现,它们的操作要么值对空间维度进行混合,要么只对通道维度进行混合,而不是同时对两者进行操作。

本文使用深度卷积,有效降低了FLOPs,但为了Swin-T一致,将网络通道数增加到96,精度(80.5%)√

Inverted Bottleneck

transformer的一大重要设计是,将瓶颈/bottleneck进行倒置,即:MLP中的隐藏维度是输入维度的4倍

【悉读经典】ConvNext 在PaddleClas、Seg、Det中的应用 - php中文网

如上图,swin中的通道96-384-96,resnet中通道64-64-256,ConvNeXt中通道96-384-96

本文使用瓶颈倒置后,FLOPs降低,主要源于shortcut的1 * 1卷积参数减少,同时精度(80.6%)√

但是在大模型, ResNet-200/ Swin-B的比较中,该结构应用将精度从81.9%提升到82.6%

Large Kernel Sizes

transformer的一大特点在于,非局部自关注,使得每层可以有一个全局感受野。

swin使用的自关注窗口尺寸至少为7* 7,显著大于ResNe(X)t的 3 * 3

Moving up depthwise conv layer

参考transformer中,将MSA模块放在MLP模块之前,本文也探索将深度卷积放置在2层1 * 1卷积之前,如图所示,分别为ResNeXt模块、瓶颈倒置模块、深度卷积提前模块

【悉读经典】ConvNext 在PaddleClas、Seg、Det中的应用 - php中文网

这一操作也显著降低FLOPs,但精度(79.9%)√

Increasing the kernel size

在深度卷积提前模块的基础上

本文尝试3 5 7 9 11多种尺寸卷积核,当尺度达到7时,精度饱和,因此选用7 * 7卷积,精度(80.6%)√

Micro Design

**Replacing ReLU with GELU **

GELU被认为是ReLU的平滑变体,

Flash CS3动画制作基础教程教案 中文WORD版
Flash CS3动画制作基础教程教案 中文WORD版

Flash是Adobe公司推出的一款经典、优秀的矢量动画编辑软件,利用该软件制作的动画尺寸要比位图动画文件(如GLF动画)尺寸小的多,用户不但可以在动画中加入声音、视频和位图图像,还可以制作交互式的影片或者具有完备功能的网站。该软件对动画制作者的计算机知识要求不高,简单易学,效果流畅生动,对于动画制作初学者来说是非常适合的一款软件。在学习制作动画之前,通过本章的学习,读者应熟悉Flash动画的特点,Flash CS3的界面组成元素,动画制作的步骤,并通过制作实例了解Flash一般步骤。 有需要的朋友可以下

下载

本文也使用了GELU,精度(80.6%)√

Fewer activation functions.

transformer中使用了k、q、v嵌入,映射,双fc的MLP,但只在MLP中使用了1次激活

本文也只在1 * 1卷积中使用1次激活,精度(81.3%)√

Fewer normalization layers

transformer中的normalization层也很少

本文尝试保留2个nor层,精度并无提升,当只保留1个nor层时,精度(81.4%)√

【悉读经典】ConvNext 在PaddleClas、Seg、Det中的应用 - php中文网

Substituting BN with LN

BN层是卷积网络加速收敛、减少过拟合的重要组件,但是也存在一些问题

在原始ResNet中使用LN替换BN,效果并不理想

本文在前述改进下使用LN替换BN,有略微提升,精度(81.5%)√

Separate downsampling layers

ResNet中,在stage起始阶段使用3 * 3的2步长卷积下采样

swin中,将这个过程分离到每个stage之间,

本文采用swin策略,使用2 * 2的2步长卷积下采样,并进一步增加LN以提高训练稳定性(LN位置:每次下采样之后、stem之后,最终全局平均池化之前),精度(82.0%)√

改进历程汇总

【悉读经典】ConvNext 在PaddleClas、Seg、Det中的应用 - php中文网

实验:

本文提出的ConvNeXt对比通道架构的Swin处理速度略快,精度高

【悉读经典】ConvNext 在PaddleClas、Seg、Det中的应用 - php中文网

【悉读经典】ConvNext 在PaddleClas、Seg、Det中的应用 - php中文网

此外还附有ConvNeXt与ViT的比较

ConvNeXt与Swin在下游任务的比较

附录中有参数设置等

【conclusion】

个人十分喜欢这篇论文,个人也曾经尝试过进行unet相关结构的替换改造,但是由于跟人水平有限,最后一团糟;

这篇论文的逻辑非常清晰,并且对每个修改都有放出效果,比赛魔改模型可以参考改论文

为了进一步追求准确率,可以考虑对于depth conv、move d.conv的取舍,

这篇文章证明了卷积网络的精度不止于目前的水平,绝对可以更进一步

在PaddleClas中使用ConvNeXt进行图像分类

——以“猫十二分类体验赛”为例

环境准备

In [1]
# pip升级!pip install --user --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple# 下载仓库,并切换到2.3版本%cd /home/aistudio/
!git clone https://gitee.com/paddlepaddle/PaddleClas.git #该行仅在初次运行项目时运行即可,后续不需要运行该行命令%cd /home/aistudio/PaddleClas
!git checkout -b release/2.3 origin/release/2.3# 安装依赖环境!pip install -r requirements.txt
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pip in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (22.0.4)
/home/aistudio
正克隆到 'PaddleClas'...
remote: Enumerating objects: 25293, done.
remote: Counting objects: 100% (5176/5176), done.
remote: Compressing objects: 100% (1840/1840), done.
remote: Total 25293 (delta 3636), reused 4691 (delta 3319), pack-reused 20117
接收对象中: 100% (25293/25293), 155.60 MiB | 22.57 MiB/s, 完成.
处理 delta 中: 100% (17421/17421), 完成.
检查连接... 完成。
/home/aistudio/PaddleClas
fatal: 一个分支名 'release/2.3' 已经存在。
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: prettytable in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 1)) (0.7.2)
Requirement already satisfied: ujson in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 2)) (5.1.0)
Collecting opencv-python==4.4.0.46
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/1b/2d/62eba161d3d713e1720504de1c25d439b02c85159804d9ecead10be5d87e/opencv_python-4.4.0.46-cp37-cp37m-manylinux2014_x86_64.whl (49.5 MB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 49.5/49.5 MB 2.1 MB/s eta 0:00:0000:0100:01
Requirement already satisfied: pillow in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 4)) (8.2.0)
Requirement already satisfied: tqdm in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 5)) (4.27.0)
Requirement already satisfied: PyYAML in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 6)) (5.1.2)
Requirement already satisfied: visualdl>=2.2.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 7)) (2.2.3)
Requirement already satisfied: scipy in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 8)) (1.6.3)
Collecting scikit-learn==0.23.2
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f4/cb/64623369f348e9bfb29ff898a57ac7c91ed4921f228e9726546614d63ccb/scikit_learn-0.23.2-cp37-cp37m-manylinux1_x86_64.whl (6.8 MB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.8/6.8 MB 2.5 MB/s eta 0:00:0000:0100:01
Requirement already satisfied: gast==0.3.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 10)) (0.3.3)
Collecting faiss-cpu==1.7.1.post2
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/4c/d6/072a9d18430b8c68c99ffb49fe14fbf89c62f71dcd4f5f692c7691447a14/faiss_cpu-1.7.1.post2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.4 MB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.4/8.4 MB 3.0 MB/s eta 0:00:0000:0100:01
Requirement already satisfied: numpy>=1.14.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from opencv-python==4.4.0.46->-r requirements.txt (line 3)) (1.19.5)
Requirement already satisfied: threadpoolctl>=2.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from scikit-learn==0.23.2->-r requirements.txt (line 9)) (2.1.0)
Requirement already satisfied: joblib>=0.11 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from scikit-learn==0.23.2->-r requirements.txt (line 9)) (0.14.1)
Requirement already satisfied: protobuf>=3.11.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.2.0->-r requirements.txt (line 7)) (3.14.0)
Requirement already satisfied: Flask-Babel>=1.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.2.0->-r requirements.txt (line 7)) (1.0.0)
Requirement already satisfied: six>=1.14.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.2.0->-r requirements.txt (line 7)) (1.16.0)
Requirement already satisfied: pandas in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.2.0->-r requirements.txt (line 7)) (1.1.5)
Requirement already satisfied: pre-commit in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.2.0->-r requirements.txt (line 7)) (1.21.0)
Requirement already satisfied: bce-python-sdk in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.2.0->-r requirements.txt (line 7)) (0.8.53)
Requirement already satisfied: shellcheck-py in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.2.0->-r requirements.txt (line 7)) (0.7.1.1)
Requirement already satisfied: flake8>=3.7.9 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.2.0->-r requirements.txt (line 7)) (4.0.1)
Requirement already satisfied: matplotlib in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.2.0->-r requirements.txt (line 7)) (2.2.3)
Requirement already satisfied: flask>=1.1.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.2.0->-r requirements.txt (line 7)) (1.1.1)
Requirement already satisfied: requests in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.2.0->-r requirements.txt (line 7)) (2.24.0)
Requirement already satisfied: pycodestyle<2.9.0,>=2.8.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8>=3.7.9->visualdl>=2.2.0->-r requirements.txt (line 7)) (2.8.0)
Requirement already satisfied: pyflakes<2.5.0,>=2.4.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8>=3.7.9->visualdl>=2.2.0->-r requirements.txt (line 7)) (2.4.0)
Requirement already satisfied: importlib-metadata<4.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8>=3.7.9->visualdl>=2.2.0->-r requirements.txt (line 7)) (4.2.0)
Requirement already satisfied: mccabe<0.7.0,>=0.6.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8>=3.7.9->visualdl>=2.2.0->-r requirements.txt (line 7)) (0.6.1)
Requirement already satisfied: click>=5.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.2.0->-r requirements.txt (line 7)) (7.0)
Requirement already satisfied: Werkzeug>=0.15 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.2.0->-r requirements.txt (line 7)) (0.16.0)
Requirement already satisfied: itsdangerous>=0.24 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.2.0->-r requirements.txt (line 7)) (1.1.0)
Requirement already satisfied: Jinja2>=2.10.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.2.0->-r requirements.txt (line 7)) (3.1.1)
Requirement already satisfied: pytz in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Flask-Babel>=1.0.0->visualdl>=2.2.0->-r requirements.txt (line 7)) (2022.1)
Requirement already satisfied: Babel>=2.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Flask-Babel>=1.0.0->visualdl>=2.2.0->-r requirements.txt (line 7)) (2.9.1)
Requirement already satisfied: future>=0.6.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from bce-python-sdk->visualdl>=2.2.0->-r requirements.txt (line 7)) (0.18.0)
Requirement already satisfied: pycryptodome>=3.8.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from bce-python-sdk->visualdl>=2.2.0->-r requirements.txt (line 7)) (3.9.9)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.2.0->-r requirements.txt (line 7)) (3.0.7)
Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.2.0->-r requirements.txt (line 7)) (2.8.2)
Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.2.0->-r requirements.txt (line 7)) (0.10.0)
Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.2.0->-r requirements.txt (line 7)) (1.1.0)
Requirement already satisfied: toml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.2.0->-r requirements.txt (line 7)) (0.10.0)
Requirement already satisfied: cfgv>=2.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.2.0->-r requirements.txt (line 7)) (2.0.1)
Requirement already satisfied: virtualenv>=15.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.2.0->-r requirements.txt (line 7)) (16.7.9)
Requirement already satisfied: nodeenv>=0.11.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.2.0->-r requirements.txt (line 7)) (1.3.4)
Requirement already satisfied: aspy.yaml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.2.0->-r requirements.txt (line 7)) (1.3.0)
Requirement already satisfied: identify>=1.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.2.0->-r requirements.txt (line 7)) (1.4.10)
Requirement already satisfied: idna<3,>=2.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.2.0->-r requirements.txt (line 7)) (2.10)
Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.2.0->-r requirements.txt (line 7)) (2021.10.8)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.2.0->-r requirements.txt (line 7)) (1.25.11)
Requirement already satisfied: chardet<4,>=3.0.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.2.0->-r requirements.txt (line 7)) (3.0.4)
Requirement already satisfied: typing-extensions>=3.6.4 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from importlib-metadata<4.3->flake8>=3.7.9->visualdl>=2.2.0->-r requirements.txt (line 7)) (4.1.1)
Requirement already satisfied: zipp>=0.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from importlib-metadata<4.3->flake8>=3.7.9->visualdl>=2.2.0->-r requirements.txt (line 7)) (3.7.0)
Requirement already satisfied: MarkupSafe>=2.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Jinja2>=2.10.1->flask>=1.1.1->visualdl>=2.2.0->-r requirements.txt (line 7)) (2.0.1)
Requirement already satisfied: setuptools in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib->visualdl>=2.2.0->-r requirements.txt (line 7)) (56.2.0)
Installing collected packages: faiss-cpu, opencv-python, scikit-learn
  Attempting uninstall: opencv-python
    Found existing installation: opencv-python 4.1.1.26
    Uninstalling opencv-python-4.1.1.26:
      Successfully uninstalled opencv-python-4.1.1.26
  Attempting uninstall: scikit-learn
    Found existing installation: scikit-learn 0.24.2
    Uninstalling scikit-learn-0.24.2:
      Successfully uninstalled scikit-learn-0.24.2
Successfully installed faiss-cpu-1.7.1.post2 opencv-python-4.4.0.46 scikit-learn-0.23.2

数据准备

In [2]
!unzip -oq /home/aistudio/data/data10954/cat_12_train.zip -d /home/aistudio/data/data10954/
!unzip -oq /home/aistudio/data/data10954/cat_12_test.zip -d /home/aistudio/data/data10954/

代码准备

In [3]
# 以下代码及配置,均基于PASSL中内容进行迁移
!cp /home/aistudio/work/class/convnext.yml /home/aistudio/PaddleClas/convnext.yml                                           # 配置文件
!cp /home/aistudio/work/class/convnext.py /home/aistudio/PaddleClas/ppcls/arch/backbone/legendary_models/convnext.py        # 网络结构代码
!cp /home/aistudio/work/class/__init__1.py /home/aistudio/PaddleClas/ppcls/arch/backbone/legendary_models/__init__.py       # 导入网络
!cp /home/aistudio/work/class/__init__2.py /home/aistudio/PaddleClas/ppcls/arch/backbone/__init__.py                        # 导入网络
!cp /home/aistudio/work/class/__init__3.py /home/aistudio/PaddleClas/ppcls/data/preprocess/__init__.py                      # 增加RandomResizedCrop算子
!cp /home/aistudio/work/class/imagenet_dataset.py  /home/aistudio/PaddleClas/ppcls/data/dataloader/imagenet_dataset.py      # 修改数据读取方法
!cp /home/aistudio/work/class/save_load.py /home/aistudio/PaddleClas/ppcls/utils/save_load.py                               # 修改参数加载方法
!cp /home/aistudio/work/class/engine.py /home/aistudio/PaddleClas/ppcls/engine/engine.py                                    # 修改推理输出过程,将推理结果以csv格式保存在/home/aistudio/result.csv下
!cp /home/aistudio/work/class/train_list.txt /home/aistudio/data/data10954/train_list.txt                                   # 去掉前160个样本,剩余2000个样本,去掉4个无法读取样本作为训练集
!cp /home/aistudio/work/class/val_list.txt /home/aistudio/data/data10954/val_list.txt                                       # 取前160个样本作为验证集,去掉1个无法读取样本

网络训练

In [4]
# 简单训练5 epoch!python /home/aistudio/PaddleClas/tools/train.py \
    -c /home/aistudio/PaddleClas/convnext.yml \
    -o Arch.class_num=12 \
    -o Global.epochs=5 \
    -o Optimizer.lr.epoch=5 \
    -o Optimizer.lr.step_each_epoch=32 \
    -o Optimizer.lr.warmup_epoch=1 \
    -o DataLoader.Train.sampler.batch_size=64 \
    -o DataLoader.Eval.sampler.batch_size=128
A new filed (epoch) detected!
[2022/03/31 18:04:25] root INFO: 
===========================================================
==        PaddleClas is powered by PaddlePaddle !        ==
===========================================================
==                                                       ==
==   For more info please go to the following website.   ==
==                                                       ==
==       https://github.com/PaddlePaddle/PaddleClas      ==
===========================================================

[2022/03/31 18:04:25] root INFO: Arch : 
[2022/03/31 18:04:25] root INFO:     class_num : 12
[2022/03/31 18:04:25] root INFO:     name : ConvNeXt_Tiny
[2022/03/31 18:04:25] root INFO: DataLoader : 
[2022/03/31 18:04:25] root INFO:     Eval : 
[2022/03/31 18:04:25] root INFO:         dataset : 
[2022/03/31 18:04:25] root INFO:             cls_label_path : /home/aistudio/data/data10954/val_list.txt
[2022/03/31 18:04:25] root INFO:             image_root : /home/aistudio/data/data10954/
[2022/03/31 18:04:25] root INFO:             name : ImageNetDataset
[2022/03/31 18:04:25] root INFO:             transform_ops : 
[2022/03/31 18:04:25] root INFO:                 DecodeImage : 
[2022/03/31 18:04:25] root INFO:                     channel_first : False
[2022/03/31 18:04:25] root INFO:                     to_rgb : True
[2022/03/31 18:04:25] root INFO:                 ResizeImage : 
[2022/03/31 18:04:25] root INFO:                     resize_short : 256
[2022/03/31 18:04:25] root INFO:                 CropImage : 
[2022/03/31 18:04:25] root INFO:                     size : 224
[2022/03/31 18:04:25] root INFO:                 NormalizeImage : 
[2022/03/31 18:04:25] root INFO:                     mean : [0.485, 0.456, 0.406]
[2022/03/31 18:04:25] root INFO:                     order : 
[2022/03/31 18:04:25] root INFO:                     scale : 1.0/255.0
[2022/03/31 18:04:25] root INFO:                     std : [0.229, 0.224, 0.225]
[2022/03/31 18:04:25] root INFO:         loader : 
[2022/03/31 18:04:25] root INFO:             num_workers : 4
[2022/03/31 18:04:25] root INFO:             use_shared_memory : True
[2022/03/31 18:04:25] root INFO:         sampler : 
[2022/03/31 18:04:25] root INFO:             batch_size : 128
[2022/03/31 18:04:25] root INFO:             drop_last : False
[2022/03/31 18:04:25] root INFO:             name : DistributedBatchSampler
[2022/03/31 18:04:25] root INFO:             shuffle : False
[2022/03/31 18:04:25] root INFO:     Train : 
[2022/03/31 18:04:25] root INFO:         dataset : 
[2022/03/31 18:04:25] root INFO:             cls_label_path : /home/aistudio/data/data10954/train_list.txt
[2022/03/31 18:04:25] root INFO:             image_root : /home/aistudio/data/data10954/
[2022/03/31 18:04:25] root INFO:             name : ImageNetDataset
[2022/03/31 18:04:25] root INFO:             transform_ops : 
[2022/03/31 18:04:25] root INFO:                 DecodeImage : 
[2022/03/31 18:04:25] root INFO:                     channel_first : False
[2022/03/31 18:04:25] root INFO:                     to_rgb : True
[2022/03/31 18:04:25] root INFO:                 RandomResizedCrop : 
[2022/03/31 18:04:25] root INFO:                     interpolation : bicubic
[2022/03/31 18:04:25] root INFO:                     ratio : [1.0, 1.0]
[2022/03/31 18:04:25] root INFO:                     scale : [0.75, 1.0]
[2022/03/31 18:04:25] root INFO:                     size : 224
[2022/03/31 18:04:25] root INFO:                 NormalizeImage : 
[2022/03/31 18:04:25] root INFO:                     mean : [0.485, 0.456, 0.406]
[2022/03/31 18:04:25] root INFO:                     order : 
[2022/03/31 18:04:25] root INFO:                     scale : 1.0/255.0
[2022/03/31 18:04:25] root INFO:                     std : [0.229, 0.224, 0.225]
[2022/03/31 18:04:25] root INFO:         loader : 
[2022/03/31 18:04:25] root INFO:             num_workers : 4
[2022/03/31 18:04:25] root INFO:             use_shared_memory : True
[2022/03/31 18:04:25] root INFO:         sampler : 
[2022/03/31 18:04:25] root INFO:             batch_size : 64
[2022/03/31 18:04:25] root INFO:             drop_last : False
[2022/03/31 18:04:25] root INFO:             name : DistributedBatchSampler
[2022/03/31 18:04:25] root INFO:             shuffle : True
[2022/03/31 18:04:25] root INFO: Global : 
[2022/03/31 18:04:25] root INFO:     checkpoints : None
[2022/03/31 18:04:25] root INFO:     device : gpu
[2022/03/31 18:04:25] root INFO:     epochs : 5
[2022/03/31 18:04:25] root INFO:     eval_during_train : True
[2022/03/31 18:04:25] root INFO:     eval_interval : 1
[2022/03/31 18:04:25] root INFO:     image_shape : [3, 300, 300]
[2022/03/31 18:04:25] root INFO:     output_dir : /home/aistudio/data/output_class/
[2022/03/31 18:04:25] root INFO:     pretrained_model : https://passl.bj.bcebos.com/models/convnext_tiny_1k_224.pdparams
[2022/03/31 18:04:25] root INFO:     print_batch_step : 10
[2022/03/31 18:04:25] root INFO:     save_inference_dir : /home/aistudio/data/inference
[2022/03/31 18:04:25] root INFO:     save_interval : 1
[2022/03/31 18:04:25] root INFO:     use_visualdl : False
[2022/03/31 18:04:25] root INFO: Infer : 
[2022/03/31 18:04:25] root INFO:     PostProcess : 
[2022/03/31 18:04:25] root INFO:         class_id_map_file : /home/aistudio/work/class/label_list.txt
[2022/03/31 18:04:25] root INFO:         name : Topk
[2022/03/31 18:04:25] root INFO:         topk : 5
[2022/03/31 18:04:25] root INFO:     batch_size : 100
[2022/03/31 18:04:25] root INFO:     infer_imgs : docs/images/inference_deployment/whl_demo.jpg
[2022/03/31 18:04:25] root INFO:     transforms : 
[2022/03/31 18:04:25] root INFO:         DecodeImage : 
[2022/03/31 18:04:25] root INFO:             channel_first : False
[2022/03/31 18:04:25] root INFO:             to_rgb : True
[2022/03/31 18:04:25] root INFO:         ResizeImage : 
[2022/03/31 18:04:25] root INFO:             resize_short : 256
[2022/03/31 18:04:25] root INFO:         CropImage : 
[2022/03/31 18:04:25] root INFO:             size : 224
[2022/03/31 18:04:25] root INFO:         NormalizeImage : 
[2022/03/31 18:04:25] root INFO:             mean : [0.485, 0.456, 0.406]
[2022/03/31 18:04:25] root INFO:             order : 
[2022/03/31 18:04:25] root INFO:             scale : 1.0/255.0
[2022/03/31 18:04:25] root INFO:             std : [0.229, 0.224, 0.225]
[2022/03/31 18:04:25] root INFO:         ToCHWImage : None
[2022/03/31 18:04:25] root INFO: Loss : 
[2022/03/31 18:04:25] root INFO:     Eval : 
[2022/03/31 18:04:25] root INFO:         CELoss : 
[2022/03/31 18:04:25] root INFO:             weight : 1.0
[2022/03/31 18:04:25] root INFO:     Train : 
[2022/03/31 18:04:25] root INFO:         CELoss : 
[2022/03/31 18:04:25] root INFO:             epsilon : 0.1
[2022/03/31 18:04:25] root INFO:             weight : 1.0
[2022/03/31 18:04:25] root INFO: Metric : 
[2022/03/31 18:04:25] root INFO:     Eval : 
[2022/03/31 18:04:25] root INFO:         TopkAcc : 
[2022/03/31 18:04:25] root INFO:             topk : [1, 5]
[2022/03/31 18:04:25] root INFO:     Train : 
[2022/03/31 18:04:25] root INFO:         TopkAcc : 
[2022/03/31 18:04:25] root INFO:             topk : [1, 5]
[2022/03/31 18:04:25] root INFO: Optimizer : 
[2022/03/31 18:04:25] root INFO:     beta1 : 0.9
[2022/03/31 18:04:25] root INFO:     beta2 : 0.999
[2022/03/31 18:04:25] root INFO:     lr : 
[2022/03/31 18:04:25] root INFO:         epoch : 5
[2022/03/31 18:04:25] root INFO:         epochs : 300
[2022/03/31 18:04:25] root INFO:         eta_min : 1e-05
[2022/03/31 18:04:25] root INFO:         learning_rate : 0.000125
[2022/03/31 18:04:25] root INFO:         name : Cosine
[2022/03/31 18:04:25] root INFO:         step_each_epoch : 32
[2022/03/31 18:04:25] root INFO:         warmup_epoch : 1
[2022/03/31 18:04:25] root INFO:         warmup_start_lr : 1e-06
[2022/03/31 18:04:25] root INFO:     name : AdamW
[2022/03/31 18:04:25] root INFO:     weight_decay : 0.05
[2022/03/31 18:04:25] root INFO: profiler_options : None
[2022/03/31 18:04:25] root INFO: train with paddle 2.2.2 and device CUDAPlace(0)
[2022/03/31 18:04:25] root WARNING: 'TopkAcc' metric can not be used when setting 'batch_transform_ops' in config. The 'TopkAcc' metric has been removed.
W0331 18:04:25.969805   303 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W0331 18:04:25.974506   303 device_context.cc:465] device: 0, cuDNN Version: 7.6.
[2022/03/31 18:04:30] root INFO: unique_endpoints {''}
[2022/03/31 18:04:30] root INFO: Downloading convnext_tiny_1k_224.pdparams from https://passl.bj.bcebos.com/models/convnext_tiny_1k_224.pdparams
100%|████████████████████████████████| 111694/111694 [00:03<00:00, 37222.88it/s]
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py:1441: UserWarning: Skip loading for head.fc_cls.weight. head.fc_cls.weight receives a shape [768, 1000], but the expected shape is [768, 12].
  warnings.warn(("Skip loading for {}. ".format(key) + str(err)))
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py:1441: UserWarning: Skip loading for head.fc_cls.bias. head.fc_cls.bias receives a shape [1000], but the expected shape is [12].
  warnings.warn(("Skip loading for {}. ".format(key) + str(err)))
model loading : [182]/[182]
[2022/03/31 18:04:33] root WARNING: The training strategy in config files provided by PaddleClas is based on 4 gpus. But the number of gpus is 1 in current training. Please modify the stategy (learning rate, batch size and so on) if use config files in PaddleClas to train.
[2022/03/31 18:04:35] root INFO: [Train][Epoch 1/5][Iter: 0/32]lr: 0.00000, CELoss: 2.50516, loss: 2.50516, batch_cost: 2.09711s, reader_cost: 1.59906, ips: 30.51826 images/sec, eta: 0:05:35
[2022/03/31 18:04:38] root INFO: [Train][Epoch 1/5][Iter: 10/32]lr: 0.00004, CELoss: 2.50141, loss: 2.50141, batch_cost: 0.30005s, reader_cost: 0.00157, ips: 213.29944 images/sec, eta: 0:00:45
[2022/03/31 18:04:41] root INFO: [Train][Epoch 1/5][Iter: 20/32]lr: 0.00008, CELoss: 2.45706, loss: 2.45706, batch_cost: 0.29993s, reader_cost: 0.00162, ips: 213.38383 images/sec, eta: 0:00:41
[2022/03/31 18:04:45] root INFO: [Train][Epoch 1/5][Iter: 30/32]lr: 0.00012, CELoss: 2.37709, loss: 2.37709, batch_cost: 0.30253s, reader_cost: 0.00129, ips: 211.55021 images/sec, eta: 0:00:39
[2022/03/31 18:04:45] root INFO: [Train][Epoch 1/5][Avg]CELoss: 2.37555, loss: 2.37555
[2022/03/31 18:04:46] root INFO: [Eval][Epoch 1][Iter: 0/2]CELoss: 3.13076, loss: 3.13076, top1: 0.00000, top5: 0.00000, batch_cost: 1.38679s, reader_cost: 1.21769, ips: 92.29973 images/sec
[2022/03/31 18:04:46] root INFO: [Eval][Epoch 1][Avg]CELoss: 3.12133, loss: 3.12133, top1: 0.00000, top5: 0.00000
[2022/03/31 18:04:46] root INFO: [Eval][Epoch 1][best metric: 0.0]
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/framework/io.py:415: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  if isinstance(obj, collections.Iterable) and not isinstance(obj, (
[2022/03/31 18:04:47] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/epoch_1
[2022/03/31 18:04:48] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/latest
[2022/03/31 18:04:50] root INFO: [Train][Epoch 2/5][Iter: 0/32]lr: 0.00012, CELoss: 1.99909, loss: 1.99909, batch_cost: 0.35991s, reader_cost: 0.06413, ips: 177.82215 images/sec, eta: 0:00:46
[2022/03/31 18:04:53] root INFO: [Train][Epoch 2/5][Iter: 10/32]lr: 0.00012, CELoss: 1.79004, loss: 1.79004, batch_cost: 0.30007s, reader_cost: 0.00032, ips: 213.28602 images/sec, eta: 0:00:35
[2022/03/31 18:04:56] root INFO: [Train][Epoch 2/5][Iter: 20/32]lr: 0.00012, CELoss: 1.59704, loss: 1.59704, batch_cost: 0.31241246s, reader_cost: 0.00283, ips: 204.82522 images/sec, eta: 0:00:33
[2022/03/31 18:04:59] root INFO: [Train][Epoch 2/5][Iter: 30/32]lr: 0.00011, CELoss: 1.41669, loss: 1.41669, batch_cost: 0.30708s, reader_cost: 0.00258, ips: 208.41727 images/sec, eta: 0:00:30
[2022/03/31 18:05:00] root INFO: [Train][Epoch 2/5][Avg]CELoss: 1.41307, loss: 1.41307
[2022/03/31 18:05:01] root INFO: [Eval][Epoch 2][Iter: 0/2]CELoss: 3.16468, loss: 3.16468, top1: 0.00000, top5: 0.06250, batch_cost: 1.35001s, reader_cost: 1.18088, ips: 94.81415 images/sec
[2022/03/31 18:05:01] root INFO: [Eval][Epoch 2][Avg]CELoss: 3.16081, loss: 3.16081, top1: 0.00000, top5: 0.10063
[2022/03/31 18:05:01] root INFO: [Eval][Epoch 2][best metric: 0.0]
[2022/03/31 18:05:02] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/epoch_2
[2022/03/31 18:05:03] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/latest
[2022/03/31 18:05:05] root INFO: [Train][Epoch 3/5][Iter: 0/32]lr: 0.00011, CELoss: 0.83580, loss: 0.83580, batch_cost: 0.35745s, reader_cost: 0.05875, ips: 179.04732 images/sec, eta: 0:00:34
[2022/03/31 18:05:08] root INFO: [Train][Epoch 3/5][Iter: 10/32]lr: 0.00010, CELoss: 0.79101, loss: 0.79101, batch_cost: 0.30012s, reader_cost: 0.00047, ips: 213.25137 images/sec, eta: 0:00:25
[2022/03/31 18:05:11] root INFO: [Train][Epoch 3/5][Iter: 20/32]lr: 0.00008, CELoss: 0.75128, loss: 0.75128, batch_cost: 0.29991s, reader_cost: 0.00046, ips: 213.39916 images/sec, eta: 0:00:22
[2022/03/31 18:05:14] root INFO: [Train][Epoch 3/5][Iter: 30/32]lr: 0.00007, CELoss: 0.73154, loss: 0.73154, batch_cost: 0.29861s, reader_cost: 0.00047, ips: 214.32552 images/sec, eta: 0:00:19
[2022/03/31 18:05:14] root INFO: [Train][Epoch 3/5][Avg]CELoss: 0.73081, loss: 0.73081
[2022/03/31 18:05:15] root INFO: [Eval][Epoch 3][Iter: 0/2]CELoss: 2.32611, loss: 2.32611, top1: 0.03906, top5: 0.89844, batch_cost: 1.40323s, reader_cost: 1.22578, ips: 91.21806 images/sec
[2022/03/31 18:05:16] root INFO: [Eval][Epoch 3][Avg]CELoss: 2.34307, loss: 2.34307, top1: 0.03774, top5: 0.89308
[2022/03/31 18:05:17] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/best_model
[2022/03/31 18:05:17] root INFO: [Eval][Epoch 3][best metric: 0.03773584886916778]
[2022/03/31 18:05:18] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/epoch_3
[2022/03/31 18:05:19] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/latest
[2022/03/31 18:05:20] root INFO: [Train][Epoch 4/5][Iter: 0/32]lr: 0.00007, CELoss: 0.66662, loss: 0.66662, batch_cost: 0.33352s, reader_cost: 0.04039, ips: 191.89510 images/sec, eta: 0:00:21
[2022/03/31 18:05:23] root INFO: [Train][Epoch 4/5][Iter: 10/32]lr: 0.00005, CELoss: 0.64193, loss: 0.64193, batch_cost: 0.33196s, reader_cost: 0.01953, ips: 192.79643 images/sec, eta: 0:00:17
[2022/03/31 18:05:26] root INFO: [Train][Epoch 4/5][Iter: 20/32]lr: 0.00004, CELoss: 0.63435, loss: 0.63435, batch_cost: 0.31193s, reader_cost: 0.00752, ips: 205.17229 images/sec, eta: 0:00:13
[2022/03/31 18:05:29] root INFO: [Train][Epoch 4/5][Iter: 30/32]lr: 0.00003, CELoss: 0.62602, loss: 0.62602, batch_cost: 0.30605s, reader_cost: 0.00473, ips: 209.11636 images/sec, eta: 0:00:10
[2022/03/31 18:05:29] root INFO: [Train][Epoch 4/5][Avg]CELoss: 0.62564, loss: 0.62564
[2022/03/31 18:05:31] root INFO: [Eval][Epoch 4][Iter: 0/2]CELoss: 1.86182, loss: 1.86182, top1: 0.25781, top5: 0.96875, batch_cost: 1.35239s, reader_cost: 1.18338, ips: 94.64708 images/sec
[2022/03/31 18:05:31] root INFO: [Eval][Epoch 4][Avg]CELoss: 1.88848, loss: 1.88848, top1: 0.25157, top5: 0.96855
[2022/03/31 18:05:32] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/best_model
[2022/03/31 18:05:32] root INFO: [Eval][Epoch 4][best metric: 0.25157232573197325]
[2022/03/31 18:05:33] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/epoch_4
[2022/03/31 18:05:34] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/latest
[2022/03/31 18:05:35] root INFO: [Train][Epoch 5/5][Iter: 0/32]lr: 0.00003, CELoss: 0.62709, loss: 0.62709, batch_cost: 0.34112s, reader_cost: 0.04507, ips: 187.61492 images/sec, eta: 0:00:10
[2022/03/31 18:05:38] root INFO: [Train][Epoch 5/5][Iter: 10/32]lr: 0.00002, CELoss: 0.59784, loss: 0.59784, batch_cost: 0.31666s, reader_cost: 0.00276, ips: 202.10665 images/sec, eta: 0:00:06
[2022/03/31 18:05:41] root INFO: [Train][Epoch 5/5][Iter: 20/32]lr: 0.00001, CELoss: 0.58959, loss: 0.58959, batch_cost: 0.31241246s, reader_cost: 0.00219, ips: 204.82474 images/sec, eta: 0:00:03
[2022/03/31 18:05:44] root INFO: [Train][Epoch 5/5][Iter: 30/32]lr: 0.00001, CELoss: 0.58536, loss: 0.58536, batch_cost: 0.30651s, reader_cost: 0.00157, ips: 208.80046 images/sec, eta: 0:00:00
[2022/03/31 18:05:45] root INFO: [Train][Epoch 5/5][Avg]CELoss: 0.58511, loss: 0.58511
[2022/03/31 18:05:46] root INFO: [Eval][Epoch 5][Iter: 0/2]CELoss: 1.68354, loss: 1.68354, top1: 0.29688, top5: 0.96094, batch_cost: 1.36943s, reader_cost: 1.19968, ips: 93.46979 images/sec
[2022/03/31 18:05:46] root INFO: [Eval][Epoch 5][Avg]CELoss: 1.70561, loss: 1.70561, top1: 0.28931, top5: 0.96855
[2022/03/31 18:05:47] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/best_model
[2022/03/31 18:05:47] root INFO: [Eval][Epoch 5][best metric: 0.289308174601141]
[2022/03/31 18:05:48] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/epoch_5
[2022/03/31 18:05:49] root INFO: Already save model in /home/aistudio/data/output_class/ConvNeXt_Tiny/latest
In [5]
# 将训练参数转移到best_model/class下, 进行长期保存
!mkdir /home/aistudio/best_model
!mkdir /home/aistudio/best_model/class
!cp /home/aistudio/data/output_class/ConvNeXt_Tiny/best_model.pdparams /home/aistudio/best_model/class/model.pdparams

图片推理

In [6]
# 结果保存在/home/aistudio/data/infer_class/result.csv下!python /home/aistudio/PaddleClas/tools/infer.py \
    -c /home/aistudio/PaddleClas/convnext.yml \
    -o Infer.batch_size=100 \
    -o Infer.infer_imgs=/home/aistudio/data/data10954/cat_12_test/ \
    -o Global.pretrained_model=/home/aistudio/best_model/class/model.pdparams
[2022/03/31 18:05:53] root INFO: 
===========================================================
==        PaddleClas is powered by PaddlePaddle !        ==
===========================================================
==                                                       ==
==   For more info please go to the following website.   ==
==                                                       ==
==       https://github.com/PaddlePaddle/PaddleClas      ==
===========================================================

[2022/03/31 18:05:53] root INFO: Arch : 
[2022/03/31 18:05:53] root INFO:     class_num : 12
[2022/03/31 18:05:53] root INFO:     name : ConvNeXt_Tiny
[2022/03/31 18:05:53] root INFO: DataLoader : 
[2022/03/31 18:05:53] root INFO:     Eval : 
[2022/03/31 18:05:53] root INFO:         dataset : 
[2022/03/31 18:05:53] root INFO:             cls_label_path : /home/aistudio/data/data10954/val_list.txt
[2022/03/31 18:05:53] root INFO:             image_root : /home/aistudio/data/data10954/
[2022/03/31 18:05:53] root INFO:             name : ImageNetDataset
[2022/03/31 18:05:53] root INFO:             transform_ops : 
[2022/03/31 18:05:53] root INFO:                 DecodeImage : 
[2022/03/31 18:05:53] root INFO:                     channel_first : False
[2022/03/31 18:05:53] root INFO:                     to_rgb : True
[2022/03/31 18:05:53] root INFO:                 ResizeImage : 
[2022/03/31 18:05:53] root INFO:                     resize_short : 256
[2022/03/31 18:05:53] root INFO:                 CropImage : 
[2022/03/31 18:05:53] root INFO:                     size : 224
[2022/03/31 18:05:53] root INFO:                 NormalizeImage : 
[2022/03/31 18:05:53] root INFO:                     mean : [0.485, 0.456, 0.406]
[2022/03/31 18:05:53] root INFO:                     order : 
[2022/03/31 18:05:53] root INFO:                     scale : 1.0/255.0
[2022/03/31 18:05:53] root INFO:                     std : [0.229, 0.224, 0.225]
[2022/03/31 18:05:53] root INFO:         loader : 
[2022/03/31 18:05:53] root INFO:             num_workers : 4
[2022/03/31 18:05:53] root INFO:             use_shared_memory : True
[2022/03/31 18:05:53] root INFO:         sampler : 
[2022/03/31 18:05:53] root INFO:             batch_size : 128
[2022/03/31 18:05:53] root INFO:             drop_last : False
[2022/03/31 18:05:53] root INFO:             name : DistributedBatchSampler
[2022/03/31 18:05:53] root INFO:             shuffle : False
[2022/03/31 18:05:53] root INFO:     Train : 
[2022/03/31 18:05:53] root INFO:         dataset : 
[2022/03/31 18:05:53] root INFO:             cls_label_path : /home/aistudio/data/data10954/train_list.txt
[2022/03/31 18:05:53] root INFO:             image_root : /home/aistudio/data/data10954/
[2022/03/31 18:05:53] root INFO:             name : ImageNetDataset
[2022/03/31 18:05:53] root INFO:             transform_ops : 
[2022/03/31 18:05:53] root INFO:                 DecodeImage : 
[2022/03/31 18:05:53] root INFO:                     channel_first : False
[2022/03/31 18:05:53] root INFO:                     to_rgb : True
[2022/03/31 18:05:53] root INFO:                 RandomResizedCrop : 
[2022/03/31 18:05:53] root INFO:                     interpolation : bicubic
[2022/03/31 18:05:53] root INFO:                     ratio : [1.0, 1.0]
[2022/03/31 18:05:53] root INFO:                     scale : [0.75, 1.0]
[2022/03/31 18:05:53] root INFO:                     size : 224
[2022/03/31 18:05:53] root INFO:                 NormalizeImage : 
[2022/03/31 18:05:53] root INFO:                     mean : [0.485, 0.456, 0.406]
[2022/03/31 18:05:53] root INFO:                     order : 
[2022/03/31 18:05:53] root INFO:                     scale : 1.0/255.0
[2022/03/31 18:05:53] root INFO:                     std : [0.229, 0.224, 0.225]
[2022/03/31 18:05:53] root INFO:         loader : 
[2022/03/31 18:05:53] root INFO:             num_workers : 4
[2022/03/31 18:05:53] root INFO:             use_shared_memory : True
[2022/03/31 18:05:53] root INFO:         sampler : 
[2022/03/31 18:05:53] root INFO:             batch_size : 128
[2022/03/31 18:05:53] root INFO:             drop_last : False
[2022/03/31 18:05:53] root INFO:             name : DistributedBatchSampler
[2022/03/31 18:05:53] root INFO:             shuffle : True
[2022/03/31 18:05:53] root INFO: Global : 
[2022/03/31 18:05:53] root INFO:     checkpoints : None
[2022/03/31 18:05:53] root INFO:     device : gpu
[2022/03/31 18:05:53] root INFO:     epochs : 300
[2022/03/31 18:05:53] root INFO:     eval_during_train : True
[2022/03/31 18:05:53] root INFO:     eval_interval : 1
[2022/03/31 18:05:53] root INFO:     image_shape : [3, 300, 300]
[2022/03/31 18:05:53] root INFO:     output_dir : /home/aistudio/data/output_class/
[2022/03/31 18:05:53] root INFO:     pretrained_model : /home/aistudio/best_model/class/model.pdparams
[2022/03/31 18:05:53] root INFO:     print_batch_step : 10
[2022/03/31 18:05:53] root INFO:     save_inference_dir : /home/aistudio/data/inference
[2022/03/31 18:05:53] root INFO:     save_interval : 1
[2022/03/31 18:05:53] root INFO:     use_visualdl : False
[2022/03/31 18:05:53] root INFO: Infer : 
[2022/03/31 18:05:53] root INFO:     PostProcess : 
[2022/03/31 18:05:53] root INFO:         class_id_map_file : /home/aistudio/work/class/label_list.txt
[2022/03/31 18:05:53] root INFO:         name : Topk
[2022/03/31 18:05:53] root INFO:         topk : 5
[2022/03/31 18:05:53] root INFO:     batch_size : 100
[2022/03/31 18:05:53] root INFO:     infer_imgs : /home/aistudio/data/data10954/cat_12_test/
[2022/03/31 18:05:53] root INFO:     transforms : 
[2022/03/31 18:05:53] root INFO:         DecodeImage : 
[2022/03/31 18:05:53] root INFO:             channel_first : False
[2022/03/31 18:05:53] root INFO:             to_rgb : True
[2022/03/31 18:05:53] root INFO:         ResizeImage : 
[2022/03/31 18:05:53] root INFO:             resize_short : 256
[2022/03/31 18:05:53] root INFO:         CropImage : 
[2022/03/31 18:05:53] root INFO:             size : 224
[2022/03/31 18:05:53] root INFO:         NormalizeImage : 
[2022/03/31 18:05:53] root INFO:             mean : [0.485, 0.456, 0.406]
[2022/03/31 18:05:53] root INFO:             order : 
[2022/03/31 18:05:53] root INFO:             scale : 1.0/255.0
[2022/03/31 18:05:53] root INFO:             std : [0.229, 0.224, 0.225]
[2022/03/31 18:05:53] root INFO:         ToCHWImage : None
[2022/03/31 18:05:53] root INFO: Loss : 
[2022/03/31 18:05:53] root INFO:     Eval : 
[2022/03/31 18:05:53] root INFO:         CELoss : 
[2022/03/31 18:05:53] root INFO:             weight : 1.0
[2022/03/31 18:05:53] root INFO:     Train : 
[2022/03/31 18:05:53] root INFO:         CELoss : 
[2022/03/31 18:05:53] root INFO:             epsilon : 0.1
[2022/03/31 18:05:53] root INFO:             weight : 1.0
[2022/03/31 18:05:53] root INFO: Metric : 
[2022/03/31 18:05:53] root INFO:     Eval : 
[2022/03/31 18:05:53] root INFO:         TopkAcc : 
[2022/03/31 18:05:53] root INFO:             topk : [1, 5]
[2022/03/31 18:05:53] root INFO:     Train : 
[2022/03/31 18:05:53] root INFO:         TopkAcc : 
[2022/03/31 18:05:53] root INFO:             topk : [1, 5]
[2022/03/31 18:05:53] root INFO: Optimizer : 
[2022/03/31 18:05:53] root INFO:     beta1 : 0.9
[2022/03/31 18:05:53] root INFO:     beta2 : 0.999
[2022/03/31 18:05:53] root INFO:     lr : 
[2022/03/31 18:05:53] root INFO:         epochs : 300
[2022/03/31 18:05:53] root INFO:         eta_min : 1e-05
[2022/03/31 18:05:53] root INFO:         learning_rate : 0.000125
[2022/03/31 18:05:53] root INFO:         name : Cosine
[2022/03/31 18:05:53] root INFO:         step_each_epoch : 1000
[2022/03/31 18:05:53] root INFO:         warmup_epoch : 20
[2022/03/31 18:05:53] root INFO:         warmup_start_lr : 1e-06
[2022/03/31 18:05:53] root INFO:     name : AdamW
[2022/03/31 18:05:53] root INFO:     weight_decay : 0.05
[2022/03/31 18:05:53] root INFO: train with paddle 2.2.2 and device CUDAPlace(0)
W0331 18:05:53.266223   642 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W0331 18:05:53.270807   642 device_context.cc:465] device: 0, cuDNN Version: 7.6.
model loading : [182]/[182]
infer process : 100%|████████████████████████| 240/240 [00:01<00:00, 128.35it/s]
result save to  /home/aistudio/data/infer_class/result.csv

在PaddleSeg中使用ConvNeXt进行特征提取实现语义分割

——以“遥感影像地块分割”为例

参考 : 基于paddleSeg的自定义遥感数据语义分割——以DLRSD为例

并依据paddleseg中ocrNet_hrnetw48_cityscapes配置进行修改

环境准备

In [7]
# pip升级!pip install --user --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple# 下载仓库,并切换到2.3版本%cd /home/aistudio/
!git clone https://gitee.com/paddlepaddle/PaddleSeg.git #该行仅在初次运行项目时运行即可,后续不需要运行改行命令%cd /home/aistudio/PaddleSeg
!git checkout -b release/2.3 origin/release/2.3# 安装依赖!pip install -r requirements.txt
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pip in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (22.0.4)
/home/aistudio
正克隆到 'PaddleSeg'...
remote: Enumerating objects: 16439, done.
remote: Counting objects: 100% (1402/1402), done.
remote: Compressing objects: 100% (811/811), done.
remote: Total 16439 (delta 710), reused 1166 (delta 573), pack-reused 15037
接收对象中: 100% (16439/16439), 341.09 MiB | 14.09 MiB/s, 完成.
处理 delta 中: 100% (10574/10574), 完成.
检查连接... 完成。
/home/aistudio/PaddleSeg
分支 release/2.3 设置为跟踪来自 origin 的远程分支 release/2.3。
切换到一个新分支 'release/2.3'
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pre-commit in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 1)) (1.21.0)
Requirement already satisfied: yapf==0.26.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 2)) (0.26.0)
Requirement already satisfied: flake8 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 3)) (4.0.1)
Requirement already satisfied: pyyaml>=5.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 4)) (5.1.2)
Requirement already satisfied: visualdl>=2.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 5)) (2.2.3)
Requirement already satisfied: opencv-python in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 6)) (4.4.0.46)
Requirement already satisfied: tqdm in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 7)) (4.27.0)
Requirement already satisfied: filelock in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 8)) (3.0.12)
Requirement already satisfied: scipy in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 9)) (1.6.3)
Requirement already satisfied: prettytable in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 10)) (0.7.2)
Requirement already satisfied: cfgv>=2.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->-r requirements.txt (line 1)) (2.0.1)
Requirement already satisfied: toml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->-r requirements.txt (line 1)) (0.10.0)
Requirement already satisfied: nodeenv>=0.11.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->-r requirements.txt (line 1)) (1.3.4)
Requirement already satisfied: six in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->-r requirements.txt (line 1)) (1.16.0)
Requirement already satisfied: virtualenv>=15.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->-r requirements.txt (line 1)) (16.7.9)
Requirement already satisfied: aspy.yaml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->-r requirements.txt (line 1)) (1.3.0)
Requirement already satisfied: importlib-metadata in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->-r requirements.txt (line 1)) (4.2.0)
Requirement already satisfied: identify>=1.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->-r requirements.txt (line 1)) (1.4.10)
Requirement already satisfied: pycodestyle<2.9.0,>=2.8.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8->-r requirements.txt (line 3)) (2.8.0)
Requirement already satisfied: pyflakes<2.5.0,>=2.4.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8->-r requirements.txt (line 3)) (2.4.0)
Requirement already satisfied: mccabe<0.7.0,>=0.6.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8->-r requirements.txt (line 3)) (0.6.1)
Requirement already satisfied: numpy in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.0.0->-r requirements.txt (line 5)) (1.19.5)
Requirement already satisfied: Pillow>=7.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.0.0->-r requirements.txt (line 5)) (8.2.0)
Requirement already satisfied: matplotlib in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.0.0->-r requirements.txt (line 5)) (2.2.3)
Requirement already satisfied: requests in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.0.0->-r requirements.txt (line 5)) (2.24.0)
Requirement already satisfied: pandas in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.0.0->-r requirements.txt (line 5)) (1.1.5)
Requirement already satisfied: Flask-Babel>=1.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.0.0->-r requirements.txt (line 5)) (1.0.0)
Requirement already satisfied: shellcheck-py in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.0.0->-r requirements.txt (line 5)) (0.7.1.1)
Requirement already satisfied: flask>=1.1.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.0.0->-r requirements.txt (line 5)) (1.1.1)
Requirement already satisfied: bce-python-sdk in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.0.0->-r requirements.txt (line 5)) (0.8.53)
Requirement already satisfied: protobuf>=3.11.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.0.0->-r requirements.txt (line 5)) (3.14.0)
Requirement already satisfied: itsdangerous>=0.24 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.0.0->-r requirements.txt (line 5)) (1.1.0)
Requirement already satisfied: Jinja2>=2.10.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.0.0->-r requirements.txt (line 5)) (3.1.1)
Requirement already satisfied: Werkzeug>=0.15 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.0.0->-r requirements.txt (line 5)) (0.16.0)
Requirement already satisfied: click>=5.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.0.0->-r requirements.txt (line 5)) (7.0)
Requirement already satisfied: Babel>=2.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Flask-Babel>=1.0.0->visualdl>=2.0.0->-r requirements.txt (line 5)) (2.9.1)
Requirement already satisfied: pytz in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Flask-Babel>=1.0.0->visualdl>=2.0.0->-r requirements.txt (line 5)) (2022.1)
Requirement already satisfied: zipp>=0.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from importlib-metadata->pre-commit->-r requirements.txt (line 1)) (3.7.0)
Requirement already satisfied: typing-extensions>=3.6.4 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from importlib-metadata->pre-commit->-r requirements.txt (line 1)) (4.1.1)
Requirement already satisfied: future>=0.6.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from bce-python-sdk->visualdl>=2.0.0->-r requirements.txt (line 5)) (0.18.0)
Requirement already satisfied: pycryptodome>=3.8.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from bce-python-sdk->visualdl>=2.0.0->-r requirements.txt (line 5)) (3.9.9)
Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.0.0->-r requirements.txt (line 5)) (2.8.2)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.0.0->-r requirements.txt (line 5)) (3.0.7)
Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.0.0->-r requirements.txt (line 5)) (0.10.0)
Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.0.0->-r requirements.txt (line 5)) (1.1.0)
Requirement already satisfied: idna<3,>=2.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.0.0->-r requirements.txt (line 5)) (2.10)
Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.0.0->-r requirements.txt (line 5)) (2021.10.8)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.0.0->-r requirements.txt (line 5)) (1.25.11)
Requirement already satisfied: chardet<4,>=3.0.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.0.0->-r requirements.txt (line 5)) (3.0.4)
Requirement already satisfied: MarkupSafe>=2.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Jinja2>=2.10.1->flask>=1.1.1->visualdl>=2.0.0->-r requirements.txt (line 5)) (2.0.1)
Requirement already satisfied: setuptools in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib->visualdl>=2.0.0->-r requirements.txt (line 5)) (56.2.0)

数据准备

In [8]
!unzip -oq /home/aistudio/data/data77571/train_and_label.zip -d /home/aistudio/data/data77571/
!unzip -oq /home/aistudio/data/data77571/img_test.zip -d /home/aistudio/data/data77571/
In [9]
# 生产数据集划分txt!python /home/aistudio/work/segmentation/data_split.py \        0.98 0.02 0 \
        /home/aistudio/data/data77571/img_train \
        /home/aistudio/data/data77571/lab_train
total 66652, split: train 65318 - 0.98 rate, val 1334 - 0.02 rate, test 0 - 0.00 rate

代码准备

In [10]
# 以下代码及配置,基于PASSL中内容,并结合OCRNet18的配置进行迁移!cp /home/aistudio/work/segmentation/convnext.yml /home/aistudio/PaddleSeg/convnext.yml
!cp /home/aistudio/work/segmentation/convnext.py /home/aistudio/PaddleSeg/paddleseg/models/backbones/convnext.py        # 网络结构代码!cp /home/aistudio/work/segmentation/__init__.py /home/aistudio/PaddleSeg/paddleseg/models/backbones/__init__.py        # 导入网络!cp /home/aistudio/work/segmentation/utils.py /home/aistudio/PaddleSeg/paddleseg/utils/utils.py                         # 加载tif数据与模型参数!cp /home/aistudio/work/segmentation/predict.py /home/aistudio/PaddleSeg/paddleseg/core/predict.py                      # 预测类别结果保存

网络训练

In [11]
!python /home/aistudio/PaddleSeg/train.py \
    --config  /home/aistudio/PaddleSeg/convnext.yml \
    --save_dir /home/aistudio/data/output_seg \
    --do_eval \
    --use_vdl \
    --batch_size 64 \
    --iters 300 \
    --save_interval 100 \
    --log_iters 20 \
    --fp16
/home/aistudio/PaddleSeg/paddleseg/models/losses/rmi_loss.py:78: DeprecationWarning: invalid escape sequence \i
  """
2022-03-31 18:07:33 [INFO]	
------------Environment Information-------------
platform: Linux-4.4.0-150-generic-x86_64-with-debian-stretch-sid
Python: 3.7.4 (default, Aug 13 2019, 20:35:49) [GCC 7.3.0]
Paddle compiled with cuda: True
NVCC: Cuda compilation tools, release 10.1, V10.1.243
cudnn: 7.6
GPUs used: 1
CUDA_VISIBLE_DEVICES: None
GPU: ['GPU 0: Tesla V100-SXM2-16GB']
GCC: gcc (Ubuntu 7.5.0-3ubuntu1~16.04) 7.5.0
PaddlePaddle: 2.2.2
OpenCV: 4.4.0
------------------------------------------------
2022-03-31 18:07:33 [INFO]	
---------------Config Information---------------
batch_size: 64
iters: 300
loss:
  coef:
  - 1
  - 0.4
  types:
  - ignore_index: 255
    type: CrossEntropyLoss
  - ignore_index: 255
    type: CrossEntropyLoss
lr_scheduler:
  learning_rate: 0.00125
  power: 0.9
  type: PolynomialDecay
model:
  backbone:
    class_num: 6
    pretrained: https://passl.bj.bcebos.com/models/convnext_tiny_1k_224.pdparams
    type: ConvNeXt_Tiny
  backbone_indices:
  - 0
  type: OCRNet
optimizer:
  type: sgd
train_dataset:
  dataset_root: /home/aistudio/data/data77571/
  mode: train
  num_classes: 7
  train_path: /home/aistudio/data/data77571//train.txt
  transforms:
  - max_scale_factor: 2.0
    min_scale_factor: 0.5
    scale_step_size: 0.25
    type: ResizeStepScaling
  - crop_size:
    - 256
    - 256
    type: RandomPaddingCrop
  - type: RandomHorizontalFlip
  - type: Normalize
  type: Dataset
val_dataset:
  dataset_root: /home/aistudio/data/data77571/
  mode: val
  num_classes: 7
  transforms:
  - type: Normalize
  type: Dataset
  val_path: /home/aistudio/data/data77571//val.txt
------------------------------------------------
W0331 18:07:34.499039   829 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W0331 18:07:34.499097   829 device_context.cc:465] device: 0, cuDNN Version: 7.6.
2022-03-31 18:07:39 [INFO]	use amp to train
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:253: UserWarning: The dtype of left and right variables are not the same, left dtype is paddle.float16, but right dtype is paddle.float32, the right dtype will convert to paddle.float16
  format(lhs_dtype, rhs_dtype, lhs_dtype))
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:253: UserWarning: The dtype of left and right variables are not the same, left dtype is paddle.float32, but right dtype is paddle.float16, the right dtype will convert to paddle.float32
  format(lhs_dtype, rhs_dtype, lhs_dtype))
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/nn/layer/norm.py:653: UserWarning: When training, we now always track global mean and variance.
  "When training, we now always track global mean and variance.")
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:253: UserWarning: The dtype of left and right variables are not the same, left dtype is paddle.float32, but right dtype is paddle.int64, the right dtype will convert to paddle.float32
  format(lhs_dtype, rhs_dtype, lhs_dtype))
2022-03-31 18:07:51 [INFO]	[TRAIN] epoch: 1, iter: 20/300, loss: 2.4015, lr: 0.001179, batch_cost: 0.6064, reader_cost: 0.25345, ips: 105.5410 samples/sec | ETA 00:02:49
2022-03-31 18:08:02 [INFO]	[TRAIN] epoch: 1, iter: 40/300, loss: 2.0847, lr: 0.001103, batch_cost: 0.5819, reader_cost: 0.23513, ips: 109.9897 samples/sec | ETA 00:02:31
2022-03-31 18:08:14 [INFO]	[TRAIN] epoch: 1, iter: 60/300, loss: 1.9073, lr: 0.001026, batch_cost: 0.5722, reader_cost: 0.22481, ips: 111.8435 samples/sec | ETA 00:02:17
2022-03-31 18:08:25 [INFO]	[TRAIN] epoch: 1, iter: 80/300, loss: 1.9318, lr: 0.000949, batch_cost: 0.5649, reader_cost: 0.22012, ips: 113.2866 samples/sec | ETA 00:02:04
2022-03-31 18:08:37 [INFO]	[TRAIN] epoch: 1, iter: 100/300, loss: 1.8939, lr: 0.000872, batch_cost: 0.5726, reader_cost: 0.22607, ips: 111.7723 samples/sec | ETA 00:01:54
2022-03-31 18:08:37 [INFO]	Start evaluating (total_samples: 1334, total_iters: 1334)...
1334/1334 [==============================] - 33s 24ms/step - batch_cost: 0.0243 - reader cost: 1.2418e-04
2022-03-31 18:09:09 [INFO]	[EVAL] #Images: 1334 mIoU: 0.1310 Acc: 0.4490 Kappa: 0.2189 
2022-03-31 18:09:09 [INFO]	[EVAL] Class IoU: 
[0.3424 0.3964 0.1779 0.     0.     0.     0.    ]
2022-03-31 18:09:09 [INFO]	[EVAL] Class Acc: 
[0.4389 0.5091 0.3204 0.     0.     0.     0.    ]
2022-03-31 18:09:10 [INFO]	[EVAL] The model with the best validation mIoU (0.1310) was saved at iter 100.
2022-03-31 18:09:20 [INFO]	[TRAIN] epoch: 1, iter: 120/300, loss: 1.8603, lr: 0.000793, batch_cost: 0.5013, reader_cost: 0.15525, ips: 127.6626 samples/sec | ETA 00:01:30
2022-03-31 18:09:32 [INFO]	[TRAIN] epoch: 1, iter: 140/300, loss: 1.7972, lr: 0.000714, batch_cost: 0.5840, reader_cost: 0.23824, ips: 109.5959 samples/sec | ETA 00:01:33
2022-03-31 18:09:43 [INFO]	[TRAIN] epoch: 1, iter: 160/300, loss: 1.8544, lr: 0.000634, batch_cost: 0.5719, reader_cost: 0.22721, ips: 111.9147 samples/sec | ETA 00:01:20
2022-03-31 18:09:55 [INFO]	[TRAIN] epoch: 1, iter: 180/300, loss: 1.8221, lr: 0.000552, batch_cost: 0.5771, reader_cost: 0.23047, ips: 110.9003 samples/sec | ETA 00:01:09
2022-03-31 18:10:06 [INFO]	[TRAIN] epoch: 1, iter: 200/300, loss: 1.8082, lr: 0.000469, batch_cost: 0.5988, reader_cost: 0.24987, ips: 106.8825 samples/sec | ETA 00:00:59
2022-03-31 18:10:06 [INFO]	Start evaluating (total_samples: 1334, total_iters: 1334)...
1334/1334 [==============================] - 32s 24ms/step - batch_cost: 0.0241 - reader cost: 9.0381e-05
2022-03-31 18:10:39 [INFO]	[EVAL] #Images: 1334 mIoU: 0.1478 Acc: 0.4874 Kappa: 0.2597 
2022-03-31 18:10:39 [INFO]	[EVAL] Class IoU: 
[0.3592 0.422  0.0859 0.1673 0.     0.     0.    ]
2022-03-31 18:10:39 [INFO]	[EVAL] Class Acc: 
[0.4692 0.4845 0.5087 0.6331 0.     0.     0.    ]
2022-03-31 18:10:39 [INFO]	[EVAL] The model with the best validation mIoU (0.1478) was saved at iter 200.
2022-03-31 18:10:50 [INFO]	[TRAIN] epoch: 1, iter: 220/300, loss: 1.7500, lr: 0.000385, batch_cost: 0.5090, reader_cost: 0.16244, ips: 125.7461 samples/sec | ETA 00:00:40
2022-03-31 18:11:02 [INFO]	[TRAIN] epoch: 1, iter: 240/300, loss: 1.7677, lr: 0.000298, batch_cost: 0.5957, reader_cost: 0.24562, ips: 107.4420 samples/sec | ETA 00:00:35
2022-03-31 18:11:13 [INFO]	[TRAIN] epoch: 1, iter: 260/300, loss: 1.7278, lr: 0.000208, batch_cost: 0.5890, reader_cost: 0.24190, ips: 108.6544 samples/sec | ETA 00:00:23
2022-03-31 18:11:25 [INFO]	[TRAIN] epoch: 1, iter: 280/300, loss: 1.7522, lr: 0.000114, batch_cost: 0.6062, reader_cost: 0.26048, ips: 105.5836 samples/sec | ETA 00:00:12
2022-03-31 18:11:38 [INFO]	[TRAIN] epoch: 1, iter: 300/300, loss: 1.7757, lr: 0.000007, batch_cost: 0.6104, reader_cost: 0.26477, ips: 104.8474 samples/sec | ETA 00:00:00
2022-03-31 18:11:38 [INFO]	Start evaluating (total_samples: 1334, total_iters: 1334)...
1334/1334 [==============================] - 33s 25ms/step - batch_cost: 0.0246 - reader cost: 9.6194e-05
2022-03-31 18:12:11 [INFO]	[EVAL] #Images: 1334 mIoU: 0.1765 Acc: 0.5187 Kappa: 0.3205 
2022-03-31 18:12:11 [INFO]	[EVAL] Class IoU: 
[0.361  0.4712 0.2135 0.1899 0.     0.     0.    ]
2022-03-31 18:12:11 [INFO]	[EVAL] Class Acc: 
[0.4795 0.5663 0.4366 0.5706 0.     0.     0.    ]
2022-03-31 18:12:11 [INFO]	[EVAL] The model with the best validation mIoU (0.1765) was saved at iter 300.
's flops has been counted
Cannot find suitable count function for . Treat it as zero FLOPs.
's flops has been counted
Cannot find suitable count function for . Treat it as zero FLOPs.
Cannot find suitable count function for . Treat it as zero FLOPs.
Cannot find suitable count function for . Treat it as zero FLOPs.
Cannot find suitable count function for . Treat it as zero FLOPs.
Cannot find suitable count function for . Treat it as zero FLOPs.
's flops has been counted
's flops has been counted
Cannot find suitable count function for . Treat it as zero FLOPs.
Total Flops: 11207499520     Total Params: 29462030
In [12]
# 将训练参数转移到best_model/seg下!mkdir /home/aistudio/best_model
!mkdir /home/aistudio/best_model/seg
!cp /home/aistudio/data/output_seg/best_model/model.pdparams /home/aistudio/best_model/seg/model.pdparams
mkdir: 无法创建目录"/home/aistudio/best_model": 文件已存在

图片推理

In [13]
# 结果保存在/home/aistudio/data/infer_seg下!python /home/aistudio/PaddleSeg/predict.py \
       --config /home/aistudio/PaddleSeg/convnext.yml \
       --model_path /home/aistudio/best_model/seg/model.pdparams \
       --image_path /home/aistudio/data/data77571/img_testA \
       --save_dir /home/aistudio/data/infer_seg
2022-03-31 18:12:15 [INFO]	
---------------Config Information---------------
batch_size: 4
iters: 15000
loss:
  coef:
  - 1
  - 0.4
  types:
  - type: CrossEntropyLoss
  - type: CrossEntropyLoss
lr_scheduler:
  learning_rate: 0.00125
  power: 0.9
  type: PolynomialDecay
model:
  backbone:
    class_num: 6
    pretrained: https://passl.bj.bcebos.com/models/convnext_tiny_1k_224.pdparams
    type: ConvNeXt_Tiny
  backbone_indices:
  - 0
  type: OCRNet
optimizer:
  type: sgd
train_dataset:
  dataset_root: /home/aistudio/data/data77571/
  mode: train
  num_classes: 7
  train_path: /home/aistudio/data/data77571//train.txt
  transforms:
  - max_scale_factor: 2.0
    min_scale_factor: 0.5
    scale_step_size: 0.25
    type: ResizeStepScaling
  - crop_size:
    - 256
    - 256
    type: RandomPaddingCrop
  - type: RandomHorizontalFlip
  - type: Normalize
  type: Dataset
val_dataset:
  dataset_root: /home/aistudio/data/data77571/
  mode: val
  num_classes: 7
  transforms:
  - type: Normalize
  type: Dataset
  val_path: /home/aistudio/data/data77571//val.txt
------------------------------------------------
W0331 18:12:16.364639  1223 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W0331 18:12:16.364699  1223 device_context.cc:465] device: 0, cuDNN Version: 7.6.
2022-03-31 18:12:20 [INFO]	Number of predict images = 4608
2022-03-31 18:12:20 [INFO]	Loading pretrained model from /home/aistudio/best_model/seg/model.pdparams
2022-03-31 18:12:20 [INFO]	There are 240/240 variables loaded into OCRNet.
2022-03-31 18:12:20 [INFO]	Start to predict...
4608/4608 [==============================] - 94s 20ms/step

在PaddleDet中使用ConvNeXt进行特征提取实现目标检测

——以“钢铁缺陷检测挑战赛”为例

参考基于paddleDetection的自定义遥感数据目标检测——以RSOD为例

并基于PaddleDetection中的cascade_rcnn_r50_fpn_1x_coco配置进行修改

环境准备

In [14]
# pip升级!pip install --user --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple# 下载仓库,并切换到2.3版本%cd /home/aistudio/
!git clone https://gitee.com/paddlepaddle/PaddleDetection.git
%cd /home/aistudio/PaddleDetection
!git checkout -b release/2.3 origin/release/2.3# 安装依赖!pip install -r requirements.txt
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pip in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (22.0.4)
/home/aistudio
正克隆到 'PaddleDetection'...
remote: Enumerating objects: 22586, done.
remote: Counting objects: 100% (3056/3056), done.
remote: Compressing objects: 100% (1496/1496), done.
remote: Total 22586 (delta 2170), reused 2221 (delta 1553), pack-reused 19530
接收对象中: 100% (22586/22586), 261.38 MiB | 21.95 MiB/s, 完成.
处理 delta 中: 100% (16719/16719), 完成.
检查连接... 完成。
/home/aistudio/PaddleDetection
fatal: 一个分支名 'release/2.3' 已经存在。
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: tqdm in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 1)) (4.27.0)
Collecting typeguard
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/9a/bb/d43e5c75054e53efce310e79d63df0ac3f25e34c926be5dffb7d283fb2a8/typeguard-2.13.3-py3-none-any.whl (17 kB)
Requirement already satisfied: visualdl>=2.1.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 3)) (2.2.3)
Requirement already satisfied: opencv-python in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 4)) (4.4.0.46)
Requirement already satisfied: PyYAML in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 5)) (5.1.2)
Collecting shapely
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/9d/4d/4b0d86ed737acb29c5e627a91449470a9fb914f32640db3f1cb7ba5bc19e/Shapely-1.8.1.post1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.0 MB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 1.3 MB/s eta 0:00:0000:0100:01
Requirement already satisfied: scipy in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 7)) (1.6.3)
Collecting terminaltables
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c4/fb/ea621e0a19733e01fe4005d46087d383693c0f4a8f824b47d8d4122c87e0/terminaltables-3.1.10-py2.py3-none-any.whl (15 kB)
Requirement already satisfied: Cython in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 9)) (0.29)
Collecting pycocotools
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/75/5c/ac61ea715d7a89ecc31c090753bde28810238225ca8b71778dfe3e6a68bc/pycocotools-2.0.4.tar.gz (106 kB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.6/106.6 KB 1.1 MB/s eta 0:00:00a 0:00:01
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: setuptools>=42.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 12)) (56.2.0)
Collecting lap
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/bf/64/d9fb6a75b15e783952b2fec6970f033462e67db32dc43dfbb404c14e91c2/lap-0.4.0.tar.gz (1.5 MB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.5/1.5 MB 1.4 MB/s eta 0:00:00a 0:00:01
  Preparing metadata (setup.py) ... done
Requirement already satisfied: sklearn in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 14)) (0.0)
Collecting motmetrics
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/9c/28/9c3bc8e2a87f4c9e7b04ab72856ec7f9895a66681a65973ffaf9562ef879/motmetrics-1.2.0-py3-none-any.whl (151 kB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 151.6/151.6 KB 356.9 kB/s eta 0:00:00a 0:00:01Requirement already satisfied: openpyxl in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from -r requirements.txt (line 16)) (3.0.5)
Collecting cython_bbox
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/fa/b9/fc7d60e8c3b29cc0ff24a3bb3c4b7457e10b7610fbb2893741b623487b34/cython_bbox-0.1.3.tar.gz (41 kB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.3/41.3 KB 83.1 kB/s eta 0:00:00a 0:00:01
  Preparing metadata (setup.py) ... done
Requirement already satisfied: requests in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (2.24.0)
Requirement already satisfied: pre-commit in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (1.21.0)
Requirement already satisfied: numpy in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (1.19.5)
Requirement already satisfied: Flask-Babel>=1.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (1.0.0)
Requirement already satisfied: Pillow>=7.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (8.2.0)
Requirement already satisfied: shellcheck-py in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (0.7.1.1)
Requirement already satisfied: flake8>=3.7.9 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (4.0.1)
Requirement already satisfied: bce-python-sdk in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (0.8.53)
Requirement already satisfied: flask>=1.1.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (1.1.1)
Requirement already satisfied: six>=1.14.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (1.16.0)
Requirement already satisfied: protobuf>=3.11.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (3.14.0)
Requirement already satisfied: pandas in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (1.1.5)
Requirement already satisfied: matplotlib in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from visualdl>=2.1.0->-r requirements.txt (line 3)) (2.2.3)
Requirement already satisfied: scikit-learn in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from sklearn->-r requirements.txt (line 14)) (0.23.2)
Collecting xmltodict>=0.12.0
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/28/fd/30d5c1d3ac29ce229f6bdc40bbc20b28f716e8b363140c26eff19122d8a5/xmltodict-0.12.0-py2.py3-none-any.whl (9.2 kB)
Collecting pytest-benchmark
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/2c/60/423a63fb190a0483d049786a121bd3dfd7d93bb5ff1bb5b5cd13e5df99a7/pytest_benchmark-3.4.1-py2.py3-none-any.whl (50 kB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.1/50.1 KB 143.6 kB/s eta 0:00:00a 0:00:01Collecting flake8-import-order
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/ab/52/cf2d6e2c505644ca06de2f6f3546f1e4f2b7be34246c9e0757c6048868f9/flake8_import_order-0.18.1-py2.py3-none-any.whl (15 kB)
Collecting pytest
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d2/ac/556e4410326ce77eeb1d1ec35a3e3ec847fb3e5cb30673729d2eeeffc970/pytest-7.1.1-py3-none-any.whl (297 kB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 297.0/297.0 KB 1.8 MB/s eta 0:00:00a 0:00:01Requirement already satisfied: jdcal in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from openpyxl->-r requirements.txt (line 16)) (1.4.1)
Requirement already satisfied: et-xmlfile in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from openpyxl->-r requirements.txt (line 16)) (1.0.1)
Requirement already satisfied: mccabe<0.7.0,>=0.6.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8>=3.7.9->visualdl>=2.1.0->-r requirements.txt (line 3)) (0.6.1)
Requirement already satisfied: pyflakes<2.5.0,>=2.4.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8>=3.7.9->visualdl>=2.1.0->-r requirements.txt (line 3)) (2.4.0)
Requirement already satisfied: pycodestyle<2.9.0,>=2.8.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8>=3.7.9->visualdl>=2.1.0->-r requirements.txt (line 3)) (2.8.0)
Requirement already satisfied: importlib-metadata<4.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8>=3.7.9->visualdl>=2.1.0->-r requirements.txt (line 3)) (4.2.0)
Requirement already satisfied: click>=5.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.1.0->-r requirements.txt (line 3)) (7.0)
Requirement already satisfied: Jinja2>=2.10.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.1.0->-r requirements.txt (line 3)) (3.1.1)
Requirement already satisfied: itsdangerous>=0.24 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.1.0->-r requirements.txt (line 3)) (1.1.0)
Requirement already satisfied: Werkzeug>=0.15 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.1->visualdl>=2.1.0->-r requirements.txt (line 3)) (0.16.0)
Requirement already satisfied: pytz in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Flask-Babel>=1.0.0->visualdl>=2.1.0->-r requirements.txt (line 3)) (2022.1)
Requirement already satisfied: Babel>=2.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Flask-Babel>=1.0.0->visualdl>=2.1.0->-r requirements.txt (line 3)) (2.9.1)
Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.1.0->-r requirements.txt (line 3)) (2.8.2)
Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.1.0->-r requirements.txt (line 3)) (0.10.0)
Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.1.0->-r requirements.txt (line 3)) (1.1.0)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from matplotlib->visualdl>=2.1.0->-r requirements.txt (line 3)) (3.0.7)
Requirement already satisfied: pycryptodome>=3.8.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from bce-python-sdk->visualdl>=2.1.0->-r requirements.txt (line 3)) (3.9.9)
Requirement already satisfied: future>=0.6.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from bce-python-sdk->visualdl>=2.1.0->-r requirements.txt (line 3)) (0.18.0)
Requirement already satisfied: toml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.0->-r requirements.txt (line 3)) (0.10.0)
Requirement already satisfied: virtualenv>=15.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.0->-r requirements.txt (line 3)) (16.7.9)
Requirement already satisfied: aspy.yaml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.0->-r requirements.txt (line 3)) (1.3.0)
Requirement already satisfied: nodeenv>=0.11.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.0->-r requirements.txt (line 3)) (1.3.4)
Requirement already satisfied: identify>=1.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.0->-r requirements.txt (line 3)) (1.4.10)
Requirement already satisfied: cfgv>=2.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->visualdl>=2.1.0->-r requirements.txt (line 3)) (2.0.1)
Collecting iniconfig
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/9b/dd/b3c12c6d707058fa947864b67f0c4e0c39ef8610988d7baea9578f3c48f3/iniconfig-1.1.1-py2.py3-none-any.whl (5.0 kB)
Collecting tomli>=1.0.0
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl (12 kB)
Requirement already satisfied: packaging in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pytest->motmetrics->-r requirements.txt (line 15)) (21.3)
Requirement already satisfied: attrs>=19.2.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pytest->motmetrics->-r requirements.txt (line 15)) (21.4.0)
Collecting py>=1.8.2
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl (98 kB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.7/98.7 KB 1.8 MB/s eta 0:00:00a 0:00:01Requirement already satisfied: pluggy<2.0,>=0.12 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pytest->motmetrics->-r requirements.txt (line 15)) (1.0.0)
Collecting py-cpuinfo
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e6/ba/77120e44cbe9719152415b97d5bfb29f4053ee987d6cb63f55ce7d50fadc/py-cpuinfo-8.0.0.tar.gz (99 kB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 99.8/99.8 KB 2.0 MB/s eta 0:00:00a 0:00:01
  Preparing metadata (setup.py) ... done
Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.1.0->-r requirements.txt (line 3)) (2021.10.8)
Requirement already satisfied: idna<3,>=2.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.1.0->-r requirements.txt (line 3)) (2.10)
Requirement already satisfied: chardet<4,>=3.0.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.1.0->-r requirements.txt (line 3)) (3.0.4)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->visualdl>=2.1.0->-r requirements.txt (line 3)) (1.25.11)
Requirement already satisfied: joblib>=0.11 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from scikit-learn->sklearn->-r requirements.txt (line 14)) (0.14.1)
Requirement already satisfied: threadpoolctl>=2.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from scikit-learn->sklearn->-r requirements.txt (line 14)) (2.1.0)
Requirement already satisfied: zipp>=0.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from importlib-metadata<4.3->flake8>=3.7.9->visualdl>=2.1.0->-r requirements.txt (line 3)) (3.7.0)
Requirement already satisfied: typing-extensions>=3.6.4 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from importlib-metadata<4.3->flake8>=3.7.9->visualdl>=2.1.0->-r requirements.txt (line 3)) (4.1.1)
Requirement already satisfied: MarkupSafe>=2.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Jinja2>=2.10.1->flask>=1.1.1->visualdl>=2.1.0->-r requirements.txt (line 3)) (2.0.1)
Building wheels for collected packages: pycocotools, lap, cython_bbox, py-cpuinfo
  Building wheel for pycocotools (pyproject.toml) ... done
  Created wheel for pycocotools: filename=pycocotools-2.0.4-cp37-cp37m-linux_x86_64.whl size=273791 sha256=fd172b501e11eb7b5cab0c7a964ea5bcdef6a9c34f6b6218f3ce1e249d525f94
  Stored in directory: /home/aistudio/.cache/pip/wheels/c0/01/5f/670dfd20204fc9cc6bf843db4e014acb998f411922e3abc49f
  Building wheel for lap (setup.py) ... done
  Created wheel for lap: filename=lap-0.4.0-cp37-cp37m-linux_x86_64.whl size=1593869 sha256=e1594e0faa842d48e5298391cf6c31a524ef994237e207cffd8bd9a349b1a4d7
  Stored in directory: /home/aistudio/.cache/pip/wheels/5c/d0/d2/e331d17a999666b1e2eb99743cfa1742629f9d26c55c657001
  Building wheel for cython_bbox (setup.py) ... done
  Created wheel for cython_bbox: filename=cython_bbox-0.1.3-cp37-cp37m-linux_x86_64.whl size=61616 sha256=4b96ff009e6e57519f08ecb3933a90bb7a3fe8a5871895b2413bd2b34776d3f9
  Stored in directory: /home/aistudio/.cache/pip/wheels/3e/b3/6a/aae8832326545645e65d643a2aaf223ffa3a7d01e1a1bae01b
  Building wheel for py-cpuinfo (setup.py) ... done
  Created wheel for py-cpuinfo: filename=py_cpuinfo-8.0.0-py3-none-any.whl size=22245 sha256=57e7cd6511fd6311cf3475238e062d6cce6847a86622de76be1311bf2ae4ba46
  Stored in directory: /home/aistudio/.cache/pip/wheels/88/c7/d0/6309c7cc9929894c11fe8e516c3e2a0d0a53ee4e198eac48b7
Successfully built pycocotools lap cython_bbox py-cpuinfo
Installing collected packages: py-cpuinfo, lap, iniconfig, cython_bbox, xmltodict, typeguard, tomli, terminaltables, shapely, py, flake8-import-order, pytest, pycocotools, pytest-benchmark, motmetrics
Successfully installed cython_bbox-0.1.3 flake8-import-order-0.18.1 iniconfig-1.1.1 lap-0.4.0 motmetrics-1.2.0 py-1.11.0 py-cpuinfo-8.0.0 pycocotools-2.0.4 pytest-7.1.1 pytest-benchmark-3.4.1 shapely-1.8.1.post1 terminaltables-3.1.10 tomli-2.0.1 typeguard-2.13.3 xmltodict-0.12.0

数据准备

In [15]
# 因项目数据集挂载数量的限制,使用wget进行数据下载
!wget -P /home/aistudio/data https://bj.bcebos.com/v1/ai-studio-online/0c57afdf4ab44f00991b96550a84739340f6ec8232dd40b4873d94a690e17eb0?responseContentDisposition=attachment%3B%20filename%3Dsteel_bug_detect.zip
--2022-03-31 18:15:22--  https://bj.bcebos.com/v1/ai-studio-online/0c57afdf4ab44f00991b96550a84739340f6ec8232dd40b4873d94a690e17eb0?responseContentDisposition=attachment%3B%20filename%3Dsteel_bug_detect.zip
正在解析主机 bj.bcebos.com (bj.bcebos.com)... 182.61.200.195, 182.61.200.229, 2409:8c04:1001:1002:0:ff:b001:368a
正在连接 bj.bcebos.com (bj.bcebos.com)|182.61.200.195|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 27472366 (26M) [application/octet-stream]
正在保存至: “/home/aistudio/data/0c57afdf4ab44f00991b96550a84739340f6ec8232dd40b4873d94a690e17eb0?responseContentDisposition=attachment%3B%20filename%3Dsteel_bug_detect.zip”

0c57afdf4ab44f00991 100%[===================>]  26.20M  25.9MB/s    in 1.0s    

2022-03-31 18:15:23 (25.9 MB/s) - 已保存 “/home/aistudio/data/0c57afdf4ab44f00991b96550a84739340f6ec8232dd40b4873d94a690e17eb0?responseContentDisposition=attachment%3B%20filename%3Dsteel_bug_detect.zip” [27472366/27472366])
In [16]
!unzip -oq /home/aistudio/data/0c57afdf4ab44f00991b96550a84739340f6ec8232dd40b4873d94a690e17eb0?responseContentDisposition=attachment%3B%20filename%3Dsteel_bug_detect.zip -d /home/aistudio/data/data113944/

代码准备

In [17]
# 以下代码及配置,基于PASSL中内容,并结合cascade_rcnn_r50_fpn_1x_coco的配置进行迁移!cp /home/aistudio/work/detection/convnext.yml /home/aistudio/PaddleDetection/convnext.yml
!cp /home/aistudio/work/detection/convnext.py /home/aistudio/PaddleDetection/ppdet/modeling/backbones/convnext.py
!cp /home/aistudio/work/detection/__init__.py /home/aistudio/PaddleDetection/ppdet/modeling/backbones/__init__.py        # 导入网络

网络训练

In [ ]
# 以test为训练集,训练cascade rcnn convnext 2 epoch!python /home/aistudio/PaddleDetection/tools/train.py \
        -c /home/aistudio/PaddleDetection/convnext.yml \
        --eval \
        --fp16 \
        --use_vdl=true \
        -o epoch=3
Warning: import ppdet from source directory without installing, run 'python setup.py install' to install ppdet firstly
W0331 18:16:29.811268  1844 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W0331 18:16:29.836920  1844 device_context.cc:465] device: 0, cuDNN Version: 7.6.
[03/31 18:16:32] ppdet.utils.download INFO: Downloading convnext_tiny_1k_224.pdparams from https://passl.bj.bcebos.com/models/convnext_tiny_1k_224.pdparams
100%|████████████████████████████████| 111694/111694 [00:05<00:00, 18745.04KB/s]
[03/31 18:16:39] ppdet.utils.checkpoint INFO: The shape [1000] in pretrained weight head.fc_cls.bias is unmatched with the shape [1] in model backbone.head.fc_cls.bias. And the weight head.fc_cls.bias will not be loaded
[03/31 18:16:39] ppdet.utils.checkpoint INFO: The shape [768, 1000] in pretrained weight head.fc_cls.weight is unmatched with the shape [768, 1] in model backbone.head.fc_cls.weight. And the weight head.fc_cls.weight will not be loaded
[03/31 18:16:39] ppdet.utils.checkpoint INFO: Finish loading model weights: /home/aistudio/.cache/paddle/weights/convnext_tiny_1k_224.pdparams
[03/31 18:16:39] ppdet.engine INFO: Epoch: [0] [  0/126] learning_rate: 0.000010 loss_rpn_cls: 0.868715 loss_rpn_reg: 1.379543 loss_bbox_cls_stage0: 2.675596 loss_bbox_reg_stage0: 0.007741 loss_bbox_cls_stage1: 1.309931 loss_bbox_reg_stage1: 0.010101 loss_bbox_cls_stage2: 2.300117 loss_bbox_reg_stage2: 0.009881 loss: 8.561625 eta: 0:01:12 batch_cost: 0.1926 data_cost: 0.0003 ips: 5.1914 images/s
[03/31 18:16:42] ppdet.engine INFO: Epoch: [0] [ 20/126] learning_rate: 0.000210 loss_rpn_cls: 0.177607 loss_rpn_reg: 0.209631 loss_bbox_cls_stage0: 0.226774 loss_bbox_reg_stage0: 0.020316 loss_bbox_cls_stage1: 0.114375 loss_bbox_reg_stage1: 0.019034 loss_bbox_cls_stage2: 0.126810 loss_bbox_reg_stage2: 0.013394 loss: 1.188014 eta: 0:00:49 batch_cost: 0.1349 data_cost: 0.0003 ips: 7.4117 images/s
[03/31 18:16:44] ppdet.engine INFO: Epoch: [0] [ 40/126] learning_rate: 0.000410 loss_rpn_cls: 0.187713 loss_rpn_reg: 0.106287 loss_bbox_cls_stage0: 0.183981 loss_bbox_reg_stage0: 0.041466 loss_bbox_cls_stage1: 0.062141 loss_bbox_reg_stage1: 0.023217 loss_bbox_cls_stage2: 0.060378 loss_bbox_reg_stage2: 0.007851 loss: 0.779464 eta: 0:00:46 batch_cost: 0.1347 data_cost: 0.0003 ips: 7.4215 images/s
[03/31 18:16:47] ppdet.engine INFO: Epoch: [0] [ 60/126] learning_rate: 0.000609 loss_rpn_cls: 0.151224 loss_rpn_reg: 0.093652 loss_bbox_cls_stage0: 0.095361 loss_bbox_reg_stage0: 0.028566 loss_bbox_cls_stage1: 0.033791 loss_bbox_reg_stage1: 0.014273 loss_bbox_cls_stage2: 0.037734 loss_bbox_reg_stage2: 0.010816 loss: 0.551668 eta: 0:00:42 batch_cost: 0.1266 data_cost: 0.0003 ips: 7.8990 images/s
[03/31 18:16:50] ppdet.engine INFO: Epoch: [0] [ 80/126] learning_rate: 0.000809 loss_rpn_cls: 0.121782 loss_rpn_reg: 0.047220 loss_bbox_cls_stage0: 0.093039 loss_bbox_reg_stage0: 0.053310 loss_bbox_cls_stage1: 0.048381 loss_bbox_reg_stage1: 0.032904 loss_bbox_cls_stage2: 0.033058 loss_bbox_reg_stage2: 0.014520 loss: 0.498449 eta: 0:00:39 batch_cost: 0.1241245 data_cost: 0.0003 ips: 8.0348 images/s
[03/31 18:16:52] ppdet.engine INFO: Epoch: [0] [100/126] learning_rate: 0.001009 loss_rpn_cls: 0.130423 loss_rpn_reg: 0.055140 loss_bbox_cls_stage0: 0.070923 loss_bbox_reg_stage0: 0.041984 loss_bbox_cls_stage1: 0.035746 loss_bbox_reg_stage1: 0.026651 loss_bbox_cls_stage2: 0.025823 loss_bbox_reg_stage2: 0.014539 loss: 0.459595 eta: 0:00:36 batch_cost: 0.1316 data_cost: 0.0003 ips: 7.5960 images/s
[03/31 18:16:55] ppdet.engine INFO: Epoch: [0] [120/126] learning_rate: 0.001209 loss_rpn_cls: 0.152737 loss_rpn_reg: 0.050989 loss_bbox_cls_stage0: 0.073883 loss_bbox_reg_stage0: 0.046244 loss_bbox_cls_stage1: 0.035809 loss_bbox_reg_stage1: 0.027861 loss_bbox_cls_stage2: 0.022346 loss_bbox_reg_stage2: 0.010038 loss: 0.573754 eta: 0:00:33 batch_cost: 0.1301 data_cost: 0.0003 ips: 7.6887 images/s
[03/31 18:16:57] ppdet.utils.checkpoint INFO: Save checkpoint: /home/aistudio/data/output_det/convnext
[03/31 18:16:58] ppdet.engine INFO: Eval iter: 0
[03/31 18:16:58] ppdet.metrics.metrics INFO: Accumulating evaluatation results...
[03/31 18:16:58] ppdet.metrics.metrics INFO: mAP(0.50, 11point) = 2.77%
[03/31 18:16:58] ppdet.engine INFO: Total sample number: 14, averge FPS: 14.486713457165575
[03/31 18:16:58] ppdet.engine INFO: Best test bbox ap is 0.028.
In [ ]
# 将推理结果转移到best_model/det下!mkdir /home/aistudio/best_model
!mkdir /home/aistudio/best_model/det
!cp /home/aistudio/data/output_det/convnext/best_model.pdparams /home/aistudio/best_model/det/model.pdparams

图片推理

In [ ]
# 预测结果保存在 PaddleDetection/bbox.json!python /home/aistudio/PaddleDetection/tools/infer.py \
        -c /home/aistudio/PaddleDetection/convnext.yml  \
        --infer_dir=/home/aistudio/data/data113944/steel_bug_detect/test/IMAGES \
        --output_dir=/home/aistudio/data/infer_det/ \
        --draw_threshold=0.5 \
        -o  weights=/home/aistudio/best_model/det/model.pdparams \
        --save_txt=true

相关专题

更多
Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

44

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

58

2026.01.15

国考成绩查询入口 国考分数公布时间2026
国考成绩查询入口 国考分数公布时间2026

笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。

11

2026.01.15

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

65

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

36

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

75

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

21

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.2万人学习

Git 教程
Git 教程

共21课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号