最近要做一個有關(guān)于圖像分類的項目,大體需要區(qū)分下面三種圖像,分別是模糊的PCB孔,外孔清晰照片,內(nèi)孔清晰照片。
三種圖像
為了實現(xiàn)這一目的,于是我想到了利用Yolo(You only Look Once)模型來實現(xiàn)圖像實時識別。
本期我們就介紹如何快速上手使用Yolo訓(xùn)練自己的實時分類模型。
環(huán)境要求
YOLO模型對硬件的要求相對靈活,最低配置下,CPU需要4核,內(nèi)存至少16GB。
除此之外,推薦安裝Python 3.6及以上的版本的來使用。
下載和安裝Python可以前往Python官網(wǎng)下載與安裝,本文使用的Python環(huán)境是Python 3.9
編譯器使用的PyCharm 2023,也可自行搜索PyCharm進(jìn)行安裝。
除了環(huán)境要求之外,準(zhǔn)備好我們需要檢測的圖片,接下來我們將對圖片進(jìn)行標(biāo)簽分類。
圖片標(biāo)注分類
標(biāo)注工具我們使用開源的 LabelImg,在CMD窗口輸入以下代碼,即可安裝Labelimg(這里也可以用虛擬環(huán)境)
pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
完成后,即可在Python的根目錄中找到LabelImag的啟動程序了。
可以開啟自動保存
接下來在圖片中,選中待識別圖片的路徑,打開圖片,挨個對其進(jìn)行標(biāo)注了。
保存完后我們就可以得到圖片標(biāo)注信息了,包括“類別索引”,標(biāo)注框信息的歸一化數(shù)據(jù)等。
創(chuàng)建一個訓(xùn)練文件夾和預(yù)測文件夾(注意,標(biāo)簽也要創(chuàng)建),分別放入圖片和標(biāo)注結(jié)果(txt文件),這里我分別放置了70張圖片用作訓(xùn)練,10張圖片用作預(yù)測。
Yolo使用
接下來利用Pycharm創(chuàng)建一個新的工程,在終端中可以輸入如下代碼安裝Yolo。
pip install ultralytics
如果出現(xiàn)了pip版本太低了,可以按照它的方式升級
之后創(chuàng)建一個Yolo的配置文件,描述一下我們要訓(xùn)練數(shù)據(jù)情況。
py文件中的代碼非常非常的簡單,只需要下面一段即可。
import torch
from ultralytics import YOLO
# 加載模型
model = YOLO('yolov8n.yaml') ?# 使用 YoloV8 的預(yù)訓(xùn)練模型
# 訓(xùn)練模型
results = model.train(
? ?data='./dataset.yaml', ?# 數(shù)據(jù)集配置文件路徑
? ?epochs=100, ?# 訓(xùn)練輪數(shù)
? ?imgsz=800,#圖片大小 800*800像素
? ?batch=16,#一次訓(xùn)練的圖片批次
? ?name='yolov8_custom',
? ?save_dir="ModeSave", ? ?#模型保存路徑
? ?save_period=10 ?#每十輪保存一次
)
# 評估模型
results = model.val()
接著開始運行,下面是訓(xùn)練過程部分截圖
一百次訓(xùn)練大概花了一個多小時,十四張用于預(yù)測的圖片全部識別成功。
我這里的標(biāo)簽是:blur是模糊的照片,clear1是外孔清晰照片,clear2是內(nèi)孔清晰照片,數(shù)字是置信度,除了第五張圖片的置信度為0.3之外,其他的都非常準(zhǔn)確。
大家有啥推薦做的歡迎留言!??!