0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

YOLOv8實(shí)現(xiàn)旋轉(zhuǎn)對(duì)象檢測(cè)

OpenCV學(xué)堂 ? 來(lái)源:OpenCV學(xué)堂 ? 2024-01-11 10:43 ? 次閱讀

YOLOv8 OBB介紹

YOLOv8框架在在支持分類、對(duì)象檢測(cè)、實(shí)例分割、姿態(tài)評(píng)估的基礎(chǔ)上更近一步,現(xiàn)已經(jīng)支持旋轉(zhuǎn)對(duì)象檢測(cè)(OBB),基于DOTA數(shù)據(jù)集,支持航拍圖像的15個(gè)類別對(duì)象檢測(cè),包括車輛、船只、典型各種場(chǎng)地等。包含2800多張圖像、18W個(gè)實(shí)例對(duì)象。

06b938ce-afad-11ee-8b88-92fbcf53809c.png

YOLO OBB標(biāo)注數(shù)據(jù)格式,主要是類別與四個(gè)角點(diǎn)歸一化到0~1之間的坐標(biāo),格式表示如下:

class_index, x1, y1, x2, y2, x3, y3, x4, y4
訓(xùn)練以后的YOLOv8預(yù)測(cè)xyhwr + 類別數(shù)目,不同尺度的YOLOv8 OBB模型的精度與輸入格式列表如下:

06f0b970-afad-11ee-8b88-92fbcf53809c.png

導(dǎo)出與預(yù)測(cè)

基于YOLOv8命令行推理測(cè)試:

## 導(dǎo)出
yolo export model=yolov8s-obb.pt format=onnx
##推理
yolo obb predict model=yolov8n-obb.pt source=plane_03.jpg

0705b21c-afad-11ee-8b88-92fbcf53809c.jpg

ONNX推理代碼演示

基于OpenVINO2023與ONNX格式模型直接預(yù)測(cè)推理,首先看一下ONNX格式的YOLOv8-OBB輸入與輸出格式:

0737a7ae-afad-11ee-8b88-92fbcf53809c.png

旋轉(zhuǎn)對(duì)象檢測(cè)-代碼演示

class_list=load_classes()
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="yolov8s-obb.onnx")
compiled_model=ie.compile_model(model=model,device_name="CPU")
output_layer=compiled_model.output(0)

##xywhr
frame=cv.imread("D:/wh860.jpg")
#frame=cv.imread("wh300.jpg")
#frame=cv.imread("obb_01.jpeg")
bgr=format_yolov8(frame)
img_h,img_w,img_c=bgr.shape

