스트리밍에 motion과 mjpg-streamer를 사용해 봤는데,
motion보다 mjpg-streamer가 더 사용하기에 편해서 mjpg-streamer로 진행을 했다.
mjpg-streamer 빌드에 필요한 패키지를 설치한다.
sudo apt-get install libjpeg-dev imagemagick libv4l-dev cmake
mjpg-streamer를 현재 위치에 다운로드 한다.
git clone https://github.com/jacksonliam/mjpg-streamer.git
빌드 파일이 위치한 디렉토리로 이동하여 mjpg-streamer를 빌드해 준다.
cd mjpg-streamer/mjpg-streamer-experimental
make CMAKE_BUILD_TYPE=Debug
빌드된 파일을 시스템에 설치해 준다.
sudo make install
아래 명령어로 스트리밍 서버를 실행시킨다.
mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_http.so -w /usr/local/share/mjpg-streamer/www/"
따로 옵션을 주지 않으면 포트 기본값 8080으로 설정된다.
웹 브라우저로 localhost:8080 또는 http://<라즈베리파이 IP 주소>:8080/ 스트리밍 서버에 접속한다.
아래와 같은 홈페이지가 나오면 스트리밍을 정상적으로 성공한 것이다.
여기서 Stream으로 이동하면 카메라의 영상이 나오고 있는 것을 볼 수 있다.
주소 끝에 ?action=stream 추가하면 비디오 스트림만 볼 수 있다.
공유기 포트포워드를 설정하면 외부에서도 (http://공인IP 주소:포트번호)로 확인이 가능하다.
input_uvc.so 플러그인 옵션들에 대해 알 수 있다.
mjpg_streamer -i 'input_uvc.so --help'
- -r (resolution): 입력 카메라의 해상도를 설정한다. 예를 들어, -r 640x480으로 입력하면 640x480 해상도로 영상을 캡처한다.
- -d (device): 입력 카메라 디바이스를 선택한다. 기본값은 /dev/video0
output_http.so 플러그인 옵션
- -w : 웹 페이지 디렉토리 설정
- -p : HTTP 포트 설정
앞에서 학습시킨 best.pt 모델을 다운로드 하고, yolov5 폴더에 위치시켰다.
best.pt 모델을 이용하여 실시간 스트리밍 서버의 영상을 탐지한다.
python3 detect.py --source http://localhost:8080/?action=stream/ --weights best.pt --conf 0.25
mjpg-streamer로 스트리밍 중인 영상이 실시간으로 탐지되는 것을 볼 수 있다.
--source 옵션으로 가능한 것들
처음에 source를 0으로 주고 하나의 캠으로 스트리밍과 검출을 동시에 진행하려고 해서
cap.isOpened() 캠 초기화 에러로 난항을 겪었다.
라즈베리파이의 CPU와 카메라 해상도의 부족함으로 인해 결과가 아쉽게 나온다.
크기를 줄여서 속도를 높였지만, CPU 사용량이 여전히 높았다.
GPU를 사용해보려고 했지만, 라즈베리파이의 GPU를 사용할 방법은 찾지 못했다.
라즈베리파이에서는 스트리밍만 하고 검출은 성능이 좋은 PC에서 해도 좋을 듯하다.
MJPG-Streamer로 스트리밍 서버를 열고 Yolov5 실시간 객체 탐지까지 완료했다.
다음은 객체가 탐지될 때 탐지된 객체를 이미지로 저장되게 한다.
혹시 라즈베리파이 64비트 OS에 어떤 카메라로 실시간 객체탐지 하셨나요?
파이카메라2로 같은 환경에서 yolov5 돌리는데,
mjpg_streamer -i "input_uvc.so -d /dev/video0" -o "output_http.so -w /usr/local/share/mjpg-streamer/www/" 는 잘 되는데
python3 detect.py --source http://localhost:8080/?action=stream/ --weights best.pt --conf 0.25 가 진행이 안됩니다. 혹시 해결방법있을까요,,?
안녕하세요 글 잘 보았습니다 같은 프로젝트를 진행하고 있는데 저도 라즈베리파이 안에서 하면 영상 딜레이가 엄청 나더라구요... 그래서 mjpg-streaming을 이용해서 제 노트북에서 탐지 해보긴 했는데 3초 정도의 딜레이가 있습니다... 혹시 해결방법이 있을까요...?
스트리밍 하시는 이유가 있나요? 프레임이 더 잘나오나,,?
전 욜로8로하고있는데
느낌상2~4프레임 나오는거 같아요