작성
·
824
0
안녕하세요 강사님!
데이터 증강 관련해서 2가지 질문이 있습니다.
먼저, 제가 다루고 있는 이미지 데이터가 ok/ng 2분류 데이터인데, ng 데이터가 적은 불균형 데이터입니다.
강의에서 설명해주신 데이터 증강은 불균형보단 데이터셋 전체 크기가 작은 상황을 가리키는 것 같은데요. 가지고 있는 데이터가 불균형을 이룰 경우 데이터 증강을 어떤 식으로 사용해야 하는지 궁금합니다.
ng 데이터만 따로 증강을 적용해서 해당 이미지들을 저장하여 학습시켜야 할까요?
두 번째 질문은..
데이터 증강을 적용했을 때 얼마나 더 많은 이미지를 변형시켜 만들어내는지는 model을 학습시킬 때 지정한 파라미터 epochs를 통해 판단하면 되나요?
ImageDataGenerator를 통해 변형을 시켰지만, 얼마나 더 많은 이미지를 만들어냈는지는 잘 모르겠습니다.
답변 1
0
안녕하십니까,
생각해볼 거리를 제공하는 좋은 질문이군요.
불균형한 이미지 데이터 문제를 개선하기 위해 augmentation을 활용하기도 하지만 성능 향상을 크게 기대하기 어려운 경우가 많습니다.
일반적으로 이미지의 불균형 문제는 이미지 분류에서도 큰 문제 입니다. 가령 반도체 웨이퍼의 불량이미지를 검출한다고 할 때 일반적인 반도체 웨이퍼의 이미지는 매우 많지만 불량 이미지의 갯수는 상대적으로 적은 경우가 대부분이어서 모델 학습에 어려움이 있을 수 있습니다.
초기에 이런 문제를 해결하기 위해서 말씀하신대로 학습을 시키기 이전에 먼저 건수가 작은 이미지들을 augmentation으로 이미지를 증가시키는 기법을 적용하는 방법을 사용하기도 했습니다.
하지만 augmentation이 기본적으로는 원본 이미지를 기반으로 색상/명도/조도 또는 위치 변경등의 변형 작업을 수행하기 때문에 모델 성능을 크게 향상시키지는 못했습니다. 또한 학습 시에는 없던 다양한 형태의 이미지들이 테스트 데이터로 들어오게 되면 어쩔수 없이 성능이 저하되게 됩니다.
그래서 GAN 기법을 이용해서 synthetic 이미지를 만드는 방식도 한동안 유행하는데, 이 방식 역시 Augmentation보다는 조금 낫지만, 성능을 크게 향상 시키지는 못하게 됩니다.
이러한 문제는 아직도 개선을 위해서 많이 연구중이며 semi supervised나 self supervised와 같은 방식이 활발하게 연구중입니다.
네 맞습니다. 대략적 으로나마 이미지 변형 횟수는 epochs 횟수 정도로 가늠할수 밖에 없습니다. 왜냐하면 수행이 될 때마다 반드시 변형이 되는게 아니고 random으로 변형 확률이 정해지기 때문에 그렇습니다.
감사합니다.