Programming/Linux

라즈베리파이에서 darknet 테스트

빠릿베짱이 2018. 8. 31. 10:42
반응형


1. SD 카드 포멧

https://www.sdcard.org/downloads/formatter_4/


2. 라즈비안 설치

데스크탑 버전 다운로드

https://www.raspberrypi.org/downloads/raspbian/

※ 우분투 mate 설치하려고 했으나, 설치 불가 - 라즈베리파이 3 b+는 아직 호환되지 않은 듯 함.

※ ubuntu mate로 부팅 디스크 만든 경우, 무지개 화면이 나왔음 ( 우측 상단에는 번개 표시 )


3. SD 카드 부팅 디스크 만들기

https://etcher.io/

 다운로드 후, 라즈비안 이미지 선택하여 SD 카드 굽기

※ 8G 사용했는데, 설치 도중 용량 부족으로 실패 ~ 16G로 다시 테스트


4. SD 카드 부팅 디스크 끼우고 라즈베리파이 전원  On

1). 나라 선택

2). 암호 설정

3). 와이파이 설정

4). 업데이트 확인 - 오래 걸림


5. SSH 

원격 접속으로 하는 것이 편하기 때문에, 라즈베리파이에서 SSH 기능을 활성화 시키자

1) sudo raspi-config

Interfacing Options 선택

SSH 선택

Enable 선택


6. 한글 폰트 설치

sudo apt-get install fonts-unfonts-core



6 OPENCV 3.4.1 설치

http://webnautes.tistory.com/916


make -j4

이걸로 하니 한참을 100% 상태로 그냥 멈춰있었음. 

포기하고 make로 하니 금방 완료됨.

-j4 옵션이 쿼드코어를 다 사용하여 make 한다는 의미


7. darknet-nnpack 설치

https://github.com/digitalbrain79/darknet-nnpack


그냥 순서대로 따라하면 됨


opencv 3.4.1 설치 완료하고 

darknet의 Makefile의 옵션 중 Opencv=1로 변경하고 컴파일 중

다음과 같은 에러 발생


'namespace' namespace cv { ^ 1 error generated. make: *** [obj/gemm.o] Error 1


해결책 : https://github.com/pjreddie/darknet/issues/485

요약하면, cvdef.h 파일에서

#else
#include <stdint.h>
namespace cv {
typedef ::int8_t int8_t;
typedef ::uint8_t uint8_t;
typedef ::int16_t int16_t;
typedef ::uint16_t uint16_t;
typedef ::int32_t int32_t;
typedef ::uint32_t uint32_t;
typedef ::int64_t int64_t;
typedef ::uint64_t uint64_t;
}
#endif
이부분을 
#else
#include <stdint.h>
//namespace cv {
//typedef ::int8_t int8_t;
//typedef ::uint8_t uint8_t;
//typedef ::int16_t int16_t;
//typedef ::uint16_t uint16_t;
//typedef ::int32_t int32_t;
//typedef ::uint32_t uint32_t;
//typedef ::int64_t int64_t;
//typedef ::uint64_t uint64_t;
//}
#endif

이렇게 수정하고 make를 하면 또 오류남. highgui_c.h 랑 관련된 오류인데,


해당 파일의 CVAPI(cv::Rect)cvGetWindowImageRect(const char* name); 부분을

CVAPI(CvRect)cvGetWindowImageRect(const char* name); 이렇게 수정하면 
컴파일 안전하게 완료됨

8. 카메라 연결 후 재부팅


1) 캡쳐 테스트를 위해 설치


sudo apt-get install fswebcam


2) 영상이 제대로 되는지 테스트


fswebcam image.jpg




9. yolov2.weights 파일 다운로드


https://pjreddie.com/darknet/yolov2/




10. 드디어 실행


./darknet detector demo cfg/coco.data cfg/yolo.cfg yolov2.weights -c 0

./darknet detector test cfg/coco.data cfg/yolo.cfg yolov2.weights data/person.jpg

test 의 경우 인식은 되는데,

막판에 에러 발생 ㅠㅠ




=================================

OpenCV로 darknet 학습 결과 Detection 구현 : https://github.com/spmallick/learnopencv/tree/master/ObjectDetection-YOLO






반응형