Skip to content

딥러닝 프로젝트 4조. 객체 인식 및 분류를 활용한 학습도우미

Notifications You must be signed in to change notification settings

addinedu-ros-3rd/deeplearning-repo-4

Repository files navigation

🌞 딥러닝 학습도우미

1. 프로젝트 소개

딥러닝 기반으로 학습 방해 요소를 확인하는 프로그램

  • 딥러닝을 활용하여 실시간으로 객체/행동을 인식/분류하고, 그 영상을 클라우드 파일 스토리지에 저장 후 조회하는 프로그램입니다.

  • 사용된 딥러닝 기술

    • 객체 인식(YOLO)
      • 문: 열림 / 닫힘
      • 간식 상자 채워진 비율: 0%, 25%, 33%, 50%, 75%, 100%
      • 책상 위 사물: 쓰레기(비닐, 플라스틱, 종이, 휴지, 커피컵), 그외(쿠키, 커피)
    • 분류(CNN, VGG16)
      • 밝기: 밝음 / 어두움
    • 행동 인식(LSTM)
      • 자세: 휴대폰 사용 중 / 집중하고 있음
  • 프로젝트 기간: 2023.11.17 ~ 12.15

2. 시스템 설계

2-1. 기술 스택

개발환경 Ubuntu Visual Studio Code Git Github RDS S3
기술 Python PyTorch Tensorflow OpenCV ROS2 Docker Mysql Qt
커뮤니케이션 Jira Confluence Slack



2-2. 시스템 구성도



2-3. 객체 인식 데이터 구조



2-4. GUI



2-5. Deep Learning Controller 상세



2-6. 실시간 객체 인식 시나리오



2-7. 저장된 영상 확인 시나리오



3. 시연 영상 & 발표 자료


데모 영상 보러 가기



4. 실행 방법

4-1. 딥러닝 모델: 도커 환경

  • deploy 디렉토리에서
    docker compose up -d
    
    로 이미지 빌드 후 실행 시, 사용하는 PC의 웹캠과 디스플레이에 연동하여 모델 성능 확인이 가능합니다.
  • 도커 접속 후
    • DESK/SNACK/DOOR yolo v5 모델 인식 확인
    python detect.py --weights 'pt파일 경로' --source 0
    
    • LIGHT keras 모델 인식 확인
    python detect_light.py
    
    • PHONE LSTM 모델 인식 확인
    python detect_phone.py
    

4-2. UI/DB/S3/ROS2 연동 프로그램 실행: 로컬 PC

  1. 촬영한 영상 저장과 조회를 위해서는 AWS S3 bucket과 IAM 생성이 필요합니다. 이 설정이 없을 경우 실시간 인식만 가능합니다.
  2. 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을 동시에 실행할 수도 있습니다.
  1. 실행에 앞서, ros2 humble과 qt5, requirements의 pip 라이브러리가 설치되어 있어야 합니다.
  1. 프로젝트의 ConfigUtil.py 파일에서 config.ini 파일이 있는 경로 수정이 필요합니다.
    configParser.read('/home/yoh/deeplearning-repo-4/ros_dl/src/haejo_pkg/haejo_pkg/utils/config.ini')
    config = configParser['yun']
    
  2. create_and_init.sql 파일로 DB의 테이블과 SP를 생성하고 모듈 테이블의 데이터를 추가합니다.
    source create_and_init.sql
    
  3. 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/
    
  1. ros2 실행
    source /opt/ros/humble/setup.bash
    
  2. 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
    
  1. ros2 프로젝트 실행
  • 카메라 토픽 발행
    ros2 run usb_cam usb_cam_node_exe
    
  • 토픽 구독 및 UI 실행
    ros2 run haejo_pkg deep_learning
    

5. 팀원 소개 및 역할

구분 이름 역할
팀장 이충한 PM, PyQt GUI 개발, 데이터 라벨링
팀원 강병철 CNN/VGG16 전이학습, YOLOv5 활용
팀원 오윤 시스템 구성도 및 시나리오 작성, YOLOv5 활용, Query/SP 작성, AWS S3 연동, 도커 구성
팀원 이수민 LSTM/YOLOv8 활용, ROS2, mediapipe, PyQt

6. 회고

  • 기술적으로 만족한 점
    • 도커로 개발 환경 구축
    • ROS2 통신 연동
    • 직접 구축한 데이터셋으로 모델 학습 진행
  • 아쉬운 점
    • 다양한 딥러닝 모델로 학습하지 못했고, 모델 경량화가 부족하여 실시간 인식 시 PC 자원에 따라 화면 버퍼링 발생
    • 도커 운영 환경을 구축하고자 했으나, UI 코드를 분리하지 못해 Qt 로컬 환경 의존성 이슈 발생
    • 움직이는 로봇에 연동된 카메라를 상정하여 ESP-32 cam 사용 및 Wifi/TCP/UDP 통신을 고려했으나, 구현하지 못하고 USB CAM과 ROS 통신만 사용

About

딥러닝 프로젝트 4조. 객체 인식 및 분류를 활용한 학습도우미

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published