본 글은 jetson-inference를 바탕으로 정리한 글입니다. 영어를 한글로 번역하는(이해하는) 과정에서 오류가 있을 수 있으며, 해당 글은 Python만을 다루므로 참고해주시기 바랍니다.
이전의 Classifying Images with ImageNet 글에서는 이미지 전체에 대해 분류를 하였습니다. 하지만 이번 글에서는 Object Detection을 실습해보도록 하겠습니다.
이미지 분류와 유사하게, 객체 탐지를 해보겠습니다. 먼저 아래의 명령어를 입력해줍니다.
$ cd ~/jetson-inference/build/aarch64/bin # 현재 위치가 해당 디렉토리에 있다면 생략해도 됩니다
$ ./detectnet.py --network=ssd-mobilenet-v2 images/peds_0.jpg images/test/output.jpg
위의 코드에서 --network 이후로는 필요에 따라 선택해서 사용하시면 됩니다. Default로 사용하고 싶으시면 그냥 ./detectnet.py
만 입력하면 됩니다.
입력 이미지는 아래와 같습니다.
출력 이미지는 아래와 같습니다.
결과적으로 네명의 사람을 한 이미지 내에서 분류할 수 있으며 이를 확률적으로 나타낸 것이 이전의 image classification과, object detection의 차이라고 볼 수 있습니다.
이외에도 다른 여러 이미지에 대해 object detection을 수행하고 싶다면, 아래의 명령어와 유사한 방식으로 입력해주면 됩니다.
$ ./detectnet.py "images/peds_*.jpg" images/test/peds_output_%i.jpg" # detectnet.py가 있는 디렉토리에서 실행
실습을 하다 궁금하여 구글에서 캣독
이미지를 입력으로 넣어보았습니다. 결과는 아래와 같습니다.
혹시나 했지만 cat이나 dog이 아닌 kite(연)으로 인식을 했습니다. 연이라니...
이외에도 자신이 가지고 있는 이미지로 실습해보는 것도 기억에 남을 것 같습니다.
이번에는 이미지가 아닌 비디오 파일에 대해 Object detection을 실습해보도록 하겠습니다.
비디오 파일은 /usr/share/visionworks/sources/data/
경로에 저장되어있는 영상을 사용하도록 하겠습니다.
$ ./detectnet.py /usr/share/visionworks/sources/data/pedestrians.mp4 images/test/pedestrians_ssd.mp4
명령어를 입력하면 저의 경우, 에러가 뜹니다. 정확한 이유는 모르겠으나 젯슨 나노(2GB)의 성능 때문인 것으로 생각됩니다(혹은 mp4 파일이라...?). 추후에 젯슨 나노(4GB)로 다시 해봐야겠습니다.
혹시 몰라 다른 비디오 파일로 실습해보도록 하겠습니다.
$ ./detectnet.py /usr/share/visionworks/sources/data/parking.avi images/test/parking_ssd.avi
해당 비디오 파일의 경우 정상적으로 인식이 되는 것을 확인하였습니다.