https://arxiv.org/abs/1409.1556v6
Depth라는 ConvNet architecture 에 대해 다룬다.
mini batch = 256 , momentum =0.3 , weight decay = 0.005 , dropout = 0.5 ,
learning rate = 0.01 부터 validation set의 accuracy가 멈췄을때 10배씩 점차 줄여나가서 3번 줄어 들었고 74 epoch 학습 하였다.
Initial weight는 잘못하면 learning이 멈출 수 있기 때문에 중요하다. 이 문제를 해결 ( 돌아가기 )위해 random하게 설정 하여도 문제가 되지 않을 만금 shallow한 A를 학습하고 다음을 순차적으로 하였다. Deeper한 architecture를 학습할 때는 처음 4개위 convolution과 마지막 3개의 dense의 initial을 trained shallower weights 로 사용 하였다.
random initialization은 N(0,0.01)으 따른다.
편향의 initial은 0이다.
Input image size는 224×224이다. 이는 rescale된 image에서 random하게 잘린것이고 SGD iteration한번에 하나의 cropped image가 사용된다. 즉, augment이다.
추가적인 augment를 위해 좌우반전 RGB shift를 사용한다.
(training scale)를 isotropically-rescaled training image의 가장 짧은 부분이라고 해보자.
는 224보다 작을 수는 없다. ( input 224×224이므로 )
만약 =224이면 crop을 해도 같다.
>> 224이면 crop을 하면 부분만 추출될수 있다.
를 선택하는 방법에는 두가지가 있는데 첫번째는 fix이다.
본 연구에서 train 할때는 256으로 고정하여 학습 한 후 384를 할때 256으로 pre-trainde weights를 사용하여서 속도를 높였다.
두번째 방법은 를 범위를 설정하여 random sampling하는 방법이다.
256 ~ 512로하고 아마도 이때는 마지막에 FC가 아니라 FCN인거 같다.
이는 다양한 size의 image를 훈련할때 유리하다. Augment의 효과가 있고 이를 Scale-jittering이라 한다.
위와 비슷하게 384으로 pre-trainde weights를 initial로 사용하여서 속도를 높였다.
isotropically-rescaled
E.g) 512×1024 image를 small side가 256이 되게끔 1:2 ratio를 유지한채 256×512로 rescale한다.
그럼 이걸 256으로 학습하고 384로 학습한 후 다시 random으로 학습한건가???????????????
( Validation set으로 검증하는 과정이라고 보는게 맞지않나?
test라는단어를 사용하지만 validation set으로 test 한다고 봐야할듯 )
Training과 마찬가지로 isotropically-rescaled를 사용하고 라고 한다. =일 필요는 없다.
생각을 해보자. input에 따라 filter의 size가 바뀌지 않는다.
하지만 마지막 flatten에서 달라진다 그러면 무조건 trian의 input과 test 할때의 input의 form이 같아야 하는거 아닌가?
이를 해결하기 위해 다음과 같은 작업을 추가해준다.
import tensorflow as tf
from tensorflow.keras.utils import plot_model
model = tf.keras.applications.VGG16(
include_top=True,
weights="imagenet",
input_tensor=None,
input_shape=None,
pooling=None,
classes=1000,
classifier_activation="softmax",
)
plot_model(model,show_shapes=True)


추후정리 Localization임