ai-starthon / AI_Starthon2019

60 stars 44 forks source link

4_cls_food test_label의 class index와 훈련 코드 class index 일치 여부 질의 #230

Open marukitto opened 5 years ago

marukitto commented 5 years ago

4_cls_food test_label (prediction G.T. 값)에 있는 class index 값이 훈련코드에서 사용(torchvision 에서 자동으로 생성)하는 class index 값과 동일한지 조심스럽게 문의드립니다.

문의를 드리는 이유는 다음과 같습니다:

대회가 얼마남지도 않았는데, 귀찮은 부탁 드려서 죄송합니다.

Teora commented 5 years ago

7번 문제도 같이 확인 부탁 드려도 될까요? 마찬가지로 validation 과 test 사이의 accuracy 오차가 차이가 크게 납니다.

yjyoo3312 commented 5 years ago

안녕하세요 clova 입니다

테스트 음식 id와 트레이닝 음식 id는 일치하게 설계되어 있습니다 acc이 0.x 이상으로 나오시는 경우 잘 구현을 하셨다고 생각이 됩니다.

다만 validation에서 유의하실 점은

4번에서는 training data overfit을 방지하기 위해 각 테스트 클래스에 해당하는 음식들을 트레이닝 셋과 별개로 따로 크롤링해서 사용하고 있다는 점입니다.

또한 7번에서는 validation 셋을 베이스라인 코드를 그대로 쓰시면 성능이 나올 수 없게 되어있습니다 readme의 데이터부분을 유심히 관찰하시고 데이터로더 및 val 셋 설계를 하는부분도 문제의 중요한 부분으로 되어있습니다

감사합니다:)

HanyangRobot commented 5 years ago

@yjyoo3312 저도 궁금한게 저희는 케라스를 사용중이라 파이토치를 사용해본적이 없고 파이토치의 데이터로더를 사용하지 않습니다. 베이스라인코드에서 사용하는 data_local_loader의 gt_label을 어떤 순서로 뽑아오는지에 대해 궁금한데요 예를 들ㅇ ㅓ 폴더가 apple banana camera 이렇게있다면 클래스 라벨 넘버링을 apple : 0 banana : 1 camera : 2 이렇게 알파벳순서대로 지정하는건지 랜덤으로 셔플링해서 들어오는건지 그리고 케라스를 사용하면 학습시킬때는 food의 경우 클래스가 총 150개인 상태에서 라벨링을하고 학습시킵니다. 하지만 submit 시 보는 데이터 셋은 클래스가 113개 밖에없는데 keras 를 사용하면 data셋 경로에 있는 폴더 갯수만큼 클래스를 생성합니다. 혹시 submit 데이터셋의 폴더가 빈 폴더이지만 클래스로 인식되는 150개의 폴더가 있는건지 아니면 클래스에 맞게 113개만 존재하는것인지도 알려주셨으면 합니다.

yjyoo3312 commented 5 years ago

예 파이토치 역시 alphabetical order로 각 폴더에 class index를 부여합니다. 말씀하신 대로 training에는 150개, test에는 113개로 일반적으로 data loader 의 index를 사용하면 서로 그 값이 맞지 않게 되고 결과가 1% 미만, 랜덤 샘플과 같이 나옵니다.

그래서 test 및 test submit에는 각 폴더에 해당하는 class index가 트레이닝 시에 부여된 class index 와 일치되도록 저희가 manual하게 조정을 하였구요 따라서 트레이닝 시에 할당된 인덱스를 그대로 사용하시면 됩니다.

감사합니다:)