天天看點

YOLO+yolo9000配置使用darknet philipperemy/yolo-9000

  • Installing Darknet

1.直接設定使用,編譯通過

git clone https://github.com/pjreddie/darknet.git
cd darknet
make      

2. 下載下傳權重測試

wget http://pjreddie.com/media/files/yolo.weights  
    ./darknet yolo test cfg/yolo.cfg yolo.weights data/dog.jpg        

3.測試結果:

dsp@dsp:/media/dsp/學習/yolo_darknet/darknet$ ./darknet yolo test cfg/yolo.cfg yolo.weights data/dog.jpg 
layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   608 x 608 x   3   ->   608 x 608 x  32
    1 max          2 x 2 / 2   608 x 608 x  32   ->   304 x 304 x  32
    2 conv     64  3 x 3 / 1   304 x 304 x  32   ->   304 x 304 x  64
    3 max          2 x 2 / 2   304 x 304 x  64   ->   152 x 152 x  64
    4 conv    128  3 x 3 / 1   152 x 152 x  64   ->   152 x 152 x 128
    5 conv     64  1 x 1 / 1   152 x 152 x 128   ->   152 x 152 x  64
    6 conv    128  3 x 3 / 1   152 x 152 x  64   ->   152 x 152 x 128
    7 max          2 x 2 / 2   152 x 152 x 128   ->    76 x  76 x 128
    8 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256
    9 conv    128  1 x 1 / 1    76 x  76 x 256   ->    76 x  76 x 128
   10 conv    256  3 x 3 / 1    76 x  76 x 128   ->    76 x  76 x 256
   11 max          2 x 2 / 2    76 x  76 x 256   ->    38 x  38 x 256
   12 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512
   13 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256
   14 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512
   15 conv    256  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x 256
   16 conv    512  3 x 3 / 1    38 x  38 x 256   ->    38 x  38 x 512
   17 max          2 x 2 / 2    38 x  38 x 512   ->    19 x  19 x 512
   18 conv   1024  3 x 3 / 1    19 x  19 x 512   ->    19 x  19 x1024
   19 conv    512  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 512
   20 conv   1024  3 x 3 / 1    19 x  19 x 512   ->    19 x  19 x1024
   21 conv    512  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 512
   22 conv   1024  3 x 3 / 1    19 x  19 x 512   ->    19 x  19 x1024
   23 conv   1024  3 x 3 / 1    19 x  19 x1024   ->    19 x  19 x1024
   24 conv   1024  3 x 3 / 1    19 x  19 x1024   ->    19 x  19 x1024
   25 route  16
   26 conv     64  1 x 1 / 1    38 x  38 x 512   ->    38 x  38 x  64
   27 reorg              / 2    38 x  38 x  64   ->    19 x  19 x 256
   28 route  27 24
   29 conv   1024  3 x 3 / 1    19 x  19 x1280   ->    19 x  19 x1024
   30 conv    425  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 425
   31 detection
mask_scale: Using default '1.000000'
Loading weights from yolo.weights...Done!
data/dog.jpg: Predicted in 9.566333 seconds.
Not compiled with OpenCV, saving to predictions.png instead      

- 區分上下連個指令:

./darknet yolo test cfg/yolo.cfg yolo.weights data/dog.jpg  
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg      

-/darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg 結果:

YOLO+yolo9000配置使用darknet philipperemy/yolo-9000

4.設定GPU和opencv

GPU=1
OPENCV=1      

-編譯錯誤

/usr/bin/ld: cannot find -lippicv
collect2: error: ld returned 1 exit status
Makefile:76: recipe for target 'darknet' failed
make: *** [darknet] Error 1
/usr/bin/ld: cannot find -make: *** Waiting for unfinished jobs....
lippicv
collect2: error: ld returned 1 exit status
Makefile:82: recipe for target 'libdarknet.so' failed
make: *** [libdarknet.so] Error 1      

 - opencv安裝的問題,于是重新安裝

https://github.com/pjreddie/darknet/issues/290:  /usr/bin/ld: cannot find -lippicv collect2: error: ld returned 1 exit status

https://github.com/opencv/opencv/issues/5852這篇文章中也遇到了這個錯誤. 可以在cmake時加上

"cmake -DINSTALL_CREATE_DISTRIB=ON"

這句,就不會有這個錯誤了.

 - 首先解除安裝opencv,然後在安裝 :解除安裝參考:Ubuntu16.04 上openCV的解除安裝與 opencv3.0.2安裝記錄

cd /home/hy/opencv/build
make uninstall//解除安裝掉配置路徑中的檔案
sudo rm -r build//删除build檔案
//删除掉環境中有關的其餘包
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*      

-安裝,安裝有圖割錯誤,以前解決辦法

dsp@dsp:~/opencv-3.1.0/build$ sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. -DWITH_IPP=ON -DINSTALL_CREATE_DISTRIB=ON

dsp@dsp:~/opencv-3.1.0/build$ sudo make -j$(nproc)      

5. 在編譯darknet

dart -lcublas -lcurand -lcudnn -lstdc++  libdarknet.a
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFReadDirectory@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFWriteEncodedStrip@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFIsTiled@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFWriteScanline@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFGetField@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFNumberOfStrips@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFScanlineSize@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFReadEncodedTile@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFReadRGBATile@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFClose@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFRGBAImageOK@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFOpen@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFReadEncodedStrip@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFSetField@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFSetWarningHandler@LIBTIFF_4.0'
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFSetErrorHandler@LIBTIFF_4.0'
collect2: error: ld returned 1 exit status
Makefile:76: recipe for target 'darknet' failed
make: *** [darknet] Error 1

//權限問題,sudo即可解決
這個可能是權限問題,采用以下指令:
sudo su;
一切都能順利解決。      

6. 運作yolo和yolo9000,可以實作demo運作,并實作視訊檢測

  • philipperemy/yolo-9000

YOLOv2是Joseph Redmon提出的針對YOLO算法不足的改進版本,作者使用了一系列的方法對原來的YOLO多目标檢測架構進行了改進,在保持原有速度的優勢之下,精度上得以提升,此外作者提出了一種目标分類與檢測的聯合訓練方法,通過這種方法YOLO9000可以同時在COCO和ImageNet資料集中進行訓練,訓練後的模型可以實作多達9000種物體的實時檢測。

  • 第一種:為darknet添加Python接口

    Github:https://github.com/SidHard/py-yolo2
  • 第二種:使用keras

    Github:https://github.com/allanzelener/YAD2K

C/C++基本文法學習

STL

C++ primer

繼續閱讀