【2023-Pytorch-檢測(cè)教程】手把手教你使用YOLOV5做電線絕緣子缺陷檢測(cè)
深度學(xué)習(xí)技術(shù)的大量應(yīng)用,計(jì)算機(jī)運(yùn)算性能的不斷提高,為無人機(jī)準(zhǔn)確識(shí)別和定位絕緣子,實(shí)時(shí)跟蹤拍攝開辟了新的解決途徑。本文對(duì)輸電線路中絕緣子進(jìn)行識(shí)別及定位,利用深度學(xué)習(xí)技術(shù)采取基于YOLOv5 算法的目標(biāo)檢測(cè)手段,結(jié)合絕緣子數(shù)據(jù)集的特點(diǎn),對(duì)無人機(jī)拍攝圖片進(jìn)行訓(xùn)練,實(shí)現(xiàn)對(duì)絕緣子精準(zhǔn)識(shí)別和定位,大幅提升無人機(jī)巡檢時(shí)對(duì)絕緣子設(shè)備準(zhǔn)確跟蹤、判定的效率,具有十分重要的應(yīng)用效果。
廢話不多說,咱們先看兩張實(shí)際效果。


注意事項(xiàng)
盡量使用英文路徑,避免中文路徑,中文路徑可能會(huì)導(dǎo)致代碼安裝錯(cuò)誤和圖片讀取錯(cuò)誤。
pycharm運(yùn)行代碼一定要注意左下角是否在虛擬環(huán)境中。
庫的版本很重要,使用本教程提供的代碼將會(huì)事半功倍
前期準(zhǔn)備
項(xiàng)目下載地址:download.csdn.net/download/ECHOSON/87579913
電腦設(shè)置
大部分小伙伴使用的電腦一般都是windows系統(tǒng),在windows系統(tǒng)下跑代碼,難免會(huì)遇到各種各樣的bug,首先是編碼問題,為了防止代碼在運(yùn)行過程中,出現(xiàn)編碼錯(cuò)誤,我們首先要將我們電腦的語言設(shè)置為utf-8格式,具體如下。首先在搜索框搜索語言,點(diǎn)擊這里。

找到管理語言設(shè)置。

勾選utf-8即可。

另外有的電腦初始設(shè)置的時(shí)候內(nèi)存是由電腦自行分配的,很可能在運(yùn)行訓(xùn)練代碼的時(shí)候出現(xiàn)顯存溢出的情況,為了防止該情況的出現(xiàn),我們需要在高級(jí)系統(tǒng)設(shè)置中對(duì)虛擬內(nèi)存進(jìn)行設(shè)置,如下。
首先打開高級(jí)系統(tǒng)設(shè)置,點(diǎn)開性能中的設(shè)置。

在高級(jí)中找到虛擬內(nèi)存的設(shè)置。

以d盤為例,這里我們將虛擬內(nèi)存設(shè)置在4G到8G之間,其余操作一樣。

其他盤也設(shè)置完成之后,點(diǎn)擊確定之后按照電腦提示重啟即可。
相關(guān)軟件安裝
Nvidia驅(qū)動(dòng)安裝(可選)
首先是驅(qū)動(dòng)的安裝,這個(gè)小節(jié)主要是針對(duì)電腦帶有Nvidia顯卡的小伙伴,如果你的電腦沒有Nvidia顯卡,你直接跳過就可以了,你可以通過右下方的任務(wù)欄判斷是是否具有這個(gè)顯卡,如果是筆者這里的綠色小眼睛圖標(biāo),說明你是具有Nvidia顯卡的。

驅(qū)動(dòng)下載的地址為:
注意請(qǐng)按照你電腦具體的型號(hào)來選擇驅(qū)動(dòng)文件,不清楚的可以通過設(shè)備管理器來查看你顯卡的具體型號(hào)。


下載exe文件之后,直接下一步下一步按照默認(rèn)安裝就好,注意這里最好按照默認(rèn)目錄安裝,否則可能導(dǎo)致安裝失敗的情況如下,安裝完畢之后重啟電腦,在命令行中輸入
nvidia-smi
,如果正常輸出顯卡的信息說明顯卡驅(qū)動(dòng)安裝已經(jīng)成功。

