프로젝트 및 실습/Pytorch (Computer Vision)

[Pytorch] 분류기 뉴럴 네트워크 개발 일기 (1) - 모델 생성

jooona 2021. 7. 23. 15:00
반응형

1. 환경 세팅

 

어떤 프로젝트든 환경 세팅에 가장 많은 시간이 들어가는 것 같다. 이번에도 GPU 호환 문제, Nvidia Driver 연결 오류, CUDA 버전 문제 등 각종 오류들을 이겨내고 겨우겨우 환경 세팅에 성공했다.

 

2. 데이터 구성

필자가 수행할 프로젝트는 모자, 외투, 상의, 하의, 신발 등 총 5개 클래스의 이미지를 분류하는 분류기를 만드는 것이다. 데이터 구성은 다음과 같다.

 

여기서 캐치할 수 있는 부분은 첫째, 상의의 데이터가 다른 모든 데이터의 합 보다 많다는 점. 둘째, 신발과 특히 모자에 대한 데이터가 부족하다는 점. 그리고 데이터를 실제로 열어보면 외투와 상의의 모양이 비슷해 과연 잘 구분을 해 낼 수 있을지에 대한 의문도 존재했다.

 

3. 데이터 전처리

 

데이터를 살펴보면 모든 데이터들이 공통적으로 상, 하단에 필요없는 부분이 존재한다. 이 부분을 잘라주고, 학습을 위해 256x256 크기로 모든 이미지들을 통일시켜 주었다.

 

4. 학습 모델

학습 모델로는 Alexnet, VGG Net, ResNET을 선정하였다. 이 중 VGG Net은 11층짜리로, ResNET은 50층짜리로 우선 학습을 진행하였다.

 

5. 학습 결과

 

전체적인 정확도는 90퍼센트 중반 대로 형성되었다. Confusion Matrix에서 눈여겨봐야 할 점은 외투에 대한 분류에서 외투인지 상의인지 분류가 제대로 되지 않았다는 점. 대신 데이터가 상대적으로 적어 우려했던 신발과 모자에 대한 분류는 거의 완벽하게 해내었다. 

 

6. 문제점 분석

문제점을 분석해보자면 아무래도 외투와 상의의 모양이 비슷하지만, 외투의 데이터가 상의의 데이터에 비해 현저히 적다는 점 정도를 꼽을 수 있을 것 같다. 

 

다음 글에서 계속.

 

코드는 https://github.com/JunhaLee/Pytorch_Practice 에서 확인할 수 있다.

 

GitHub - JunhaLee/Pytorch_Practice

Contribute to JunhaLee/Pytorch_Practice development by creating an account on GitHub.

github.com

 

 

반응형