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

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

3天内不再提示

请问YOLOv8 OBB是如何实现自定义旋转对象检测的?

OpenCV学堂 来源:OpenCV学堂 2024-01-11 14:53 次阅读

数据集制作

我用手机拍了一张图像

db6b2aaa-b04d-11ee-8b88-92fbcf53809c.jpg

然后自己写个代码,每旋转一度保存一张图像,这样就成功生成了360张图像及其注释文件,分为训练集与验证集。训练文件夹包含 320张带有注释的图像。测试和验证文件夹都包含 40 张带有注释的图像。数据集部分图像显示如下:

db7fb7f4-b04d-11ee-8b88-92fbcf53809c.png

模型训练

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

yolo obb train data=pen_dataset.yaml model=yolov8s-obb.pt epochs=25 imgsz=640

db8bfe60-b04d-11ee-8b88-92fbcf53809c.png

db9041e6-b04d-11ee-8b88-92fbcf53809c.png

dba516b6-b04d-11ee-8b88-92fbcf53809c.png

导出与测试

模型导出与测试

# export model
yolo export model=yolov8s-obb.pt format=onnx
# inference model
yoloobbpredictmodel=pen_best.ptsource=pen_rotate_test.png

dba8d7f6-b04d-11ee-8b88-92fbcf53809c.png

dbbe9046-b04d-11ee-8b88-92fbcf53809c.png

部署推理

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

class_list=["pen"]
colors=[(255,255,0),(0,255,0),(0,255,255),(255,0,0)]

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

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

##xywhr
frame=cv.imread("D:/python/my_yolov8_train_demo/four_pen.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]#1x25x8400
rows=np.squeeze(res,0).T
boxes,confidences,angles,class_ids=post_process(rows)

indexes=cv.dnn.NMSBoxes(boxes,confidences,0.25,0.45)
M=np.zeros((2,3),dtype=np.float32)
forindexinindexes:
box=boxes[index]
d1=-angles[index]
color=colors[int(class_ids[index])%len(colors)]
pts=[(box[0],box[1]),(box[0]+box[2],box[1]),(box[0]+box[2],box[1]+box[3]),(box[0],box[1]+box[3])]
rrt_pts=get_rotate_point(pts,M,d1,box)
cv.drawContours(frame,[np.asarray(rrt_pts).astype(np.int32)],0,(255,0,255),2)
cv.putText(frame,class_list[class_ids[index]],(int(box[0]+box[2]/2),int(box[1]+box[3]/2)),cv.FONT_HERSHEY_SIMPLEX,1.0,(0,0,255),2)

end=time.time()
inf_end=end-start
fps=1/inf_end
fps_label="FPS:%.2f"%fps
cv.putText(frame,fps_label,(20,45),cv.FONT_HERSHEY_SIMPLEX,1,(0,0,255),2)

cv.imshow("YOLOv8-OBBRotateObjectDetection",frame)
cv.imwrite("D:/pen_result.jpg",frame)
cv.waitKey(0)
cv.destroyAllWindows()

dbc4ae40-b04d-11ee-8b88-92fbcf53809c.png

dbca3752-b04d-11ee-8b88-92fbcf53809c.png








审核编辑:刘清

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

    关注

    56

    文章

    4793

    浏览量

    84634
  • 数据集
    +关注

    关注

    4

    文章

    1208

    浏览量

    24691
  • OpenVINO
    +关注

    关注

    0

    文章

    92

    浏览量

    197

原文标题:YOLOv8 OBB实现自定义旋转对象检测

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

收藏 人收藏

    评论

    相关推荐

    基于YOLOv8实现自定义姿态评估模型训练

    Hello大家好,今天给大家分享一下如何基于YOLOv8姿态评估模型,实现自定义数据集上,完成自定义姿态评估模型的训练与推理。
    的头像 发表于 12-25 11:29 2838次阅读
    基于<b class='flag-5'>YOLOv8</b><b class='flag-5'>实现</b><b class='flag-5'>自定义</b>姿态评估模型训练

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

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

    YOLOv8自定义数据集训练到模型部署推理简析

    如果你只是想使用而不是开发,强烈推荐通过pip安装方式获取YOLOv8包!YOLOv8安装命令行
    的头像 发表于 03-24 09:27 4661次阅读

    TensorRT 8.6 C++开发环境配置与YOLOv8实例分割推理演示

    YOLOv8实例分割TensorRT 推理代码已经完成C++类封装,三行代码即可实现YOLOv8对象检测与实例分割模型推理,不需要改任何代
    的头像 发表于 04-25 10:49 5774次阅读
    TensorRT 8.6 C++开发环境配置与<b class='flag-5'>YOLOv8</b>实例分割推理演示

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

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

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

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

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

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

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

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

    三种主流模型部署框架YOLOv8推理演示

    部署。这里以YOLOv8为例,演示了YOLOv8对象检测模型在OpenVINO、ONNXRUNTIME、TensorRT三个主流框架上C++推理演示效果。
    的头像 发表于 08-06 11:39 2735次阅读

    YOLOv8+OpenCV实现DM码定位检测与解析

    YOLOv8是YOLO系列模型的最新王者,各种指标全面超越现有对象检测与实例分割模型,借鉴了YOLOv5、YOLOv6、YOLOX等模型的设
    的头像 发表于 08-10 11:35 1294次阅读
    <b class='flag-5'>YOLOv8</b>+OpenCV<b class='flag-5'>实现</b>DM码定位<b class='flag-5'>检测</b>与解析

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

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

    如何基于深度学习模型训练实现检测与圆心位置预测

    Hello大家好,今天给大家分享一下如何基于深度学习模型训练实现检测与圆心位置预测,主要是通过对YOLOv8姿态评估模型在自定义的数据集上训练,生成一个
    的头像 发表于 12-21 10:50 1952次阅读
    如何基于深度学习模型训练<b class='flag-5'>实现</b>圆<b class='flag-5'>检测</b>与圆心位置预测

    YOLOv8实现旋转对象检测

    YOLOv8框架在在支持分类、对象检测、实例分割、姿态评估的基础上更近一步,现已经支持旋转对象检测
    的头像 发表于 01-11 10:43 1803次阅读
    <b class='flag-5'>YOLOv8</b><b class='flag-5'>实现</b><b class='flag-5'>旋转</b><b class='flag-5'>对象</b><b class='flag-5'>检测</b>

    YOLOv8+PyQT5打造细胞计数与识别应用说明

    YOLOv8对象检测模型基于自定义数据集训练红白细胞检测模型,然后通过工具导出模型为ONNX,基于OpenVINO
    的头像 发表于 01-15 17:22 1143次阅读
    <b class='flag-5'>YOLOv8</b>+PyQT5打造细胞计数与识别应用说明

    OpenCV4.8 C++实现YOLOv8 OBB旋转对象检测

    YOLOv8框架在在支持分类、对象检测、实例分割、姿态评估的基础上更近一步,现已经支持旋转对象检测
    的头像 发表于 02-22 10:15 1631次阅读
    OpenCV4.8 C++<b class='flag-5'>实现</b><b class='flag-5'>YOLOv8</b> <b class='flag-5'>OBB</b><b class='flag-5'>旋转</b><b class='flag-5'>对象</b><b class='flag-5'>检测</b>