家鄉(xiāng)網(wǎng)站怎么做無人區(qū)在線觀看高清1080
目標(biāo):用YOLOV8進(jìn)行圖像分類。
圖像分類器。
學(xué)習(xí)資源:https://www.youtube.com/watch?v=Z-65nqxUdl4
@努力的小巴掌 記錄計(jì)算機(jī)視覺學(xué)習(xí)道路上的所思所得。
1、文件結(jié)構(gòu)化
劃分?jǐn)?shù)據(jù)集:train,val,test
知道怎么劃分?jǐn)?shù)據(jù)集很重要。
文件夾下面有不同類別的圖片。
train?
? ? ?-----dog
? ? ?-----cat
val?
? ? ?-----dog
? ? ?-----cat
test
? ? ?-----dog
? ? ?-----cat
? ??
2、YOLOV8做圖片分類任務(wù)
方法1:
在python寫腳本
首先,確保自己已經(jīng)安裝了ultralytics和numpy。
可以直接創(chuàng)建requirements.txt文件,寫上這個(gè):
ultralytics==8.0.58
numpy==1.24.2
然后pip install requirements.txt
參考官網(wǎng)給的文檔:
Classify - Ultralytics YOLO Docs
創(chuàng)建main.py
from ultralytics import YOLO
# Load a model
# model = YOLO("yolov8n-cls.yaml") ?# build a new model from YAML
model = YOLO("yolov8n-cls.pt") ?# load a pretrained model (recommended for training)
# model = YOLO("yolov8n-cls.yaml").load("yolov8n-cls.pt") ?# build from YAML and transfer weights
# Train the model
results = model.train(data="數(shù)據(jù)集的的絕對(duì)路徑", epochs=1, imgsz=64)
在本地運(yùn)行時(shí)候,只是為了看看train.py能不能正常運(yùn)行,所以,epocha設(shè)置成1;
data="數(shù)據(jù)集的的絕對(duì)路徑",這里是放所有圖片的那個(gè)總文件夾,就是train/val/test上面一級(jí)的,然后注意一定是絕對(duì)路徑。
方法2
命令行
yolo classify train data='絕對(duì)路徑' model=yolov8n-cls.pt epochs=1?imgsz=64
3、查看結(jié)果
結(jié)果保存在runs/classify下
4、分析結(jié)果
結(jié)果有3個(gè),
weights:best.pt和last.pt 模型文件
args.yaml: 類似于配置文件,列出了我們訓(xùn)練時(shí)候的所有參數(shù)
results.csv:所有epochs的訓(xùn)練結(jié)果
其中我們重點(diǎn)關(guān)注,loss和accuracy。
我們要保證其損失是一直下降的。
數(shù)字不好看,我們用每個(gè)epoch的loss值畫一個(gè)圖像,可以直觀的看。
創(chuàng)建畫圖腳本plot_metrics.py
代碼:
import os
import pandas as pd
import matplotlib.pyplot as pltresults_path = './runs/classify/train14/results.csv'results = pd.read_csv(results_path)plt.figure()
plt.plot(results[' epoch'], results[' train/loss'], label='train loss')
plt.plot(results[' epoch'], results[' val/loss'], label='val loss', c='red')
plt.grid()
plt.title('Loss vs epochs')
plt.ylabel('loss')
plt.xlabel('epochs')
plt.legend()plt.figure()
plt.plot(results[' epoch'], results[' metrics/accuracy_top1'] * 100)
plt.grid()
plt.title('Validation accuracy vs epochs')
plt.ylabel('accuracy (%)')
plt.xlabel('epochs')plt.show()
結(jié)果類似于:
?
5、預(yù)測(cè)新圖片
創(chuàng)建predict.py
from ultralytics import YOLO
# Load a model
model = YOLO("path/to/best.pt") ?# load a custom model
# Predict with the model
results = model("圖片位置") ?# predict on an image
names_dict = results[0].names
probs = results[0].probs.tolist()
print(names_dict)
print(probs)
print(names_dict[np.argmax(probs)])
computervisioneng (Computer vision engineer) · GitHub