转载自AI Studio 项目链接:https://aistudio.baidu.com/aistudio/projectdetail/3570648?channelType=0&channel=0
相对于官方baseline的主要改动有:

从GitHub下载了最新版的PaddleDetection
增加代码:压缩前批量删除output下的多余模型文件
增加模型参数配置介绍work/config_annotations.md
针对本次比赛提供模型压缩和结果可视化示例
改进predict.py,使得PP-YOLO模型可以成功预测
根据项目“如何在有限算力下实现智能驾驶任务高精度识别”对predict.py进行改进,FPS有所提升(暂未用多进程)。如果使用多进程,FPS将提高更多

比赛背景
车辆的普及和人们对出行体验的重视,对地图导航提出了更高的要求。基于车载影像的AR导航系统能够精准快速的识别道路情况,不仅能够辅助驾驶系统进行高效的决策,同时结合终端渲染与语音技术,也能够为用户带来更为智能精准的导航体验。

作为『新一代人工智能地图』的百度地图,秉承着『用科技让出行更简单』的使命,借助于图像识别、语音识别、大数据处理等人工智能技术,大幅提升地图数据采集和处理的自动化程度,实现道路覆盖超过1000万公里,已成为业内AI化水平最高、搭载的AI技术最强最丰富的地图数据厂商。本次比赛数据由百度地图提供,要求在统一的计算资源下,能够对车载影像中道路障碍物及红绿灯状态进行快速精准的识别。

本次竞赛的题目和数据由百度地图数据引擎部提供,模型和基线相关技术支持由深度学习技术平台部提供,一站式AI开发平台AI Studio由百度AI技术生态部提供。期待参赛者们能够以此为契机,共同推进智能交通领域的发展。

比赛链接:
第十七届全国大学生智能汽车竞赛:智慧交通组创意赛线上资格赛

以下是有助于本次比赛提分的干货:

30分钟快速上手PaddleDetection:work/PaddleDetection/docs/tutorials/GETTING_STARTED_cn.md

一些问与答:work/PaddleDetection/docs/tutorials/FAQ/FAQ第零期.md

个人笔记:work/notes.md

用脚本任务可以多卡训练,效果更好!可以参照小U大佬的项目:多卡训练脚本

带领大家持续冲高的项目:第十七届智能车创意组62.1%解决方案分享:PP-YOLOE的首秀

调参小技巧
(以ppyolov2_r50vd_dcn_365e_coco.yml为例)

BASE: [
‘…/datasets/coco_detection.yml’,#说明训练数据、验证数据和测试数据的路径
‘…/runtime.yml’,#公共的运行参数,比如说是否使用GPU等
‘./base/ppyolov2_r50vd_dcn.yml’,#模型和主干网络的情况
‘./base/optimizer_365e.yml’,#学习率和优化器的配置
‘./base/ppyolov2_reader.yml’,#数据读取器配置,如batch size,并发加载子进程数等,同时包含读取后预处理操作,如resize、数据增强等等
]
P.S.主配置文件是ppyolov2_r50vd_dcn_365e_coco.yml,在这个文件中的参数优先级是最高的。例如决定训练多少个epoch保存一次模型文件的参数snapshot_epoch,由ppyolov2_r50vd_dcn_365e_coco.yml中的决定,而不是runtime.yml中的
配置文件的各参数介绍详见:work/config_annotations.md

(一) 比赛环境准备
In [ ]

解压PaddleDetection-develop,此步骤只需运行一次(已解压)

!unzip -oq -d /home/aistudio/work/ /home/aistudio/data/data134031/PaddleDetection-develop.zip

更改文件名

%cd /home/aistudio/work/

import os

os.rename(“PaddleDetection-develop”,“PaddleDetection”)

In [ ]

安装paddleslim

!pip install paddleslim -i https://pypi.tuna.tsinghua.edu.cn/simple
In [ ]

每次启动都要运行!

在AIStudio环境中安装相关依赖

%cd /home/aistudio/work/PaddleDetection
!pip install -r requirements.txt

编译安装paddledet

!python setup.py install
(二) 比赛数据准备
在Baseline中的data目录下,是用于进行目标检测的coco数据集格式的数据data_coco.zip,已经划分好了训练集和验证集(7:1)。

所用数据集请访问比赛所用数据连接

In [1]

训练集和验证集数据解压缩至/home/aistudio/work/data_coco

!unzip -oq -d /home/aistudio/work/ /home/aistudio/data/data128932/data_coco.zip
In [ ]

在/home/aistudio/work/PaddleDetection/dataset/下建立data_coco数据集软连接

!ln -s /home/aistudio/work/data_coco /home/aistudio/work/PaddleDetection/dataset/
(三) 检测模型训练及模型转换
A.训练并保存模型
In [ ]

下面使用已经写好的配置文件,开始训练

如果要恢复训练则加上 -r output/ppyolov2_r50vd_dcn_365e_coco/xxx

