Open YunjeongPARK1 opened 5 years ago
7/23 Residual Network가 왜 잘 되는지 해석해보기
Deep 한것이 더 좋나??
residual 이 왜 잘되는지?
ResNet과 앙상블 모델
Wide Residual : Deep 한것만이 중요하지는 않다.
7/24 Weakly Supervised Localization
물체가 뭔지 알려주는것도 중요하지만, 어디에 있는지 알려주는것도 중요하다.
이미지와 라벨만 가지고 어디에 있는지 알려주는 것이 WSL
원래는 이미지에서 어디에 있는지 바운딩을 해서 알려줘야 한다.
Convolution이 내부에서 어떻게 일어나는지를 통해서 물체의 위치를 확인해보는것.
의료 영상 같은 경우에서 중요하다.
AlexNet + GAP + places205 이루어진 알고리즘 구성
CNN을 정의하고, Feature 맵이 나오면 GAP(Global average pooling) 하여 벡터 한 줄을 얻고 벡터를 통해 분류를 하면 된다.
GAP 썼을때 왜 잘되는지?
Class Activation Map
GAP vs GMP
GAP 의 성능
Localization
Scene Recognition + Localization
Concept localozation
결론
Weakly Supervised Localization
-어떤 물체인지도 중요하지만 어디에 있는지 아는 것도 중요 -어디에 있는 지 아는 문제를 푸는 것 : detection, localization
-원래는 detection을 풀기 위해서는 물체가 어디에 있는지 네모 박스로 친 정보가 데이터셋 자체에 있어야 함 -> 데이터셋을 만들기 까다로움 -이 알고리즘은 데이터에 라벨만 있어도 network가 자동으로 어디에 있는지 알려줌.
-Class Activation Map: Convolution이 어디서 일어나는지를 보고 그것을 통해서 물체가 어디있는지 알아보자는 것. -in One CNN forward pass: 한 번만에 된다.
-의료 영상에서 중요: 어디에 문제가 있는지 알려주는 것이 중요하기 때문에 -CNN을 디버깅 하는데 있어서 중요: Convolution이 제대로 안 일어날 때 어디에서 activation을 해서 제대로 안되고 있는지 살펴볼 수 있다.
-Architecture : AlexNet + GAP + places205 : 구현이 굉장히 간단하다 : GAP(Global Average Pooling) 왜 얘를 썼을 때 잘되는가?
-결국 CNN이 어떻게 동작하는지 알면 GAP도 이해가 된다. : Indentify important image regions by projecting back the weights of output layer to convolutional feature maps. : convolution feature map : 앞단에서 convolution을 통해 얻어지는 정보 : convolution : convolution feature map과 이미지 혹은 앞단의 convolution feature map이 얼마나 비슷한지를 나타냄. : 결국 convolution feature map의 채널들이 의미하는 바는 convolution feature로 이미지를 찍었을 때 그 둘이 얼마나 유사한가를 나타냄. : 채널이 512개 -> 각각의 convolution filter와 이미지가 얼마나 잘 맞는지가 512개 : Wn : n번째 feature가 분류하려는 것과 얼마나 유사한지 : GAP : 각각의 convolution channel에 weighted sum을 해서 얻음. : 물체 전체의 위치를 고려하되 분류하려는 것에 해당하는 물체는 웨이트가 크므로 더 많이 고려하게 됨. : 최종적으로 분류하려는 문제에 해당하는 물체의 위치를 잡음.
-GAP vs GMP : GMP는 제일 큰 값 하나를 쓴 것. : GAP는 물체 전체를 보는 반면 GMP는 물체의 하나의 특징적인 부분에 집중한다. : GAP가 localization에서 성능이 더 좋다.
-Classfication : GAP를 쓰면 분류 문제는 조금 못 푸는 편이다.
-Localization : 히트맵 근처에 바운딩 박스를 침.
-weakly vs weakly : GAP가 성능이 좋다.
-weakly vs fully - supervised : GAP가 성능이 조금 안좋으나, GoogleNet이랑 함께 사용하고 fully supervised에 AlexNet을 사용하면 성능 차이가 별로 나지 않는다.
Image Detection 방법론: RCNN, SPPnet, FastRCNN, FasterRCNN
RCNN
SPPnet (Spatial Pyramid Pooling)
Fast R-CNN
Faster R-CNN
Image Detection 방법론: AttentionNet, SSD, YOLO, YOLOv2
AttentionNet
YOLO (You only look once)
SSD (Single Shot Multi Box Detector)
YOLO 9000
Image Detection 방법론 : RCNN, SPPnet, FastRCNN, FasterRCNN 오늘 공부할 내용은 1. RCNN 계열 2. YoLo 등 좀 더 빠른 방법론
일반적으로 CNN 이 잘 되는 이유는 이미지에서 feature를 잘 뽑기 때문이다. 즉, 다시 말해 convolution, subsampling을 이용한 feature extractor로서의 역할을 잘 하기 때문이다.
하지만 물체에 네모를 쳐줘야 하는 문제가 이미지 detection을 어렵게 만든다. 그래서, 초창기에는 이 문제를 이미지에서 바운딩 박스를 많이 뽑아내고 원하는 사이즈로 resize한 다음, pretrained CNN에 넣어서 feature를 뽑고 돌렸다.
R-CNN은 세 가지 components로 구성되어 있음
Region proposals : 이 부분에 따라 성능 차이가 난다. 여러 알고리즘이 있는데 R-CNN은 Super pixel based selective search algorithm을 사용. Feature extraction : AlexNet을 사용. 당시에는 얘만 있음. Test time : 이미지가 들어옴 -> 2000개의 region proposals를 뽑음 -> 각각을 227x227로 reshape (고정된 사이즈)
이미지와 질문이 주어졌을 때 답을 맞추는 Visual QnA
VQA 데이터셋
Visual QnA
Sub Problems in Image QA
-Solving VQA
DPPNet / Attention based method : 질문에 dependent 한 분류기를 만들자
Multimodal Compact Bilinear Pooling for VQA
이미지를 설명하는 문장을 만들어내는 Image Captioning
Image Captioning 의의
Show and Tell
Show, Attend and Tell
DenseCap
Residual Network가 왜 잘 되는지 해석해보기
-Deeper is better? -> No, there is degradation problem. -ResNet은 이 문제를 뒷 단으로 미룬다.
-ResNet은 그냥 쓰면 다 잘 되었지만 '왜' 잘되는 지에 대한 해석은 없었다.
-왜 잘되나? : ResNet is an Ensemble Model. : 원래 앙상블 모델은 데이터를 여러 갈래로 나누어서 각각에 대해 별개의 모델을 만들고 평균을 내는 방법. : ResNet에서 데이터를 여러 갈래로 나누지는 않지만 skip connection이 앙상블 역할을 한다. : skip connection -> 갈림길을 만든다. -> 각각의 갈림길을 선택하는 여러 경우의 수가 생긴다. -> 각각의 경우의 수를 다른 모델로 본다면 앙상블 모델과 같은 역할을 한다고 볼 수 있다.
-재미있는 실험: layer를 없애면 어떻게 될까? : layer를 하나 없앴을 때 문제가 거의 안 생긴다. (max-pooling을 하는 중요한 레이어를 삭제하지 않는 이상) : layer를 개수를 늘려나가며 없애도 급격하게 에러가 늘지 않고 부드럽게 늘어간다. ->그래서 앙상블 모델로 볼 수 있다(는 게 논문의 주장이다)
-wide residual network : 딥한 것만이 능사가 아니다. : 파라미터가 같을 때 depth보다 width를 늘리는 게 성능이 좋았다는 실험 결과. : GPU를 여러개 -> 동시에 학습시킬 수 있는 양이 늘어난다. (즉, Batch의 크기를 키울 수 있다.) : 그렇지만, depth가 늘어나면 GPU가 아무리 많아도 시간이 오래 걸린다. (순차적으로 해야하기 때문에) : Width를 늘리는 것(=채널을 늘리는 것)이 성능 향상에 도움이 된다. : width를 늘리는 것이 학습시킬 때 쉽다.