Skip to content

Basic Convolutional Model

Ildoo Kim edited this page Apr 17, 2018 · 13 revisions

Basic Conv Model

단순한 Segmentation Map을 출력하도록 트레이닝. 휴리스틱한 방법으로 Instance를 분리해서 Kaggle 제출하는 형태의 Baseline Model.

Models

v1 : 6 Convolutional Layers

  • Layer1 : 3x3x32 + Pooling
  • Layer2 : 3x3x64 + Pooling
  • Layer3 : 3x3x128 + Pooling
  • Layer4 : 3x3x256
  • Concat : Layer1~4 를 모두 UpScale한 후 합쳐서 FeatureMap을 만들
  • Layer5 : 1x1x256, Concat Layer가 너무 크기 때문에 채널 수를 줄이기 위해서 1x1 conv를 사용함
  • Layer6 : 3x3x1, 최종 HeatMap 출력함

v2 : add 2 conv layer.

v1 이 underfitting 성향이 있다고 판단하여, 네트워크 width를 늘리거나 depth를 늘려가며 얻은 두번째 버전.

  • 3x3x128
  • 3x3x256
  • 1x1x32 -- bottleneck
  • 3x3x64 + Pooling
  • 3x3x128 + Pooling
  • 3x3x256 + Pooling
  • 3x3x512 + Pooling
  • 3x3x256
  • Concat : 모두 사이즈를 맞추어 합침
  • 1x1x256 -- bottleneck
  • 3x3x1, 최종 HeatMap 출력

Results

Model Test Validation Loss Validation mIOU Kaggle LB
v1 Default1 0.0908 0.48 0.195 (1)
v1 Default2 0.0613 0.48 0.221 (1)
v1 Augment 0.0729 0.59481 0.23 (1)
v1 Augment+Separator 0.0757 0.6259 0.259 (1)
v1 Aug+Sep+mIOU 0.0696 0.37819 0.265
v1 Aug2+Sep+mIOU+I2 0.0798 0.39075 0.267
v1 Aug2+Sep+mIOU+I2 0.0760 0.39242 0.270
v2 Aug2+Sep+mIOU+I2 0.0597 0.4254 0.296
  • 실험할 때마다 seed에 의해 결과 차이가 좀 나는 편임.
  • Separator : Post Processing으로 인접한 셀을 구분하는 코드
    • Separator가 성능이 잘 나오려면 segmentation 결과가 깔끔하게 나오는 경우여야 할 것. 가정이 둥글게 세그먼테이션될 거라는 가정이므로, 결과가 깔끔하지 않으면 이상하게 잘려나가는 케이스가 아주 많음.
  • Augment : flip, scaling
  • Augment2 : Augment + ColorShuffle + RandomAffine
  • I2 : 3Channel Color Input

(1) mIOU 결과 계산이 정확하지 않아 수정되기 전 결과임