yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640# 從預先訓練的*.pt模型開始訓練
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640# 從YAML中構建一個新的模型,將預訓練的權重傳遞給它,并開始訓練
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640
from ultralytics import YOLO# Load a model
model = YOLO('yolov8n.yaml') # 從YAML中構建一個新模型
model = YOLO('yolov8n.pt') #加載預訓練的模型(推薦用于訓練)
model = YOLO('yolov8n.yaml').load('yolov8n.pt') # 從YAML構建并傳遞權重# Train the model
model.train(data='coco128.yaml', epochs=100, imgsz=640)
model 傳入的model.yaml文件或者model.pt文件,用于構建網絡和初始化,不同點在于只傳入yaml文件的話參數會隨機初始化
data 訓練數據集的配置yaml文件
epochs 訓練輪次,默認100
patience 早停訓練觀察的輪次,默認50,如果50輪沒有精度提升,模型會直接停止訓練
batch 訓練批次,默認16
imgsz 訓練圖片大小,默認640
save 保存訓練過程和訓練權重,默認開啟
save_period 訓練過程中每x個輪次保存一次訓練模型,默認-1(不開啟)
cache 是否采用ram進行數據載入,設置True會加快訓練速度,但是這個參數非常吃內存,一般服務器才會設置
device 要運行的設備,即cuda device =0或Device =0,1,2,3或device = cpu
workers 載入數據的線程數。windows一般為4,服務器可以大點,windows上這個參數可能會導致線程報錯,發現有關線程報錯,可以嘗試減少這個參數,這個參數默認為8,大部分都是需要減少的
project 項目文件夾的名,默認為runs
name 用于保存訓練文件夾名,默認exp,依次累加
exist_ok 是否覆蓋現有保存文件夾,默認Flase
pretrained 是否加載預訓練權重,默認Flase
optimizer 優化器選擇,默認SGD,可選[SGD、Adam、AdamW、RMSProP]
verbose 是否打印詳細輸出
seed 隨機種子,用于復現模型,默認0
deterministic 設置為True,保證實驗的可復現性
single_cls 將多類數據訓練為單類,把所有數據當作單類訓練,默認Flase
image_weights 使用加權圖像選擇進行訓練,默認Flase
rect 使用矩形訓練,和矩形推理同理,默認False
cos_lr 使用余弦學習率調度,默認Flase
close_mosaic 最后x個輪次禁用馬賽克增強,默認10
resume 斷點訓練,默認Flase
lr0 初始化學習率,默認0.01
lrf 最終學習率,默認0.01
label_smoothing 標簽平滑參數,默認0.0
dropout 使用dropout正則化(僅對訓練進行分類),默認0.0
-
模型導出
from ultralytics import YOLO# Load a model
model = YOLO('yolov8n.pt') # load an official model
model = YOLO('path/to/best.pt') # load a custom trained# Export the model
model.export(format='onnx')
format 導出的格式,默認’torchscript’,可選如上支持的格式 onnx、engine、openvino等
imgsz 導出時固定的圖片推理大小,為標量或(h, w)列表,即(640,480) ,默認640
keras 使用Keras導出TF SavedModel ,用于部署tensorflow模型,默認False
optimize 是否針對移動端對TorchScript進行優化
half fp16量化導出,默認False
int8 int8量化導出,默認False
dynamic 針對ONNX/TF/TensorRT:動態推理,默認False
simplify onnx simplify簡化,默認False
opset onnx的Opset版本(可選,默認為最新)
workspace TensorRT:工作空間大小(GB),默認4
nms 導出CoreML,添加NMS
-
推理參數
from ultralytics import YOLO# Load a model
model = YOLO('yolov8n.pt') # load an official model
model = YOLO('path/to/best.pt') # load a custom model# Predict with the model
results = model('https://ultralytics.com/images/bus.jpg') # predict on an image# 目標檢測后處理
boxes = results[0].boxes
boxes.xyxy # box with xyxy format, (N, 4)
boxes.xywh # box with xywh format, (N, 4)
boxes.xyxyn # box with xyxy format but normalized, (N, 4)
boxes.xywhn # box with xywh format but normalized, (N, 4)
boxes.conf # confidence score, (N, 1)
boxes.cls # cls, (N, 1)
boxes.data # raw bboxes tensor, (N, 6) or boxes.boxes .# 實例分割后處理
masks = results[0].masks # Masks object
masks.segments # bounding coordinates of masks, List[segment] * N
masks.data # raw masks tensor, (N, H, W) or masks.masks # 目標分類后處理
results = model(inputs)
results[0].probs # cls prob, (num_class, )
source 跟之前的yolov5一致,可以輸入圖片路徑,圖片文件夾路徑,視頻路徑
save 保存檢測后輸出的圖像,默認False
conf 用于檢測的對象置信閾值,默認0.25
iou 用于nms的IOU閾值,默認0.7,在模型將它們視為同一對象之前,多個對象之間的重疊量。默認情況下,它設置為 0.5,這意味著重疊超過 50% 的對象將被視為同一對象。
half FP16推理,默認False
device 要運行的設備,即cuda設備=0/1/2/3或設備=cpu
show 用于推理視頻過程中展示推理結果,默認False
save_txt 是否把識別結果保存為txt,默認False
save_conf 保存帶有置信度分數的結果 ,默認False
save_crop 保存帶有結果的裁剪圖像,默認False
hide_label 保存識別的圖像時候是否隱藏label ,默認False
hide_conf 保存識別的圖像時候是否隱藏置信度,默認False
vid_stride 視頻檢測中的跳幀幀數,默認1
classes 展示特定類別的,根據類過濾結果,即class=0,或class=[0,2,3]
line_thickness 目標框中的線條粗細大小 ,默認3
visualize 可視化模型特征 ,默認False
augment 是否使用數據增強,默認False
agnostic_nms 是否采用class-agnostic NMS,默認False,出現2個框的時候。將 agnostic_nms=True,就只剩一個框了
retina_masks 使用高分辨率分割掩碼,默認False
max_det 單張圖最大檢測目標,默認300
box 在分割人物中展示box信息,默認True