jwkwak45 / AIstudy.github.io

인공지능 스터디
1 stars 1 forks source link

7/22 ~ 7/29 3주차 정리 #7

Open YunjeongPARK1 opened 5 years ago

YunjeongPARK1 commented 5 years ago

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를 늘리는 것이 학습시킬 때 쉽다.

jwkwak45 commented 5 years ago

7/23 Residual Network가 왜 잘 되는지 해석해보기

jwkwak45 commented 5 years ago

7/24 Weakly Supervised Localization

YunjeongPARK1 commented 5 years ago

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을 사용하면 성능 차이가 별로 나지 않는다.

jwkwak45 commented 5 years ago

Image Detection 방법론: RCNN, SPPnet, FastRCNN, FasterRCNN

jwkwak45 commented 5 years ago

Image Detection 방법론: AttentionNet, SSD, YOLO, YOLOv2

YunjeongPARK1 commented 5 years ago

Image Detection 방법론 : RCNN, SPPnet, FastRCNN, FasterRCNN 오늘 공부할 내용은 1. RCNN 계열 2. YoLo 등 좀 더 빠른 방법론

일반적으로 CNN 이 잘 되는 이유는 이미지에서 feature를 잘 뽑기 때문이다. 즉, 다시 말해 convolution, subsampling을 이용한 feature extractor로서의 역할을 잘 하기 때문이다.

하지만 물체에 네모를 쳐줘야 하는 문제가 이미지 detection을 어렵게 만든다. 그래서, 초창기에는 이 문제를 이미지에서 바운딩 박스를 많이 뽑아내고 원하는 사이즈로 resize한 다음, pretrained CNN에 넣어서 feature를 뽑고 돌렸다.

R-CNN은 세 가지 components로 구성되어 있음

  1. 카테고리와 무관한 region box를 발생시킨다. 물체가 있을 것 같은 공간에 box를 엄청 많이 침. 여기에서 시간이 많이 걸리게 됨
  2. 네모로부터 CNN을 통과시킨다. 내가 찾고 싶은 물체에 대한 것이 아니라 미리 학습되어 있는 CNN에서 feature를 뽑는다.
  3. 그리고 linear SVM으로 classify한다.

Region proposals : 이 부분에 따라 성능 차이가 난다. 여러 알고리즘이 있는데 R-CNN은 Super pixel based selective search algorithm을 사용. Feature extraction : AlexNet을 사용. 당시에는 얘만 있음. Test time : 이미지가 들어옴 -> 2000개의 region proposals를 뽑음 -> 각각을 227x227로 reshape (고정된 사이즈)

jwkwak45 commented 5 years ago

이미지와 질문이 주어졌을 때 답을 맞추는 Visual QnA

-Solving VQA

jwkwak45 commented 5 years ago

이미지를 설명하는 문장을 만들어내는 Image Captioning