[DL] 자동차 브랜드 분류 모델_1

YJ·2023년 7월 18일
0

데이터 파악하기

  • Number of Dataset
  • 브랜드별 2개씩 이미지 불러오기

1. TensorFlow

  • pretrained model 이용
  • IMAGE_SIZE = [224, 224]
  • 가중치 고정
  • flatten layer
  • fc layer
	prediction = Dense(8, activation = 'softmax')(x)
    model.compile(
        loss = 'categorical_crossentropy',
        optimizer = 'adam',
        metrics = ['accuracy']
)
  • Data Augmentation
    train_datagen = ImageDataGenerator(
        rescale = 1./255,
        shear_range = 0.2,  # 이미지 기울기
        zoom_range = 0.2,  # 이미지 일부 확대
        horizontal_flip = True  # 가로 반전
    )
    
    test_datagen = ImageDataGenerator(rescale = 1./255)
  • batch_size = 32
  • epochs = 50

① VGG16

https://colab.research.google.com/drive/1Hu24Zm2RsB6J1wVN1PvXJoUP-P29M7Qy?usp=drive_link

Data augmentation 적용하지 않은 경우

Data augmentation 적용한 경우

② ResNet50

https://colab.research.google.com/drive/1ptKKKnmrgBhE33YWLJuw3pLgTNPyFLcG?usp=drive_link

Data augmentation 적용하지 않은 경우

Data augmentation 적용한 경우

2. Pytorch

  • pretrained model 이용
  • IMAGE_SIZE = [224, 224]
  • batch_size=32
  • torchvision.transforms.normalize로 이미지 정규화
  • 기존에 정의되어 있던 classifier의 fc layer 직접 변경
  • loss, optimizer
    criterion = nn.CrossEntropyLoss()
    optimizer = optim.SGD(resnet_pt.parameters(),
                          lr=0.001, momentum=0.9, weight_decay = 0.0002)
  • epochs = 50

① VGG19

https://colab.research.google.com/drive/166OS0mkbaMQAopxf7xT7OKzam11zqs4N?usp=drive_link

이미지 정규화 하지 않은 경우

이미지 정규화 적용한 경우

  • test loss는 갈수록 높아진다..

② ResNet50

https://colab.research.google.com/drive/1l860F2jt_4u9JeAXOObgfoLsNbSF8h59?usp=drive_link

이미지 정규화 하지 않은 경우

이미지 정규화 적용한 경우

  • 큰 차이는 없지만, 정규화 했을 때 성능이 조금 더 높다.

Review

이미 학습되어 있는 모델을 사용했지만 비교적 성능이 괜찮았던 모델은 Pytorch로 구현했던 ResNet50이다. 같은 모델이여도 이미지 증강이나 이미지 정규화로 결과가 달라졌다.

  • 데이터가 적은 것 같다.
  • train/validation/test → validation 데이터 만들어서 교차검증하면?
  • Data Augmentation 적용해보기
  • Regularization(dropout) 적용해보기
  • pre-trained 모델 → fine tuning

0개의 댓글