전체 글 46

[Object Detection] SSD(Single Shot Multibox Detector)

지난 포스팅까지 two-stage detector인 R-CNN 계열의 모든 Object Detection 모델에 대해서 살펴봤다면, 이번 포스팅부터는 one-stage detector에 대해서 SSD부터 시작하여 알아보도록 하겠습니다. 즉 지금까지의 Object Detection 모델들(two-stage detector)은 Region Proposal과 Classification이 순차적으로 이루어졌다면, 이제부터 설명할 SSD를 포함한 여러 YOLO 모델들(one-stage detector)은 Region Proposal과 Classification이 동시에 이루어지는 것이죠. SSD는 YOLOv1과 비슷한 시기에 나왔던 모델이었습니다. YOLOv1은 수행 속도는 빨랐지만 수행 성능이 Faster R-..

[Object Detection] Faster R-CNN

Fast R-CNN은 ROI Pooling Layer을 사용하여 학습 시간과 객체 검출 시간을 이전 모델들보다 월등히 단축시켰습니다. 하지만 2.3초라는 Fast R-CNN의 detect 시간은 실시간으로 사용되기에는 너무 긴 시간입니다. Fast R-CNN의 detect 시간을 늘린 가장 큰 요인은 바로 Region Proposal로 사용된 Selective Search이었습니다. Selective Search는 딥러닝에 포함되지 않고 외부에서, CPU를 사용해야만 수행될 수 있었기에 detect 시간이 길어진 것이었죠. 이번 포스팅에서 알아볼 Faster R-CNN 모델은 이 Selective Search 부분을 Region Proposal Network(RPN)로 바꾸면서 비로소 모든 요소들을 딥러..

[Nav2] Nav2 설치

Nav2는 ROS1에서 Move base라 불리던 package가 ROS2로 넘어오면서 바뀐 package의 이름입니다. Installation 저는 ubuntu 20.04버전과 ros2 foxy에 Nav2를 설치하였고, Nav2는 아래와 같은 과정으로 손쉽게 설치하여 사용할 수 있습니다. 에는 현재 본인이 사용하고 있는 ros2 버전을 입력하시면 됩니다. $ source /opt/ros//setup.bash $ sudo apt install \ ros-$ROS_DISTRO-navigation2 \ ros-$ROS_DISTRO-nav2-bringup \ ros-$ROS_DISTRO-turtlebot3* 설치가 끝났다면 ros2 run이나 ros2 launch와 같은 명령어로 실행 가능한 노드들을 실행시킬..

Nav2 2023.06.06

[Object Detection] Fast R-CNN

이전에 배운 R-CNN은 다음과 같은 한계점이 있었습니다. 개별 이미지에서 Region Proposal을 통해 뽑은 2000개의 영역 모두에 대해서 각각 CNN feacture extract을 수행하기 때문에 detect 시간이 굉장히 오래 걸린다. 2000개의 영역을 crop과 warp하는 과정에서 data 손실이 날 수도 있다. end-to-end 딥러닝이 아니기 때문에 학습시간이 오래걸린다. Fast R-CNN은 R-CNN의 한계점을 개선시키고자 나온 모델로 다음과 같은 방법을 사용함으로써 R-CNN의 한계점을 극복했습니다. SPP Layer와 비슷한 ROI Pooling Layer을 사용 SVM을 softmax로 변환 ROI Pooling Layer ROI Pooling Layer는 Fast R-..

[Object Detection] SPP(Spatial Pyramid Pooling)Net

