이미지 분류 해커톤: 데이터 속 아이콘의 종류를 맞혀라!

데이콘 해커톤 | 알고리즘 | 입문 | 비전 | 분류 | Accuracy

  • moneyIcon 상금 : 데이스쿨 프로 구독권
  • 2025.03.04 ~ 2025.04.30 09:59 + Google Calendar
  • 744명 마감

 

[Public 0.88] VGG19 dense evaluation 버전

2025.04.10 12:19 721 조회 language

Training 시 50% 확률로 batch 이미지들에 Horizontal Flip(수평반전)을 적용.
VGG19의 classifier를 1x1 convolution layer로 변경하여 dense evaluation으로 평가해서 파라미터 규모 감소.
p.s.) EISLab_이희원님의 코드(https://dacon.io/competitions/official/236459/codeshare/12245?page=1&dtype=recent)를 일부 참고하였습니다.

코드
로그인이 필요합니다
0 / 1000
최재욱
2025.04.11 20:36

안녕하세요 혹시 이 코드를 그대로 실행하면 정확도가 다른데 추가적으로 수정해야 될까요?

song9
2025.04.11 22:12

test_transform에 ToPILImage(), ToTensor()를 빼먹었네요;; 수정했습니다. 다시 해보니 public 0.88 나옵니다.

최재욱
2025.04.12 01:17

네 확인했습니다. 감사드립니다

최재욱
2025.04.12 01:27

그런데 public 상에서 0.10 이 나오는 것 같습니다
val_acc 는 0.85가 나옵니다

song9
2025.04.14 10:39

확인해보니 DataLoader에 Generator까지 지정해줘야 완전히 랜덤성 제어가 되네요.

g = torch.Generator()
g.manual_seed(SEED)
train_loader = DataLoader(train_dataset, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_fn_train_transform, generator=g)

이렇게 고정하고 제출했을 때 2번 모두 0.888 나왔습니다. 

이외에 생각해볼 수 있는 문제는 모델 파라미터 초기화 문제입니다.VGG 논문에서도 깊은 layer의 네트워크를 학습시킬 때 11 weights layer로 구성된 네트워크 중 7개의 layer 파라미터를 복사해서 파라미터 초기화에 사용했습니다. 저도 vgg를 사용하는 이후 코드에서는 vgg11을 먼저 학습시키고 feature extractor에서는 4개의 conv. layer를, classifier에서는 3개의 layer 전부를 복사해서 파라미터 초기화에 사용합니다.