Ttoro_Tech

[AIVLE_3기]_8주차_Mini_project_1st 본문

KT AIVLE School 3기 기자단/Mini Project

[AIVLE_3기]_8주차_Mini_project_1st

Lee_Ttoro 2023. 3. 27. 16:44

3차 미니프로젝트 1번째 주제

차량 공유업체의 차량 파손 여부를 분류하자

sub : ResNet18, VGG-16, Image Classification Task

1. DataSets

  • 주어진 데이터는 실제 차량 파손 이미지를 구하기 어려움으로,
    DALL-E 라는 이미지 생성 모델을 통해 학습 데이터를 생성한다. (정상 이미지 302개, 비정상 이미지 303개)

Dataset 분리

  • train, validation, test 데이터 셋 추출
    • splitfolders 모듈을 사용
    • train:validation:test = 0.6:0.2:0.2의 비율로 나눔
    • 각각 Car_Images_train, Car_Images_val, Car_Images_test라는 새로운 폴더에 저장하였음. 
  • 각 폴더 안에는 abnormal / normal 폴더가 별개로 존재함.

분할 결과

2. Input Data 전처리

이미지 데이터를 배열 데이터로 변환

  • 학습에 용이하기 위해 이미지 크기를 280 * 280으로 변환한다.
  • Min_Max Scale을 통해 범위를 일정하게 유지하게 해, 학습에 안정화를 줌.
  • 추가로 다양한 이미지 전처리 필터를 통해, 실험을 진행함.

2.1 추가적인 실험

  • RGB를 Gray Scale로 변환

RGB 이미지를 Gray로 변환

OpenCV의 Contour 함수 적용

Contour 함수를 통해 스크래치가 잘 보이게 해 적용

3. 모델

VGG-16[paper]

  • 이미지 분류를 위해, 기존 ImageNet으로 Pretrained된 VGG-16 모델을 사용함.

  • 모델 구조는 변경하지 않고, 마지막 FC layer에 노드 수가 128개인 hidden layer를 추가
  • Output layer는 우리의 문제에 맞게 이진 분류 layer로 수정함. 

약 96% 정확도를 보여준 모델

ResNet18[paper]

  • 데이터가 적어, 큰 모델은 Overfitting이 발생하는 것을 발견하고 ResNet 중 가벼운 모델인 ResNet18을 선택
  • 이번 학습에는 이미지 크기를 기존 논문에서 사용한 이미지 크기인 (224 * 224)로 변환해서 진행
  • VGG-16 모델과 동일하게, Transfer Learning을 사용하였으며, 마지막 layer를 이진 분류 layer로 변경함.

약 95% 정확도를 보여준 모델

4. 결과

VGG-16과 ResNet18을 사용하여, Transfer Learning한 결과 약 95% 이상의 정확한 분류를 보여주었다.

5. 결론

  • 모델을 학습하던 중 Validation Accuracy가 0.5에 갇혀서 빠져나오지 못하는 경우가 다수 발생하였다.

실험 중 다수 발생한 문제

  • 원인 1.
    • validation data에는 train data와 달리, 데이터 증강 (Data Augmentation)을 적용할 경우 이러한 문제가 발생한다.
  • 원인 2.
    • 다양한 실험 중 사용한 모델이 데이터 수에 비해 큰 모델들(ResNet50, EfficientNet 등)을 사용하여, 과적합이 발생해 이와 같은 문제가 발생하였다.
  • 이에 실제 Task에서는 더 많은 사고 차량의 데이터를 수집하여 학습한다면, 더 정확한 분류 모델 개선에 힘쓸 수 있을 것으로 기대된다.

6. 마무리

  • 다양한 방법으로 차량 파손 여부 분류 문제 해결 모델을 작성하였다.
  • 하지만 데이터가 충분하지 않아, 큰 모델(층이 깊을수록, Parameter가 많을 수록)일수록 오히려 성능이 떨어지는 모습을 보여주었다
  •  따라서 사전학습 모델 중 작은 모델인 VGG16과 ResNet18을 선택하였으며, 두 모델 모두 95%이상의 정확도를 보여주었다.
  • 이후 쏘카에서 사용하는 방법인 이미지 필터링이나, 파손 부위를 감지하여 분석하는 Image Detection 문제로 확장할 수 있을 것으로 기대된다.