訓(xùn)練自定義數(shù)據(jù)集 YOLOv8 OBB :定向邊界框
YOLOv8 定向目標(biāo)檢測
什么是定向邊界框目標(biāo)檢測?
“定向邊界框目標(biāo)檢測”指的是在圖像或視頻中識別和定位對象的同時(shí),還估計(jì)它們的方向。這種方法在處理有一定旋轉(zhuǎn)或方向變化的對象時(shí)特別有用,例如汽車、飛機(jī)或文本。
定向目標(biāo)檢測器的輸出是一組旋轉(zhuǎn)的邊界框,這些框精確地包圍圖像中的對象,每個(gè)框都有類別標(biāo)簽和置信度分?jǐn)?shù)。當(dāng)您需要識別場景中感興趣的對象,但不需要知道對象的確切位置或確切形狀時(shí),目標(biāo)檢測是一個(gè)不錯(cuò)的選擇。
來源: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 結(jié)果
如何訓(xùn)練自定義數(shù)據(jù)集?
數(shù)據(jù)集格式
YOLO OBB 格式通過它們的四個(gè)角點(diǎn)指定邊界框,坐標(biāo)值在 0 和 1 之間歸一化。它遵循這種格式:
class_index, x1, y1, x2, y2, x3, y3, x4, y4
內(nèi)部,YOLO 以 xywhr 格式處理損失和輸出,這表示邊界框的中心點(diǎn)(xy)、寬度、高度和旋轉(zhuǎn)。
來源:https://docs.ultralytics.com/datasets/obb/#yolo-obb-format
使用 Roboflow YOLOv8 OBB 數(shù)據(jù)集格式。在本教程中,我使用了一個(gè)公共數(shù)據(jù)集,并從 Roboflow Universe 生成了 obb 格式。
來源:https://universe.roboflow.com/
數(shù)據(jù)集鏈接:https://universe.roboflow.com/prata-vqsjq/dosr/dataset/3
導(dǎo)出數(shù)據(jù)集到 YOLOv8 定向邊界框格式:
標(biāo)簽
0: cargo
1: container
2: cruise
3: fishing boat
4: military_ship
5: tanker
如何訓(xùn)練?
# 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
)
訓(xùn)練過程將運(yùn)行 20 個(gè)epoch,每批 16 張圖像,圖像大小為 640 像素。腳本每 5 個(gè)epoch保存一次訓(xùn)練好的模型,并使用 GPU 進(jìn)行訓(xùn)練(device=0)。訓(xùn)練過程中不使用緩存(cache=False)。訓(xùn)練過程不使用預(yù)訓(xùn)練權(quán)重(pretrained=False)且不使用數(shù)據(jù)增強(qiáng)(augment=False)。項(xiàng)目名為‘obb’,訓(xùn)練好的模型將保存為‘custom_obb’。