前言
??在上篇文章中,我們已經了解并學會如何使用yolov5這個開源項目,在這篇文章中,我們將會進行模型訓練,使用自己訓練出的權重文件實現(xiàn)我們的垃圾分類功能。
一、基本概念
1、什么是權重文件?
??權重文件保存的就是訓練好的網絡各層的權值,也就是通過訓練集訓練出來的。訓練好之后,應用時只要加載權值就可以,不再需要訓練集了.
2、GPU與CPU的區(qū)別
參考學習:https://zhuanlan.zhihu.com/p/106385370?ivk_sa=1024320u
??CPU更為靈活能勝任更多的任務。GPU能做什么?關于圖形方面的以及大型矩陣運算,如機器學習算法、挖礦、暴力破解密碼等,GPU會大幅提高計算效率。簡單地說,CPU擅長分支預測等復雜操作,GPU擅長對大量數(shù)據進行簡單操作。一個是復雜的勞動,一個是大量并行的工作。
3、深度學習框架
參考學習:https://baike.baidu.com/item/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%A1%86%E6%9E%B6/22718084?fr=aladdin
??在開始深度學習項目之前,選擇一個合適的框架是非常重要的,因為選擇一個合適的框架能起到事半功倍的作用。研究者們使用各種不同的框架來達到他們的研究目的,側面印證出深度學習領域百花齊放。全世界最為流行的深度學習框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch。
??在深度學習初始階段,每個深度學習研究者都需要寫大量的重復代碼。為了提高工作效率,這些研究者就將這些代碼寫成了一個框架放到網上讓所有研究者一起使用。接著,網上就出現(xiàn)了不同的框架。隨著時間的推移,最為好用的幾個框架被大量的人使用從而流行了起來。 [1] 全世界最為流行的深度學習框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch。
---------以上內容來源于百度百科
4、PyTorch
PyTorch官方教程中文版:https://www.pytorch123.com/
PyTorch官方網址:https://pytorch.org/
??PyTorch是一個基于Torch的Python開源機器學習庫,用于自然語言處理等應用程序。它主要由Facebookd的人工智能小組開發(fā),不僅能夠 實現(xiàn)強大的GPU加速,同時還支持動態(tài)神經網絡,這一點是現(xiàn)在很多主流框架如TensorFlow都不支持的。 PyTorch提供了兩個高級功能: 1.具有強大的GPU加速的張量計算(如Numpy) 2.包含自動求導系統(tǒng)的深度神經網絡 除了Facebook之外,Twitter、GMU和Salesforce等機構都采用了PyTorch。
二、下載和安裝nvidia顯卡驅動
參考學習:https://zhuanlan.zhihu.com/p/266652844
安裝教程文檔:
鏈接:https://pan.baidu.com/s/1p4lu2AxepDtn9eu81we73g
提取碼:l3xz
--來自百度網盤超級會員V5的分享
三、訓練自己的模型并分析
一、YOLOv5代碼修改(為支持中文標簽)
1)train.py文件
with open(opt.data) as f:
改為
with open(opt.data, encoding='UTF-8') as f:
2)test.py文件
with open(opt.data) as f:
改為
with open(opt.data, encoding='UTF-8') as f:
3) utils/general.py文件
導入包from PIL import Image, ImageDraw, ImageFont
4) utils/plots.py文件
(1) 修改 plot_one_box 函數(shù),if label之后的代碼改為
if label:
tf = max(tl - 1, 1) # font thickness
t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0]
font_size = t_size[1]
font = ImageFont.truetype('msyh.ttc', font_size)
t_size = font.getsize(label)
c2 = c1[0] + t_size[0], c1[1] - t_size[1]
cv2.rectangle(im, c1, c2, color, -1, cv2.LINE_AA) # filled
img_PIL = Image.fromarray(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(img_PIL)
draw.text((c1[0], c2[1] - 2), label, fill=(255, 255, 255), font=font)
return cv2.cvtColor(np.array(img_PIL), cv2.COLOR_RGB2BGR)
(2) plot_images 函數(shù)中
plot_one_box(box, mosaic, label=label, color=color, line_thickness=tl)
改為
mosaic = plot_one_box(box, mosaic, label=label, color=color, line_thickness=tl)
5) detect.py文件
plot_one_box(xyxy, im0, label=label, color=colors[int(cls)], line_thickness=3)
改為
im0 = plot_one_box(xyxy, im0, label=label, color=colors(c, True),
line_thickness=3)
二、 準備訓練集和驗證集
1)下載和解壓數(shù)據集
解壓VOCdevkit_trash.zip和testfiles.zip
數(shù)據集使用PASCAL VOC數(shù)據集的目錄結構:
建立文件夾層次為 VOCdevkit\VOC2007
VOC2007下面建立兩個文件夾:Annotations和JPEGImages
JPEGImages放所有的訓練和測試圖片;Annotations放所有的xml標記文件
2)使用python腳本對數(shù)據集進行訓練集和驗證集劃分
執(zhí)行python腳本:python prepare_data.py
在VOCdevkit/VOC2007目錄下可以看到生成了文件夾YOLOLabels
YOLOLabels下的文件是images文件夾下每一個圖像的yolo格式的標注文件,這是由
annotations的xml標注文件轉換來的;
在VOCdevkit目錄下生成了images和labels文件夾:
images文件夾下有train和val文件夾,分別放置訓練集和驗證集圖片;
labels文件夾有train和val文件夾,分別放置訓練集和驗證集標簽(yolo格式)
在yolov5下生成了兩個文件yolov5_train.txt和yolov5_val.txt。
yolov5_train.txt和yolov5_val.txt分別給出了訓練圖片文件和驗證圖片文件的
列表,含有每個圖片的路徑和文件名
三、剩余步驟
??由于版權問題,剩下的步驟及開發(fā)文檔無法公開發(fā)表,有興趣的朋友可以根據我上邊圖片展示出的步驟,搜索別人的博客實現(xiàn)接下來的步驟,也可私信我留下自己的郵箱,我給需要的朋友發(fā)一份,僅用作技術交流。文章來源:http://www.zghlxwxcb.cn/news/detail-442359.html
本文章參考了百度百科,他人技術文章以及嗶哩嗶哩免費教程,綜合整理而來,如有侵權聯(lián)系刪除,小白一個,歡迎大家指導交流!文章來源地址http://www.zghlxwxcb.cn/news/detail-442359.html
到了這里,關于基于YOLOv5開源項目實現(xiàn)垃圾分類功能(2)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!