1 項目需求描述
博主自己開了一家T寶店,有一個客戶有這個需求:有一大堆圖像,大概有10多萬張圖,都是比較小尺寸的圖。各種類型都有,我們想要通過將不同類型發圖像進行分開,如何實現呢?
2 思路
可以通過訓練模型,將圖像通過模型預測,來進行篩選圖像。比如:我們先訓練第一個圖像分類模型:卡通/貓。將每一個圖像都使用模型預測下,如果預測為卡通或者貓的得分比較大,那么,我們就認為這個圖像就是卡通或者貓,就把它從原始文件夾中拿出來,放到預測結果的這個類別的文件夾中。
3 步驟
3.1 圖像準備
先從這么多圖像中,篩選出卡通圖,貓圖各自100多張。用于訓練。整理數據格式為:
3.2 環境準備
要進行模型訓練,我們就需要在windows上配置訓練的環境。這里,我們仍使用yolo11進行訓練。環境準備過程如下:
3.2.1?環境創建
之前,我們都是使用conda創建環境,這次我們換一種方案,uv。
首先,在桌面上新建一個文件夾TB_Pro-Clas-Cat-Cartoon,然后打開Pycharm選擇項目路徑。配置環境如下(如果不會配置,可以參考Pycharm配置uv環境):
然后點擊創建,進入如下界面:
3.2.2 安裝ultralytics
使用如下命令安裝ultralytics:
uv pip install ultralytics
3.2.3 克隆倉庫
使用如下命令,注意,最好提前打開科學上網,這樣下載速度會更快!
git clone https://github.com/ultralytics/ultralytics.git
現在,我們查看一下目錄,就會看到如下結果:
3.3 劃分數據集
然后,為了訓練模型,我們需要將數據集整理為下面的格式:
包含訓練集、測試集和驗證集,按類別分文件夾存儲。
📁 data-train/
├── 📁 train/
│ ├── 📁 catroon/
│ └── 📁 cat/
├── 📁 test/
│ ├── 📁 catroon/
│ └── 📁 cat/
└── 📁 val/ (可選,本次項目,我們不劃分)
3.4 開始訓練
3.4.1 下載模型
從官網直接下載到的模型:
模型 | 尺寸 (像素) | acc top1 | acc top5 | 速度 CPU ONNX (毫秒) | 速度 T4TensorRT10 (ms) | params (M) | FLOPs (B) at 224 |
---|---|---|---|---|---|---|---|
YOLO11n-cls | 224 | 70.0 | 89.4 | 5.0 ± 0.3 | 1.1 ± 0.0 | 1.6 | 0.5 |
YOLO11s-cls | 224 | 75.4 | 92.7 | 7.9 ± 0.2 | 1.3 ± 0.0 | 5.5 | 1.6 |
YOLO11m-cls | 224 | 77.3 | 93.9 | 17.2 ± 0.4 | 2.0 ± 0.0 | 10.4 | 5.0 |
YOLO11l-cls | 224 | 78.3 | 94.3 | 23.2 ± 0.3 | 2.8 ± 0.0 | 12.9 | 6.2 |
YOLO11x-cls | 224 | 79.5 | 94.9 | 41.4 ± 0.9 | 3.8 ± 0.0 | 28.4 | 13.7 |
為了得到更高的準確率,我們使用YOLO11x-cls。下載后就會得到:
我們可以將這個文件挪到ultralytics文件夾內!
3.4.2 編寫訓練代碼
新建一個train-code.py文件。
并編寫訓練代碼如下:
from ultralytics import YOLO# Load a model
## yolo11x-cls.pt這個模型是從官網直接下載到的模型
model = YOLO("yolo11x-cls.pt") # Train the model
results = model.train(data="data-train", epochs=100, imgsz=224)
然后,在pycharm終端,cd到ultralytics文件夾,運行py文件,就開始訓練模型啦!
經過漫長的等待(等待時間取決于你的電腦顯卡配置),終于訓練完成啦!
然后,我們在路徑下,就會看到模型文件:
至此,模型訓練就結束啦!