【验证码挑战】躲避障碍验证码实战:基于YOLO的拖动避障自动路径规划
评论
收藏

【验证码挑战】躲避障碍验证码实战:基于YOLO的拖动避障自动路径规划

经验分享
月色ono
2026-03-23 15:20·浏览量:1033
月色ono
影刀高级开发者
发布于 2025-11-12 15:06更新于 2026-03-23 15:201033浏览

## 项目背景

在微信群看到一个验证码,需要拖动背景图上的小球躲避障碍物击中目标。这激发了我的技术挑战欲望 - 能否通过计算机视觉技术自动识别障碍物并规划移动路径?  

https://dun.163.com/trial/avoid

 

## 技术思路

### 核心构想

1. 使用YOLO识别所有障碍物

2. 将图像转换为网格地图

3. 应用路径规划算法避开障碍物

4. 自动化执行小球移动

## 实施过程

### 第一步:数据收集

下载了20-30张验证码背景图,发现背景图下方的图案就是需要击中的目标和障碍物。

### 第二步:障碍物识别

通过观察分析,识别出大约10种不同的障碍物类型,种类是自定义的,不重复就行:

### 第三步:数据标注

这是最枯燥但关键的环节 - 手动标注每个障碍物的位置。

**标注文件结构:**

train/ # 训练图片(8张)
valid/ # 验证图片(2张)
data.yaml # 数据集配置文件

`data.yaml`文件包含类别信息和标注坐标,格式为:

类别信息
边界框坐标数据


### 第四步:模型训练


**环境配置:**

pip install ultralytics

训练命令:

yolo detect train data=data.yaml model=yolo8n.pt epochs=500 imgsz=640 device=mps

训练参数说明:

  • data: 数据集配置文件

  • model: 预训练基础模型(YOLO8n.pt)

  • epochs: 训练轮次(500轮)

  • imgsz: 图像尺寸(640px)

  • 支持早停机制:连续20轮无显著提升自动停止

第五步:模型优化

  • 初始训练:10张图片,准确率约60%

  • 优化后:20张图片,准确率提升至90%+

  • 使用best.pt作为最终模型(weight)

第六步:障碍物识别实现

``` python

from ultralytics import YOLO

model = YOLO('avoid.pt')print(model.names)

results = model('train/images/0001_jpg.rf.0a04664b463c4e0e526a25b2819246b3.jpg',conf=0.3,iou=0.5)  # 替换为你自己的图片路径print(results)results[0].show()

成功实现障碍物识别功能:

第七步:路径规划算法

网格化处理:

  • 将像素点转换为网格

  • 创建0-1矩阵:0=可通行,1=障碍物,2=目标 (小球大小20*20,要求小球中心点有个安全距离10个像素,小球起步时固定位置在背景图10,150的位置)

  • 要求:路径从0到2不触碰1

算法选择:
使用A*寻路算法进行最优路径规划

第八步:坐标定位与执行

  • 上方区域(320×240):用于障碍物识别

  • 下方区域:识别目标类型

  • 获取目标坐标后规划路径

  • 通过drissionpage自动化执行移动操作

最终效果

成功实现自动避障路径规划功能!

有了这个模型这个验证也是迎刃而解

https://dun.163.com/trial/icon-click

收藏21
全部评论1
最新
发布评论
评论