机器视觉—YOLO用于目标检测

2024-5-22

机器视觉的三大任务是 分割:从图像中把目标分离出来 识别:认出目标是什么 检测:不光知道图像里有什么,还要知道他在哪 YOLO(you only look once),是一种单阶段目标检测方法,是一种深度神经网络算法。
深度神经网络需要根据自己的任务进行训练,这需要足够高的算力和时间。本人认为,基本的要求是64G的内存和12G显存的显卡。如果没有这样的机器,可以考虑利用云服务器进行训练。当然也可以利用已经训练好的模型进行识别,本文即简要展示一下基于YOLOv7的目标检测算法。

运行环境:Inter i7-8550、8G内存、Windows10、OpenCV 4.5.0。
首先利用OpenCV的dnn模块,加载YOLOv7的模型
Net net = readNet(config.modelpath);
再利用OpenCV加载图像
Mat srcimg = imread(imgpath);
加载的图像需要转换成适配网络的尺寸
Mat blob = blobFromImage(frame,1/255.0, Size(640,480));
之后即可运用网络进行计算
net.setInput(blob);
Mat out = net.forward();
运算结果包括目标的位置、置信度及类别序号,再将序号转为名称,并在图像中绘制方框和文本即可。
rectangle(srcimg, Point(left, top), Point(right, bottom), Scalar(0, 0, 255), 2);
putText(srcimg, label, Point(left, top+50), 2, 4, Scalar(0, 255, 0), 2);



以上展示的是利用YOLO预训练进行目标检测的案例。应用在特定的场景中,需要收集相应的样本并进行训练,训练并部署后,可实现快速的目标检测,可用于缺陷检测、产品分类等。 丁斗科技可为您开发配套的目标检测算法,应用场景包括:PCB缺陷检测、路面缺陷检测、钢带缺陷检测、垃圾分类等。
可为您进行配套开发,具体可联系丁斗科技