0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

YOLOv8也能打小目标检测实战

OpenCV学堂 来源:OpenCV学堂 2024-01-18 14:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

数据集地址

该图像数据集是 通过一个特色的渠道获取了数据集,然后一通处理以后得到的数据,其中一张图的一部分显示如下(因为保密):。

c419c2a0-b5cd-11ee-8b88-92fbcf53809c.png

整个数据集有100张图像,但是每张图像上的对象实在太多了,每办法,花了两天的时候,标注了其中65张图像,60张作为训练集、5张做为测试集。算是完成了数据标注工作。

模型训练

准备好数据集以后,直接按下面的命令行运行即可:

yolotrainmodel=yolov8s.ptdata=sperm_dataset.yamlepochs=50imgsz=1280batch=8

c42521ea-b5cd-11ee-8b88-92fbcf53809c.png

c429759c-b5cd-11ee-8b88-92fbcf53809c.png

导出与测试

模型导出与测试

yolo export model=sperm50_640_best.pt format=onnx
yolo predict model=sperm50_640_best.pt source=.sperm_test

c4346b6e-b5cd-11ee-8b88-92fbcf53809c.png

c438909a-b5cd-11ee-8b88-92fbcf53809c.jpg

c443e3c8-b5cd-11ee-8b88-92fbcf53809c.jpg

部署推理

转成ONNX格式文件以后,基于OpenVINO-Python部署推理,相关代码如下

ie=Core()
fordeviceinie.available_devices:
print(device)

#ReadIR
model=ie.read_model(model="sperm_best.onnx")
compiled_model=ie.compile_model(model=model,device_name="CPU")
output_layer=compiled_model.output(0)

frame=cv.imread("D:/1.jpg")
bgr=format_yolov8(frame)
img_h,img_w,img_c=bgr.shape

start=time.time()
image=cv.dnn.blobFromImage(bgr,1/255.0,(640,640),swapRB=True,crop=False)

res=compiled_model([image])[output_layer]#1x84x8400
rows=np.squeeze(res,0).T
class_ids=[]
confidences=[]
boxes=[]
x_factor=img_w/640
y_factor=img_h/640

forrinrange(rows.shape[0]):
row=rows[r]
classes_scores=row[4:]
_,_,_,max_indx=cv.minMaxLoc(classes_scores)
class_id=max_indx[1]
if(classes_scores[class_id]>.25):
confidences.append(classes_scores[class_id])
class_ids.append(class_id)
x,y,w,h=row[0].item(),row[1].item(),row[2].item(),row[3].item()
left=int((x-0.5*w)*x_factor)
top=int((y-0.5*h)*y_factor)
width=int(w*x_factor)
height=int(h*y_factor)
box=np.array([left,top,width,height])
boxes.append(box)

indexes=cv.dnn.NMSBoxes(boxes,confidences,0.25,0.45)
forindexinindexes:
box=boxes[index]
color=colors[int(class_ids[index])%len(colors)]
rr=int((box[2]+box[3])/4)
cv.circle(frame,(box[0]+int(box[2]/2),box[1]+int(box[3]/2)),rr-4,color,2)
cv.putText(frame,class_list[class_ids[index]],(box[0]+int(box[2]/2),box[1]+int(box[3]/2)),
cv.FONT_HERSHEY_SIMPLEX,.5,(0,0,0))
cv.putText(frame,"gloomyfish@2024",(20,45),cv.FONT_HERSHEY_SIMPLEX,1,(0,0,255),2)

cv.imshow("YOLOv8+OpenVINO2023SpermCount",frame)
cv.waitKey(0)
cv.destroyAllWindows()

c4490948-b5cd-11ee-8b88-92fbcf53809c.png








审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    57

    文章

    4858

    浏览量

    89609
  • OpenVINO
    +关注

    关注

    0

    文章

    117

    浏览量

    717

