랜드마크 분류 AI 경진대회

알고리즘 | 이미지 | 분류 | 상권 | GAP

  • moneyIcon 상금 : 1,500만원
  • 678명 마감

 

코드 하나로 끝내는 Training / Test / Submission

2020.10.23 22:18 7,880 조회 language

안녕하세요.
DACON을 이번에 처음 접하게 되었는데, 흥미로운 주제가 많아서 재미있네요!

제가 공유하는 코드는 "코드 하나로 끝내는 training/test/submission" 으로, 제목 그대로 이 코드 하나로 Training과 Test, 제출 파일 생성이 모두 가능한 코드입니다. 이 코드로 구동시킨 첫 모델이 Test 0.95정도 나오네요.
아직 Data augmentation이나 다른 기법들을 구현해 넣진 않았지만 대회 참여를 위한 기본적인 Baseline 코드 정도는 공유할 수 있지 않을까 싶어 올려봅니다.
부족하지만 잘 봐주셨으면 좋겠습니다.
---------- 10.26 수정사항----------
- glob()의 .jpg를 .JPG로 수정하였습니다. (리눅스 대응)
- args.batch_size가 실제 batch_size에 영향을 주지 않는 문제를 해결했습니다. 이제 정상적으로 args.batch_size로 batch size를 조절할 수 있습니다.

코드
로그인이 필요합니다
0 / 1000
Taepungi
2020.10.24 16:22

오 간단한 모델로도 성능이 좋게 나오는군요

콜라겐
2020.10.25 15:06

아 0.95 나온 모델은 제가 짠 ResNet 모델이에요. 위 모델은 예시로 작성한 모델입니다!

Taepungi
2020.10.25 19:33

아하 그랬군요 resnet만으로도 저리 잘 나오다니 ㅋㅋ 저도 어서 짜보아야겠어요!

hipdizzy
2020.10.27 16:54

image = np.transpose(image, axes=(2, 0, 1)) 축을 바꾸는 이유가 뭔가요 ㅠㅠ?? 알려주실수있나요?

콜라겐
2020.10.27 17:17

Image.Open으로 PIL 이미지를 불러오면 (Width, Height, 3)으로 불러와 집니다.
Pytorch에서는 Conv2d의 input을 (Batch, Channel, Width, Height)로 입력해야 하기 때문에 np.transpose(image, axes=(2, 0, 1))을 이용하여 (Width, Height, 3)을 (3, Width, Height)로 변환시켜 줍니다.

콜라겐
2020.10.27 17:17

다른 방법으로는 torchvision.transforms.ToTensor()로 transpose와 range[0,1] 변경을 동시에 해주기도 하는데 여기서는 사용하지 않았습니다.

신백균
2020.11.01 11:14

안녕하세요! 코드 잘 봤습니다.
아래 코드는 왜 필요한 것인가요?
glob(args.train_dir + "*/*/" + filename.replace('[', '[[]') + ".JPG")

이름에 '[' 가 들어간 문자는 [[]로 바꿔준다는 것 같은데, 이 코드로 인해 list out of index 에러가 뜨더라고요 ㅠ

콜라겐
2020.11.02 15:33

데이터셋 중에 파일명에 [가 들어가는 랜드마크가 하나가 있는데, [가 glob에서 unicode escape을 일으켜서 에러를 생성합니다. 이를 회피하기 위해 [를 [[]로 replace시키면 해결할 수 있어 추가시켰습니다.

콜라겐
2020.11.02 15:35

glob은 argument의 형식에 맞는 경로들을 리스트 형태로 뽑아주는 라이브러리입니다. 따라서 list out of index가 뜨는 문제라면 glob이 argument의 형식에 맞는 경로를 찾지 못한 것입니다. 즉, 데이터 경로가 제 설정과는 다르셔서 생기는 문제인 것 같습니다.

신백균
2020.11.02 23:52

감사합니다 ^^