「全国大学生智能汽车竞赛」是教育部倡导的大学生科技 A 类竞赛,中国高等教育学会将其列为含金量最高的大学生竞赛之一。截至 2023 年,已经举办十八届,比赛每年吸引包括清华、上交、复旦、北航等 500 多所高校,超 10 万名大学生参加,是提升学生创新实践能力和培养团队精神的国家级创意性科技竞赛。
完全模型组作为比赛中深入使用人工智能技术的竞速组别,在竞赛中引入了更多人工智能元素和技术,受到越来越多学生与高校教师们的欢迎。
为了让大家从线上练习赛的学习与实践中,积累更多深度学习经验与科学方法论,我们为大家准备了培训直播课和新手教程,干货满满。
线上赛培训,本周六见!
除直播课之外,河池学院飞桨领航团团长黄德攒也为大家梳理了深度学习入门实践和线上赛打榜的流程,快来一睹为快。
深度学习入门实践 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 ~
复制代码
第三步:数据准备
# 解压数据集
!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
复制代码
第六步:模型导出与提交
%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
复制代码
线上练习赛常见问题整理
错误可能的出现原因: 1.模型的标签配置与模型不匹配 2.数据集有问题 3.模型导出时对应权重与对应的 config 文件不一致
error② :the predict.py script failed to run
解决办法:1.检查和调整 env(依赖库,常为 PaddleDetection 文件夹);2.检查 predict.py 中的路径配置
安装 PaddleDetection 时的版本关联明确
线上赛路径图
作者:河池学院飞桨领航团团长黄德攒
并同时致谢群内:中二短尾猫
校对:Jungle
评论