第十八届智能车百度创意组线下赛方案-巡线

        我们是参加的23年第十八届的智能车百度创意组的比赛。最终是拿了国二(有点遗憾),赛场上车本身结构出现了问题,有一个轮子有问题。随便吐槽一下,轮子是真不好用,老掉。但是我们的方案可以给大家提供一些借鉴。

        由于我负责的是上位机部分,因此只提供上位机的方案,没有控制的部分。

第一部分-巡线方案:

1.1 车道线提取

1.1.1 模型训练

        在aistudio 平台上对模型进行训练。 使用语义分割模型提取绿色车道线,使用Paddleseg 套件进行训练模型,模型为轻量级的bisnet和mobileseg,mobileseg 比bisenet 的速度更快,但是精度略有下降,但是不影响。为了保证速度,图片尺寸为160*160,模型帧率大约为 20 帧。

开发板为:EdgeBoard赛事专用卡。

图1.1 常规道路真值-分割图

真值是采用大模型SAM打标获取的。

        对于斑马线区域,不做特殊处理,仅在数据集中不标水平方向的斑马线即可。这 样提取出的车道线既不会受到斑马线的影响。同时几乎不受任何光照的影响,模型训练时采用随机光照、饱和度的数据增强,模型具有较强的鲁棒性。

图1.2 斑马线真值-分割图

1.1.2 模型导出

        由于部署到edgeboard上使用paddlelite框架,因此使paddlelite 对模型 进行导出,需要将训练好的动态图模型,转化为静态图,然后再使用 paddle_lite_opt 导出.nb 模型,paddlelite 可以直接加载.nb 模型,paddlelite 的版本和在edgeboard上安装的版本要一致。(下面是导出yolo模型的示例, 导出分割模型同理)在aistudio中进行导出。

!pip install paddlelite==2.9.0 --index-url https://mirrors.aliyun. com/pypi/simple/

!paddle_lite_opt \
--model_dir=/home/aistudio/work/ppyolo_tiny_car_box \
--valid_targets=arm \
--optimize_out=/home/aistudio/work/ppyolo_tiny_car_box_224_v2

paddle_lite_opt \
--model_file=/home/aistudio/work/ppyolo_tiny/ppyolo_tiny_helmet/model.pdmodel \
--param_file=/home/aistudio/work/ppyolo_tiny/ppyolo_tiny_helmet/model.pdiparams \
-valid_targets=arm \
--optimize_out=/home/aistudio/work/ppyolo_tiny

1.2 车道线速度模型

1.2.1 采集数据集

数据集格式:图片+4个电机的速度,图片名称和对应速度保存到txt文件当中, 速度由下位机通过编码器计算得出,再通过usart通信传到上位机

1.2.2速度模型训练

        将采集到的图片,通过训练好的分割模型进行图像分割,提取出车道线,得到二 值图,将二值图作为输入,速度作为目标值输出。 搭建网络:由于二值图比较简单,因此使用多层小卷积层和全连接层搭建一个回 归网络,4个回归输出直即为4个电机的速度。网络结构如下,简单的四回归网络

模型效果:右转(左轮速度>右轮速度)

图1.3 速度模型

模型训练好后,将动态图转为静态图

导出.nb模型

paddle_lite_opt \
--model_dir=/home/aistudio/model/best \
--valid_targets=arm \
--optimize_out=/home/aistudio/speed_model/模型名称

 模型部署见下一篇

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过引用,我们知道在智能车中,使用了两套方案来完成巡线任务:一套是基于传统opencv的巡线,一套是用paddle搭建神经网络框架。然而,由于时间有限,只能利用假期的闲余时间来继续完善未完成的opencv巡线方案。 引用中提到了利用opencv完成视觉巡线的具体步骤。在白色地面上,通过摄像头检测黑色的车道线,来完成巡线任务。为了保持小车的稳定性,行驶速度被分为四个等级。在直道上,小车会逐渐加速,当加到最高速时保持匀速行驶。当检测到弯道时,小车会立即减速,并根据弯道的程度来调整速度和转向。 然而,在引用中提到了扫线方法在处理锐角时不适用的问题。但是在该道上,锐角只会在图片的上方出现,且只会出现左锐角,并且占比较小。因此,可以通过判断锐角的方式来避免扫描锐角的线。 综上所述,通过opencv实现智能车巡线的方法是,在白色地面上通过摄像头检测黑色的车道线,同时根据检测到的弯道和锐角来调整小车的速度和转向,以完成巡线任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [基于opencv的巡线方案](https://blog.csdn.net/weixin_64583557/article/details/126489522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [智能小车视觉巡线python代码](https://download.csdn.net/download/LY2996944198/12646227)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [智能车巡线python-opencv](https://blog.csdn.net/m0_58644391/article/details/124382394)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值