ResNet34 모델을 기반으로 지하철 차량의 형상으로 차종 구분하는 모델 학습
SVCM은 'Subway Vehicle Classification Model'의 약자입니다.
파일 또는 폴더 이름 | 설명 |
---|---|
app | 샘플 안드로이드 앱 소스코드 |
datasets | 지하철 차량 이미지 데이터셋 |
models | 학습된 모델 |
classification.ipynb | ResNet 기반 학습 코드 |
학습을 하기 위해선 아래의 요구사항이 필요합니다.
- Anaconda
Jupyter Notebook을 통해 classification.ipynb을 실행하려면 Anaconda가 필요합니다. - GPU
필수는 아니지만 빠른 학습을 위해 CUDA를 지원하는 GPU가 필요합니다. - PyTorch
PyTorch 2.0.0 이상의 패키지를 권장합니다.
torchvision 패키지의 버전이 0.15.0 이상이어야 올바르게 작동하므로 아래의 명령어를 통해 최신 PyTorch를 설치합니다.
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
CUDA 버전이 다르거나 CPU로 학습을 할 경우에는 PyTorch 설치 명령이 달라질 수 있습니다.
또한 안드로이드 앱 빌드를 위해 Android Studio가 필요합니다.
수도권 전철 7호선에 운행중인 열차 5종에 대한 전두부, 측면부 사진 총 128장으로 구성되어 있으며 각 차종별 이미지 수는 다음과 같습니다.
순번 | 대표사진 | 종류 | 이미지 수 |
---|---|---|---|
1 | 1차분 | 7 | |
2 | 2차분 | 30 | |
3 | 3차분 | 31 | |
4 | 4차분 | 30 | |
5 | 5차분 | 30 |
각 차량별 실제 특성은 나무위키의 서울 지하철 7호선 7000호대 전동차 문서의 분류 항목을 확인해주세요.
해당 모델의 사용 예시를 보여주기 위해 샘플 앱을 제작하였습니다.
샘플앱은 릴리즈에서 다운받을 수 있습니다.
샘플 앱에서는 카메라로 플랫폼에 있는 열차를 비추면 차종별 특성을 승객에게 안내해줍니다.
열차 차종을 앱을 통해 구분하여 열차 이용에 장애가 될 수 있는 요인을 확인할 수 있는 배리어 프리 앱의 예시입니다.
7호선의 종점인 도봉산역에서 촬영하였습니다.
2.mp4
5.mp4
- 다양한 모델을 사용해 보면서 성능 비교
- 데이터셋 추가
- 앱 기능 개선
- Tensorflow를 이용한 애완동물 영상 세부 분류
열차 종류 분류기를 만드는 것이 고양이의 품종을 구분하는 것과 동일할 것으로 보고 해당 자료를 확인하였습니다. - Oxford-IIIT Pets-Pytorch
위의 글에서 소개되어 있는 'Oxford-IIIT pet dataset' 데이터셋으로 PyTorch 환경에서 학습을 하는 코드를 참고하였습니다. - PyTorch for Android - Image Classification App
PyTorch에서 학습한 모델 파일로 안드로이드에서 이미지 분류 앱을 만드는 유튜브 강의입니다. - PYTORCH 모바일 성능 레시피
PyTorch에서 모바일 환경에 사용할 수 있는 모델 파일 형식으로 추출하는 방법을 확인하였습니다.
이 프로젝트는 MIT 라이선스를 따릅니다. 자세한 내용은 LICENSE 파일을 확인하세요.