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

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

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

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

地瓜機(jī)器人 ? 2023-02-28 11:16 ? 次閱讀

YOLO作為一種基于圖像全局信息進(jìn)行預(yù)測(cè)的目標(biāo)檢測(cè)系統(tǒng),始終保持著極高的迭代更新率,從YOLOv5到Y(jié)OLOv8,本次升級(jí)主要包括結(jié)構(gòu)算法、命令行界面、Python API等。具體到Y(jié)OLOv8,它可以在大型數(shù)據(jù)集上進(jìn)行訓(xùn)練,并且能夠在各種硬件平臺(tái)上運(yùn)行;YOLOv8還有一個(gè)關(guān)鍵特性是它的可擴(kuò)展性,由于其被設(shè)計(jì)成一個(gè)框架,支持所有以前YOLO的版本,使得在不同版本之間切換和比較它們的性能變得容易。

1.png

本次內(nèi)容《目標(biāo)檢測(cè)算法再升級(jí)!YOLOv8保姆級(jí)教程一鍵體驗(yàn)》,地平線(xiàn)開(kāi)發(fā)者社區(qū)優(yōu)秀開(kāi)發(fā)者林松將會(huì)一步步引導(dǎo)大家在地平線(xiàn)旭日?X3派(下文簡(jiǎn)稱(chēng)旭日X3派)成功部署YOLOv8目標(biāo)檢測(cè)模型,并附上精度速度初探!相關(guān)問(wèn)題歡迎大家注冊(cè)加入地平線(xiàn)開(kāi)發(fā)者社區(qū)交流討論,配置文件及代碼詳見(jiàn)地平線(xiàn)開(kāi)發(fā)者社區(qū)。

環(huán)境配置

本文所使用的腳本和代碼目錄結(jié)構(gòu)和說(shuō)明如下:

├── project # X3 工作目錄 │ ├── calib_f32 # 量化校準(zhǔn)數(shù)據(jù)集 │ ├── coco128 # 量化校準(zhǔn)和待檢測(cè)圖片 │ ├── config.yaml # onnx 轉(zhuǎn) bin 模型配置 │ ├── modules.py -> ../ultralytics/ultralytics/nn/modules.py # 軟鏈接 YOLOv8 后處理文件 │ ├── onnxruntime-infer.py # pc 端讀取 onnx 并檢測(cè) │ ├── requirements.txt # python 依賴(lài)包 │ ├── step1_export_onnx.py # YOLOv8 ONNX 導(dǎo)出 │ ├── step2_make_calib.py # 制作量化校準(zhǔn)數(shù)據(jù)集 │ ├── step3_convert_bin.sh # onnx 轉(zhuǎn) bin 腳本 │ ├── step4_inference.py # X3 推理代碼 │ ├── yolo-comparison-plots.png # YOLO 模型對(duì)比圖 │ ├── yolov8n.onnx # 轉(zhuǎn)換好的 onnx │ ├── yolov8n.pt # YOLOv8 pytorch 權(quán)重 │ └── yolov8n_horizon.bin # 轉(zhuǎn)換好的 bin 模型 ├── ultralytics # YOLOv8 倉(cāng)庫(kù) │ ├── CITATION.cff │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── MANIFEST.in │ ├── README.md │ ├── README.zh-CN.md │ ├── docker │ ├── docs │ ├── examples │ ├── mkdocs.yml │ ├── requirements.txt │ ├── setup.cfg │ ├── setup.py │ ├── tests │ └── ultralytics

YOLOv8 PyTorch環(huán)境配置

請(qǐng)?jiān)陂_(kāi)發(fā)機(jī)中導(dǎo)出ONNX模型,安裝PyTorch ONNX等依賴(lài),再安裝YOLOv8:

cd project python3 -m pip install -r requirements.txt cd ../ultralytics python3 setup.py install cd ../project

模型導(dǎo)出

修改YOLOv8后處理代碼

將YOLOv8中ultralytics/ultralytics/nn/modules.py軟鏈接到 project/modules.py,方便定位到修改的代碼位置,其中中有兩個(gè)trick:

