-
딥러닝을 활용하여 실시간으로 객체/행동을 인식/분류하고, 그 영상을 클라우드 파일 스토리지에 저장 후 조회하는 프로그램입니다.
-
사용된 딥러닝 기술
- 객체 인식(YOLO)
- 문: 열림 / 닫힘
- 간식 상자 채워진 비율: 0%, 25%, 33%, 50%, 75%, 100%
- 책상 위 사물: 쓰레기(비닐, 플라스틱, 종이, 휴지, 커피컵), 그외(쿠키, 커피)
- 분류(CNN, VGG16)
- 밝기: 밝음 / 어두움
- 행동 인식(LSTM)
- 자세: 휴대폰 사용 중 / 집중하고 있음
- 객체 인식(YOLO)
-
프로젝트 기간: 2023.11.17 ~ 12.15
개발환경 | |
기술 | |
커뮤니케이션 |
- 발표 자료: https://docs.google.com/presentation/d/14j98Dq29OkgNTr-gZHDb-1Xuq7medQQyVQvuFJYs_OU/edit?usp=sharing
- deploy 디렉토리에서
로 이미지 빌드 후 실행 시, 사용하는 PC의 웹캠과 디스플레이에 연동하여 모델 성능 확인이 가능합니다.
docker compose up -d
- 도커 접속 후
- DESK/SNACK/DOOR yolo v5 모델 인식 확인
python detect.py --weights 'pt파일 경로' --source 0
- LIGHT keras 모델 인식 확인
python detect_light.py
- PHONE LSTM 모델 인식 확인
python detect_phone.py
- 촬영한 영상 저장과 조회를 위해서는 AWS S3 bucket과 IAM 생성이 필요합니다. 이 설정이 없을 경우 실시간 인식만 가능합니다.
- ros_cam 프로젝트(https://github.com/ros-drivers/usb_cam) 와 직접 작성한 ros_dl 프로젝트를 동시에 실행해야 합니다.
- ros_cam을 실행한 PC와 USB로 연결된 카메라의 /image_raw 토픽을 받아올 수 있는(같은 ROS_DOMAIN_ID를 가진) PC에서 ros_dl 프로젝트를 실행합니다.
- 하나의 PC에서 ros_cam과 ros_dl을 동시에 실행할 수도 있습니다.
- 실행에 앞서, ros2 humble과 qt5, requirements의 pip 라이브러리가 설치되어 있어야 합니다.
- ros2 humble 설치: https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Development-Setup.html
- qt5 설치 (ubuntu 22.04 기준)
sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential make qt5-default qtcreator qtdeclarative5-dev libqt5serialport5-dev
- python 라이브러리 설치
pip install -r requirements.txt
- 프로젝트의 ConfigUtil.py 파일에서 config.ini 파일이 있는 경로 수정이 필요합니다.
configParser.read('/home/yoh/deeplearning-repo-4/ros_dl/src/haejo_pkg/haejo_pkg/utils/config.ini') config = configParser['yun']
- create_and_init.sql 파일로 DB의 테이블과 SP를 생성하고 모듈 테이블의 데이터를 추가합니다.
source create_and_init.sql
- config.ini는 다음 형태로 작성 필요합니다.
[dev] host = DB Host port = DB port user = DB user password = DB password database = DB database name GUI = /workspace/ros_dl/src/haejo_pkg/haejo_pkg/haejo.ui phone_yolo_model = /workspace/ros_dl/src/haejo_pkg/model/yolov5su.pt phone_lstm_model = /workspace/ros_dl/src/haejo_pkg/model/yolo_state_dict.pt desk_model = /workspace/ros_dl/src/haejo_pkg/model/desk_best.pt door_model = /workspace/ros_dl/src/haejo_pkg/model/door_best.pt light_model = /workspace/ros_dl/src/haejo_pkg/model/light_on_off_model.keras snack_model = /workspace/ros_dl/src/haejo_pkg/model/snack_best.pt video_dir = /workspace/record/
- keras를 제외한 모든 모델은 현재 git 프로젝트에서 ros_dl/src/haejo_pkg/model 경로 하위에 포함되어 있습니다.
- keras 모델은 구글 드라이브에서 받아주세요: https://drive.google.com/file/d/18llPFcgIQBvfEDXJx_6Zr1BPR_P9KzbJ/view?usp=sharing
- ros2 실행
source /opt/ros/humble/setup.bash
- ros2 프로젝트 빌드
- ros_cam 경로
rosdep init rosdep update rosdep install --from-paths src --ignore-src -y colcon build source ./install/local_setup.bash
- ros_dl 경로
colcon build source ./install/local_setup.bash
- ros2 프로젝트 실행
- 카메라 토픽 발행
ros2 run usb_cam usb_cam_node_exe
- 토픽 구독 및 UI 실행
ros2 run haejo_pkg deep_learning
구분 | 이름 | 역할 |
---|---|---|
팀장 | 이충한 | PM, PyQt GUI 개발, 데이터 라벨링 |
팀원 | 강병철 | CNN/VGG16 전이학습, YOLOv5 활용 |
팀원 | 오윤 | 시스템 구성도 및 시나리오 작성, YOLOv5 활용, Query/SP 작성, AWS S3 연동, 도커 구성 |
팀원 | 이수민 | LSTM/YOLOv8 활용, ROS2, mediapipe, PyQt |
- 기술적으로 만족한 점
- 도커로 개발 환경 구축
- ROS2 통신 연동
- 직접 구축한 데이터셋으로 모델 학습 진행
- 아쉬운 점
- 다양한 딥러닝 모델로 학습하지 못했고, 모델 경량화가 부족하여 실시간 인식 시 PC 자원에 따라 화면 버퍼링 발생
- 도커 운영 환경을 구축하고자 했으나, UI 코드를 분리하지 못해 Qt 로컬 환경 의존성 이슈 발생
- 움직이는 로봇에 연동된 카메라를 상정하여 ESP-32 cam 사용 및 Wifi/TCP/UDP 통신을 고려했으나, 구현하지 못하고 USB CAM과 ROS 통신만 사용