【第十五届中国计算机设计大赛】智慧导盲组,手把手教你超越0.8
本文介绍了基于PaddleDetection的目标检测项目流程,包括克隆仓库、安装依赖、编译安装等步骤。还涵盖数据集准备,如查看COCO标注、解压和配置数据集,以及模型训练、预测、导出,最后说明代码提交及优化方法,如调整阈值等。
一、安装PaddleDetection
In [ ]
# 克隆PaddleDetection仓库# 如果已经克隆,则不需要重复运行,可把第3行直接注释,从第6行开始运行!git clone https://gitee.com/PaddlePaddle/PaddleDetection.git# 安装其他依赖%cd PaddleDetection !pip install -r requirements.txt# 编译安装paddledet!python setup.py install %cd ~
二、数据集准备
1、数据标注查看
本次比赛为大家提供了COCO格式的数据集。
COCO数据标注是将所有训练图像的标注都存放到一个json文件中。数据以字典嵌套的形式存放。
json文件中包含以下key:
- info,表示标注文件info。
- licenses,表示标注文件licenses。
- images,表示标注文件中图像信息列表,每个元素是一张图像的信息。
- annotations,表示标注文件中目标物体的标注信息列表,每个元素是一个目标物体的标注信息。
In [1]
# 查看COCO标注文件import json
coco_anno = json.load(open('WisdomGuide/annotations/instance_train.json'))# coco_anno.keysprint('\nkeys:', coco_anno.keys())# 查看类别信息print('\n物体类别:', coco_anno['categories'])# 查看一共多少张图print('\n图像数量:', len(coco_anno['images']))# 查看一共多少个目标物体print('\n标注物体数量:', len(coco_anno['annotations']))# 查看一条目标物体标注信息print('\n查看一条目标物体标注信息:', coco_anno['annotations'][0])
keys: dict_keys(['images', 'categories', 'annotations'])
物体类别: [{'supercategory': 'component', 'id': 1, 'name': 'blind_path'}, {'supercategory': 'component', 'id': 2, 'name': 'green_light'}, {'supercategory': 'component', 'id': 3, 'name': 'block'}, {'supercategory': 'component', 'id': 4, 'name': 'no_light'}, {'supercategory': 'component', 'id': 5, 'name': 'red_light'}]
图像数量: 7995
标注物体数量: 25265
查看一条目标物体标注信息: {'segmentation': [[3.0, 2.5380710659898478, 3.0, 479.0, 357.11167512690355, 479.0, 357.11167512690355, 2.5380710659898478]], 'iscrowd': 0, 'image_id': 1, 'bbox': [3.0, 2.5380710659898478, 354.11167512690355, 476.46192893401013], 'area': 168720.731789018, 'category_id': 1, 'id': 1}
2、解压数据集
In [2]
# 解压数据集!gzip -dfq /home/aistudio/data/data137625/WisdomGuide.tar.gz !tar -xf /home/aistudio/data/data137625/WisdomGuide.tar -C /home/aistudio/ #把数据集移到/home/aistudio下面
3、配置数据集
注意:生成版本,由于PaddleDetection文件夹下的文件较多,无法保存,因此数据集的配置文件需要我们自行配置
在PaddleDetection/configs/datasets/路径下新建一个coco_dog.yml文件,并配置数据集格式、类别、加载路径等信息:
metric: COCOnum_classes: 5TrainDataset:
!COCODataSet
image_dir: train
anno_path: annotations/instance_train.json
dataset_dir: /home/aistudio/WisdomGuide/
data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd']EvalDataset:
!COCODataSet
image_dir: val
anno_path: annotations/instance_val.json
dataset_dir: /home/aistudio/WisdomGuide/TestDataset:
!ImageFolder
! anno_path: annotations/instance_val.json
image_dir: val
dataset_dir: /home/aistudio/WisdomGuide/
三、模型训练
Baseline选择的模型是PP-Picodet,本项目就继续使用PP-Picodet,在Baseline的基础上进行微调
1.训练配置
在正式开始训练前,我们需要选择配置文件,并修改参数
将PaddleDetection/configs/picodet/picodet_m_320_coco_lcnet.yml里的数据集配置改成我们前面自己新建的数据集配置,也就是coco_dog.yml
2、模型训练
注意:数据集配置一定要改为前面我们自行配置的
In [ ]
# 模型训练%cd ~ %cd PaddleDetection !python tools/train.py -c configs/picodet/picodet_m_320_coco_lcnet.yml
如果需要更换模型,直接在上述代码中修改路径即可,注意:更换模型时,检查数据集是不是我们要用的数据集。
如果训练时,突然中断了,需要恢复训练,使用-r参数,后面加上模型路径即可
例:!python tools/train.py -c configs/picodet/picodet_m_320_coco_lcnet.yml -r -r output/picodet_m_320_coco_lcnet/best_model
想要边训练边评估,末尾加 --eval 即可
例:!python tools/train.py -c configs/picodet/picodet_m_320_coco_lcnet.yml --eval
训练时的日志输出已单独保存在vdl_log_dir/scalar/vdlrecords.1649487648.log
注意:以下代码运行,需等模型训练完成后
3.模型预测
训练好模型以后,我们可以检验一下效果。
In [ ]
%cd ~
%cd PaddleDetection# 更换"--infer_img"里的图片路径以预测不同的图片!python tools/infer.py -c configs/picodet/picodet_m_320_coco_lcnet.yml \
--infer_img=/home/aistudio/WisdomGuide/val/no_light_629.png \
--output_dir=infer_output/ \
--draw_threshold=0.5 \
-o weights=/home/aistudio/PaddleDetection/output/picodet_m_320_coco_lcnet/best_model.pdparams \
--use_vdl=Ture
4.导出模型
转换并保存静态图模型。
这里假设我们已经在线训练10小时,获得了模型
如果要生成版本,由于PaddleDetection文件夹下的文件较多,无法保存,故要把训练好的模型单独拿出来,例如放在/home/aistudio/checkpoint/best_model.pdparams。
In [ ]
%cd ~
%cd PaddleDetection# 将"-o weights"里的模型路径换成你自己训好的模型!export CUDA_VISIBLE_DEVICES=0!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.pdparams \
TestReader.fuse_normalize=true
四、代码提交
这一步与Baseline操作基本一样
AI Studio上提供了一套测评系统,我们将训练好的模型和预测代码打包上传,测评系统会自动算分。
提交格式:
| -- model| | -- xxx.pb| | … | -- env| | -- | |…| -- predict.py| -- …
In [5]
%cd ~# 在work目录下整理提交代码# 创建model文件夹(已经创建好的话,就不用再创建了)!mkdir /home/aistudio/work/model# 将检测模型拷贝到model文件夹中!cp -r /home/aistudio/PaddleDetection/output_inference/picodet_m_320_coco_lcnet/ /home/aistudio/work/model/# 将训练脚本拷贝到work目录下,与model同级!cp /home/aistudio/PaddleDetection/tools/train.py /home/aistudio/work/# 将PaddleDetection也复制进来!cp -r /home/aistudio/PaddleDetection/ /home/aistudio/work/
/home/aistudio
这里为了让压缩包更小,建议把PaddleDetection里面不用的模型备份出来。特别地,隐藏文件.git占用存储空间较大,且在这里没有什么用,故可以手动删除。
In [9]
# 删除隐藏文件!rm -rf /home/aistudio/work/PaddleDetection/.git/
注意: 在打包前,请将work/PaddleDetection/deploy/python/preprocess.py的第17行改为:
from .keypoint_preprocess import get_affine_transform
否则会出现以下报错:
Traceback (most recent call last): File "predict.py", line 19, in <module> from deploy.python.preprocess import preprocess, Resize, NormalizeImage, Permute, PadStride File "PaddleDetection/deploy/python/preprocess.py", line 17, in <module> from keypoint_preprocess import get_affine_transform ModuleNotFoundError: No module named 'keypoint_preprocess'
In [10]
# 打包代码%cd /home/aistudio/work/ !zip -r -q -o submission.zip model/ PaddleDetection/ train.py predict.py
/home/aistudio/work
在提交前,我们需要改动一下predict.py文件,这样我们才能上0.8
我们把阈值参数由0.05改为0.5,就OK啦。
预选赛时,有不少同学说:我模型的预测效果比Baseline好,为啥提交后分数比Baseline低啊,原因就是这个。
阈值由Baselin的0.05改为0.5,我们就会获得巨大提升。
然后从aistudio上下载打包好的submission.zip文件,就可以直接到官网提交啦!现在预选赛的通道关闭了,我们可以在练习赛进行提交。
如果提交成功,就可以看到自己的分数了。
本项目在baseline基础上,将阈值改为0.5,结果在0.8之上。大家可以试试。
五、优化方法
1、尝试不同的阈值,找出最佳阈值。
修改阈值能够提升一点我们的得分,0.5对有些模型来说,不是最佳阈值,我们可以试试不同阈值提交,找到该模型的最佳阈值。
2、加大训练轮数
有些模型原始的配置轮数不是最大,我们可以将训练轮数加大到,该模型最大轮数,例如Picodet-m-416模型
最大轮数是300轮,最初设置是250轮,我们可以将轮数设置最大轮数300轮。
3、尝试不同的模型
尝试一下其他的模型,例如PP-YOLO,YOLOv3等,这里透露一下,PP-Picodet能上0.87
4、加载COCO数据集预训练模型,使用预训练模型可以有效提升模型精度
以Picodet-m-320为例: 修改Picodet_v2.yml中的pretrain_weights即可
5、修改loss
将picodet_v2.yml中的lossbbox name值由GIoU改为DIou
6、修改lr
降低学习率,尝试调整为一半或十分之一,亦或是其他学习率
以上就是一些通用的方法,非常基础外加非常简单,大家可以逐一尝试,或者觉得麻烦的话,一口气全部试在一个模型里面,模型训练完成后,通过智慧导盲练习赛进行得分验证。此外这些方法也可以在以后的一些比赛使用,屡试不爽。
或许还有一些其他不动网络的提升方法,但我并不知道,欢迎各位大佬补充
我在work目录下面放了一个导出的Picodet-m-320模型,大家把predict.py的阈值改改,复制PaddleDetion,打包进行提交,验证第一个方法。
以上就是【第十五届中国计算机设计大赛】智慧导盲组,手把手教你超越0.8的详细内容,更多请关注深圳推广【www.sztg.com.cn】。
如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!
猜您喜欢
统信 UOS 远程办公神器:手把手教你配置向日葵
2026-05-25统信UOS安装向日葵有三种方式:一、应用商店一键安装,自动处理依赖与权限;二、官网下载.deb包图形化安装,适配最新版与多架构;三、终端命令行安装,支持Server环境与批量部署;还需切换X11会话并绑定账号启用无人值守。 如果您希望在统信UOS系统上实现稳定高效的远程办公,向日葵是一款无需公网IP、免端口映射、支持跨平台直连的成熟远程控制工具。以下是针对UOS平台配置向日葵的多种可行路径与关键操...
2026最新Recraft AI注册指南:手把手教你注册Recraft AI账号
2026-05-23需注册RecraftAI账户才能使用全部功能:一、访问官网recraft.ai确认正版;二、点击Signin→Createaccount;三、填有效邮箱、强密码并同意协议;四、查收验证邮件并点击链接;五、或选Google快捷登录跳过验证。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您希望使用RecraftAI进行图像生成、矢量设计或UI/UX...
电脑没有TPM芯片能装Win11吗 手把手教你修改镜像绕过硬件检测
2026-05-21可通过三种方法绕过Windows11安装时的TPM2.0检测:一、用NTLite工具禁用安装镜像中的硬件检查模块;二、向WinPE启动环境注入Bypass注册表项;三、替换setuphost.exe与appraiserres.dll实现无痕跳过校验。 如果您尝试安装Windows11,但系统在启动安装界面即提示“此电脑不满足最低系统要求”,且明确指出缺少TPM芯片,则可能是安装介质在加载阶段就执行...
角色武器搭配超全攻略 手把手教你拉满战力
2026-05-20玩游戏选装备绝不能胡乱拼凑,得先搞明白自己角色的“核心定位”是什么!专注输出的主c,必须锁定与自身输出机制高度契合的装备来培养——如果是靠共鸣技能打爆发的角色,那提升技能伤害的装备就是命脉所在,能将关键一击的威力直接推至巅峰;而偏好普攻流、主打持续压制和续航的选手,则要优先选择强化平a效果的装备,让每一次普通攻击都扎实有力,长时间作战能力稳稳在线。 装备梯队解析:非专属也能扛起大旗 不少新人玩家刚...
UOS系统字体太难看?手把手教你安装微软雅黑等Windows字体
2026-05-20统信UOS系统未预装微软雅黑等Windows字体,需手动安装:一、图形界面批量导入;二、双击文件快捷安装;三、终端复制至用户目录并刷新缓存;四、root权限全局安装;五、APT安装开源替代字体包。 如果您在统信UOS系统中发现默认字体显示生硬、排版呆板,或文档中缺失微软雅黑、宋体、黑体等Windows平台常用字体,则说明系统未预装这些商业授权字体。以下是多种可立即操作的安装路径: 一、使用字体管理...
手把手教你:用Recraft做出一组风格统一的App图标
2026-05-11使用Recraft生成风格统一的App图标需四步:一、设定含固定元素的提示词模板并仅替换应用名;二、用StyleLock功能提取首个图标的风格锚点并复用;三、通过GridPrompt批量生成并筛选视觉一致的图标;四、导出SVG后统一描边宽度与对齐方式。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您希望使用Recraft生成一组风格统一的App...
弄丢了省考准考证怎么查询分数?手把手教你找回账号
2026-05-10准考证遗失可立即通过五种方式找回:一、人事考试网“打印准考证”入口凭姓名身份证反向获取;二、部分省份成绩查询系统支持“姓名+身份证号”直查并同步显示准考证号;三、省级政务服务平台App或小程序实名认证后调取报考记录;四、拨打招考单位电话人工核验;五、核查报名时短信或邮件确认信息。 如果您已进入省考成绩查询阶段,但因准考证遗失导致无法输入验证信息完成查分,则可能被系统拦截在登录环节。以下是多种可立即...
电脑小白怎么装谷歌浏览器?_手把手教你搞定谷歌浏览器安装【指南】
2026-05-10谷歌浏览器最新版可在Windows、macOS、Android、iOS和Linux五大平台安装:Windows下载ChromeSetup.exe运行安装;macOS拖拽.dmg内图标至“应用程序”;Android通过Play商店或启用“未知来源”安装APK;iOS从AppStore获取;Linux依发行版用dpkg或rpm命令安装。 如果您是电脑初学者,想在Windows或macOS系统上安装谷歌...
手把手教你写Dockerfile_大模型环境隔离与迁移
2026-05-08应选择合适基础镜像、设置工作目录与非root用户、分层复制依赖与代码、按需嵌入模型文件、正确暴露端口并以前台命令启动服务。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 一、选择合适的基础镜像 基础镜像决定了容器内操作系统和预装运行时的初始状态,直接影响后续依赖安装的兼容性与镜像体积。应根据模型所依赖的Python版本、CUDA支持需求及系统精简程度...
不用花钱买域名!手把手教你获取长久有效的免费域名
2026-05-06可通过ClouDNS、eu.org、DNSHe、InfinityFree及阿里云万小智五种方式获取长久免费域名:ClouDNS提供永久免费二级域名;eu.org需人工审核但永久有效;DNSHe支持免费一级域名;InfinityFree附赠永久子域名;阿里云活动赠首年.CN域名。 如果您希望为个人项目、测试环境或家庭服务配置一个可长期使用的域名,但又不想支付任何费用,则可以通过多个已验证稳定运行的免...