# *************************************************************************************************************** # # *************************************************************************************************************** # # 原倉(cāng)庫(kù)的版本帶后處理 注釋掉?。。?! # def forward(self, x): # shape = x[0].shape # BCHW # for i in range(self.nl): # x[i] = torch.cat((self.cv2[i](x[i]), self.cv3[i](x[i])), 1) # if self.training: # return x # elif self.dynamic or self.shape != shape: # self.anchors, self.strides = (x.transpose(0, 1) for x in make_anchors(x, self.stride, 0.5)) # self.shape = shape # # box, cls = torch.cat([xi.view(shape[0], self.no, -1) for xi in x], 2).split((self.reg_max * 4, self.nc), 1) # dbox = dist2bbox(self.dfl(box), self.anchors.unsqueeze(0), xywh=True, dim=1) * self.strides # y = torch.cat((dbox, cls.sigmoid()), 1) # return y if self.export else (y, x) # *************************************************************************************************************** # # *************************************************************************************************************** # # X3 部署使用的版本!?。?! def forward(self, x): res = [] for i in range(self.nl): bboxes = self.cv2[i](x[i]).permute(0, 2, 3, 1) scores = self.cv3[i](x[i]).permute(0, 2, 3, 1) res.append(bboxes) res.append(scores) # 返回 tuple 不會(huì)導(dǎo)出報(bào)錯(cuò) return tuple(res) # *************************************************************************************************************** # # *************************************************************************************************************** #

  • 導(dǎo)出Transpose(permute)節(jié)點(diǎn)

bboxes = self.cv2[i](x[i]).permute(0, 2, 3, 1) scores = self.cv3[i](x[i]).permute(0, 2, 3, 1)

由于旭日X3派支持的模型格式為NHWC,但是PyTorch訓(xùn)練的模型是NCHW,因此我們導(dǎo)出的ONNX模型在轉(zhuǎn)換bin時(shí)會(huì)在網(wǎng)絡(luò)頭和尾插入Transpose結(jié)點(diǎn),而這個(gè) Transpose節(jié)點(diǎn)的順序是[0, 3, 1, 2],可以發(fā)現(xiàn)與我們插入的[0, 2, 3, 1]節(jié)點(diǎn)正好可以抵消,相當(dāng)與少了個(gè)Transpose節(jié)點(diǎn),這樣是可以提升模型推理速度,避免不必要的計(jì)算的。

  • 將輸出處理成 tuple

這步主要是為了讓YOLOv8能夠順利導(dǎo)出不報(bào)錯(cuò),如果使用list則會(huì)報(bào)tulpe的錯(cuò)誤。

使用YOLOv8導(dǎo)出的ONNX

執(zhí)行 step1_export_onnx.py,可以下載官方的權(quán)重并導(dǎo)出 ONNX。

# 導(dǎo)入 YOLOv8 from ultralytics import YOLO # 載入預(yù)訓(xùn)練權(quán)重 model = YOLO("yolov8n.pt") # 指定 opset=11 并且使用 onnx-sim 簡(jiǎn)化 ONNX success = model.export(format="onnx", opset=11, simplify=True)

python3 step1_export_onnx.py

注意:旭日X3派支持ONNX opset = 10/11,其他版本會(huì)無(wú)法通過(guò)模型工具鏈編譯。

使用ONNXRuntime推理導(dǎo)出ONNX

為了避免導(dǎo)出的ONNX出錯(cuò),最好使用ONNXRuntime來(lái)驗(yàn)證一下模型的正確性。

def letterbox(im, new_shape=(640, 640), color=114): # Resize and pad image while meeting stride-multiple constraints shape = im.shape[:2]

# current shape [height, width] if isinstance(new_shape, int): new_shape = (new_shape, new_shape) # Scale ratio (new / old) r = min(new_shape[0] / shape[0], new_shape[1] / shape[1]) # Compute padding new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1]

# wh padding dw /= 2 # divide padding into 2 sides dh /= 2 if shape[::-1] != new_unpad: # resize im = cv2.resize(im, new_unpad, interpolation=cv2.INTER_LINEAR) top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=(color, color, color)) # add border return im, 1 / r, (dw, dh) def ratioresize(im, new_shape=(640, 640), color=114): shape = im.shape[:2]

# current shape [height, width] if isinstance(new_shape, int): new_shape = (new_shape, new_shape) new_h, new_w = new_shape padded_img = np.ones((new_h, new_w, 3), dtype=np.uint8) * color # Scale ratio (new / old) r = min(new_h / shape[0], new_w / shape[1])

