최근 인공지능 기술이 급격하게 발전하면서 일상생활에서도 AI가 적용된 제품들을 쉽게 발견할 수 있는데요. 개발자라면 구글이 제공하는 머신러닝 엔진인 텐서플로우(Tensorflow)를 활용하면 인공지능 기능을 쉽게(?) 구현할 수 있는 때문입니다. 오늘은 텐서플로우를 활용해서 일반 IP카메라를 인공지능 카메라로 변신시킨 능력자의 이야기를 소개해 드리겠습니다.
▼마틴씨는(Martin Harizanov) 몇일전 개인 블로그에 싸구려 중국산 IPCAM과 라즈베리파이를 결합해 인공지능 CCTV로 업그레이드한 후기를 남겼는데요. 그가 개발한 AI CCTV의 기능은 다음과 같습니다.
PTZ(Pan–Tilt–Zoom) 기능으로 수상한 사람의 움직임을 추적하는 기능
수상한 사람이 한 카메라의 감시역역을 벗어나면 다른 카메라가 이어서 추적하는 기능
내가 지정한 물체(ex:사람, 고양이)가 등장할 때만 알람 발생
위험이 감지됐을 때 집안에 사람이 있는지 확인하는 기능
MQTT를 통해 다른 IoT 장치에게 신호를 보내고 컨트롤하는 기능
관련글: 라즈베리파이로 자작나스 만들기
관련글: 가정용 IP캠 해킹방지법
"darkflow.gif"
▼10만원도 안하는 PTZ 카메라(상하좌우로 움직이는기능)에 이런 기능을 추가할수만 있다면 전문방범업체에 매월 돈을 주고 경비를 맡긴것과 같은 보안시스템을 구축할 수 있는 셈입니다.
▼마틴은 다크플로우(Darkflow) 라이브러리와 CNN을 이용해 이미지 분류 프로그램을 만들었습니다.(다크플로우 설정은 매우 간단하다고 합니다.) 그리고 파이썬을 사용해 FFmpeg 백그라운드 프로세스로 RTSP 스트림을 5초 마다 캡쳐해서 다크플로우로 이미지를 분석합니다.
▼분석결과는 MQTT에 게시되고, 옵션으로 탐지된 오브젝트의 스크린샷을 캡쳐할 수 있다고 합니다. 마틴은 RTSP 프레임 캡쳐를 위해 OpenCV 대신 FFmpeg를 사용했는데, 이유는 집에 있는 IP캠이 UDP를 통해서만 RTSP를 지원했기 때문이라도 합니다.(OpenCV는 TCP를 통한 RTSP를 지원)
▼그는 이 프로젝트를 직접 해보고 싶은 사람들을 위해 Github에 그가 만든 소스를 모두 공개했습니다.