앞 포스팅에서 서버를 구축했으니
YOLO의 Bounding Box의 좌표를 서버로 보내는 포스팅을 하겠습니다.
[5]포스팅에서 YOLO의 분석을 다루었는데요.
darknet디렉토리 안에 src디렉토리가 있습니다.
이 안에는 여러 source code들이 있었지만 우리가 사용할 source code는
image.c입니다. image.c는 Bounding Box에 관한 좌표와 object에 Bounding Box를
그리는 c코드들이 존재합니다. 여기서 code수정을 통해서 Bounding Box의 좌표를
따오겠습니다.
image.c 코드를 캡쳐한 이미지입니다. 코드가 작아서 잘 안보일 수 있기 때문에
클릭하여 확대해서 보는걸 추천해 드립니다.
image.c 코드에서 약 238번째 line에 void draw_detections라는 함수가 보입니다.
이 안에 파일 입출력을 통해서 Bounding Box가 존재하게 되면
html파일이 생성되면서 구축해놓은 서버에 html파일이 올라가게 됩니다.
이 코드는 약 327 line인데 똑같은 void draw_detections함수 안 입니다.
strcmp를 사용하여, yolo에서 인식되는 야생동물의 class name이
inermis(고라니), wild boar(멧돼지)이면 index.html을 생성합니다.
그리고 Bounding Box의 left좌표와 right좌표의 가운데 지점 좌표를 구해줍니다.
이렇게 되면 서버의 index.html에는 야생동물의 Bounding Box의 정중앙 값이
보내집니다. 아래 이미지를 통해서 확인해 보겠습니다.
인식된 멧돼지 Bounding Box의 가운데 지점을 빨간색으로 표시를 했는데요
저렇게 정 중앙의 좌표값이 서버에 잘 전달되는 것을 확인할 수 있습니다.
여기서도 파일입출력을 하는데 위에서는 왜 파일입출력을 한거냐 라고 생각하시는
분들이 많으실겁니다. 아래에서 인식한 야생동물의 정보가 남아있기 때문에,
위에서 한번더 파일입출력을 함으로써 초기화 해준다는 개념으로 생각하시면 될 것 같습니다.
네 이번 포스팅에서는 YOLO Source의 수정을 통해서 좌표값을 계산하고,
그 좌표값을 http서버로 전송하는 포스팅을 했습니다. 다음 포스팅에서는
서버로 전송했을 때 문제점이 발생했었는데 그것에 대해서 포스팅을 해보도록
하겠습니다. 그럼이만~~
'Deep Learning(YOLO)기반의 Smart Scarecrow' 카테고리의 다른 글
[11] 물총 제어를 위한 Arduino 환경설정 하기 (2) | 2017.12.26 |
---|---|
[10] Apache2 Root Directory 변경으로 문제해결 (0) | 2017.12.19 |
[8] Ubuntu에서 Http서버 구축하기 (LAMP) (2) | 2017.12.19 |
[7] Deep Learning기반의 Smart Scarecrow 설계하기 (2) | 2017.12.19 |
[6] YOLO 데이터(이미지) 학습 (218) | 2017.12.19 |