# Compute padding new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) if shape[::-1] != new_unpad: im = cv2.resize(im, new_unpad, interpolation=cv2.INTER_LINEAR) padded_img[: new_unpad[1], : new_unpad[0]] = im padded_img = np.ascontiguousarray(padded_img) return padded_img, 1 / r, (0, 0)

本文使用的兩種圖像縮放方法,letterbox是YOLOv8中訓(xùn)練時(shí)啟用的方法,由于需要四周padding并且后處理要根據(jù)padding的數(shù)值還原,較為麻煩。使用 ratioresize方法,在保持圖像的長(zhǎng)寬比例的同時(shí),使用右下角padding避免了后處理計(jì)算偏移量。

if __name__ == '__main__': images_path = Path('./coco128') model_path = Path('./yolov8n.onnx') score_thres = 0.4 iou_thres = 0.65 num_classes = 80 try: session = onnxruntime.InferenceSession(str(model_path), providers=['CPUExecutionProvider']) model_h, model_w = session.get_inputs()[0].shape[2:] except Exception as e: print(f'Load model error.\n{e}') exit() else: try: # 預(yù)熱10次推理 for _ in range(10): session.run(None, {'images': np.random.randn(1, 3, model_h, model_w).astype(np.float32)}) except Exception as e: print(f'Warm up model error.\n{e}') cv2.namedWindow("results", cv2.WINDOW_AUTOSIZE) for img_path in images_path.iterdir(): image = cv2.imread(str(img_path)) t0 = time.perf_counter()

## yolov8 training letterbox # resized, ratio, (dw, dh) = letterbox(image, (model_h, model_w)) resized, ratio, (dw, dh) = ratioresize(image, (model_h, model_w)) buffer = blob(resized) t1 = time.perf_counter() outputs = session.run(None, {'images': buffer}) outputs = [o[0] for o in outputs] t2 = time.perf_counter() results = postprocess( outputs, score_thres, iou_thres, image.shape[0], image.shape[1], dh, dw, ratio, ratio, 16, num_classes) results = nms(*results) t3 = time.perf_counter() for (x0, y0, x1, y1, score, label) in results: x0, y0, x1, y1 = map(int, [x0, y0, x1, y1]) cls_id = int(label) cls = CLASSES[cls_id] color = COLORS[cls] cv2.rectangle(image, [x0, y0], [x1, y1], color, 1) cv2.putText(image, f'{cls}:{score:.3f}', (x0, y0 - 2), cv2.FONT_HERSHEY_SIMPLEX, 0.325, [0, 0, 225], thickness=1) t4 = time.perf_counter() cv2.imshow('results', image)

上述是推理主函數(shù),為了保證模型打印的耗時(shí)穩(wěn)定,前期啟動(dòng)了10次推理預(yù)熱,建議端側(cè)部署時(shí)一定記得預(yù)熱一下??梢钥吹浇Y(jié)果正確,后處理邏輯也是對(duì)的。

2.png

生成量化校準(zhǔn)數(shù)據(jù)集

執(zhí)行step2_make_calib.py,可以讀取coco128目錄下隨機(jī)50張圖片,制作校準(zhǔn)數(shù)據(jù)集。

img = cv2.imread(str(i)) img = letterbox(img)[0] img = blob(img[:, :, ::-1]) # bgr -> rgb print(img.shape) img.astype(np.float32).tofile(str(save / (i.stem + '.rgbchw')))

制作校準(zhǔn)數(shù)據(jù)集主要是讀圖-> resize -> uint8轉(zhuǎn)float -> numpy.tofile。在calib_f32目錄下會(huì)生成50個(gè)rgbchw結(jié)尾的文件:

python3 step2_make_calib.py

使用地平線(xiàn)提供的Docker編譯bin模型

將docker_openexplorer_centos_7_xj3_v2.4.2.tar.gz下載到本地開(kāi)發(fā)機(jī),并使用以下命令開(kāi)啟docker:

cd ../ wget -c ftp://vrftp.horizon.ai/Open_Explorer_gcc_9.3.0/2.4.2/docker_openexplorer_centos_7_xj3_v2.4.2.tar.gz docker load -i docker_openexplorer_centos_7_xj3_v2.4.2.tar.gz docker run -it --name horizonX3 -v ${PWD}/project:/open_explorer/project openexplorer/ai_toolchain_centos_7_xj3:v2.4.2 docker exec -it horizonX3 /bin/bash

