프로젝트 팀원 분이 응가 사진 분류 사전 학습된 모델과 데이터셋을 찾아주셨다.
무려 1500장 가량의 응가 사진이 있다...!
https://universe.roboflow.com/smartgut/stool-classification-uvnqx
Roboflow 3.0 Instance Segmentation (Fast)로 YOLOv8-seg 혹은 YOLO11-seg의 경량화 버전을 기반으로 한다.
그런데 우리의 목적인 7단계 분류만을 위해서는 내가 사용했던 모델인 EfficientNet-V2-S이 더 적합할 수 있겠다는 생각이 들었다.
그래서 위 사이트에 공개된 데이터셋을 이용하여 EfficientNet-V2-S을 학습시켜보고자 한다.
| 구분 | Roboflow 3.0 (Fast) | EfficientNet-V2-S |
|---|---|---|
| 주요 태스크 | 인스턴스 분할 (Instance Segmentation) | 이미지 분류 (Image Classification) |
| 출력 데이터 | 객체의 위치(BBox), 클래스, 정교한 외곽선(Mask) | 이미지 전체에 대한 클래스 확률(Label) |
| 복잡도 | 객체 탐지 + 픽셀 단위 분류 (매우 높음) | 이미지 전역 특징 추출 (상대적으로 낮음) |
YOLO를 선택해야 하는 경우
초당 30~60프레임 이상의 실시간 속도가 중요한 경우.
NVIDIA GPU와 같은 가속기를 사용하여 서비스 배포를 하려는 경우.
CCTV 분석, 자율 주행, 실시간 불량 검수 등.
EfficientNet을 선택해야 하는 경우
이미지 전체의 특징을 파악하는 이미지 분류 작업이 주 목적인 경우.
학습 데이터가 적고, 모바일 기기의 CPU 환경 등 메모리 제약이 심한 곳에 배포해야 하는 경우.
의료 이미지 진단(질병 유무 판독)이나 정적 이미지의 카테고리 분류.
데이터셋은 목적에 따라 세 가지로 분리하여 관리한다.
| 데이터셋 | 역할 | 비유 |
|---|---|---|
| Train (학습) | 모델의 가중치를 업데이트하는 직접적인 학습 자료 | 교과서와 연습문제 |
| Valid (검증) | 학습 도중 성능을 평가하여 하이퍼파라미터를 튜닝 | 중간고사/모의고사 |
| Test (평가) | 학습 완료 후 한 번도 보지 못한 데이터로 최종 성능 측정 | 수능 시험 |
내가 몰랐던 용어 간단히 정리.
학습은 [Train 1회 -> Valid 1회]의 루프를 반복하며 진행한다.
수업 후 쪽지 시험을 보는 것과 비슷하다.
Train Loss와 Valid Loss를 비교한다.Loss가 낮아질수록 모델이 정답을 잘 맞히고 있다는 뜻이다. Train Loss는 계속 낮아지는데 Valid Loss가 오르기 시작하면 과적합(Overfitting)이므로 학습을 멈춰야 한다. (과적합: 대충 말하면, 이해해서 맞추는게 아니라 샘플들만 달달 외워서 맞추는 것)Valid 성능이 가장 좋았던 시점의 모델(best.pt)을 선택하여 마지막에 Test 데이터셋으로 최종 정확도를 산출한다. | 지표 (Metric) | 의미 | 비유 |
|---|---|---|
| Precision | 모델이 정답이라고 한 것 중 실제 정답의 비율 | 신중함: 틀린 답을 안 내놓는 능력 |
| Recall | 실제 정답 중 모델이 찾아낸 비율 | 꼼꼼함: 정답을 놓치지 않는 능력 |
| mAP50 | 예측과 실제 영역이 50% 이상 겹치는 평균 정밀도 | 종합 성적: 모델의 전체적인 성능 점수 |