티스토리 뷰

728x90

학습시킨 데이터가 인식이 잘 된다면
매우 간단한 방법으로 객체 탐지가 될 때마다 알람이 울리게끔 할 수 있습니다.

저희는 영유아가 위험행동을 했을 때, 어떤 식으로 부모에게 알릴 것인가에 대해 고민하였습니다.
메세지를 띄우는 방법보다는 소리를 내는 것이 즉각적인 반응을 하기에 적합하다 판단, 알람 시스템을 넣기로 하였습니다.

먼저, 저희 알람 구상도를 보여드리겠습니다.


오탐을 방지하고자, 인식률이 80% 이상이 될 때만 알람이 울리게끔 설정했습니다.

알람을 위한 코드를 수정하기위해 알람 mp3 파일을 다운받아 darknet 폴더와 src 폴더 둘 다에 넣어줍니다.
(저번에는 src 폴더에 넣어서 됐던 것 같은데, 최근에 해봤을 때 darknet 폴더에 알람파일이 있어야 알람이 울리더라구요 그래서 혹시 모르니 두군데 다 넣어놔줍니다.)

이제 darknet/src 경로로 들어가 image.c 에 들어가줍니다.
$ cd opencv/opencv-4.2.0/build/darknet/src
$ vi image.c

:set number 입력 후 245+Shift+g 눌러 245번째 줄로 가줍니다.

void draw_detections() 함수는 객체가 탐지되면 label을 그리고, 위에 인식률과 클래스 네임을 적어주는 함수입니다.

이 함수 내 변수에 대해 설명해드리면,
dets[i].prob[j] : 객체 탐지 인식률
names[class] : 출력될 클래스 네임
입니다.

draw_detections() 함수 맨 마지막 부분에 코드를 추가해 알람시스템을 구현해보겠습니다.
if(dets[i].prob[j]>=80)
system("ffplay alarm.mp3");
를 추가해줍니다. 밑줄 친 부분은 각자 넣길 원하는 알람 파일 이름을 넣으시면 됩니다.

다시 darknet 경로로 들어와서 make 한번 해준 후 테스트 진행하면 성공적으로 알람이 울리게 됩니다.

만약 ffplay 실행이 안된다면
$ sudo apt-get install ffmpeg
를 터미널에 입력해 ffmpeg를 다운받은 후에 실행해주세요.





반응형