進(jìn)入容器后,執(zhí)行:

cd project bash step3_convert_bin.sh

編譯成功后會(huì)打印如下日志:

/model.22/cv3.2/cv3.2.2/Conv BPU id(0) HzSQuantizedConv 0.998216 67.505043 2023-01-31 21:17:24,261 INFO [Tue Jan 31 21:17:24 2023] End to Horizon NN Model Convert. 2023-01-31 21:17:24,315 INFO start convert to *.bin file.... 2023-01-31 21:17:24,345 INFO ONNX model output num : 6 2023-01-31 21:17:24,346 INFO

############# model deps info ############# 2023-01-31 21:17:24,346 INFO hb_mapper version : 1.9.9 2023-01-31 21:17:24,346 INFO hbdk version : 3.37.2 2023-01-31 21:17:24,346 INFO hbdk runtime version: 3.14.14 2023-01-31 21:17:24,346 INFO horizon_nn version : 0.14.0 2023-01-31 21:17:24,346 INFO

############# model_parameters info ############# 2023-01-31 21:17:24,346 INFO onnx_model : /open_explorer/workspace/yolov8/yolov8n.onnx 2023-01-31 21:17:24,346 INFO BPU march : bernoulli2 2023-01-31 21:17:24,346 INFO layer_out_dump : False 2023-01-31 21:17:24,346 INFO log_level : DEBUG 2023-01-31 21:17:24,346 INFO working dir : /open_explorer/workspace/yolov8/model_output 2023-01-31 21:17:24,346 INFO output_model_file_prefix: yolov8n_horizon 2023-01-31 21:17:24,347 INFO

############# input_parameters info ############# 2023-01-31 21:17:24,347 INFO ------------------------------------------

2023-01-31 21:17:24,347 INFO ---------input info : images --------- 2023-01-31 21:17:24,347 INFO input_name : images 2023-01-31 21:17:24,347 INFO input_type_rt : nv12 2023-01-31 21:17:24,347 INFO input_space&range : regular 2023-01-31 21:17:24,347 INFO input_layout_rt : NHWC 2023-01-31 21:17:24,347 INFO input_type_train : rgb 2023-01-31 21:17:24,347 INFO input_layout_train : NCHW 2023-01-31 21:17:24,347 INFO norm_type : data_scale 2023-01-31 21:17:24,347 INFO input_shape : 1x3x640x640 2023-01-31 21:17:24,347 INFO input_batch : 1 2023-01-31 21:17:24,347 INFO scale_value : 0.003921568627451, 2023-01-31 21:17:24,347 INFO cal_data_dir : /open_explorer/calib_f32 2023-01-31 21:17:24,347 INFO ---------input info : images end ------- 2023-01-31 21:17:24,347 INFO ------------------------------------------

2023-01-31 21:17:24,347 INFO ############# calibration_parameters info #############

2023-01-31 21:17:24,348 INFO preprocess_on : False 2023-01-31 21:17:24,348 INFO calibration_type: : max 2023-01-31 21:17:24,348 INFO cal_data_type : float32 2023-01-31 21:17:24,348 INFO max_percentile : 0.99999 2023-01-31 21:17:24,348 INFO per_channel : True 2023-01-31 21:17:24,348 INFO ############# compiler_parameters info ############# 2023-01-31 21:17:24,348 INFO hbdk_pass_through_params: --core-num 2 --fast --O3 2023-01-31 21:17:24,348 INFO input-source : {'images': 'pyramid', '_default_value': 'ddr'} 2023-01-31 21:17:24,354 INFO Convert to runtime bin file sucessfully! 2023-01-31 21:17:24,354 INFO End Model Convert /model.22/cv3.2/cv3.2.2/Conv BPU id(0) HzSQuantizedConv 0.998216 67.505043

上文的0.998216表示量化后的模型最后一層輸出的余弦相似度,越接近1代表模型精度保持的越高(PS.model_output/yolov8n_horizon.bin是轉(zhuǎn)換完的bin模型)。

推理測(cè)試

上板測(cè)試

將project文件夾打包上傳到旭日X3派中,可以使用ssh或者U盤(pán)復(fù)制到旭日X3派工作目錄中。假設(shè)保存到入/home/sunrise/project,推理前處理需要將輸入轉(zhuǎn)換到 nv12:

