본 프로젝트는 멀티캠퍼스 AI 국비지원 과정에서 진행한 2번째 프로젝트이다.
이 페이지에서는 전반적인 프로젝트에 대한 부분을 설명하며, 구현 부분은 따로 페이지를 만들어 설명하겠다.
□ 프로젝트 개요
이번 프로젝트는 딥러닝(Object Detection)으로 운전자의 눈 감은 시점을 3초 이상 지속 되었을 때 알람이 울리며 아두이노센서데이터를 통해 현재 운전환경이 졸음이 오는 환경인지 아닌지를 머신러닝(Logistic Regression)을 통해 실시간으로 알려주는 서비스 이다.
□ 프로젝트 기간
2022년 4월 26일 ~ 2022년 5월 19일 (4주)
팀원 : 4명
□ 기술 스택
1. AI
Object Detection (YOLOv5)
Logistic Regression
2. Adurino
온습도 센서
이산화탄소 센서
부저
웹캠
3. DataBase
MYSQL
4. Frontend / Backend
Django
□ 개발 환경
LOCAL
- Ubuntu 20.04 LTS
- Python 3.8
- Tensorflow 2.7
GPU
- Geforce RTX 2060 6GB
- CUDA 11.3
- cuDnn 8.2
□ 내 역할
- IMAGE Annotation 280장
- Object Detection 학습 및 추론
- Arduino
- Database
- Frontend / Backend
□ 배운점
AI를 실생활에서 사용할 수 있게 서비스화를 해본 것은 처음이다. 다른 각 파트와 실시간으로 연결하는 부분에 대해서 많이 생각 하게 되었다. 이 프로젝트를 통해서 하나 얻어간 것이 있다면 서비스가 조금 더 고도화 되기 위해선 어떤 것이 필요한가에 대해 조금 갈피를 잡게 될 수 있었다.
□ 어려웠던 점과 해결 방법
yolov5 자체는 코드가 이미 짜여져 있고 형식만 맞춰서 사용하는데 어려움이 없었지만 custom하게 실시간으로 처리하는 방식은 생각했던 것보다 쉽진 않았다.
3초간 눈을 감았을 때 DB로 현재 실내의 이산화탄소, 온습도를 전송해주고 부저를 울려야 했다. 실시간으로 처리하는게 쉽진 않았는데, YOLOv5의 detect.py 추론 코드에서 DB 전송과 시간을 처리해주는 코드를 만들어 처리하였다. 하지만 GPU가 있는 컴퓨터에서 테스트했을 때 오차가 거의 없었고, CPU로 진행하면 오차가 발생했다. 이 부분은 당장 내 실력으로는 당장 해결이 불가능했다.
나중에 알게된 사실이지만 사용한 MYSQL(관계형 데이터베이스)보다 NOSQL 방식이 속도 측면에서 더 빠르다고 알게되었다.
□ 서비스 아키텍쳐
서비스의 전반적인 데이터 흐름도이다. 본래 의도 한 바로는 재학습까지 진행해보고 싶었는데 실력도 시간도 허락해주지 않아서 진행하지 못하였다.
□ 느낀점
나의 말도 안되는 의욕을 받아준 팀원들에게도 감사의 말을 전하고 싶다.
프로젝트 팀에서 상대적으로 다른 팀원들에 비해 실력이 조금 높았어서 너무 내 주도적으로 한게 아닐까 미안한 감정도 들기도 했고, 상대적으로 다른 팀원들이 프로젝트를 수행 할 수 있는 부분이 적었다. 하지만 팀원들이 나보다 못한다고해서 그 친구들을 무시하지는 않았다. 사람이 단일화가 안되어 있듯이 다 배움의 속도도 다 다르기 때문에 내가 취업을해서 반대로 팀원들의 입장이 될 수 있다라는 사실을 간과해서는 안된다고 생각한다. 진행하는데에 있어서 조금 더뎌서 압박도 주긴 했지만 최대한 팀원들이 얻어가는 것이 있었으면 했고 이 프로젝트를 발판으로 성장의 시발점이였으면 하는 바램이 있다.
□ GITHUB
□ 시연영상
'Project' 카테고리의 다른 글
[융복합]디지털 소외계층을 위한 키오스크 (0) | 2022.07.04 |
---|