另外,這里多叭叭兩句。
很多的遠(yuǎn)古教程會(huì)教你去安裝cuda和cudnn,這個(gè)過程非常麻煩,并且需要你注冊(cè)nvidia的賬戶,由于眾所周知的原因,賬戶注冊(cè)就很繁瑣。其實(shí),在新版本的驅(qū)動(dòng)安裝中,就已經(jīng)自帶最新版本的cuda,比如我上圖所示的在筆者驅(qū)動(dòng)安裝完畢之后已經(jīng)自帶了12.0的cuda,cuda這個(gè)東西是向下兼容的,后續(xù)的cudnn那些我們直接通過anaconda來安裝就可以了,這樣真的省心很多。
Anaconda安裝
conda是一個(gè)開源的包、環(huán)境管理器,可以用于在同一個(gè)機(jī)器上安裝不同版本的軟件包及其依賴,并能夠在不同的環(huán)境之間切換。我強(qiáng)烈推薦你使用他,他的作用類似于java中的maven和我們平時(shí)使用的虛擬機(jī),他能夠保證的項(xiàng)目之間互相是隔離的。舉個(gè)簡單的例子,如果你同時(shí)有兩個(gè)項(xiàng)目,你一個(gè)使用的pytorch1.8,一個(gè)用的是pytorch1.10,這樣一個(gè)環(huán)境肯定就不夠了,這個(gè)時(shí)候anaconda就派上大用場(chǎng)了,他可以創(chuàng)建兩個(gè)環(huán)境,各用各的,互不影響。
Anaconda有完全版本和Miniconda,其中完整版太臃腫了,我這邊推薦使用miniconda,下載地址在:
下滑到最下方,點(diǎn)擊這個(gè)版本的下載即可。

同樣的,下載之后安裝即可,注意不要安裝在C盤?。?!,另外,添加到系統(tǒng)路徑這個(gè)選項(xiàng)也請(qǐng)務(wù)必選上,后面使用起來會(huì)帶來很多便捷,并且這里的安裝位置請(qǐng)你一定要記得,后面我們?cè)赑ycharm中將會(huì)使用到。

Pycharm安裝
OK,Anaconda安裝完成之后,我們還需要一個(gè)編輯器來寫代碼,這里推薦大家使用Pycharm,Pycharm有專業(yè)版和社區(qū)版,社區(qū)版是免費(fèi)的,專業(yè)版如果你有教育郵箱的話也可以通過教育郵箱注冊(cè)賬戶來使用,但是社區(qū)版的功能已經(jīng)夠絕大多數(shù)小伙伴來用了,Pycharm的下載地址在:

注意也是安裝的時(shí)候不要安裝在c盤,并且安裝過程中這些可選的選項(xiàng)要勾上。

完成之后,比如我們用pycharm打開一個(gè)項(xiàng)目,在新版本的下方會(huì)出現(xiàn)命令行無法使用的情況。請(qǐng)使用管理員模型打開powershell。

然后執(zhí)行執(zhí)行指令
set-ExecutionPolicy RemoteSigned
,輸入Y然后enter完成即可。

另外,在Pycharm的右下方是表示的是你所處的虛擬環(huán)境,這里先簡單說下在pycharm中如何使用anaconda中創(chuàng)建的虛擬環(huán)境。



