오랜만!!
드디어 인공지능 프로젝트가 마무리되었다!
4/26 화요일부터 5/17 화요일까지 22일 동안 작업하고, 5/19 오늘! 발표를 진행했다.
프로젝트 주제는 우리가 배운 내용을 활용하여,
사회적인 문제를 해결하는데 도움이 될 수 있는 서비스로 선정하였다.
조원들과 미리 대본과 시연 영상을 만들어 놓았고 발표는 내가 함!
사전에 리허설 여러 번 했을 때는 문제가 없다가,
막상 발표 순번이 되었을 때 줌으로 화면 공유가 안 되어서 당황했다ㅜ
줌을 나갔다 다시 들어오느라고 소리 공유 설정이 풀리는 바람에 시연 영상 초반부 음성이 안 나와서.. 너무 아쉽다. 😇
1조 - 신용카드 사용자 연체 예측 AI 경진대회
2조 - 데이콘 생육환경 최적화 경진대회
3조 - 수어 인식 모델 구현
4조 - 데이콘 CV 이상치 탐지 알고리즘 경진대회
5조 - 운전자 졸음 탐지와 졸음 환경 감지 서비스
6조 - 데이콘 CV 이상치 탐지 알고리즘 경진대회
6개 조 중 4개 조가 경진대회를 진행하고, 3조와 우리만 서비스를 구현했다. 1조를 제외하고 모두 CV!
다른 조들도 수업 때 배운 내용들은 물론 새로 나온 다양한 모델과 기법을 사용하였다.
CAT Boost, ResNet 2RNN, PreTrain Net Pixel, RegNet 등등..
아이디어 및 Data - 20점, 교과 내용 반영도 - 40점, PJT 관리 - 30점, 프레젠테이션 - 10점이 배점(총 100점)되고,
강사님 5 : 상대평가 5로 최우수상 1팀을 가린다!
발표 당일에 시상하는 줄 알았는데 결과는 나중에 나왔다. 데이콘 생육환경 최적화 경진대회를 진행한 2조가 수상!
다양한 기법을 사용하고, 모델 튜닝하는 과정을 시각화와 함께 상세하게 발표함~
전체적인 서비스 구조와 수행 도구, 기술은 다음과 같다~
웹캠을 이용하여 운전자가 졸고 있는지를 실시간으로 확인하고,
아두이노에 부착한 온도 · 습도 · 이산화탄소 센서로 차량 내 환경을 감지하여 MySQL로 데이터를 전송한다.
운전자의 졸음 여부는 눈을 감거나 뜬 사진을 레이블링 하여 데이터로 만들고 이를 딥러닝으로 학습한 객체 탐지 모델이 판단하여 3초 이상 눈을 감았을 경우 부저를 울린다.
차량 내 환경이 졸음을 유발하는지는 온도 · 습도 · 이산화탄소 데이터를 선형 회귀로 학습한 모델이 판단하여, 확률이 60% 이상일 경우 웹 페이지 상에 "졸음운전할 확률이 높으니 환기하세요"라는 안내가 뜬다.
수집된 차량 내 환경 데이터와 운전자의 일별 졸음 횟수는 장고를 이용하여 만든 웹 페이지에서 확인할 수 있다.
이번 프로젝트에서 내가 맡은 부분은 데이터 수집(웹 스크래핑)과 전처리,
차량 내 환경 데이터에 따른 졸음 확률 예측 머신러닝 모델,
웹캠으로 운전자의 눈을 인식하여 3초 이상 눈을 감았는지를 판별하는 딥러닝 모델,
웹 디자인(HTML, CSS)이다.
머신러닝을 위한 환경 데이터는 서울특별시의 스마트서울 도시데이터 센서 환경정보에서 온도 · 습도 최근 데이터 5십만 개 수집하고, 이산화탄소 농도는 존재하지 않아 400에서 2,500ppm 범위의 랜덤 값을 넣었다.
타깃 데이터 레이블의 편향이 심해 오버샘플링 기법 중 SMOTE를 사용하였다.
머신러닝 모델은 SKlearn(Logistic Regression), Tensorflow 2.x, Stacking Ansemble(개별 모델은 KNN + 랜덤 포레스트 + 결정 트리 + 에이다부스트, 이들 모델의 예측 결과를 합한 데이터 세트로 학습/예측하는 최종(메타) 모델은 로지스틱 회귀)를 썼다. 이 중 적당히? 똑똑한 Logistic를 채택함!
졸음 확률 예측을 잔다 혹은 안 잔다로 이진 분류하는 것이 아닌 확률로 나타내도록 Predict_proba를 사용했다.
딥러닝을 위한 데이터는 눈을 뜬 사진과 안 뜬 사진의 이미지 스크래핑으로 BeautifulSoup(HTML을 분석 가능한 형태로 가공해주는 라이브러리)와 Selenium(웹 테스트 자동화 도구 라이브러리. 브라우저를 제어하는 기능이 있어 웹 스크래핑에 용이함)을 사용하여 크롬에서 가져왔다.
직접 수집한 약 1000개의 이미지를 CVAT이라는 레이블링 툴을 사용하여 눈을 떴을 때와 감았을 때로 레이블링 하였다.
직접 수집한 데이터도 사용하고, 눈만 크롭 한 이미지만으로도 학습해보았다.
딥러닝 모델은 각 조원이 구현한 것들 중 가장 성능이 좋고 프레임 당 처리속도가 가장 빠른 것을 채택했다.
내가 구현한 dlib의 Face Detector · Landmark + CNN,
창현님의 Darknet Yolo v3,
보연님과 엽님의 Ultralytics Yolo v5 중 Yolo v5를 선택!
WanDB의 평가지표를 그래프화 하는 기능으로,
여러 번 Hyper parameter와 epoch 수를 조정하고 학습하여 나온 결과 중 val loss가 가장 낮은 모델을 채택했다.
CNN 말고 추가로 써보고 싶었던 모델은 One-Stage Detector 중 EfficientDet, Two-Stage Detector 중 Faster R-CNN이었으나 시간 배분을 계획적으로 하지 못 했다.
내가 만든 CNN 모델로 동영상 상에 나오는 인물이 눈을 감고 있는지 뜨고 있는지를 예측하고, 프레임 당 예측값과 시간을 텍스트 파일로는 뽑았으나, MySQL로 연동(pymysql)해 DB로 저장하는 것은 실패했다ㅜ
예측한 레이블이 표시된 동영상을 저장(cv2.VideoWriter)하는 것도 실패.. 못 한 것 많네.. 😇
프로젝트 기획부터 네트워킹과 실제적인 구현까지 모든 방면에서 조장이 없었으면 엄두가 안 났을 프로젝트!
아두이노, MySQL, 장고까지 연결하는 코드를 따로 뜯어봐야 한다.
AI 프로젝트하느라 5조 고생 많았다요!!!!!
https://github.com/kch8906/5th_ML_Project/tree/main
GitHub - kch8906/5th_ML_Project
Contribute to kch8906/5th_ML_Project development by creating an account on GitHub.
github.com
내일부터 6/28 화요일까지 새롭게 융복합 프로젝트가 시작된다.
IoT, 빅데이터 분석, AI, 클라우드 4개 과정 훈련생들이 한 팀을 이루어 프로젝트를 진행한다.
총 4팀, 8개 조 중 내가 배정된 조는 3팀의 6조!
우리 반 3명, 다른 반 2명으로 AI에서만 5명이 투입되고, 각 과정에서 2명씩 들어와 총 11명으로 진행된다. 🤯
스터디를 같이 했던 분들과 또 만나게 되어 어느 정도 안심이 된다ㅎㅎ
과연 어떤 주제를 선정할지.. 열심히 해보자!
↓융복합 프로젝트 주제 예시↓
음성 챗봇, 나 홀로 소비지출 분석과 배달음식 정보 제공 및 음성 주문 서비스,
스마트 화분(식물재배 자동화), 색 기반 제품 분류 프로세스 자동화와 스마트공장 정보 제공,
가로등 모니터링, 가스 탐지 센서 기반 AI 서비스와 가스 관련 정보 제공 서비스,
대기오염 모니터링 및 알람 서비스, 안면인식 스마트 도어와 CCTV 관련 정보 제공
'멀티캠퍼스 프로젝트형 AI 서비스 개발 5회차 > 프로젝트' 카테고리의 다른 글
3/14 월_인터페이스 프로젝트 (0) | 2022.03.14 |
---|