start=time.time()
image=cv.dnn.blobFromImage(bgr,1/255.0,(1024,1024),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.rectangle(frame,(box[0],box[1]-20),(box[0]+box[2],box[1]),color,-1)
cv.putText(frame,class_list[class_ids[index]],(box[0],box[1]-8),cv.FONT_HERSHEY_SIMPLEX,.5,(255,255,255))

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-obb+OpenVINO2023.xObjectDetection",frame)
cv.imwrite("D:/wk_result.jpg",frame)
cv.waitKey(0)
cv.destroyAllWindows()

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3058

    瀏覽量

    48572
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1197

    瀏覽量

    24590
  • 命令行
    +關(guān)注

    關(guān)注

    0

    文章

    77

    瀏覽量

    10369

原文標(biāo)題:【新特性演示】YOLOv8實(shí)現(xiàn)旋轉(zhuǎn)對(duì)象檢測(cè)

文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用YOLOv8做目標(biāo)檢測(cè)和實(shí)例分割的演示

    YOLOv8是來(lái)自Ultralytics的最新的基于YOLO的對(duì)象檢測(cè)模型系列,提供最先進(jìn)的性能。
    的頭像 發(fā)表于 02-06 10:11 ?7136次閱讀

    TensorRT 8.6 C++開(kāi)發(fā)環(huán)境配置與YOLOv8實(shí)例分割推理演示

    對(duì)YOLOv8實(shí)例分割TensorRT 推理代碼已經(jīng)完成C++類封裝,三行代碼即可實(shí)現(xiàn)YOLOv8對(duì)象檢測(cè)與實(shí)例分割模型推理,不需要改任何代
    的頭像 發(fā)表于 04-25 10:49 ?5449次閱讀
    TensorRT 8.6 C++開(kāi)發(fā)環(huán)境配置與<b class='flag-5'>YOLOv8</b>實(shí)例分割推理演示

    在AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO?加速YOLOv8目標(biāo)檢測(cè)模型

    《在 AI 愛(ài)克斯開(kāi)發(fā)板上用 OpenVINO 加速 YOLOv8 分類模型》介紹了在 AI 愛(ài)克斯開(kāi)發(fā)板上使用 OpenVINO 開(kāi)發(fā)套件部署并測(cè)評(píng) YOLOv8 的分類模型,本文將介紹在 AI 愛(ài)克斯開(kāi)發(fā)板上使用 OpenVINO 加速
    的頭像 發(fā)表于 05-12 09:08 ?1204次閱讀
    在AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO?加速<b class='flag-5'>YOLOv8</b>目標(biāo)<b class='flag-5'>檢測(cè)</b>模型

    YOLOv8版本升級(jí)支持小目標(biāo)檢測(cè)與高分辨率圖像輸入

    YOLOv8版本最近版本又更新了,除了支持姿態(tài)評(píng)估以外,通過(guò)模型結(jié)構(gòu)的修改還支持了小目標(biāo)檢測(cè)與高分辨率圖像檢測(cè)。原始的YOLOv8模型結(jié)構(gòu)如下。
    的頭像 發(fā)表于 05-16 11:14 ?1.2w次閱讀
    <b class='flag-5'>YOLOv8</b>版本升級(jí)支持小目標(biāo)<b class='flag-5'>檢測(cè)</b>與高分辨率圖像輸入

    AI愛(ài)克斯開(kāi)發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測(cè)模型

    《在AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO加速YOLOv8分類模型》介紹了在AI愛(ài)克斯開(kāi)發(fā)板上使用OpenVINO 開(kāi)發(fā)套件部署并測(cè)評(píng)YOLOv8的分類模型,本文將介紹在AI愛(ài)克斯開(kāi)發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)
    的頭像 發(fā)表于 05-26 11:03 ?1140次閱讀
    AI愛(ài)克斯開(kāi)發(fā)板上使用OpenVINO加速<b class='flag-5'>YOLOv8</b>目標(biāo)<b class='flag-5'>檢測(cè)</b>模型

    教你如何用兩行代碼搞定YOLOv8各種模型推理

    大家好,YOLOv8 框架本身提供的API函數(shù)是可以兩行代碼實(shí)現(xiàn) YOLOv8 模型推理,這次我把這段代碼封裝成了一個(gè)類,只有40行代碼左右,可以同時(shí)支持YOLOv8
    的頭像 發(fā)表于 06-18 11:50 ?2845次閱讀
    教你如何用兩行代碼搞定<b class='flag-5'>YOLOv8</b>各種模型推理

    目標(biāo)檢測(cè)算法再升級(jí)!YOLOv8保姆級(jí)教程一鍵體驗(yàn)

    YOLO作為一種基于圖像全局信息進(jìn)行預(yù)測(cè)的目標(biāo)檢測(cè)系統(tǒng),始終保持著極高的迭代更新率,從YOLOv5到YOLOv8,本次升級(jí)主要包括結(jié)構(gòu)算法、命令行界面、PythonAPI等。具體到YOLOv8
    的頭像 發(fā)表于 02-28 11:16 ?2423次閱讀
    目標(biāo)<b class='flag-5'>檢測(cè)</b>算法再升級(jí)!<b class='flag-5'>YOLOv8</b>保姆級(jí)教程一鍵體驗(yàn)

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

    部署。這里以YOLOv8為例,演示了YOLOv8對(duì)象檢測(cè)模型在OpenVINO、ONNXRUNTIME、TensorRT三個(gè)主流框架上C++推理演示效果。
    的頭像 發(fā)表于 08-06 11:39 ?2485次閱讀

    YOLOv8+OpenCV實(shí)現(xiàn)DM碼定位檢測(cè)與解析

    YOLOv8是YOLO系列模型的最新王者,各種指標(biāo)全面超越現(xiàn)有對(duì)象檢測(cè)與實(shí)例分割模型,借鑒了YOLOv5、YOLOv6、YOLOX等模型的設(shè)
    的頭像 發(fā)表于 08-10 11:35 ?1177次閱讀
    <b class='flag-5'>YOLOv8</b>+OpenCV<b class='flag-5'>實(shí)現(xiàn)</b>DM碼定位<b class='flag-5'>檢測(cè)</b>與解析

    如何修改YOLOv8的源碼

    很多人也想跟修改YOLOv5源碼一樣的方式去修改YOLOv8的源碼,但是在github上面卻發(fā)現(xiàn)找到的YOLOv8項(xiàng)目下面TAG分支是空的,然后就直接從master/main下面把源碼克隆出來(lái)一通
    的頭像 發(fā)表于 09-04 10:02 ?1817次閱讀
    如何修改<b class='flag-5'>YOLOv8</b>的源碼

    YOLOv8實(shí)現(xiàn)任意目錄下命令行訓(xùn)練

    當(dāng)你使用YOLOv8命令行訓(xùn)練模型的時(shí)候,如果當(dāng)前執(zhí)行的目錄下沒(méi)有相關(guān)的預(yù)訓(xùn)練模型文件,YOLOv8就會(huì)自動(dòng)下載模型權(quán)重文件。這個(gè)是一個(gè)正常操作,但是你還會(huì)發(fā)現(xiàn),當(dāng)你在參數(shù)model中指定已有
    的頭像 發(fā)表于 09-04 10:50 ?1012次閱讀
    <b class='flag-5'>YOLOv8</b><b class='flag-5'>實(shí)現(xiàn)</b>任意目錄下命令行訓(xùn)練

    OpenCV4.8+YOLOv8對(duì)象檢測(cè)C++推理演示

    自從YOLOv5更新成7.0版本,YOLOv8推出以后,OpenCV4.6以前的版本都無(wú)法再加載導(dǎo)出ONNX格式模型了,只有OpenCV4.7以上版本才可以支持最新版本YOLOv5與YOLOv
    的頭像 發(fā)表于 09-27 11:07 ?1353次閱讀
    OpenCV4.8+<b class='flag-5'>YOLOv8</b><b class='flag-5'>對(duì)象</b><b class='flag-5'>檢測(cè)</b>C++推理演示

    基于YOLOv8的自定義醫(yī)學(xué)圖像分割

    YOLOv8是一種令人驚嘆的分割模型;它易于訓(xùn)練、測(cè)試和部署。在本教程中,我們將學(xué)習(xí)如何在自定義數(shù)據(jù)集上使用YOLOv8。但在此之前,我想告訴你為什么在存在其他優(yōu)秀的分割模型時(shí)應(yīng)該使用YOLOv8呢?
    的頭像 發(fā)表于 12-20 10:51 ?672次閱讀
    基于<b class='flag-5'>YOLOv8</b>的自定義醫(yī)學(xué)圖像分割

    OpenCV4.8 C++實(shí)現(xiàn)YOLOv8 OBB旋轉(zhuǎn)對(duì)象檢測(cè)

    YOLOv8框架在在支持分類、對(duì)象檢測(cè)、實(shí)例分割、姿態(tài)評(píng)估的基礎(chǔ)上更近一步,現(xiàn)已經(jīng)支持旋轉(zhuǎn)對(duì)象檢測(cè)
    的頭像 發(fā)表于 02-22 10:15 ?1289次閱讀
    OpenCV4.8 C++<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>YOLOv8</b> OBB<b class='flag-5'>旋轉(zhuǎn)</b><b class='flag-5'>對(duì)象</b><b class='flag-5'>檢測(cè)</b>

    基于OpenCV DNN實(shí)現(xiàn)YOLOv8的模型部署與推理演示

    基于OpenCV DNN實(shí)現(xiàn)YOLOv8推理的好處就是一套代碼就可以部署在Windows10系統(tǒng)、烏班圖系統(tǒng)、Jetson的Jetpack系統(tǒng)
    的頭像 發(fā)表于 03-01 15:52 ?1199次閱讀
    基于OpenCV DNN<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>YOLOv8</b>的模型部署與推理演示