深度學習報告

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

🐶

Yolov8:Dog Breeds
組員與分工
蔡侑融 : 模型架構+模型訓練
龔于峻 : label+整理資料
問題描述、使用情境
問題描述
在現代食衣住行都發展到極致的時代,人們開始追求心靈上的陪伴,然而寵
物 就是一個大部分的人都會選擇的一個陪伴,狗則是其中最多人選擇的夥
伴,因 而衍生出許多產業及應用。
將一張未知犬種的圖片輸入模型,經由模型計算,輸出此犬種的品種。

使用情境
當一位新手飼主想養一隻狗時,偶然在網路上看到一張可愛狗狗的圖片,但
不知道那是甚麼品種及狗的習性時,只需將圖片交給AI辨識,它將能夠讀取
資料並回傳最相關的資訊供飼主參考。

Yolov8:Dog Breeds 1
資料集介紹
stanford-dogs-dataset

資料來自Kaggle,圖片是世界各地 120 個品種的狗的圖像,為了提高準確率縮小到5


個品種,分別是吉娃娃、鬆獅、黃金獵犬、柯基、貴賓狗,圖片總共817張,train:701
張 | val:116張。

yolov8 前置作業
cuda 安裝 11.8 版本
https://developer.nvidia.com/cuda-11-6-0-download-archive?target_os=Windows

cudnn 安裝 8.6版本
https://developer.nvidia.com/rdp/cudnn-archive

Yolov8:Dog Breeds 2
cudnn 資料夾解壓縮

確保path變數
在環境變數 path 增加這4項

安裝版本python版本≥3.7
pip ultralytics 安裝指令:pip install ultralytics
pip pytorch 安裝指令: conda install pytorch==2.1.0 torchvision==0.16.0
torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia

yolo lable 介紹
我是使用labelImg
pip 指令: pip install labelImg

label教學:https://hackmd.io/@zxcasd89525/Syw8BypDi

Yolov8:Dog Breeds 3
label 完分別有圖片和 yolo專用的label檔,檔案類型是txt

照片label完 要將照片和label檔分別放到 train 和 val ,資料比例 8:2


進入到train資料夾之後要分別放到 image和label,val資料的動作也一樣

coco128.yml 檔介紹

Yolov8:Dog Breeds 4
train.py 檔介紹

1. 進入'虛擬環境’
2. cd 到yolov8資料夾

3. 啟動模型訓練

from ultralytics import YOLO


import os

def model_train(epochs,batchs):
model = YOLO('yolov8n.yaml') #YAML 建立一个新模型
model = YOLO('yolov8l.pt') #加載預訓練模型
model = YOLO('yolov8n.yaml').load('yolov8l.pt') #從YAML建立並轉移權重
results = model.train(data='coco128.yaml', #讀取label檔路徑和預訓練類別
epochs=epochs, #回合數
imgsz=640, #圖片大小
batch=batchs) #訓練期間使用的批次大小(batch size)
return results

if __name__ == "__main__":
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
model_train(1000,10)

Yolov8:Dog Breeds 5
train 完,模型權檔案會放到run—>detect —>train—>
weights

選擇best檔

predict.py 檔介紹

Yolov8:Dog Breeds 6
1. 進入'虛擬環境’
2. cd 到yolov8資料夾

3. 啟動模型辨識

from ultralytics import YOLO


import cv2

if __name__ == "__main__":
model = YOLO("../runs/detect/train/weights/best.pt") # 加载訓練完的模型
results = model(r"照片路徑\n02085620_575.jpg") # 返回 Results 对象列表
im = results[0].plot() # 取出圖像
cv2.imshow('Object Detection', im) #秀出照片
cv2.waitKey(0)

模型訓練結果
Yolov8:Dog Breeds 7
條件: 有Early Stopping、epochs:1000 、batch _size:10
因為用的是GPU,花的時間都不用1小時
檢測功能:yolov8m.pt

分類功能: yolov8m-cls.pt

Yolov8:Dog Breeds 8
總結:
在檢測狗品種方面效果較好,但還有其他可用的權重檔案可以嘗試,並且有很
Yolov8
多參數可以微調。另外,照片數量較少導致準確率不佳。
相較於之前使用的CNN的resnet50效果比較好,但是Yolov8能夠更好地辨識出多個狗
的存在,這是CNN無法實現的優勢。

Yolov8:Dog Breeds 9
Yolov8:Dog Breeds 10

You might also like