YOLO是You Only Live Once的缩写,意为“你只能活一次,应该活在当下,大胆去做”。这个词寓意着人们应该享受人生,不怕冒险,想做什么就做什么,因为只会活一次。
目前,基于深度学习的目标检测算法大致可以分为两大流派:
1.两阶段(two-stage)算法:先产生候选区域然后再进行CNN分类(RCNN系列);
2.单阶段(one-stage)算法:直接对输入图像应用算法并输出类别和相应的定位(YOLO系列);
由于R-CNN属于两阶段的算法,第一阶段先利用区域推荐找出候选框,第二阶段才是进行目标检测,所以检测速度始终是一个瓶颈,难以满足实时监测的要求,后来有学者提出了一阶段的算法,主要有YOLO和SSD。
YOLO是现在最成熟的目标检测算法,于2016年由JosephRedmond提出,他本人开发至第三版,后来开发者相继推出了第四版~第八版。
YOLO的快速,是损失了部分准确率所换来的。
(1)放弃区域推荐,以集群算法K-Means,从训练数据中找出最常见的N种尺寸的AnchorBox。
(2)直接将图像划分成(s,s)个网格(Grid),每个网格只检查多种不同尺寸的AnchorBox是否含有对象而已。
(3)输入CNN模型,计算每个AnchorBox含有对象的概率。
(4)同时计算每一个网格可能含有各种对象的概率,假设每一网格最多只含有一个对象。
(5)合并步骤(3)(4)的信息,并找到合格的候选框。
(6)一NMS移除重叠BoundingBox。
YOLO处理流程示意图
Yolo-V5模型
二、依赖包安装
2.1、依赖包下载
https://github.com/starfive-tech/Debian/releases/download/v0.8.0-engineering-release-wayland/install_package_and_dependencies.sh
在debian开发板使用git clone 下载依赖包并没好使,可能是网络问题,顾在Windows下输入此网址进行下载,然后将依赖包上传到Debian开发板上了。
2.2、权限
chmod +x install_package_and_dependencies.sh
2.3、 安装依赖包
sudo ./install_package_and_dependencies.sh
安装过程挺慢的,赛昉科技描述需要1~3小时,我这网络比较慢用时更多。
2.4、扩容
第一次安装的时候提示空间不足,所需需要先进行扩容。下面的红框是新扩容出来的区域。
三、OpenCV 环境安装
3.1、我的主机显示了python3 但是没有支持OpenCV。
3.2、报错解决
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
在使用apt-get是提示以上报错信息。大概意思是:未设置依赖项。尝试“apt–fix broken install”,不使用包(或指定解决方案)根据问题提示信息,是由于所依赖的包linux-image-4.10.0-35-generic并没有被正确安装导致。linux-image-x.x.x是内核文件,从提示信息上看,应该是升级过程中断导致的问题。
执行修复命令,并重新执行更新和升级,确保完整修复问题。
sudo apt --fix-broken install
sudo apt-get update
sudo apt-get upgrade
3.3、OpenCV报错
使用sudo apt-get install python3-opencv 报错
问题解决完之后在使用此命令安装软件正常了
不知道是不是镜像得版本错了,系统缺少太多东西了。。。
3.4、Git安装
sudo apt-get install git
四、Packages 及其依赖
4.1、Packages安装问题
个人发表的第一篇文章描述没有找到软件库,也没有找到应用程序的源码。可能问题是在Packages 及其依赖这个环节上。
之前使用命令下载,没能成功,然后自行下载后,使用命令行安装的。
4.2、Packages 正确安装方式
根据查阅到的官方快速使用手册,官方推荐使用的系统是202306开发的镜像,在镜像文件内含有同样名称的的Package包文件。
所有使用此依赖库从新安装一下,重装过程发现确实有一点不一样的地方。QT和opencv,之前安装的版本就没有发现安装过。
果然是这样,在次查找opencv就有了
五、摄像头驱动
5.1、MIPI摄像头型号
淘宝采购IMX219 摄像头
5.2、摄像头驱动
前面的依赖安装使用两种方式进行安装,仍没有将MIPI CSI驱动安装到位。继续解决驱动问题。。
5.3、获取并编译v4l-utils
在发布的Linux SDK中, 默认已集成了v4l-utils包。用户可以通过buildroot的编译开关开启或关闭v4l-utils包。如SDK目录下,conf/buildroot_initramfs_config(配置成initramfs)或conf/buildroot_rootfs_config(配置成rootfs)文件中。
如下这一行代码可将v4l-utils编译选项打开:
BR2_PACKAGE_LIBV4L_UTILS=y
用户也可以在linuxtv的官网获取源码编译,编译请参考 wiki。V4l-utils包在ubuntu系统下, 也可通过apt工具直接安装,命令如下:
sudo apt-get install v4l-utils
5.4.设置fmt并抓帧
以下代码块为设置通过video1抓取nv12数据保存到test.yuv,分辨率为1920 × 1080。
media-ctl -d /dev/media0 -vl "'stf_csi0':1 -> 'stf_isp0':0 [1]"
media-ctl -d /dev/media0 -vl "'stf_isp0':1 -> 'stf_vin0_isp0':0 [1]"
media-ctl -d /dev/media0 \
--set-v4l2 '"imx219 6-0010":0[fmt:SRGGB10_1X10/1920x1080]'
v4l2-ctl -d /dev/video1 --set-fmt-video=width=1920,height=1080,pixelformat=NV12
--stream-mmap=4
--stream-to=test.yuv
--stream-skip=5
--stream-count=5
5.5、设置曝光、gain等control
通过命令列出IMX219可控制的control(注意下方IMX219对应的节点是/dev/v4l-subev10)。
# v4l2-ctl -d /dev/v4l-subdev10 -l
六、通用物体识别YOLO V5
参考《使用昉·星光 2进行通用物体识别应用指南》
6.1、YOLO V5 简介
执行以下步骤,进行基于 OLO-V5 ONNX 模型的通用物体识别:
YOLOv5是一种目标检测算法,与历代YOLO算法相似,它使用了网格的概念,将图像划分为多个网格,每个网格负责预测一个或多个物体。在训练过程中,真实的人工标注框的中点落在哪个网格内,哪个网格内的anchor就会朝着这个真实框“生长”或者“萎缩”,并将置信度设为1,表示anchor所在的网格有物体,其他没有预测框的anchor置信度则为0。
在YOLOv5中,除了使用最基本的数据增强方法外,还使用了Mosaic数据增强方法,其主要思想就是将1-4张图片进行随机裁剪、缩放后,再随机排列拼接形成一张图片,实现丰富数据集的同时,增加了小样本目标,提升网络的训练速度。另外,YOLOv5还会自适应地计算不同训练集中的最佳锚框值,从而帮助网络更快地收敛。
在Backbone和Neck中,YOLOv5用了两种不同的CSP结构,而在检测头方面依然采用YOLOv3的检测头,并没有特别的改进。
YOLO(You Only Look Once)是一种目标检测算法,可以用于识别多种物体类别。根据不同的数据集,YOLO 可以检测的物体类别有一定差异。
在 Pascal VOC 2012 数据集中,YOLO 可以检测以下 20 种物体类别:人、鸟、猫、牛、狗、马、绵羊、飞机、自行车、船、巴士、汽车、摩托车、火车、瓶子、椅子、餐桌、盆栽、沙发和电视/显示器。
在 COCO 数据集中,YOLO 可以检测以下 80 种物体类别:人、自行车、汽车、摩托车、飞机、公共汽车、火车、卡车、交通灯、消火栓、停车标志、长凳、猫、狗、马、绵羊、牛、大象、熊、斑马、长颈鹿、背包、雨伞、手提包、领带、手提箱、飞盘、滑雪板、运动球、风筝、棒球棒、棒球手套、滑板、冲浪板、网球拍、瓶、酒杯、杯、叉、刀、匙、碗、香蕉、苹果、三明治、橙子、西兰花、胡萝卜、热狗、比萨饼、甜甜圈和蛋糕。
6.2、软件运行
基于 YOLO-V5 ONNX 模型的通用物体识别
步骤
运行 Python 语言应用:
进入 yolo-v5 第三方 demo 目录,以在昉·星光 2的 Debian 系统上运行基于 yolo-5 onnx 模型 Python 演示代码:
cd /usr/share/opencv4/yolo-v5/
python3 yolov5.py --device 4
6.3、运行效果
全部回复 1
- 0 主题
- 1 帖子
- 123 积分
身份:LV1 技术小白
E币:118
发消息
您好,请问一下最后运行yolov5程序的时候,可以通过MobaXterm远程连接运行吗
>>资料:基于YOLO v3和传感器融合的机器人定位建图系统