原文标题:实战 | YOLOv8也能打小目标检测

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    labview调用yolov8/11目标检测、分割、分类

    labview使用2020版本64位编辑,调用yolov8/11的onnx模型案例。 源码: 通过网盘分享的文件:Labview_cls.zip等4个文件 链接: https
    发表于 04-21 19:37

    YOLOv8水果检测示例代码换成640输入图像出现目标框绘制错误的原因 ?

    官网中的YOLOv8 水果检测关于图片推理的示例源代码: from libs.YOLO import YOLOv8 import os,sys,gc import ulab.numpy as np
    发表于 06-18 06:37

    使用YOLOv8目标检测和实例分割的演示

    YOLOv8是来自Ultralytics的最新的基于YOLO的对象检测模型系列,提供最先进的性能。
    的头像 发表于 02-06 10:11 8893次阅读

    在AI爱克斯开发板上用OpenVINO™加速YOLOv8目标检测模型

    《在 AI 爱克斯开发板上用 OpenVINO 加速 YOLOv8 分类模型》介绍了在 AI 爱克斯开发板上使用 OpenVINO 开发套件部署并测评 YOLOv8 的分类模型,本文将介绍在 AI 爱克斯开发板上使用 OpenVINO 加速
    的头像 发表于 05-12 09:08 2209次阅读
    在AI爱克斯开发板上用OpenVINO™加速<b class='flag-5'>YOLOv8</b><b class='flag-5'>目标</b><b class='flag-5'>检测</b>模型

    YOLOv8版本升级支持小目标检测与高分辨率图像输入

    YOLOv8版本最近版本又更新了,除了支持姿态评估以外,通过模型结构的修改还支持了小目标检测与高分辨率图像检测。原始的YOLOv8模型结构如
    的头像 发表于 05-16 11:14 1.5w次阅读
    <b class='flag-5'>YOLOv8</b>版本升级支持小<b class='flag-5'>目标</b><b class='flag-5'>检测</b>与高分辨率图像输入

    AI爱克斯开发板上使用OpenVINO加速YOLOv8目标检测模型

    《在AI爱克斯开发板上用OpenVINO加速YOLOv8分类模型》介绍了在AI爱克斯开发板上使用OpenVINO 开发套件部署并测评YOLOv8的分类模型,本文将介绍在AI爱克斯开发板上使用OpenVINO加速YOLOv8
    的头像 发表于 05-26 11:03 2246次阅读
    AI爱克斯开发板上使用OpenVINO加速<b class='flag-5'>YOLOv8</b><b class='flag-5'>目标</b><b class='flag-5'>检测</b>模型

    教你如何用两行代码搞定YOLOv8各种模型推理

    大家好,YOLOv8 框架本身提供的API函数是可以两行代码实现 YOLOv8 模型推理,这次我把这段代码封装成了一个类,只有40行代码左右,可以同时支持YOLOv8对象检测、实例分割
    的头像 发表于 06-18 11:50 4641次阅读
    教你如何用两行代码搞定<b class='flag-5'>YOLOv8</b>各种模型推理

    目标检测算法再升级!YOLOv8保姆级教程一键体验

    YOLO作为一种基于图像全局信息进行预测的目标检测系统,始终保持着极高的迭代更新率,从YOLOv5到YOLOv8,本次升级主要包括结构算法、命令行界面、PythonAPI等。具体到
    的头像 发表于 02-28 11:16 4008次阅读
    <b class='flag-5'>目标</b><b class='flag-5'>检测</b>算法再升级!<b class='flag-5'>YOLOv8</b>保姆级教程一键体验

    解锁YOLOv8修改+注意力模块训练与部署流程

    很多人想跟修改YOLOv5源码一样的方式去修改YOLOv8的源码,但是在github上面却发现找到的YOLOv8项目下面TAG分支是空的
    的头像 发表于 08-11 14:14 9402次阅读
    解锁<b class='flag-5'>YOLOv8</b>修改+注意力模块训练与部署流程

    如何修改YOLOv8的源码

    很多人想跟修改YOLOv5源码一样的方式去修改YOLOv8的源码,但是在github上面却发现找到的YOLOv8项目下面TAG分支是空的,然后就直接从master/main下面把源码
    的头像 发表于 09-04 10:02 3646次阅读
    如何修改<b class='flag-5'>YOLOv8</b>的源码

    基于YOLOv8的自定义医学图像分割

    YOLOv8是一种令人惊叹的分割模型;它易于训练、测试和部署。在本教程中,我们将学习如何在自定义数据集上使用YOLOv8。但在此之前,我想告诉你为什么在存在其他优秀的分割模型时应该使用YOLOv8呢?
    的头像 发表于 12-20 10:51 1559次阅读
    基于<b class='flag-5'>YOLOv8</b>的自定义医学图像分割

    YOLOv8实现旋转对象检测

    YOLOv8框架在在支持分类、对象检测、实例分割、姿态评估的基础上更近一步,现已经支持旋转对象检测(OBB),基于DOTA数据集,支持航拍图像的15个类别对象检测,包括车辆、船只、典型
    的头像 发表于 01-11 10:43 4032次阅读
    <b class='flag-5'>YOLOv8</b>实现旋转对象<b class='flag-5'>检测</b>

    RV1126 yolov8训练部署教程

    YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的基于YOLOV5进行更新的 下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务,鉴于Yolov
    的头像 发表于 04-16 14:53 1152次阅读
    RV1126 <b class='flag-5'>yolov8</b>训练部署教程

    RV1126 yolov8训练部署教程

    本教程针对目标检测算法yolov8的训练和部署到EASY-EAI-Nano(RV1126)进行说明,而数据标注方法可以参考我们往期的文章。
    的头像 发表于 04-18 15:18 1785次阅读
    RV1126 <b class='flag-5'>yolov8</b>训练部署教程

    使用ROCm™优化并部署YOLOv8模型

    作者:AVNET 李鑫杰 一,YOLOv8介绍? YOLOv8 由 Ultralytics 于 2023 年 1 月 10 日发布,在准确性和速度方面提供了前沿的性能。YOLOv8 在之前 YOLO
    的头像 发表于 09-24 18:32 548次阅读
    使用ROCm™优化并部署<b class='flag-5'>YOLOv8</b>模型