yolov4環(huán)境搭建與訓(xùn)練自己的數(shù)據(jù)集

yolov4出來(lái)后梭域,簡(jiǎn)單做下測(cè)試斑举,看到結(jié)果還是相當(dāng)給力的。

yolov3.jpg

yolov4.jpg

注意看中間有個(gè)被遮擋的馬病涨,在yolov3中是檢測(cè)不到的富玷,yolov4中檢測(cè)出來(lái)了,精度確實(shí)提升了既穆。
那再來(lái)測(cè)試一下速度赎懦,測(cè)試視頻發(fā)在b站上了。
yolov4 test
速度也是很給力的幻工。
那這么好的東西励两,當(dāng)然要自己試試了,接下來(lái)用自己的數(shù)據(jù)訓(xùn)練測(cè)試一下囊颅。

實(shí)驗(yàn)環(huán)境:
Centos 7.0 + 2080Ti +CUDA+CuDNN+ OpenCV + FFmpeg + darknet

安裝darknet

git clone  [https://github.com/AlexeyAB/darknet](https://github.com/AlexeyAB/darknet)
cd darknet

編譯前当悔,修改Makefile

GPU = 1    # 使用GPU加速訓(xùn)練
CUDNN = 1  #使用cudnn加速訓(xùn)練
CUDNN_HALF = 1  # 針對(duì)   Titan V / Tesla V100 / DGX-2 and later的優(yōu)化傅瞻,能加速檢測(cè)與訓(xùn)練
OPENCV = 1  #使用opencv ,以允許對(duì)視頻文件/網(wǎng)絡(luò)攝像頭進(jìn)行處理
OPENMP = 1  # 使用openmp盲憎,以針對(duì)多核cpu進(jìn)行加速

然后運(yùn)行 make
不出錯(cuò)則說(shuō)明darknet已編譯成功

訓(xùn)練:
進(jìn)入darknet/build/darknet/x64目錄
1.下載pre-train weights文件yolov4.conv.137
2.創(chuàng)建config文件

cp cfg/yolov4-custom.cfg yolov4-obj.cfg

vim yolov4-obj.cfg

batch_size = 64  # batch size
subdivisions=32 #每個(gè)batch分多少批嗅骄,如果內(nèi)存不足,可以調(diào)大此參數(shù)
max_batches = 6000  # 最小取6000饼疙,設(shè)置為 classes_num * 2000
steps = 4800, 5400   # 設(shè)置為max_bacthes的80% 和90%
width = 412 
height = 412  # 32的倍數(shù)溺森,主要也是為了解決顯存不足
classes = 1  # 修改三個(gè) [yolo] 層的 classes參數(shù)
filters = 18 # 修改【yolo】層前面的[convolutional]中的filters, filters=(classes + 5) * 3

3.創(chuàng)建obj.name文件

vim data/obj.name
waterdrop

4.創(chuàng)建obj.data文件

vim data/obj.data

classes= 1
train = data/train.txt
valid = data/test.txt
names = data/obj.names
backup = backup/

5.將所有的圖片和標(biāo)注文件放入data/obj目標(biāo)下,并創(chuàng)建classes.txt文件窑眯,里面寫(xiě)上classes的數(shù)量

6.創(chuàng)建train.txt文件

vim data/train.txt

data/obj/img1.jpg
data/obj/img2.jpg
...

7.創(chuàng)建test.txt文件屏积,此時(shí)我們簡(jiǎn)單用train.txt

cp data/train.txt data/test.txt

8.訓(xùn)練

../../../darknet detector train data/obj.data yolo-obj.cfg yolov4.conv.137 -dont_show -mjpeg_port 8090 -map

實(shí)驗(yàn)結(jié)果:


water_drop_detect.jpg

可以看到,結(jié)果還是相當(dāng)給力的磅甩!范圍與精度都很不錯(cuò)炊林。

可能遇到的問(wèn)題與解決辦法:

問(wèn)題1

video stream stopped!

fix: 卸載opencv,通過(guò)源碼重新編譯更胖,編譯時(shí)將FFmpeg一起編譯

  1. FFmpeg
    需要將opencv與FFmpeg一起編譯铛铁,所以首先要卸載原來(lái)的opencv
    進(jìn)入opencv安裝目錄隔显,
sudo make uninstall 

cd .. rm -Rf build

cd /usr find . -name "*opencv*" | xargs sudo rm -rf

yum remove opencv-data python-opencv

運(yùn)行 pkg-config --modversion opencv却妨,沒(méi)有則顯示卸載完成

git clone [https://git.ffmpeg.org/ffmpeg.git](https://git.ffmpeg.org/ffmpeg.git) ffmpeg

cd source_directory ./configure --enable-shared --disable-static --disable-x86asm

make 

sudo make install

sudo vi /etc/ld.so.conf

include ld.so.conf.d/*.conf

/usr/local/ffmpeg/lib

sudo ldconfig

驗(yàn)證:

ffmpeg -version

加入環(huán)境變量:

vi /etc/profile

export PATH="/usr/local/ffmpeg/bin:$PATH"

source /etc/profile

安裝opencv

安裝依賴

sudo yum install epel-release git gcc gcc-c++ cmake3 qt5-qtbase-devel     python3 python3-devel python3-pip cmake python3-devel python3-numpy     gtk2-devel libpng-devel jasper-devel openexr-devel libwebp-devel     libjpeg-turbo-devel libtiff-devel tbb-devel libv4l-devel     eigen3-devel freeglut-devel mesa-libGL mesa-libGL-devel     boost boost-thread boost-devel gstreamer1-plugins-base

下載源碼:

mkdir -p ~/opencv_build && cd ~/opencv_build
git clone [https://github.com/opencv/opencv.git](https://github.com/opencv/opencv.git)
git clone [https://github.com/opencv/opencv_contrib.git](https://github.com/opencv/opencv_contrib.git)

編譯

cd ~/opencv_build/opencv && mkdir build && cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE     -D CMAKE_INSTALL_PREFIX=/usr/local     -D INSTALL_C_EXAMPLES=ON     -D INSTALL_PYTHON_EXAMPLES=ON     -D OPENCV_GENERATE_PKGCONFIG=ON     -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules     -D BUILD_EXAMPLES=ON -D WITH_FFMPEG=ON ..
make -j8
sudo make install

如果遇到卡頓,可以查看cmakedownloadlog 有可能是因?yàn)閴σ鸬牟糠仲Y源下載404括眠,可以翻墻后下載彪标,然后放入對(duì)應(yīng)目標(biāo)下

sudo ln -s /usr/local/lib64/pkgconfig/opencv4.pc /usr/share/pkgconfig/ 
sudo ldconfig

驗(yàn)證

pkg-config --modversion opencv4

問(wèn)題2

could not find feature2d/test/test_detectors_regression.impl.hpp

cmake中沒(méi)有包含modules路徑導(dǎo)致的,此時(shí)修改cmakelists文件的567行,加入對(duì)應(yīng)路徑即可掷豺。

vim opencv/CMakeLists.txt +567

include_directories("modules")

問(wèn)題3

opencv2/xfeatures2d.hpp file not found

類似這種問(wèn)題捞烟,都是對(duì)應(yīng)文件中 #include 對(duì)應(yīng)文件的路徑是相對(duì)路徑導(dǎo)致讀取時(shí)出錯(cuò),我們改成對(duì)應(yīng)的絕對(duì)路徑即可当船。

vim ~/opencv_build/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp + 42

#include"~/opencv_build/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp"

問(wèn)題4

can't load image ........ Segmentation fault

fix:這個(gè)問(wèn)題是由于Windows下的換行符為 CRLF ,而Linux下是 LF题画,所以文件從Windows復(fù)制到服務(wù)器上后格式不匹配導(dǎo)致的,只需在Linux下重新生成對(duì)應(yīng)的train.txt 即可

Update:
由于之前看到大涼山的森林火災(zāi)德频,內(nèi)心總想著能做點(diǎn)什么苍息,所以從網(wǎng)上找了一些開(kāi)源的fire detection相關(guān)的數(shù)據(jù)和資料,處理了一下常識(shí)做了幾版壹置,結(jié)果看上去還是可以的竞思。如果有更多清晰度更高的數(shù)據(jù),效果應(yīng)該能提升不少钞护。希望有機(jī)會(huì)能為大涼山做點(diǎn)事吧盖喷。

forest_test.jpg

下面是完整的測(cè)試視頻,由于數(shù)據(jù)全是低分辨率(244*244)难咕,所以可以在視頻里看到對(duì)高清分辨率的視頻有很多漏判和誤判课梳,所以下一步需要利用更多高分辨率的樣本距辆。
火焰與煙霧識(shí)別

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市暮刃,隨后出現(xiàn)的幾起案子挑格,更是在濱河造成了極大的恐慌,老刑警劉巖沾歪,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漂彤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡灾搏,警方通過(guò)查閱死者的電腦和手機(jī)挫望,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狂窑,“玉大人媳板,你說(shuō)我怎么就攤上這事∪” “怎么了蛉幸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)丛晦。 經(jīng)常有香客問(wèn)我垛玻,道長(zhǎng)附迷,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮疼邀,結(jié)果婚禮上魏保,老公的妹妹穿的比我還像新娘安岂。我一直安慰自己涯雅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布瘸爽。 她就那樣靜靜地躺著您访,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剪决。 梳的紋絲不亂的頭發(fā)上灵汪,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音昼捍,去河邊找鬼识虚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛妒茬,可吹牛的內(nèi)容都是我干的担锤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼乍钻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼肛循!你這毒婦竟也來(lái)了铭腕?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤多糠,失蹤者是張志新(化名)和其女友劉穎累舷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體夹孔,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡被盈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搭伤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片只怎。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖怜俐,靈堂內(nèi)的尸體忽然破棺而出身堡,到底是詐尸還是另有隱情,我是刑警寧澤拍鲤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布贴谎,位于F島的核電站,受9級(jí)特大地震影響季稳,放射性物質(zhì)發(fā)生泄漏擅这。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一绞幌、第九天 我趴在偏房一處隱蔽的房頂上張望蕾哟。 院中可真熱鬧,春花似錦莲蜘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至芬迄,卻和暖如春问顷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背禀梳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工杜窄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人算途。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓塞耕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親嘴瓤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扫外,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355