头图

「全国大学生智能汽车竞赛」是教育部倡导的大学生科技A类竞赛,中国高等教育学会将其列为含金量最高的大学生竞赛之一。截至2023年,已经举办十八届,比赛每年吸引包括清华、上交、复旦、北航等500多所高校,超10万名大学生参加,是提升学生创新实践能力和培养团队精神的国家级创意性科技竞赛。

​完全模型组作为比赛中深入使用人工智能技术的竞速组别,在竞赛中引入了更多人工智能元素和技术,受到越来越多学生与高校教师们的欢迎。

为了让大家从线上练习赛的学习与实践中,积累更多深度学习经验与科学方法论,我们为大家准备了培训直播课和新手教程,干货满满。

线上赛培训,本周六见!

  • 培训时间: 2024年3月2日11:00
  • 线上链接: 加入官方社群获取
  • 培训讲师: 百度飞桨开发者技术专家(PPDE)、前百度飞桨北京领航团团长郑博培
  • 培训内容: 目标检测任务从入门到进阶

除直播课之外,河池学院飞桨领航团团长黄德攒也为大家梳理了深度学习入门实践和线上赛打榜的流程,快来一睹为快。

深度学习入门实践6步走,暨线上赛打榜流程

第一步:环境配置

git clone https://gitee.com/PaddlePaddle/PaddleDetection.git -b develop

建议使用develop分支哦!部分情况下需要使用release2.3.2以前的分支。

第二步:安装依赖

# 安装PaddleDetection
%cd PaddleDetection
!pip install -r requirements.txt

# 编译安装paddledet
!python setup.py install
%cd ~

第三步:数据准备

  • 解压官方数据集Car2024
# 解压数据集
!unzip -oq /home/aistudio/data/data257994/Car2024.zip
  • 生成标签文件(训练集train.txt以及验证集val.txt)
  • 将VOC格式标签文件转换成COCO格式(.json)标签文件(训练集train.json与验证集val.json)
  • 瞅一眼转换是否成功
  • 确定你的数据集的路径
  • 根据数据集的路径,修改如下文件PaddleDetection/configs/datasets/coco_detection.yml
TrainDataset:
  name: COCODataSet
  image_dir: Images                                            #更改为你的图像数据文件夹的名字
  anno_path: train.json                                         #训练集标签文件,一般情况下转换后生成在数据集文件夹的根目录下
  dataset_dir: /home/aistudio/work/data3374                #数据集位置
  data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd']

EvalDataset:
  name: COCODataSet                                          #解释如上
  image_dir: Images
  anno_path: val.json
  dataset_dir: /home/aistudio/work/data3374
  allow_empty: true

TestDataset:
  name: ImageFolder
  anno_path: val.json                                 
  dataset_dir: /home/aistudio/work/data3374

第四步:参数调整与模型训练

# 模型训练
%cd ~
%cd PaddleDetection
!python tools/train.py -c configs/picodet/picodet_m_320_coco_lcnet.yml

picodet_m_320_coco_lcnet.yml中,各个超参数的值不同可能导致模型结构、精度、效果有出入。

_BASE_: [
  '../datasets/coco_Car2024.yml',
  '../runtime.yml',
  '_base_/picodet_v2.yml',
  '_base_/optimizer_300e.yml',
  '_base_/picodet_320_reader.yml',
]

# 模型权重路径,模型保存的地方哦
weights: output/picodet_m_320_coco/best_model

# 在反向传播时查找未使用的参数以提高内存利用率
find_unused_parameters: True

# 是否使用指数移动平均来稳定模型的训练
use_ema: true

# 总训练轮数
epoch: 300  # 调大可能提高模型性能,但也可能导致过拟合,训练时间增加

# 每隔多少个epoch保存一次模型的快照
snapshot_epoch: 10  # 调大可能减少存储开销,但增加训练时间

# 训练时的读取器配置
TrainReader:
  batch_size: 48  # 调大可能提高训练速度,但可能导致 GPU 内存不足

# 学习率相关配置
LearningRate:
  # 基础学习率
  base_lr: 0.24  # 调大可能加速模型收敛,但也可能导致发散
  # 学习率调度策略
  schedulers:
    - !CosineDecay
      max_epochs: 300  # 余弦退火策略,学习率在300轮内进行余弦退火
    - !LinearWarmup
      start_factor: 0.1  # 预热学习率的初始比例
      steps: 300  # 预热所需的步数
  • 不小心中断训练后,重新恢复训练
python tools/train.py    
 -c configs/picodet/picodet_m_320_coco_lcnet.yml --eval  
 -r output/picodet_m_320_coco/best_model

第五步:模型测试

%cd ~
%cd PaddleDetection
# 更换"--infer_img"里的图片路径以预测不同的图片
!python tools/infer.py -c configs/picodet/picodet_m_320_coco_lcnet.yml
                    --infer_img=/home/aistudio/Car2024/images/crosswalk74.jpg
                    --output_dir=infer_output/ 
                    --draw_threshold=0.5 
                    -o weights=/home/aistudio/PaddleDetection/output/picodet_m_320_coco_lcnet/你的最新模型权重文件. pdparams  --use_vdl=Ture

第六步:模型导出与提交

  • 训练模型过程中会产生一些中间模型即checkpoints,需要将最优模型文件导出:
%cd ~
%cd PaddleDetection
# 将"-o weights"里的模型路径换成你自己训好的模型
!python tools/export_model.py -c configs/picodet/picodet_m_320_coco_lcnet.yml
              -o weights=/home/aistudio/PaddleDetection/output/picodet_m_320_coco_lcnet/best_model TestReader.fuse_normalize=true
  • 最后一步就是提交内容的整理:将文件夹进行调整,并将放置依赖文件的PaddleDetection文件夹中无关内容进行删除,最终的文件形态如下所示(模型名称根据自己的情况而定):

线上练习赛常见问题整理

  • error① :list index out of range

    错误可能的出现原因:    1.模型的标签配置与模型不匹配    2.数据集有问题    3.模型导出时对应权重与对应的config文件不一致

  • error② :the predict.py script failed to run

    解决办法:1.检查和调整env(依赖库,常为PaddleDetection文件夹);2.检查 predict.py 中的路径配置

  • 安装PaddleDetection时的版本关联明确
  • 线上赛路径图

作者:河池学院飞桨领航团团长黄德攒

并同时致谢群内:中二短尾猫

校对:Jungle


飞桨PaddlePaddle
30 声望34 粉丝

飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件于一体,是中国首个自主研发、功能丰富、开源开放的产业级深度...