Windows 10의 Ubuntu에 Caffe를 배치하고 Single Shot MultiBox Detector 실행

개요


예전에는 Ubuntu on Windows 10에서 카페가 LMDB의 동작에 문제가 있었지만 지금은 동작의 상태인 것 같다.저는 버클리 대학의 카페입니다. 인텔의 Fork를 도입해 보고 싶습니다.
Intel은 자체 CPU에서 빠른 컴퓨팅을 위한 컴파일러 및 소프트웨어 라이브러리를 판매합니다.여기서 Math Kernel Library(MKL)가 시작되었습니다.또한 딥러닝 라이브러리로서 MKL-DNN도 개원 방식으로 제공된다.KL-DNN에 대해서는 아래를 참조하십시오.
https://analyticsai.wordpress.com/2017/04/18/mkl-dnn%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/
딥러닝은 GPU에 의존할 수 있지만 MKL은 CPU 실행에 최적화됩니다.Ubuntu on Windows 10은 당연히 GPU를 사용할 수 없기 때문에 고속 계산의 선택으로 가져오고 싶습니다.

작업

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install python-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
git clone https://github.com/intel/caffe
KL의 원본도 동기화되지만, mkldnn에 사용되며, 다른 나무입니다.향후 MKL 및 통합 계획
Build는 cmake를 사용합니다.문서 생성에 사용되는doxygen도 도입됩니다.
sudo apt-get install cmake doxygen
mkdir build
cd build && cmake ..
make all
make doc
make install 
make runtest

문제없어build는 완성했지만,makeruntest 도중에 Core Dump가 했어요.
라인의 라이브러리로 OpenMP를 사용하지만 일반적인 Linux가 아니기 때문에 문제가 발생할 것 같습니다.다음과 같은 환경 변수를 통해 동작할 수 있지만 MKL의 장점을 살리지 못해 아쉽다.수동으로 파라미터를 조정해 보았지만 순조롭지 못했다.export KMP_AFFINITY=disabledIntel/caffe를 가져오는 이유는 MKL을 사용하지만 물체 검출에 사용되는 SSD(Single Shot Multibox Detector)를 통합했기 때문입니다.

Single Shot Multibox Detector


몇 가지 물체 검출 알고리즘을 제시했지만 이것은 현재 가장 빠른 동작을 할 수 있는 방법이다.물체 검출에 사용되는 ssd_detect라는 명령을 만들었습니다.모델이지만 Pascal VOC 데이터 세트와 COCO에서 직접 배울 수도 있다.시간이 많이 걸려요.명령을 사용하는 교육된 모델은 아래에서 다운로드할 수 있습니다.
export LD_LIBRARY_PATH=~/caffe/external/mkl/mklml_lnx_2017.0.2.20170110/lib:~/caffe/external/mkldnn/install/lib

다음 명령을 실행합니다.GPU가 없어도 2초 정도는 결과를 낼 수 있다.
./build/install/bin/ssd_detect ./models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt models/VGGNet/VOC0712/SSD_300x300/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel images.txt -out_file detected.txt
실행 결과.

detected.txt의 일부분입니다.
examples/images/fish-bike.jpg 1 0.078266 5 6 40 26
examples/images/fish-bike.jpg 1 0.0164381 17 10 36 23
examples/images/fish-bike.jpg 1 0.0146594 19 6 54 21
examples/images/fish-bike.jpg 1 0.0139414 12 5 31 22
examples/images/fish-bike.jpg 1 0.0134924 452 42 477 60
examples/images/fish-bike.jpg 1 0.0128136 444 39 467 53
examples/images/fish-bike.jpg 1 0.0123987 2 -1 70 27
examples/images/fish-bike.jpg 1 0.0109627 417 20 484 61
examples/images/fish-bike.jpg 1 0.0108868 453 39 474 53
examples/images/fish-bike.jpg 1 0.0104954 25 9 43 22
examples/images/fish-bike.jpg 2 0.717551 52 81 448 307
examples/images/fish-bike.jpg 2 0.015517 54 242 172 294
examples/images/fish-bike.jpg 2 0.0149374 85 259 201 306
....
시각 형상을 생성하려면 다음 명령을 수행합니다.실행하기 전에caffe의python 모듈을 사용해야 합니다.하지만 직접 설치하면 문제가 있는 것 같아서 PATH를 통해 사용합니다.export PYTHONPATH=~/caffe/pythonscikit-image가 없는 상황에서 왜 나는 구글인지 모르겠다.프로토타입이 import를 할 수 없는 상황도 발생했기 때문에 이 상황에서 다음과 같은 조작을 실행합니다
sudo pip install protobuf scikit-image
python ./tools/extra/plot_detections.py --labelmap-file ./data/VOC0712/labelmap_voc.prototxt ./detected.txt  --save-dir . --visualize-threshold 0.2
물체 검출은 RCNN을 시작으로 Fast-RCNN, Faster-RCNN까지 진행됐지만 SSD는 실용적인 수준의 성능에 도달한 것 같다.

좋은 웹페이지 즐겨찾기