以上這些步驟完成之后,恭喜你,差不多一半的工作就完事了,剩下無非就是根據(jù)不同的項(xiàng)目來配置環(huán)境和執(zhí)行代碼了。
環(huán)境配置
OK,來到關(guān)鍵環(huán)境配置的部分,首先大家下載代碼之后會(huì)得到一個(gè)壓縮包,在當(dāng)前文件夾解壓之后,進(jìn)入CMD開始我們的環(huán)境配置環(huán)節(jié)。
為了加快后期第三方庫的安裝速度,我們這里需要添加幾個(gè)國內(nèi)的源進(jìn)來,直接復(fù)制粘貼下面的這些指令到你的命令行即可。
conda config --remove-key channels
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple
執(zhí)行完畢大概是下面這個(gè)樣子,后面你就可以飛速下載這些庫了。
創(chuàng)建虛擬環(huán)境
首先,我們需要根據(jù)我們的項(xiàng)目來創(chuàng)建一個(gè)虛擬環(huán)境,通過下面的指令創(chuàng)建并激活虛擬環(huán)境。
我們創(chuàng)建一個(gè)Python版本為3.8.5,環(huán)境名稱為yolo的虛擬環(huán)境。
conda create -n yolo python==3.8.5
conda activate yolo
切記!這里一定要激活你的虛擬環(huán)境,否則后續(xù)你的庫會(huì)安裝在基礎(chǔ)環(huán)境中,前面的小括號(hào)表示你處于的虛擬環(huán)境。
Pytorch安裝
注意Pyotorch和其他庫不太一樣,Pytorch的安裝涉及到conda和cudnn,一般而言,對(duì)于30系的顯卡,我們的cuda不能小于11,對(duì)于10和20系的顯卡,一般使用的是cuda10.2。下面給出了30系顯卡、30系以下顯卡和cpu的安裝指令,請(qǐng)大家根據(jù)自己的電腦配置自行下載。筆者這里是3060的顯卡,所以執(zhí)行的是第一條指令。
conda install pytorch==1.10.0 torchvision torchaudio cudatoolkit=11.3 # 30系列以上顯卡gpu版本pytorch安裝指令
conda install pytorch==1.8.0 torchvision torchaudio cudatoolkit=10.2 # 10系和20系以及mx系列的執(zhí)行這條
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cpuonly # CPU的小伙伴直接執(zhí)行這條命令即可
安裝之后,可以和筆者一樣,輸入下面的指令測(cè)試以下gpu是否可用,如果輸出的是true表示GPU是可用的。
其余庫安裝
其余庫的安裝就非常簡單了,我們通過pip來進(jìn)行安裝,注意這里一定要確保你執(zhí)行的目錄下有requirements.txt這個(gè)文件,否則你將會(huì)遇到文件找不到的bug,你可以通過dir
指令來查看是否有這個(gè)文件。
pip install -r requirements.txt
一是為了查看代碼方便,二是為了運(yùn)行方便,這里我們使用Pycharm打開項(xiàng)目,點(diǎn)擊這里右鍵文件夾直接打開項(xiàng)目即可非常方便。
打開之后你將會(huì)看到這樣的一個(gè)界面,其中左側(cè)是文件瀏覽器,中間是編輯器,下方是一些工具,右下角是你所處的虛擬環(huán)境 。

之后,我們就需要為當(dāng)前的項(xiàng)目選擇虛擬環(huán)境了,這一步非常重要,有的兄弟配置好了沒選環(huán)境,你將會(huì)遇到一堆奇怪的bug,選環(huán)境的步驟如下。
首先點(diǎn)擊,添加解釋器。

三步走選擇我們剛才創(chuàng)建的虛擬環(huán)境,點(diǎn)擊ok。


之后你可以你可以右鍵執(zhí)行main_window.py這個(gè)文件,出現(xiàn)下面的畫面說明你就成功了。


數(shù)據(jù)集準(zhǔn)備
數(shù)據(jù)集這里我放在了CSDN中,大家可以執(zhí)行標(biāo)注準(zhǔn)備數(shù)據(jù)集,或者使用這里我處理好的數(shù)據(jù)集,數(shù)據(jù)集下載之后放在和代碼目錄同級(jí)的data目錄下。
數(shù)據(jù)集打開之后你將會(huì)看到兩個(gè)文件夾,images目錄存放圖片文件,labels目錄存放標(biāo)簽文件。
之后記住你這里的數(shù)據(jù)集路徑,在后面的訓(xùn)練中我們將會(huì)使用到,比如筆者這里的F:\new_project\sfid\data\target_sfid
。

訓(xùn)練和測(cè)試
注:這里你可以選擇去自己嘗試以下,筆者在runs的train目錄下已經(jīng)放了訓(xùn)練好的模型,你是可以直接使用。
下面就是訓(xùn)練的過程,筆者這里已經(jīng)將數(shù)據(jù)集和模型的配置文件寫好了,你只需要將數(shù)據(jù)集中的數(shù)據(jù)路徑替換成你的路徑,執(zhí)行go_train.py
即可開始訓(xùn)練了。

執(zhí)行g(shù)o_train.py文件中,包含三條指令,分別表示yolov5中small模型、medium模型和large模型,比如我這里要訓(xùn)練s模型,我就將其他兩個(gè)模型訓(xùn)練的指令注釋掉就好了。

運(yùn)行之后,下方會(huì)輸出運(yùn)行的信息,這里的紅色只是日志信息,不是報(bào)錯(cuò),大家不要驚慌。

以筆者這里的s模型為例,詳細(xì)含義如下。

圖形化程序
最后就是執(zhí)行我們的圖形化界面程序了。

直接右鍵執(zhí)行window_main.py執(zhí)行即可,這里上兩章效果圖。


遇到解決不了的問題可以通過私信(QQ:3045834499)聯(lián)系我,粉絲兒朋友遠(yuǎn)程調(diào)試該項(xiàng)目(包含數(shù)據(jù)集和訓(xùn)練好的三組模型)只需99個(gè)圓子。