VisualDL可视化则加上–use_vdl #–vdl_log_dir设置可视化日志文件的存放路径

模型压缩则加上–slim_config configs/slim/{SLIM_CONFIG.yml}({SLIM_CONFIG.yml}为指定压缩策略配置文件)

%cd /home/aistudio/work/PaddleDetection
!python -m paddle.distributed.launch --gpus 0 tools/train.py
-c configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml --eval \

-r output/ppyolo_r50vd_prune_fpgm/23 \

–slim_config configs/slim/prune/ppyolo_r50vd_prune_fpgm.yml \

–use_vdl=true
–vdl_log_dir=vdl_dir/scalar
B.可视化
In [ ]

使用如下命令启动VisualDL查看日志

方法一:(亲测无效)下述命令会在127.0.0.1上启动一个服务,支持通过前端web页面查看,可以通过–host这个参数指定实际ip地址

!visualdl --logdir vdl_dir/scalar/ --host 127.0.0.1 --port=8080 # 新建标签页,输入网址 http://127.0.0.1:8080/ 即可打开可视化页面

In [ ]

方法二:↓(亲测有效)(访问输出信息里的网址即可打开可视化页面)

%cd /home/aistudio/work/PaddleDetection
!visualdl service upload --logdir vdl_dir/scalar/
C. 转换并保存静态图模型
In [ ]

训练完成后,模型将会被保存在output/xxx/中,根据eval的效果,会保存出model_final.pdparams,这里使用这个模型进行静态图转换

%cd /home/aistudio/work/PaddleDetection
!python tools/export_model.py
-c configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml \

–slim_config configs/slim/prune/ppyolo_r50vd_prune_fpgm.yml \

-o weights=output/ppyolo_r50vd_dcn_1x_coco/23.pdparams
TestReader.fuse_normalize=true
截至到这里,检测模型的训练和转换已经完成

(四) 准备预测脚本和提交代码
In [ ]

将检测模型拷贝到model文件夹中

%cd /home/aistudio/work/
!cp -r PaddleDetection/output_inference/* model/
!ls model/
In [ ]

对predict.py脚本进行了更改,适合YOLO模型,尝试使用多进程可进一步提升FPS,请参赛队伍发挥自己的所长,对其进行优化

predict.py中有一部分类别和处理是采用的默认值,更改部分参数会有意想不到的效果

predict.py会根据data.txt文件中的图片进行预测,结果保存在result.json文件中,运行前请先解压数据集(这里使用验证集进行测试)

%cd /home/aistudio/work/
!python predict.py data.txt result.json
批量删除多余模型文件
代码打包前删除output下的多余模型文件 (减小压缩包的大小)

In [ ]

删除早期训练保存的模型文件

import os
import shutil
path = ‘/home/aistudio/work/PaddleDetection/output/ppyolo_r50vd_dcn_1x_coco’ # 模型文件的路径
boundary_number = 4 # 这个数字你需要更改(删除数字小于boundary_number的模型文件)例:1.pdparams

def rmdir_in_output(num):
files = os.listdir(path)
for file in files:
if file == ‘best_model.pdopt’ or file == ‘best_model.pdparams’ or file == ‘.ipynb_checkpoints’ or file == ‘model_final.pdopt’ or file == ‘model_final.pdparams’:
continue
else:
try:
number , postfix= file.split(‘.’, 1)
except Exception as e:
continue
if postfix == ‘pdopt’:
num_of_filename = number
path1 = path+‘/’+num_of_filename+‘.pdparams’
path2 = path+‘/’+num_of_filename+‘.pdopt’
if int(num_of_filename) < boundary_number:
os.unlink(path1)
os.unlink(path2)
print(num_of_filename+‘.pdparams’)
print(num_of_filename+‘.pdopt’)

print(‘已被删除的文件为:’)
rmdir_in_output(1)
In [ ]

代码打包

打包前删除数据集软连接

!rm -rf /home/aistudio/work/PaddleDetection/dataset/data_coco

这里为了让压缩包更小,建议把PaddleDetection里面不用的模型删掉(output和output_inference文件夹)

否则压缩包太大,下载很慢

!zip -r -q -o submission.zip model/ PaddleDetection/ train.py predict.py
关于模型压缩

PaddleDetection模型库

总结
代码使用PaddleDetection完成基础的训练和提交,包括数据准备、模型训练及转换和预测步骤,并完成提交。

对于模型的调优,大家可以有如下几个方面:

1、对数据集进行预处理,这里推荐一个项目:数据处理

2、模型的选择,详见configs文件夹

3、模型的超参数,如学习率等参数

4、模型训练方式,包括优化器的选择、WarmUp方式选择

5、优化代码predict.py

如果项目中有任何问题,欢迎在评论区留言交流,共同进步!

请点击此处查看本环境基本用法.
Please click here for more detailed instructions.

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