def bgr2nv12_opencv(image): height, width = image.shape[:2] area = height * width yuv420p = cv2.cvtColor(image, cv2.COLOR_BGR2YUV_I420).reshape((area * 3 // 2,)) y = yuv420p[:area] uv_planar = yuv420p[area:].reshape((2, area // 4)) uv_packed = uv_planar.transpose((1, 0)).reshape((area // 2,)) nv12 = np.zeros_like(yuv420p) nv12[:area] = y nv12[area:] = uv_packed return nv12

使用終端執(zhí)行:

cd /home/sunrise/project sudo python3 -m pip install opencv-python # 安裝 X3 推理依賴(lài) mv model_output/yolov8n_horizon.bin ./ sudo python3 step4_inference.py

會(huì)看到圖片檢測(cè)并繪制的結(jié)果,還會(huì)打印推理的耗時(shí)情況:

3.png

得出結(jié)果:
前處理:30.4ms
推理:168.5ms
后處理:66ms
畫(huà)圖:0.8ms
全程耗時(shí):265.9ms

本文轉(zhuǎn)自地平線(xiàn)開(kāi)發(fā)者社區(qū)
原作者:tripleMu

聲明:本文內(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)注

    5045

    文章

    18817

    瀏覽量

    298489
  • 檢測(cè)
    +關(guān)注

    關(guān)注

    5

    文章

    4348

    瀏覽量

    91102
  • 目標(biāo)檢測(cè)
    +關(guān)注

    關(guān)注

    0

    文章

    196

    瀏覽量

    15564
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用NVIDIA JetPack 6.0和YOLOv8構(gòu)建智能交通應(yīng)用

    進(jìn)行視頻數(shù)據(jù)的接收與存儲(chǔ);借助 YOLOv8 和 DeepStream AI 感知服務(wù)實(shí)現(xiàn)實(shí)時(shí)目標(biāo)檢測(cè)和車(chē)輛追蹤;車(chē)輛移動(dòng)的時(shí)空分析。在構(gòu)建好這流程后,將利用 API 生成分析報(bào)告。
    的頭像 發(fā)表于 08-23 16:49 ?254次閱讀
    使用NVIDIA JetPack 6.0和<b class='flag-5'>YOLOv8</b>構(gòu)建智能交通應(yīng)用

    YOLOv5的原理、結(jié)構(gòu)、特點(diǎn)和應(yīng)用

    YOLOv5(You Only Look Once version 5)是種基于深度學(xué)習(xí)的實(shí)時(shí)目標(biāo)檢測(cè)算法,它屬于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的范疇。下面我將詳細(xì)介紹
    的頭像 發(fā)表于 07-03 09:23 ?1857次閱讀

    口罩佩戴檢測(cè)算法

    口罩佩戴檢測(cè)算法基于YOLOv5在圖像識(shí)別檢測(cè)領(lǐng)域的優(yōu)異性能,本文研究基于基于YOLOv5的口罩佩自動(dòng)戴檢測(cè)方法。首先從網(wǎng)絡(luò)和真實(shí)生活中中尋
    的頭像 發(fā)表于 07-01 20:20 ?203次閱讀
    口罩佩戴<b class='flag-5'>檢測(cè)算法</b>

    使用sophon-demo_v0.1.8_dbb4632_20231116下面的YOLOv8中的yolov8_bmcv歷程出現(xiàn)段錯(cuò)誤的原因?

    使用sophon-demo_v0.1.8_dbb4632_20231116下面的YOLOv8中的yolov8_bmcv歷程,出現(xiàn)段錯(cuò)誤: 定位到代碼中出錯(cuò)的函數(shù)是 picDec(h, img_file.c_str(), bmimg);這是什么原因呢?這個(gè)函數(shù)是算能提供的代
    發(fā)表于 05-30 07:37

    OpenVINO? C# API部署YOLOv9目標(biāo)檢測(cè)和實(shí)例分割模型

    YOLOv9模型是YOLO系列實(shí)時(shí)目標(biāo)檢測(cè)算法中的最新版本,代表著該系列在準(zhǔn)確性、速度和效率方面的又次重大飛躍。
    的頭像 發(fā)表于 04-03 17:35 ?617次閱讀
    OpenVINO? C# API部署<b class='flag-5'>YOLOv</b>9<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b>和實(shí)例分割模型

    基于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 ?1028次閱讀
    基于OpenCV DNN實(shí)現(xiàn)<b class='flag-5'>YOLOv8</b>的模型部署與推理演示

    在Windows上使用OpenVINO? C# API部署Yolov8-obb實(shí)現(xiàn)任意方向的目標(biāo)檢測(cè)

    Ultralytics YOLOv8 基于深度學(xué)習(xí)和計(jì)算機(jī)視覺(jué)領(lǐng)域的尖端技術(shù),在速度和準(zhǔn)確性方面具有無(wú)與倫比的性能。
    的頭像 發(fā)表于 02-22 17:13 ?818次閱讀
    在Windows上使用OpenVINO? C# API部署<b class='flag-5'>Yolov8</b>-obb實(shí)現(xiàn)任意方向的<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b>

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

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

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

    YOLOv8框架在在支持分類(lèi)、對(duì)象檢測(cè)、實(shí)例分割、姿態(tài)評(píng)估的基礎(chǔ)上更近步,現(xiàn)已經(jīng)支持旋轉(zhuǎn)對(duì)象檢測(cè)(OBB),基于DOTA數(shù)據(jù)集,支持航拍圖像的15個(gè)類(lèi)別對(duì)象
    的頭像 發(fā)表于 01-11 10:43 ?1370次閱讀
    <b class='flag-5'>YOLOv8</b>實(shí)現(xiàn)旋轉(zhuǎn)對(duì)象<b class='flag-5'>檢測(cè)</b>

    基于YOLOv8實(shí)現(xiàn)自定義姿態(tài)評(píng)估模型訓(xùn)練

    Hello大家好,今天給大家分享下如何基于YOLOv8姿態(tài)評(píng)估模型,實(shí)現(xiàn)在自定義數(shù)據(jù)集上,完成自定義姿態(tài)評(píng)估模型的訓(xùn)練與推理。
    的頭像 發(fā)表于 12-25 11:29 ?2417次閱讀
    基于<b class='flag-5'>YOLOv8</b>實(shí)現(xiàn)自定義姿態(tài)評(píng)估模型訓(xùn)練

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

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

    日本yolov8用戶(hù)案例

    通過(guò)模擬人手臂的姿態(tài)來(lái)控制機(jī)械臂。演示的內(nèi)容是使用USB攝像頭通過(guò)圖像識(shí)別估計(jì)手臂,并將mycobot制作成類(lèi)似的手臂形狀。 視頻鏈接:https://youtu.be/h1H6pSvhQxQ 該項(xiàng)目主要使用Ultralytics YOLOv8來(lái)進(jìn)行姿態(tài)的估計(jì),結(jié)合機(jī)器視覺(jué)和機(jī)械臂的控制
    的頭像 發(fā)表于 12-18 15:51 ?495次閱讀
    日本<b class='flag-5'>yolov8</b>用戶(hù)案例

    【愛(ài)芯派 Pro 開(kāi)發(fā)板試用體驗(yàn)】yolov8模型轉(zhuǎn)換

    通過(guò)開(kāi)發(fā)板上預(yù)制的ax_run_model 工具,測(cè)試模型速度和精度。 示例都是yolov5的,沒(méi)有yolov8,模型怎么運(yùn)行還需進(jìn)步研究。
    發(fā)表于 11-20 12:19

    用自己的數(shù)據(jù)集訓(xùn)練YOLOv8實(shí)例分割模型

    YOLOv8 于 2023 年 1 月 10 日推出。截至目前,這是計(jì)算機(jī)視覺(jué)領(lǐng)域分類(lèi)、檢測(cè)和分割任務(wù)的最先進(jìn)模型。該模型在準(zhǔn)確性和執(zhí)行時(shí)間方面都優(yōu)于所有已知模型。
    的頭像 發(fā)表于 11-10 16:44 ?3475次閱讀
    用自己的數(shù)據(jù)集訓(xùn)練<b class='flag-5'>YOLOv8</b>實(shí)例分割模型

    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 ?1215次閱讀
    OpenCV4.8+<b class='flag-5'>YOLOv8</b>對(duì)象<b class='flag-5'>檢測(cè)</b>C++推理演示