# 百度智能车创意组地面任务点检测 **Repository Path**: rogerofyan/whaletask_detector ## Basic Information - **Project Name**: 百度智能车创意组地面任务点检测 - **Description**: 第十七届全国大学生智能汽车比赛创意组,任务目录检测模型的训练与模型测试。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-05-29 - **Last Updated**: 2025-06-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: PaddlePaddle, EdgeBoard ## README # 百度智能车创意组标志检测任务 # 1 介绍 第十七届全国大学生智能汽车比赛创意组,任务标志检测模型的训练与模型测试。 # 2 安装教程 ## 1.1 安装conda虚拟环境 conda可在单台计算机上创建出几个完全独立的Python环境,这个特点无论是学习还是工作都非常有用,毕竟我们会同时接触许多工具与库,这些工具与库彼此之间冲突是大概率事件,所以最好能把它们隔离开,互不影响。另外一个好处时,作为初学者,有时觉得自己在网络文章的指引下安装了许多自己都不知道有什么用的库,觉得电脑已经乱得不行了,这时只需要简单地删除这个虚拟环境,整个世界就清静了,让我们新建一个环境从头再来, 这种感觉是不是好极了呢? conda主流有anaconda包和miniconda包,推荐使用miniconda,占用的硬盘空间比较少。另外,推荐大家从清华镜像下载conda安装包,速度比官网快很多,网址是: https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 根据需要的python版本和操作系统选择正确的文件,例如,我需要python 3.7版本,windows 64位操作系统,那么下载的就是:` Miniconda3-py37_4.9.2-Windows-x86_64.exe` 安装完miniconda后,在开始菜单会出现菜单项“Anaconda Powershell Prompt (miniconda)”,点击后即可打开conda命令行。 接下来,新建一个虚拟环境 ``` conda create -n jycar python=3.7 ``` * `-n jycar` 表示虚拟环境的名称是`jycar` * `python=3.7` 表示此虚拟环境将安装一个`python 3.7`系列的最新版本,例如写此文时实际安装的是`3.7.13` 创建完成后,每次使用前需要激活此虚拟环境 ``` conda activate jycar ``` 后面的操作默认都在此虚拟环境下, 千万不要忘记要先激活哦. ## 1.2 安装飞桨 主要参考paddlepaddle.org.cn上的安装说明即可,下面是简要步骤。 这里假设你电脑有Nvidia GPU,并且已安装Cuda 10.2 ``` python -m pip install paddlepaddle-gpu==2.3.0 -i https://mirror.baidu.com/pypi/simple ``` 注意:如果你的Python环境中没有protobuf,那么安装飞桨2.3.0时默认会安装最新版protobuf 4.2.1,从而导致不兼容。 这个不兼容问题严格来说不是飞桨的BUG,而是protobuf于2022年5月6日的一次不兼容升级引起的,关于这个升级的说明在这里: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates 而飞桨关于此问题的详细描述和解决方案在下面: https://github.com/PaddlePaddle/Paddle/issues/43052 解决方案在上面的链接里已给出,简单来说有两个办法: 1. 等待飞桨2.3.1或更新版(因为在2022年5月29日此文安装时最新版是2.3.0,所以这条路走不通) 2. 手动降低protobuf版本(此路简单可行) ``` pip install protobuf==3.20.1 ``` ## 1.3 安装一些其它依赖库 ``` pip install opencv-python six ``` # 2 使用说明 ## 2.1 准备数据集 先使用小车采集数据集,或者从AIStudio下载我们畅想车队采集的数据集,下载地址是: https://aistudio.baidu.com/aistudio/datasetdetail/149901 注意:我们采集的数据量较少,不保证标签准确,仅供大家验证流程,建议自己采集数据集。 把数据集解压放在data\groundtest目录,该目录下有图片和它对应的标签文件,例如:`5051.jpg`和`5051.json`。 ## 2.2 转换标签格式,并划分训练集与测试集 我们采集的数据使用了labelme工具打上标签,用JSON格式存储,格式是YOLO习惯,即:`xc,yc,width,height`,中心点坐标与宽高。 而训练程序`ssd_trainer.py`使用了XML格式存储,格式是VOC习惯,即:`xmin,xmax,ymin,ymax`。所以需要转换一下,执行以下程序 ``` python prepare_dataset.py ``` 该程序会完成格式转换,并按8:2划分训练与验证集。有关数据集的配置在`config.json`中的`dataset`下。 这个程序将会生成训练集、测试集、类别和标签文件,分别是: * road_train.txt * road_eval.txt * label_list * Label目录 其中类别文件label_list自动添加了背景background,并作为0号标签。 ## 2.3 训练检测模型 在命令行,运行ssd_trainer.py ``` python ssd_trainer.py ``` 备注:在该程序的开头有许多超参数,可根据需要修改。 在一台i5 CPU,32GB内存,Nvidia 1070 8GB显卡上,训练120轮大概耗时1小时。 如果仅仅为了验证流程,可以把超参数中的`num_epochs`改小,例如5,这样能快速得到一个模型(虽然不太准确) ## 2.4 在PC上测试模型 可以从数据集中挑选几张图片放在images_test目录下,然后运行模型测试程序 ``` python test_detector.py ``` 运行完毕后,后生成一个images_result目录,该目录中的图片会画上检测框及置信度,可以观察结果是否满意。 另外,可以修改`config.json`, 把`display_enable`修改为`true`,那么在执行这个程序时,每张图会弹出一个窗口显卡该图片的预测结果,更加方便观察结果。 ## 2.4 在小车上测试模型 TODO ## 参与贡献 本项目由成都锦城学院 畅想车队 提供,它是在官方给的基础代码上修改而来,感谢上海鲸鱼公司提供的基础代码。