자율주행 차량의 이미지 세분화 시스템 개발
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
인공지능
대상자
자율주행 차량 개발 담당 AI 엔지니어 및 소프트웨어 개발자
- 난이도: 중간 수준 (딥러닝, 이미지 처리 기술 필요)
핵심 요약
- MobileNetV2-UNet 아키텍처 사용: MobileNetV2 (가벼운 인코더) + UNet (세분화 디코더) 결합
- Cityscapes 데이터셋 활용: 30개 이상의 클래스를 8개 주요 카테고리로 축소
- 실시간 성능을 위한 224×224 이미지 리샘플링 및 데이터 증강 (수평 플립, 밝기 변조)
섹션별 세부 요약
1. 데이터 탐색 및 준비
- Cityscapes 데이터셋 분석: 5,000개 이미지 (2,975개 학습, 500개 검증, 1,525개 테스트)
- 리샘플링: 원본 2048×1024 → 224×224 (MobileNetV2 최적화)
- 데이터 증강:
- 수평 플립 (50% 확률)
- 밝기 변조 (±0.1)
- def augment_data(image, mask):
함수 구현
2. 모델 개발
- 아키텍처:
- 인코더: MobileNetV2 (가중치 고정: base_model.trainable = False
)
- 디코더: UNet의 U형 구조 (skip connection, upsampling)
- 최종 레이어: Conv2D(8, 1x1, activation='softmax')
(8개 클래스 확률 출력)
- 학습 전략:
- Transfer Learning: ImageNet 사전 학습 가중치 사용
- Batch Normalization 및 ReLU 활성화 함수 적용
3. 모델 배포
- REST API: FastAPI로 구축 (모델 추론 엔드포인트 제공)
- 프론트엔드: Next.js로 웹 애플리케이션 개발 (실시간 세분화 시연)
- 배포: Heroku (API) 및 Vercel (프론트엔드)
4. 평가 및 문서화
- 성능 검증:
- 정확도, F1-Score 지표 평가
- 데이터 누수 방지를 위해 원본 train
분할 (80% 학습, 20% 검증), val
데이터셋 사용 (테스트)
- 문서화:
- 기술 노트 작성 (GitHub: https://github.com/DavidScanu/oc-ai-engineer-p08-images-systeme-voiture-autonome)
결론
- 실무 적용 팁: MobileNetV2-UNet은 실시간 처리가 필요한 자율주행 시스템에 적합하며, 데이터 증강 및 클래스 축소 전략을 통해 리소스 제약을 극복할 수 있음.
- 모델 최적화: 가중치 고정, 리샘플링, skip connection을 통해 계산 효율성과 세분화 정확도 균형 달성.