sangmandu / 2022-DCC

0 stars 1 forks source link

AutoEncoder & RGB Raw Image Clustering #6

Open sangmandu opened 1 year ago

sangmandu commented 1 year ago

목차

결론

오토인코더를 학습시킨 후 인코딩된 이미지 임베딩을 이용하여 클러스터링을 하였습니다. 이미지 임베딩을 PCA로 차원 축소하고 Kmeans로 클러스터링을 진행하였습니다.

레이어를 깊게 쌓지 않은 2-layer의 feature map channel이 점점 늘어나는 CNN 구조가 제일 성능이 좋았습니다. 또, PCA를 2D보다는 3D로 했을 때가 더 성능이 좋았지만, 눈에 띄는 차이는 없었습니다.

최고 성능은 다음과 같습니다.

이는, recall 점수가 높다는 점에서 대부분의 실사 이미지는 모두 클러스터링 하지만 precision 점수가 80점대라는 것은 적지 않은 수의 일러스트 이미지도 실사로 분류해버렸다는 뜻입니다.

마지막으로, 실제로 RGB 값에 대해서만 PCA를 해도 0.87의 f1 score를 얻다보니까(실험 서순을 RGB 부터 해봤어야 했는데,, 슬프네요) 오토인코딩을 실제로 할 필요가 있는가에 대해서 저는 할 필요가 없지 않나라고 결론을 내리게 된 것 같습니다. 지금부터는 모델보다는 raw 이미지 자체를 어떻게 활용할 것인가에 대해 더 고민해봐야 할 것 같습니다.

실험 내용

실험 1 이미지 임베딩

실험 1 결과

  • FC는 색은 어느정도 표현하지만 외형을 거의 표현하지 못했습니다.
  • Conv는 거의 대부분의 색을 표현하고 외형도 저품질이지만 매우 잘 표현합니다. image
  • Conv 성능
  • 2D precision 0.7910758965804837 | recall 0.9854545454545455 | f1 0.8776312745778394
  • 3D precision 0.7917362270450752 | recall 0.9854545454545455 | f1 0.8780374913214533
  • 기본 RGB값을 바로 PCA에 활용했을 때도 Conv와 동일한 성능을 냈습니다.
  • 2D precision 0.7937238493723849 | recall 0.9854545454545455 | f1 0.8792584009269988
  • 3D precision 0.7953878406708595 | recall 0.9854545454545455 | f1 0.880278422273782

실험 2 CNN Feature map size

Let Feature map size bigger than initial channel size

실험 2 결과

  • ConvFMConv보다 디코딩 과정에서 이미지의 색과 외형을 더 잘 표현합니다. 클러스터링 성능 또한 5% 더 높습니다. image

실험 3 CNN Layer depth

Let CNN Layers deeper

실험 3 결과

  • DeepConvFMSmallDeepConvFM은 색을 아예 표현하지 못했고, 물체의 실루엣 정도는 표현하였으나 완벽하게 외형을 표현하지 못했습니다. image
  • BigConvFM의 경우 외형과 색은 잘 표현하였으나 성능 자체는 ConvFM 보다 낮았습니다. (실험 4 참고) image

실험 4 PCA 2D and 3D

실험4 결과

  • 3D가 성능이 더 좋지만 눈에 띌 정도에 큰 차이는 보이지 않습니다.

코드

스케치 영상 검색 위한 분류기/experiments/01_clustering.ipynb

qwqw82000 commented 1 year ago

이거 pca로 차원 떨꿔서도 한번 해볼께요