• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

안녕하세요! 질문이 있습니다

23.04.17 22:56 작성 조회수 204

1

어제 질문 답변 감사드립니다! 궁금한게 해결되었습니다..ㅎ

오늘도 질문이 좀 있어서 여쭤보고 싶습니다..!

 

  1. 혹시 augmentation을 한 뒤에 데이터셋을 저장하는 코드를 알 수 있을까요?

예를 들어, 1000개의 이미지 데이터가 train_set에 있고, DataLoader에서 transform을 통해 이 1000개를 변형해가며 로드할텐데, 이 로드한 데이터들을 저장하고 싶습니다!

다양한 augmentation을 통해서 기존 데이터의 3배정도인 3000개의 변형 데이터들을 저장하고 싶은데 코드를 어떻게 짜야할지 모르겠어서 질문드립니다.

 

  1. 요즘 예전 대회들에 있었던 불균형 이미지 데이터 분류를 연습하고 있는 중인데, 라벨이 총 10개에 어떤 라벨에는 데이터가 600개 가까이 되고, 어떤 라벨에는 데이터가 10개도 안되는 경우들이 있는 불균형이 매우 심한 데이터들입니다. 이 불균형을 weightedrandomsampler에 augmentation을 활용하여 불균형을 해소하고자 하였습니다. validation용으로 원본데이터에서 30%만큼 지정을 해 둔 뒤, train용으로 원본데이터를 weightedrandomsampler를 활용해 원본데이터를 변형하고 가중치를 주어 데이터가 적은 라벨의 데이터를 늘려 학습했습니다. 그 뒤에 아까 분리해 놓았던 validation데이터를 분류했습니다만... 평가기준인 weighted F1 score가 생각보다 낮게 나와서 고민입니다..

    제 생각에는 결국 validation 데이터에는 여전히 라벨별로 불균형이 매우 심한 상태이므로 라벨별로 동등한 양의 데이터로 학습한 모델에서는 제대로 예측을 못한것이 아닐까합니다. 그래서 위에서 질문한 코드를 통해 변형된 데이터에 원본 데이터를 합쳐서 학습을 시키고, 그 다음에 validation을 하면 약간은 나아질까 하는 생각이 듭니다만.. 호형님이라면 어떻게 하실지 궁금해서 여쭤봅니다.

 

질문이 너무 길고 장황해서 죄송합니다..ㅜ

답변 1

답변을 작성해보세요.

0

안녕하세요.

  1. 파이토치에서 제공하는 transform을 이용한 이미지 생성에는 저장하는 기능이 없습니다. 하지만 수업 시간에 배운 커스텀 transform과 dataloader를 활용하여 충분히 만들 수 있습니다. 원하시는 클래스 구축 후 이미지를 불러오는 단계에서 저장하시면 될 것 같아요.

  2. 추가적으로 weighted loss function을 사용할 수도 있습니다. 그리고 data augmentation 기술이 crop, rotation과 같은 기본적인 data augmentation 말고도 종류가 많습니다. 이 부분에 관한 논문을 찾아보시면 좋을 것 같습니다!

감사합니다.