四川政府網(wǎng)站建設(shè)管理辦法什么是網(wǎng)絡(luò)營(yíng)銷的核心
序言
整理來自yolov8官方文檔常用的一些命令行參數(shù),官方文檔YOLOv8 Docs
yolov8命令行的統(tǒng)一運(yùn)行格式為:
yolo TASK MODE ARGS
其中主要是三部分傳參:
- TASK(可選) 是[detect、segment、classification]中的一個(gè)。如果沒有顯式傳遞,YOLOv8將嘗試從模型類型中猜測(cè)TASK。
- MODE(必選) 是[train, val, predict, export]中的一個(gè)
- ARGS(可選) 是任意數(shù)量的自定義arg=value對(duì),如imgsz=320,覆蓋默認(rèn)值。
一、訓(xùn)練參數(shù)
訓(xùn)練命令行示例:
# 從YAML中構(gòu)建一個(gè)新模型,并從頭開始訓(xùn)練
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640# 從預(yù)先訓(xùn)練的*.pt模型開始訓(xùn)練
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640# 從YAML中構(gòu)建一個(gè)新的模型,將預(yù)訓(xùn)練的權(quán)重傳遞給它,并開始訓(xùn)練
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640
對(duì)應(yīng)python代碼示例:
from ultralytics import YOLO# Load a model
model = YOLO('yolov8n.yaml') # 從YAML中構(gòu)建一個(gè)新模型
model = YOLO('yolov8n.pt') #加載預(yù)訓(xùn)練的模型(推薦用于訓(xùn)練)
model = YOLO('yolov8n.yaml').load('yolov8n.pt') # 從YAML構(gòu)建并傳遞權(quán)重# Train the model
model.train(data='coco128.yaml', epochs=100, imgsz=640)
一些比較常用的傳參:
key | 解釋 |
---|---|
model | 傳入的model.yaml文件或者model.pt文件,用于構(gòu)建網(wǎng)絡(luò)和初始化,不同點(diǎn)在于只傳入yaml文件的話參數(shù)會(huì)隨機(jī)初始化 |
data | 訓(xùn)練數(shù)據(jù)集的配置yaml文件 |
epochs | 訓(xùn)練輪次,默認(rèn)100 |
patience | 早停訓(xùn)練觀察的輪次,默認(rèn)50,如果50輪沒有精度提升,模型會(huì)直接停止訓(xùn)練 |
batch | 訓(xùn)練批次,默認(rèn)16 |
imgsz | 訓(xùn)練圖片大小,默認(rèn)640 |
save | 保存訓(xùn)練過程和訓(xùn)練權(quán)重,默認(rèn)開啟 |
save_period | 訓(xùn)練過程中每x個(gè)輪次保存一次訓(xùn)練模型,默認(rèn)-1(不開啟) |
cache | 是否采用ram進(jìn)行數(shù)據(jù)載入,設(shè)置True會(huì)加快訓(xùn)練速度,但是這個(gè)參數(shù)非常吃內(nèi)存,一般服務(wù)器才會(huì)設(shè)置 |
device | 要運(yùn)行的設(shè)備,即cuda device =0或Device =0,1,2,3或device = cpu |
workers | 載入數(shù)據(jù)的線程數(shù)。windows一般為4,服務(wù)器可以大點(diǎn),windows上這個(gè)參數(shù)可能會(huì)導(dǎo)致線程報(bào)錯(cuò),發(fā)現(xiàn)有關(guān)線程報(bào)錯(cuò),可以嘗試減少這個(gè)參數(shù),這個(gè)參數(shù)默認(rèn)為8,大部分都是需要減少的 |
project | 項(xiàng)目文件夾的名,默認(rèn)為runs |
name | 用于保存訓(xùn)練文件夾名,默認(rèn)exp,依次累加 |
exist_ok | 是否覆蓋現(xiàn)有保存文件夾,默認(rèn)Flase |
pretrained | 是否加載預(yù)訓(xùn)練權(quán)重,默認(rèn)Flase |
optimizer | 優(yōu)化器選擇,默認(rèn)SGD,可選[SGD、Adam、AdamW、RMSProP] |
verbose | 是否打印詳細(xì)輸出 |
seed | 隨機(jī)種子,用于復(fù)現(xiàn)模型,默認(rèn)0 |
deterministic | 設(shè)置為True,保證實(shí)驗(yàn)的可復(fù)現(xiàn)性 |
single_cls | 將多類數(shù)據(jù)訓(xùn)練為單類,把所有數(shù)據(jù)當(dāng)作單類訓(xùn)練,默認(rèn)Flase |
image_weights | 使用加權(quán)圖像選擇進(jìn)行訓(xùn)練,默認(rèn)Flase |
rect | 使用矩形訓(xùn)練,和矩形推理同理,默認(rèn)False |
cos_lr | 使用余弦學(xué)習(xí)率調(diào)度,默認(rèn)Flase |
close_mosaic | 最后x個(gè)輪次禁用馬賽克增強(qiáng),默認(rèn)10 |
resume | 斷點(diǎn)訓(xùn)練,默認(rèn)Flase |
lr0 | 初始化學(xué)習(xí)率,默認(rèn)0.01 |
lrf | 最終學(xué)習(xí)率,默認(rèn)0.01 |
label_smoothing | 標(biāo)簽平滑參數(shù),默認(rèn)0.0 |
dropout | 使用dropout正則化(僅對(duì)訓(xùn)練進(jìn)行分類),默認(rèn)0.0 |
數(shù)據(jù)增強(qiáng)參數(shù):
更多參數(shù)參考:modes/train
二、評(píng)估參數(shù)
評(píng)估命令行代碼示例:
yolo detect val model=yolov8n.pt # val 官方模型
yolo detect val model=path/to/best.pt # val 自己訓(xùn)練的模型
對(duì)應(yīng)的python代碼:
from ultralytics import YOLO# Load a model
model = YOLO('yolov8n.pt') #加載官方模型
model = YOLO('path/to/best.pt') # 加載自己訓(xùn)練的模型# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list contains map50-95 of each category
一些比較常用的傳參:
key | 解釋 |
---|---|
model | 需要評(píng)估的pt模型文件路徑 |
data | 需要評(píng)估的數(shù)據(jù)集yaml文件 |
imgsz | 評(píng)估圖片推理大小,默認(rèn)640 |
batch | 評(píng)估推理批次,默認(rèn)16 |
save_json | 是否保存評(píng)估結(jié)果為json輸出,默認(rèn)False |
save_hybrid | 是否保存混合版本的標(biāo)簽(標(biāo)簽+額外的預(yù)測(cè)) |
conf | 模型評(píng)估置信度閾值,默認(rèn)0.001 |
iou | 模型評(píng)估iou閾值,默認(rèn)0.6 |
max_det | 單張圖最大檢測(cè)目標(biāo)數(shù)量,默認(rèn)300 |
half | 是否使用fp16推理,默認(rèn)True |
device | 要運(yùn)行的設(shè)備,即cuda device =0或Device =0,1,2,3或device = cpu |
dnn | 是否使用use OpenCV DNN for ONNX inference,默認(rèn)Flase |
rect | 是否使用矩形推理,默認(rèn)False |
split | 數(shù)據(jù)集分割用于驗(yàn)證,即val、 test、train,默認(rèn)val |
三、推理參數(shù)
推理命令行示例:
yolo detect predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg' # predict with official model
yolo detect predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # predict with custom model
對(duì)應(yīng)python代碼示例:
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# 目標(biāo)檢測(cè)后處理
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 .# 實(shí)例分割后處理
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 # 目標(biāo)分類后處理
results = model(inputs)
results[0].probs # cls prob, (num_class, )
一些常用傳參解釋:
key | 解釋 |
---|---|
source | 跟之前的yolov5一致,可以輸入圖片路徑,圖片文件夾路徑,視頻路徑 |
save | 保存檢測(cè)后輸出的圖像,默認(rèn)False |
conf | 用于檢測(cè)的對(duì)象置信閾值,默認(rèn)0.25 |
iou | 用于nms的IOU閾值,默認(rèn)0.7 |
half | FP16推理,默認(rèn)False |
device | 要運(yùn)行的設(shè)備,即cuda設(shè)備=0/1/2/3或設(shè)備=cpu |
show | 用于推理視頻過程中展示推理結(jié)果,默認(rèn)False |
save_txt | 是否把識(shí)別結(jié)果保存為txt,默認(rèn)False |
save_conf | 保存帶有置信度分?jǐn)?shù)的結(jié)果 ,默認(rèn)False |
save_crop | 保存帶有結(jié)果的裁剪圖像,默認(rèn)False |
hide_label | 保存識(shí)別的圖像時(shí)候是否隱藏label ,默認(rèn)False |
hide_conf | 保存識(shí)別的圖像時(shí)候是否隱藏置信度,默認(rèn)False |
vid_stride | 視頻檢測(cè)中的跳幀幀數(shù),默認(rèn)1 |
classes | 展示特定類別的,根據(jù)類過濾結(jié)果,即class=0,或class=[0,2,3] |
line_thickness | 目標(biāo)框中的線條粗細(xì)大小 ,默認(rèn)3 |
visualize | 可視化模型特征 ,默認(rèn)False |
augment | 是否使用數(shù)據(jù)增強(qiáng),默認(rèn)False |
agnostic_nms | 是否采用class-agnostic NMS,默認(rèn)False |
retina_masks | 使用高分辨率分割掩碼,默認(rèn)False |
max_det | 單張圖最大檢測(cè)目標(biāo),默認(rèn)300 |
box | 在分割人物中展示box信息,默認(rèn)True |
yolov8支持各種輸入源推理:
對(duì)于圖片還支持以下保存格式的輸入圖片:
對(duì)于視頻支持以下視頻格式輸入:
返回的result結(jié)果解析:
- Results.boxes: 目標(biāo)檢測(cè)返回的boxes信息
- Results.masks: 返回的分割mask坐標(biāo)信息
- Results.probs: 分類輸出的類概率
- Results.orig_img: 原始圖像
- Results.path: 輸入圖像的路徑
result可以使用如下方法在加載到cpu或者gpu設(shè)備中:
- results = results.cuda()
- results = results.cpu()
- results = results.to(“cpu”)
- results = results.numpy()
更多細(xì)節(jié):modes/predict
四、模型導(dǎo)出
yolov8支持一鍵導(dǎo)出多種部署模型,支持如下格式的模型導(dǎo)出:
命令行運(yùn)行示例:
yolo export model=yolov8n.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model
python代碼示例:
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')
一些常用參數(shù)解釋:
key | 解釋 |
---|---|
format | 導(dǎo)出的格式,默認(rèn)’torchscript’,可選如上支持的格式 onnx、engine、openvino等 |
imgsz | 導(dǎo)出時(shí)固定的圖片推理大小,為標(biāo)量或(h, w)列表,即(640,480) ,默認(rèn)640 |
keras | 使用Keras導(dǎo)出TF SavedModel ,用于部署tensorflow模型,默認(rèn)False |
optimize | 是否針對(duì)移動(dòng)端對(duì)TorchScript進(jìn)行優(yōu)化 |
half | fp16量化導(dǎo)出,默認(rèn)False |
int8 | int8量化導(dǎo)出,默認(rèn)False |
dynamic | 針對(duì)ONNX/TF/TensorRT:動(dòng)態(tài)推理,默認(rèn)False |
simplify | onnx simplify簡(jiǎn)化,默認(rèn)False |
opset | onnx的Opset版本(可選,默認(rèn)為最新) |
workspace | TensorRT:工作空間大小(GB),默認(rèn)4 |
nms | 導(dǎo)出CoreML,添加NMS |
更多參考:modes/export
五、跟蹤參數(shù)
yolov8目前支持:BoT-SORT、ByteTrack兩種目標(biāo)跟蹤,默認(rèn)使用BoT-SORT
命令行使用示例:
yolo track model=yolov8n.pt source="https://youtu.be/Zgi9g1ksQHc" # official detection model
yolo track model=yolov8n-seg.pt source=... # official segmentation model
yolo track model=path/to/best.pt source=... # custom model
yolo track model=path/to/best.pt tracker="bytetrack.yaml" # bytetrack tracker
python代碼使用示例:
from ultralytics import YOLO# Load a model
model = YOLO('yolov8n.pt') # load an official detection model
model = YOLO('yolov8n-seg.pt') # load an official segmentation model
model = YOLO('path/to/best.pt') # load a custom model# Track with the model
results = model.track(source="https://youtu.be/Zgi9g1ksQHc", show=True)
results = model.track(source="https://youtu.be/Zgi9g1ksQHc", show=True, tracker="bytetrack.yaml")
同時(shí)支持檢測(cè)和分割模型,只需要加載相應(yīng)權(quán)重即可。
跟蹤的傳參和推理時(shí)一樣,主要有三個(gè):conf、 iou、 show
yolo track model=yolov8n.pt source="https://youtu.be/Zgi9g1ksQHc" conf=0.3, iou=0.5 show# orfrom ultralytics import YOLOmodel = YOLO('yolov8n.pt')
results = model.track(source="https://youtu.be/Zgi9g1ksQHc", conf=0.3, iou=0.5, show=True)
也可以自定義修改跟蹤配置文件,需要修改ultralytics/tracker/cfg中的yaml文件,修改你需要的配置(除了跟蹤器類型),同樣的運(yùn)行方式:
yolo track model=yolov8n.pt source="https://youtu.be/Zgi9g1ksQHc" tracker='custom_tracker.yaml'# orfrom ultralytics import YOLOmodel = YOLO('yolov8n.pt')
results = model.track(source="https://youtu.be/Zgi9g1ksQHc", tracker='custom_tracker.yaml')
六、基準(zhǔn)測(cè)試參數(shù)
基準(zhǔn)測(cè)試模式用于分析YOLOv8各種導(dǎo)出格式的速度和準(zhǔn)確性?;鶞?zhǔn)測(cè)試提供了關(guān)于導(dǎo)出格式的大小、其mAP50-95指標(biāo)(用于對(duì)象檢測(cè)和分割)或精度top5指標(biāo)(用于分類)的信息,以及在各種導(dǎo)出格式(如ONNX、OpenVINO、TensorRT等)中,每張圖像的推斷時(shí)間(以毫秒為單位)。這些信息可以幫助用戶根據(jù)他們對(duì)速度和準(zhǔn)確性的需求,為他們的特定用例選擇最佳的導(dǎo)出格式。
命令行代碼示例:
yolo benchmark model=yolov8n.pt imgsz=640 half=False device=0
python代碼示例:
from ultralytics.yolo.utils.benchmarks import benchmark# Benchmark
benchmark(model='yolov8n.pt', imgsz=640, half=False, device=0)
一些基準(zhǔn)測(cè)試常用參數(shù):
key | 解釋 |
---|---|
model | 模型文件路徑,yoloV8v.pt等 |
imgsz | 基準(zhǔn)測(cè)試圖片大小,默認(rèn)640 |
half | 基準(zhǔn)測(cè)試是否開啟fp16,默認(rèn)False |
device | 在哪些設(shè)備上測(cè)試cuda device=0 or device=0,1,2,3 or device=cpu |
hard_fail | 在錯(cuò)誤(bool)或val下限閾值(float)時(shí)停止繼續(xù),默認(rèn)False |
基準(zhǔn)測(cè)試可以支持以下導(dǎo)出的格式上運(yùn)行測(cè)試:
更多參考:modes/benchmark
七、其他任務(wù)
分割參考:segment
分類參考:classify