이전 포스팅에서 배운 RCNN은 아래와 같은 문제점이 있었습니다. 개별 이미지에서 Region Proposal을 통해 뽑은 2000개의 영역 모두에 대해서 각각 CNN feacture extract을 수행하기 때문에 detect 시간이 굉장히 오래 걸린다. 2000개의 영역을 crop과 warp하는 과정에서 data 손실이 날 수도 있다. 이 문제점을 해결하기 위해서는 어떻게 해야 할까요? 단순하게 생각했을 때, 추출된 2000개의 영역 모두 CNN feacture extract을 수행하지 않고 먼저 원본 이미지만 CNN을 통과시켜 Feacture Map을 만든 후 2000개의 영역은 feature map에 mapping 시키면 문제점을 해결할 수 있습니다.(image crop & warp도 사라지고 속..

[Project1] - (3) usb 캠을 이용해서 실제 검출 결과 확인하기

YOLOv8을 ROS2와 성공적으로 연동시켰으니 이제는 실제 카메라를 이용해서 객체를 잘 검출하는지 확인해 볼 차례입니다. 당장 저에게 real sense camera나 성능 좋은 카메라가 없기 때문에 집에 굴러다니는 usb 카메라를 이용해 확인해볼 생각입니다. 그렇다면 먼저 ROS2와 연동되며, usb 카메라의 이미지 정보를 publish 해줄 node가 필요합니다. 이를 이미 구성해놓은 코드는 github에서 손쉽게 찾을 수 있었습니다. https://github.com/ros-drivers/usb_cam/tree/ros2 GitHub - ros-drivers/usb_cam: A ROS Driver for V4L USB Cameras A ROS Driver for V4L USB Cameras. Con..

[Project1] - (2) ROS2와 YOLOv8 연동시키기

이제 YOLOv8을 사용하기로 결정했으니 ROS2와 연동하여 사람을 detect할 수 있게 만들어야 합니다. 카메라를 통한 이미지 topic을 받은 후(subscribe)에 YOLOv8로 object를 detect한 후 그 결과를 navigation이 사용할 수 있도록 publish해줘야 하죠. 따라서 저는 topic을 보내고 받는 역할을 수행하기 위해 node와 이 node를 실행시킬 launch 파일이 필요합니다. YOLOv7까지는 이를 자동으로 만들어 ROS와 연동시켜주는 darknet_ros 라는 패키지가 존재하나 제가 사용할 YOLOv8은 나온지 얼마되지 않아서인지 지원하지 않았습니다. node와 launch 파일을 직접 만들어야하는 머리 아픈 상황에서 혹시나 하는 마음으로 github를 뒤져본..

[Project 1] - (1) YOLOv8 성능 확인해 보기

최근에 프로젝트를 진행하다가 포스팅이 많이 밀렸네요. 제가 이번에 맡은 프로젝트는 로봇이 Nav2를 통해 목적지까지 주행하다가 카메라로 사람이 인식되면 경로를 멈추고 사람이 사라지면 다시 주행하는 프로젝트 였습니다. 현재 이 부분을 성공적으로 완성시켰고 이후 필요에 따라 계속 발전시켜 나갈 예정입니다. 이 과정에서 YOLOv8부터 Behavior Tree, Groot 등등 여러 가지가 사용되었는데, 이것들에 대해서 공부하며 정리했던 자세한 내용들은 Object Detection과 Nav2 카테고리에 차차 포스팅하도록 하고 이곳에서는 Project가 진행되었던 과정에 대해서 포스팅하려고 합니다. Object Detection 모델 선택 먼저 사람을 detection하기 위한 모델부터 선택해야 합니다. 이후..

화면 캡처 프로그램 Shutter 설치 방법 & 사용법

ROS에 대해서 공부한 내용을 블로그에 포스팅하려고 하다 보니 자연스럽게 리눅스 환경에서 블로그 글을 작성하는 경우가 많아졌다. 글을 쓰다보면 에러 난 사진을 올리거나 설명을 위해 화면캡처가 필요한 경우가 많은데 이럴 때마다 불편했던 점이 바로 일일이 print Script 키를 누르고 하나하나 편집해야 했던 점이다. Window 환경에서는 알캡처라는 프로그램을 이용해 손쉽게 화면캡처와 편집을 했는데 리눅스에서는 알캡처가 설치가 안되니 다른 프로그램을 찾을 필요가 있었다. 구글링을 열심히 한 결과 리눅스에서 화면캡처와 편집 기능을 하는 shutter 프로그램을 찾아냈다. 이번 포스팅에서는 이 shutter 프로그램을 설치하는 방법과 간단한 사용법에 대해서 설명하도록 하겠다. 나는 Ubuntu 20.04 ..

Linux 2023.04.13

[Object Detection] R-CNN

본격적으로 딥러닝 기반 Object Detection 방법에 대해서 설명하기 이전에 Object Detection의 역사에 대해서 살펴보도록 하겠습니다. Object Detection의 역사 딥러닝이 등장하기 이전의 object detection은 규칙 기반의 고전적인 컴퓨터 비전을 이용하여 만들어졌습니다. 2012년 AlexNet이 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 대회에서 우승을 차지한 이후 CNN이 주목을 받게 되는데, 이 CNN을 처음 Object Detection 분야로 끌어와 사용된 R-CNN을 시작으로 딥러닝 기반의 Object Detection 방법이 발전하게 되었습니다. 이러한 딥러닝 기반의 Object Detectio..