<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          YOLOv5 實(shí)現(xiàn)無人機(jī)識別

          共 2924字,需瀏覽 6分鐘

           ·

          2021-07-11 19:57

          點(diǎn)擊左上方藍(lán)字關(guān)注我們



          全網(wǎng)搜集目標(biāo)檢測相關(guān),人工篩選最優(yōu)價值內(nèi)容

          編者薦語
          YOLOv5發(fā)布至今,已經(jīng)迭代多個版本,是唯一基于pytorch框架的YOLO系列的模型框。簡單易用,特別適合自定義目標(biāo)檢測與對象檢測。只要用了Pytorch版本YOLOv5框架,可以毫不夸張的說兩個小時就可以學(xué)會目標(biāo)檢測。



          01

          第一步數(shù)據(jù)準(zhǔn)備

          想用視覺識別一下空中飛行的無人機(jī),識別對象有:

          1:鳥類bird2:無人機(jī)UAV3:直升機(jī)helicopter

          想通過自己創(chuàng)建一個數(shù)據(jù)集,訓(xùn)練yolov5,在調(diào)用detect.py來識別一下效果。

          百度了一下,發(fā)現(xiàn)無法獲取別人已經(jīng)標(biāo)注好的數(shù)據(jù)集。(這里提醒大家,自己做數(shù)據(jù)集不費(fèi)時間,給100多張圖打標(biāo)簽label就行,用不了半個小時)圖片就從百度搜索就行,我們的目的是感性的認(rèn)識這套牛掰的算法,100張圖訓(xùn)練個幾個小時就可以出來很好的效果,還有不用非要顯卡,雖然我的電腦有顯卡,但是裝pytorch的顯卡cuda版本的總是出錯,索性不弄了,直接用cpu版本,cpu版本的pytorch包還小,一會兒就能安裝好,這100張圖我訓(xùn)練了100個epoch花費(fèi)了3到4個小時,我的電腦的cpu是i7-9700的)

          我是從百度上找了大概130多張圖片,我截個圖:

          用labelimage打上標(biāo)簽,所有的標(biāo)簽數(shù)量大概也就200來個吧!不會用labelimgage制作數(shù)據(jù)集的同學(xué)可以看這里:

          https://github.com/tzutalin/labelImg

          yolo的數(shù)據(jù)文件夾格式又要鞏固一下了,先建一個數(shù)據(jù)文件夾data,在數(shù)據(jù)文件夾data目錄下面建圖像文件夾images和標(biāo)簽文件夾labels,然后在images文件夾下面建立訓(xùn)練數(shù)據(jù)集train和驗證集val(validation的縮寫,驗證校驗的意思),在labels的文件夾下面也是建立train和val兩個文件夾,分別放訓(xùn)練集和驗證集的標(biāo)簽。


          另外說一下驗證集,驗證集里面我找了26張圖片,標(biāo)記了40個左右的labels吧,所以所有的數(shù)據(jù)加起來大概150張圖片。


          我放一個圖片看一下驗證集里面的圖片如下圖:

          到這里為止,所有的數(shù)據(jù)基本整理完畢,另外還需要幾張測試的圖片,到測試的時候再從網(wǎng)上找就是了。


          02

          配置與修改參數(shù)

          這里下載yolov5的源碼就不寫怎么下載了,自己百度就好,相對難度低,我是從gitee上下載的,github總是卡,這個源碼也沒有多大,幾分鐘的時間就下載好了。下面直接寫怎么改一下代碼訓(xùn)練自己制作好的無人機(jī)的數(shù)據(jù)集。

          分步驟寫吧


          首先:明確思路

          怎么訓(xùn)練這個算法?我要訓(xùn)練什么模型?我要拿這個模型做什么?這些問題是在訓(xùn)練這個算法的時候首先要想的問題。

          回答:

          我要訓(xùn)練一個模型能夠識別空中飛行的無人機(jī),并打上紅框label,空中的復(fù)雜環(huán)境下可能不只有無人機(jī),會有鳥、樹、白云、直升機(jī)、飛機(jī)等等其他干擾因素印象,簡單起見,我又加上了鳥bird和直升機(jī)helicopter,所以用yolov5分類nc(number class)為3個,也就是無人機(jī)UAV、鳥bird、直升機(jī)、helicopter,看下圖,建立一個數(shù)據(jù)信息文件,文件格式y(tǒng)aml


          我把這個文件名保存成了chenchen.yaml

          訓(xùn)練集圖片train在uav_train下面的data里面,訓(xùn)練集也是,這個文件不用寫標(biāo)簽label的地址,因為文件夾結(jié)構(gòu)是定的,程序會自動判斷出label的位置。

          chenchen.yaml文件里面的nc改成2,names改成自己的,也就是uav bird 和helicopter


          下面我貼兩張圖片,這兩張圖片是我訓(xùn)練了100張圖后,測試的標(biāo)簽和測試的預(yù)測,基本上框的位置已經(jīng)很好了,只有左上角的這個直升機(jī)helicopter沒有被識別出來,這個我感覺是因為我找的直升機(jī)圖片的問題,這個直升機(jī)圖片有點(diǎn)特別,訓(xùn)練數(shù)據(jù)中這樣的圖片少的原因。

          總結(jié):思路明確了,就是做一個三分類模型,無人機(jī)、鳥、直升機(jī),


          其次修改train.py文件

          思路確定了后就是訓(xùn)練這個模型了,我們已經(jīng)把數(shù)據(jù)集準(zhǔn)備好了,現(xiàn)在就訓(xùn)練這個模型。下載下來的yolo源碼里面的train.py文件,我截圖一下:

          這個是train.py文件

          第一:導(dǎo)入各種依賴包;第二:定義train函數(shù)方法,主要的就是這個train方法;第三:主程序;

          解釋一下,各種依賴包不用解釋,train方法就是作者的核心了,簡單解釋就是yolo算法的原理,主程序里面就是調(diào)用tran方法畫框框,(到目前位置我能給的解釋也只有這么多,我沒有花費(fèi)時間研究,我感性上的理解應(yīng)該是這樣)

          這個文件中主要要修改的參數(shù)是什么呢?

          下面這張圖中我給出了箭頭

          第一個箭頭:

          yolov5s.pt,這個是權(quán)重文件,用的是s版本,small,yolov5的權(quán)重文件不同分為幾個不同版本,這里我用的是s版本,這里可以認(rèn)為是模型的初始權(quán)重,

          第二個箭頭:

          這個yolov5s.yaml文件我保存到了uav_train文件夾里面,這個文件是配置yolov5模型的,叫做配置文件吧,等下這個文件我截圖一下,這個文件也要改一個地方。

          第三個箭頭:

          就是數(shù)據(jù)文件,就是上面定義的一個chenchen.yaml文件,這里有訓(xùn)練數(shù)據(jù)集的地址。

          第四個箭頭:

          是epoch,我寫的是100,大家也可以改成10試一下,20分鐘訓(xùn)練完成,我當(dāng)時做了一下,10個epoch效果很差,100個的時候效果就是我視頻的效果,都能到70%準(zhǔn)確率以上。

          第五個箭頭:

          是batch,我是16張圖片一個batch


          第二個箭頭解釋圖片如下:

          這里是這個算法的配置文件,最終輸出的類別是3,這改成3保存就行,其他的能看出來這個里面是yolo的架構(gòu),我也不會解釋,有想了解的可以自己百度。


          總結(jié):到這里train.py就修改完畢了


          03

          訓(xùn)練與測試

          到這里就可以訓(xùn)練了,我用的是pycharm這個集成環(huán)境,所以選中train.py文件直接右鍵運(yùn)行就可以

          下面就是漫長的訓(xùn)練時間,只有等著


          其實(shí)這一步可以不用,test.py文件主要是用來測試驗證集val的,這里和訓(xùn)練一樣,不要把訓(xùn)練好的權(quán)重文件的地址換一下,就是best.pt文件,data的參數(shù)改一下,改成chenchen.yaml就可以。最激動人心的是第五步,就是訓(xùn)練好的模型驗證一下其他的圖片,看看效果怎么樣。


          測試新圖片,新視頻看效果

          這個文件是detect.py,我截圖看下:

          這里有四個箭頭

          第一個:訓(xùn)練好的最好的權(quán)重文件,加載上第二個:我從百度找了一個視頻文件保存成了666.mp4第三個:置信度,我這里其實(shí)可以寫0.7,第四個:iou,

          解釋:如果訓(xùn)練的epoch少,可以把三四箭頭改小點(diǎn),要不然視頻和圖片中不會被標(biāo)記出,會讓你誤認(rèn)為自己訓(xùn)練的不對。測試效果如下:


          END



          雙一流大學(xué)研究生團(tuán)隊創(chuàng)建,專注于目標(biāo)檢測與深度學(xué)習(xí),希望可以將分享變成一種習(xí)慣!

          整理不易,點(diǎn)贊三連↓

          瀏覽 40
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操逼三区| 五月人人爱 | 给我播放欧洲成人在线 | 未满十八18禁止免费无码网站 | 中日韩欧美在线 |