概述
YOLOv10 是由清華大學研究人員利用 Ultralytics Python 軟件包開發的,它通過改進模型架構并消除非極大值抑制(NMS)提供了一種新穎的實時目標檢測方法。這些優化使得模型在保持先進性能的同時,降低了計算需求。大量實驗表明,YOLOv10 在各種模型規模上提供了更優的準確率-延遲權衡。
正如讀過我之前文章的朋友所知道的,我分享了使用 YOLO 模型的各種項目,因為在預訓練模型中,YOLO 模型在性能和效率方面明顯優于其他模型。然而,實時目標檢測由于依賴非極大值抑制(NMS)和架構效率低下而面臨挑戰。YOLOv10 通過消除 NMS 并采用專注于效率和準確性的設計策略解決了這些問題。
架構

來自 Ultralytics 的圖示
骨干網絡:負責特征提取,YOLOv10 的骨干網絡使用增強版的 CSPNet(交叉階段部分網絡)來改善梯度流動并減少計算冗余。
頸部網絡:設計用于聚合不同尺度的特征并將其傳遞到頭部網絡。它包含用于有效多尺度特征融合的 PAN(路徑聚合網絡)層。
一對多頭:在訓練過程中為每個對象生成多個預測,以提供豐富的監督信號并提高學習準確性。
一對一頭:在推理過程中為每個對象生成一個最佳預測,消除 NMS 的需要,從而減少延遲并提高效率。
模型變體及性能YOLOv10 提供六種模型:
YOLOv10-N:用于極其資源受限環境的納米版。
YOLOv10-S:平衡速度和準確性的小型版。
YOLOv10-M:用于通用的中型版。
YOLOv10-B:增加寬度以提高準確性的平衡版。
YOLOv10-L:在增加計算資源成本的情況下提高準確性的高級版。
YOLOv10-X:用于最大化準確性的超大型版。

來自 Ultralytics 的圖示
比較讓我們看看在標準基準(如 COCO)上測試的不同模型在延遲和準確性方面的比較。


很明顯,YOLOv10 是實時目標檢測應用的前沿技術,以更少的參數提供更高的準確性和速度性能。
訓練 YOLOv10 進行自定義目標檢測首先,克隆官方 YOLOv10 GitHub 倉庫以下載必要的 yolov10n 模型。
!pip install -q git+https://github.com/THU-MIG/yolov10.git !wget -P -q https://github.com/jameslahm/yolov10/releases/download/v1.0/yolov10n.pt
您可以在 Roboflow Universe 上嘗試任何自定義項目,創建自己的數據集,甚至使用由 Intel 贊助的 RF100 數據集。對于本文,我將使用一個預先準備好的數據集,用于檢測 X 射線圖像中的危險物品。數據集鏈接:https://universe.roboflow.com/vladutc/x-ray-baggage
使用 Roboflow API 以 YOLOv8 格式下載您的模型。
!pip install -q roboflow from roboflow import Roboflow rf = Roboflow(api_key="your-api-key") project = rf.workspace("vladutc").project("x-ray-baggage") version = project.version(3) dataset = version.download("yolov8")
配置參數,開始訓練:
!yolo task=detect mode=train epochs=25 batch=32 plots=True model='/content/-q/yolov10n.pt' data='/content/X-Ray-Baggage-3/data.yaml'
示例 data.yaml 文件
names: - Gun - Knife - Pliers - Scissors - Wrench nc: 5 roboflow: license: CC BY 4.0 project: x-ray-baggage url: https://universe.roboflow.com/vladutc/x-ray-baggage/dataset/3 version: 3 workspace: vladutc test: /content/X-Ray-Baggage-3/test/images train: /content/X-Ray-Baggage-3/train/images val: /content/X-Ray-Baggage-3/valid/images
讓我們看看結果。
Image(filename='/content/runs/detect/train/results.png', width=1000)

讓我們預測測試數據并在 5x2 網格中顯示結果。
from ultralytics import YOLOv10 model_path = '/content/runs/detect/train/weights/best.pt' model = YOLOv10(model_path) results = model(source='/content/X-Ray-Baggage-3/test/images', conf=0.25,save=True)
import glob
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
images = glob.glob('/content/runs/detect/predict/*.jpg')
images_to_display = images[:10]
fig, axes = plt.subplots(2, 5, figsize=(20, 10))
for i, ax in enumerate(axes.flat):
if i < len(images_to_display):
img = mpimg.imread(images_to_display[i])
ax.imshow(img)
ax.axis('off')
else:
ax.axis('off')
plt.tight_layout()
plt.show()

-
目標檢測
+關注
關注
0文章
234瀏覽量
16535 -
數據集
+關注
關注
4文章
1239瀏覽量
26250
原文標題:YOLOv10 自定義目標檢測 | 理論+實踐
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
MCUXpresso SDK創建自定義清單
極海APM32F427如何實現自定義USB HID設備與PC進行通信
如何為 Vision Five 2 編譯自定義 Linux 內核?
電能質量監測裝置可自定義監測時段嗎?
電能質量在線監測裝置的自定義監測時段功能有哪些應用場景?
電能質量在線監測裝置的自定義監測時段功能與離線監測有什么區別?
無圖形界面模式下自定義檢查工具的應用
采用匯編指示符來使用自定義指令
如何使用SDK進行自定義音頻播放功能
LOTO示波器自定義解碼功能—CANFD解碼
KiCad 中的自定義規則(KiCon 演講)
YOLOv10自定義目標檢測之理論+實踐
評論