訓練自定義數據集 YOLOv8 OBB :定向邊界框
YOLOv8 定向目標檢測
什么是定向邊界框目標檢測?
“定向邊界框目標檢測”指的是在圖像或視頻中識別和定位對象的同時,還估計它們的方向。這種方法在處理有一定旋轉或方向變化的對象時特別有用,例如汽車、飛機或文本。
定向目標檢測器的輸出是一組旋轉的邊界框,這些框精確地包圍圖像中的對象,每個框都有類別標簽和置信度分數。當您需要識別場景中感興趣的對象,但不需要知道對象的確切位置或確切形狀時,目標檢測是一個不錯的選擇。
來源:https://mediaan.com/mediaan-blog/oriented-object-detection
如何加載 YOLOv8 OBB 模型?
# install ultralytics
pip3 install ultralytics
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n-obb.pt') # load an official model
# Predict with the model
results = model('https://miro.medium.com/v2/resize:fit:1400/1*BybWklt3t0M8zdSXtkipRg.png', save=True) # predict on an image
obb 結果
如何訓練自定義數據集?
數據集格式
YOLO OBB 格式通過它們的四個角點指定邊界框,坐標值在 0 和 1 之間歸一化。它遵循這種格式:
class_index, x1, y1, x2, y2, x3, y3, x4, y4
內部,YOLO 以 xywhr 格式處理損失和輸出,這表示邊界框的中心點(xy)、寬度、高度和旋轉。
來源:https://docs.ultralytics.com/datasets/obb/#yolo-obb-format
使用 Roboflow YOLOv8 OBB 數據集格式。在本教程中,我使用了一個公共數據集,并從 Roboflow Universe 生成了 obb 格式。
來源:https://universe.roboflow.com/
數據集鏈接:https://universe.roboflow.com/prata-vqsjq/dosr/dataset/3
導出數據集到 YOLOv8 定向邊界框格式:
標簽
0: cargo
1: container
2: cruise
3: fishing boat
4: military_ship
5: tanker
如何訓練?
# Train the model
epochs = 20
imgsz = 640
batch = 16
save_period = 5
device = 0
cache = False
pretrained = True
YAML_FILE = '/content/datasets/data.yaml'
project = 'obb'
name = 'custom_obb'
model.train(
data=YAML_FILE,
device=device,
epochs=epochs,
imgsz=imgsz,
batch=batch,
cache=cache,
save_period=save_period,
project=project,
name=name,
patience=0,
augment=False
)
訓練過程將運行 20 個epoch,每批 16 張圖像,圖像大小為 640 像素。腳本每 5 個epoch保存一次訓練好的模型,并使用 GPU 進行訓練(device=0)。訓練過程中不使用緩存(cache=False)。訓練過程不使用預訓練權重(pretrained=False)且不使用數據增強(augment=False)。項目名為‘obb’,訓練好的模型將保存為‘custom_obb’。