모델 고민(YOLO + CNN + LSTM)
데이터를 AI HUB, YawDD 로 확정 후 YOLO + CNN + LSTM 모델 구조로 고민
sol-commits Feb 25, 2025
데이터는
- AI HUB 운전자 탑승자 상태 및 이상행동 모니터링
- 로컬에서 100GB → 여러 tar로 분할 → 구글 드라이브 업로드
- 코랩에서 작은 용량의 tar 압축 해제 → 구글 드라이브에 저장
AI HUB 데이터가 커서 공유하는 과정이 고통이었음.. 🥲
하나의 큰 tar 파일들로 공유가 되는데 구글 드라이브에 올린 다음 코랩으로 압축해제 하는 게 안됨(너무 많이 접근해서 그런다나..)
tar를 tar 안 최상위 디렉토리마다 작은 tar로 분할하는 코드
코랩 코드
- YawDD
를 사용하기로 했다.
모델 고민
팀원들과 모델 구조에 대해서 얘기를 나눴다.
- YOLO을 통한 객체 검출
| 목적 | 운전자의 얼굴, 손, 휴대폰 등의 객체를 검출하여 각 프레임에서의 객체 위치 정보 획득 |
| 구현 | 사전 학습된 YOLOv4 또는 YOLOv5 모델을 사용하여 객체를 검출 각 객체의 바운딩 박스 좌표와 클래스 정보 획득 |
- CNN(pretrained)을 통한 특징 추출
- 객체 검출 후 관심 영역(ROI)만 CNN에 입력
- 바운딩 박스 내 영역만 잘라낸 이미지 = 이미지 패치
- 검출된 객체만 CNN에 입력하면 불필요한 배경 정보를 줄일 수 있음
- 객체 기반 특징 추출을 위한 활용
- “운전 중 핸드폰을 사용하고 있는지”를 판단할 때, 전체 이미지 대신 이미지 패치를 CNN에 입력하면, CNN이 더 정확하게 핸드폰 조작 여부를 학습 가능
| 목적 | YOLO로 검출된 각 객체의 이미지 패치를 입력으로 받아, 해당 패치의 특징 벡터를 추출 |
| 구현 | 사전 학습된 ResNet50 또는 MobileNetV2와 같은 경랴오하된 CNN 모델을 사용하여 각 이미지 패치에서 특징을 추출 |
이미지 패치 - 원본 이미지에서 특정 부분을 잘라낸 작은 영역
이미지 패치 역할
- LSTM을 통한 시간적 패턴 학습
| 목적 | 연속된 프레임에서 추출된 특징 벡터의 시퀀스를 입력으로 받아, 시간적인 패턴을 학습하여 운전자의 상태를 분류 |
| 구현 | LSTM 또는 Bi-directional LSTM 레이어를 사용하여 시간적 의존성을 모델링하고, 최종적으로 소프트맥스 활성화 함수를 가진 출력 레이어를 통해 네 가지 클래스(전화 사용, 문자 작성, 졸음 운전, 정상 운전)로 분류 |