본문 바로가기

AI

YOLO NVR(DVR) 이용한 실시간 감지(RTSP)

YOLO는 실시간 물체 감지를 목적으로 서비스를 한다. YOLO의 사용 목적의 대부분은 실시간 물체 감지를 위해서 사용한다고 믿어 의심치 않는다.

 

대부분 CCTV를 NVR(DVR)에 연결해서 사용한다. 그래서 사용하려면 다소 초기 설정이 길어진다.

반대로 간단한 실험이나, 거리가 가까운 경우, IP 카메라 혹은 webcam 등을 사용해서 PC랑 직접적으로 연결하는 경우가 많기 때문에 접근이 쉬운 편이다.

 

CCTV는 동축케이블을 이용해서 100m 이상의 거리를 연결하는 경우가 많으며, 일반적인 PC에는 동축케이블을 연결할 방법이 없기 때문에 초반 설정 작업이 필요로 한다.

 

이 글은 NVR(DVR)의 RTSP를 이용해서 YOLO를 실시간 streaming 한다. 요즘에 나오는 NVR(DVR)은 네트워크 기능을 가지고 있을 확률이 높으며, 이중 RTSP를 가지고 있을 확률이 매우 높다. NVR(DVR)에 RTSP기능이나 네트워크 기능이 없는 경우도 많으니 반드시 확인하고 사용해야 한다.

 

RTSP는 Real Time Streaming Protocol의 약자로 말 그대로 실시간 스트리밍 프로토콜이다. 따라서 NVR(DVR)과 PC는 같은 네트워크에 연결되어있어야 한다. (통신이 되어야 한다)

 

1) 테스트 환경

  • 사용 자원

CCTV, 동축케이블, NVR(DVR), PC, UTP 케이블 등

 

  • 환경 구성도

< 실험 환경 네트워크 구성도 >

  • 구성도 설명

위에 적어둔 것을 다시 작성해 보자면, CCTV는 대부분 동축케이블로 연결되어 있는 경우가 많다. 아니더라도 UTP 케이블로 연결이 되어 있는 경우는 많지 않다. 따라서 PC와 연결하기 쉽지 않은데, NVR(DVR)은 동축케이블 포트가 있어 동영상 정보를 받아들일 수 있으며, 대부분의 NVR(DVR)의 경우 웹 서비스로도 streaming을 가능하도록 제공하기 때문에LAN 포트가 있어 PC와 연결하기 용이하다.

 

위와 같은 방법을 쓰지 않고, IP 카메라나 webcam 등을 사용해서 PC에 연결이 가능하다면, iSPY 같은 오픈소스 감시 프로그램을 이용해서 RTSP를 사용할 수 있다.

 

NVR(DVR)과 PC는 다이렉트 케이블 방식을 이용하면 된다.

 

 

2) 사용 방법

NVR(DVR)의 RTSP 기능을 활성화한다.

대부분의 NVR(DVR)의 경우 RTSP기능을 활성화하면, example URL을 알려주는데 이를 이용해서 명령어를 완성시킨다.

 

IP 카메라나 webcam을 이용하는 경우, iSPY 같은 감시 프로그램을 이용하면 RTSP를 지원하기 때문에 설정 부분에서 RTSP 활성화한다.

 

3) 명령어

  • 명령어
darknet detector demo [.data] [.cfg] [.weights] [rtsp]

 

 

  • 사용한 명령어(명령어 예시)

1. No.1 NVR(DVR)

darknet detector demo data/obj.data data/yolo-obj.cfg backup/200525/yolo-obj_final.weights rtsp://admin:test1@11.11.11.11/ch9/stream1

 

darknet detector demo data/obj.data data/yolo-obj.cfg backup/200525/yolo-obj_final.weights rtsp://admin:test1@11.11.11.11/ch10/stream1

 

2. No.2 NVR(DVR)

darknet detector demo data/obj.data data/yolo-obj.cfg backup/200411/yolo-obj_63000.weights rtsp://admin:1q2w3e4r!@192.168.0.8:554/Streaming/Channels/101

 

darknet detector demo data/obj.data data/yolo-obj.cfg backup/200411/yolo-obj_63000.weights rtsp://admin:1q2w3e4r!@192.168.0.8:554/Streaming/Channels/201

 

2가지 NVR(DVR)을 가지고 테스트해봤는데, 각 NVR(DVR)마다 경로가 다르므로, 각 NVR(DVR)에서 제공하는 RTSP 경로를 제대로 확인하고, 명령어를 완성시켜야 한다.

 

 

4) YOLO에서 RTSP를 사용할 때 주의점

가끔 특정 NVR(DVR)에서는 자신의 RTSP의 URL(경로)에 %와 같은 특수문자로 표시되어 있는 경우가 있다.

웹 브라우저를 통한 접속 등을 할 때에는 문제가 없으나, cmd에서 특수문자가 포함된 URL을 넣으면, 오류가 발생한다.

따라서, RTSP UTL(경로)에 특수문자가 포함되어 있다면, URL 인코딩을 한 후 cmd에 명령어로 입력해야 한다.

 

ex) ......%streamtype=1 → ......%25streamtype=1