Data Science/4. 딥러닝

[n432]Segmentation & Object Recognition

착한곰돌e 2021. 8. 25. 09:06

■ Key words

  ㆍSegmentation

     - Image Classification

     - Object Localization

     - Object Recognition

     - Semantic Segmentation

     - Instance Segmentation

     - Keypoint Detection

  ㆍImage Segmentation

  ㆍImage Augmentation

  ㆍObject Recognition

 

■ 주요내용

  ※ Computer Vision 발전 과정 : 분류 → 개체(object) 위치 파악 → 의미적(semantic) 개체 분류 →

                                           한 이미지 내 여러 개체 클래스 파악

  ㆍFCN(Fully Convolutional Networks) : 가장 전통적인 이미지 분할. semantic segmentation 등 pixel 단위 예측.

  ㆍSegmentation

     - Image Classification : Classify an image based on the dominant object inside it

       · datasets : MNIST, CIFAR, ImageNet

     - Object Localization : Predict the image region that contains the dominant object.

                                  Then image classification can be used to recognize object in the region.

       · datasets : ImageNet

     - Object Recognition : Localize and classify all objects appearing in the image. 

                                   This task typically includes; proposing regions then classify the object inside them.

       · datasets : PASCAL, COCO, YOLO(You Only Look Once), R-CNN, Fast R-CNN, Faster R-CNN

     - Semantic Segmentation : Label each pixel of an image by the object class that it belongs to,

                                         such as human, sheep, and grass in the example.

       · datasets : PASCAL, COCO, FCN(Fully Convolyrion Network)

     - Instance Segmentation : Label each pixel of an image by the object class and object instance that it belongs to.

       · datasets : PASCAL, COCO

     - Keypoint Detection : Detect locations of a set of predefined keypoints of an object,

                                   such as keypoints in a human body, or a human face.

       · datasets : COCO

     - U-Net : encoder(down sampler)와 decoder(up sampler)로 구성. 미리 학습된 모델(MobileNetV2 등)을 인코더로

                  사용 가능.

  ㆍ데이터 증강(Data Augmentation) : 학습을 위한 데이터가 적거나, 개체의 다양한 상태를 학습하여 보다 일반적이고

                                                  과적합을 방지하는 모델을 만들기 위함

     - 전처리 레이어 사용 가능 : ① 전처리 레이어를 모델의 일부로 만들기 ② data set에 전처리 레이어 적용

     * Data augmentation은 train set에만 적용!

  ㆍ객체 인식(Object Recognition) : 사전 학습된 이미지 분류 신경망을 이용하여 다중 객체 검출하기

     - 객체인식 단계 : 여러 구획으로 나누기 → 각 image를 분류기에 넣고 class 결과 확인

                            → 여러 label 중 가장 높은 확률의 image를 찾는 것 실행해보기

       · Feature Map(CNN 가운데 layer의 출력 결과) 위에 sliding window 올리기

       · 사전 학습된 신경망은 해당 image의 class 반환(return)

         ⇒ image에서 서로 다른 객체가 검출되면 확률값을 둘로 쪼개어 반환

         ⇒ 하나의 객체만 나오더라도 충분한 확률값이 아니면(threshold ↓) 분할하여 반환

     - encoding 단계에서 down sampling 대신 원본을 두 배로 up sampling한 후 crop된 image를 분류기에 넣는다.

 

 

■ Session note

ㅁ 오전 session
  ㆍ주요개념 : Image Segementation / Image Augmentation / Object Recognition
  ㆍ이미지 분할(Image Sementation) : 한 image를 'pixel 단위'로 class를 분류하는 것
     - Unet : U자형으로 segmentation하는 모델 / 의학분야에서 영상분석에 주로 사용(악성/만성 종양 여부 등)
     ? 같은 단계, 같은 크기로 up-convolution? 단계 수는 같지만, channel 수가 비슷하게 복원함
  ㆍ이미지 증강(Image Augementation) : 크기 조절 / 회전 / 밝기 변경 / 잘라내기 등
  ㆍObject Recognition : 물체가 있는 위치에 'box'가 쳐져, 물체(박스)를 무엇인지 인지하는 것
  ㆍUp sampling : pooling/conv.을 통해 down sampling(이미지 축소)된 것을 un-pooling을 통해 다시 원래의 크기로 키우는 것
  ? max 풀링 한것은 다시 max 언풀링으로해야하고 avg 풀링은 avg 언풀링을 맞춰야하는건가요?
    - 반드시 그래야만 하는 것은 아님; 띄엄띄엄 채우고, 0으로 채우는 방법 / 가운데만 채우는 방법 등이 있음. 완벽하게 대응하지는 않음
  ? up sampling한 결과가 input과 완전히 같지는 않음
    - 파일을 압축했다가 해제하면 약간의 파일 손상이 있을 수도 있음.
  ㆍTranspose Convolution : up sampling의 한 방법. 차원을 늘려나가는 방법.
     * unpooling도 up sampling의 한 방법
  ㆍR-CNN : object detection에 사용
     - 객체가 있을 만한 곳을 잘라서(crop) 해당 box를 각각 CNN을 적용하여 분류함
     - 단점 : 각각 잘라서 CNN을 적용하다 보니 시간이 너무 오래걸림
     ⇒ Fast R-CNN, Faster R-CNN 개발로 빠르게 연산 가능
  ㆍInstance Segmentation : 각 객체 단위로 구분. 양 세 마리도 각각의 객체로 인식.
    * Semantic segmentation : 의미 단위로 찾는 것. 양인지 사람인지만 구분
  ㆍData Augmentation : 데이터 늘리기(회전, 반전, 밝기 조절 등) / train dataset에만 적용
     - 사용 이유
       · 데이터의 양을 늘리므로, 데이터가 적을 때 활용 가능
       · 다양한 상황에 대비하기 위함(고양이가 뛰어들거나 늘어져 있는 상황, 야간 등)
       · 과적합 방지 및 일반화된 모델 생성 가능
     - 주의할 점 : 6과 9 등 회전했을 때 학습에 방해가 될 수 있음 / 
                   도로가 하늘에 있는 경우는 없으므로, 15~20º정도만 회전 /
                   180도 회전은 flip과 같음
        ⇒ 학습에 방해가 되지 않는 선에서 조작하여 활용해야 함
  * 출력물이 무엇인지 확인하면서 공부하기
  ? un-pooling은 손상이 있을 수 있으므로, 감안해서 사용(↔ 복원 필요 시 Transpose Conv. 이용)
  ㆍTrue Mask는 dataset에 들어있는 정답(지도학습의 target 등)
  * image를 먼저 crop하는지(R-CNN), CNN을 돌린 후 crop하는지 확인(Fast R-CNN)
  ? 사진기에서 손바닥 쥐고 펴는 것으로 촬영하는 것은 keypoint detection과 연관됨

ㅁ 오후 session
  ㆍmax pooling 시 원본의 값을 저장해 두었다가 un pooling에서 복원함
  ㆍ이미지 처리
     - segmentation : 픽셀로 클래스 분류
     - object recognition : 박스로 객체 인식
     - semantic과 instance : 분할 차이
       · semantic : 뭉쳐있으면 구분 불가 / 종류별로 분류
       · instance : 객체별로 분류
  ㆍUpsampling : downsampling 하는 동안 쪼개진 이미지를 복원하여 출력하기 위해서
     - unpooling / max unpooling
     - transpose convolution
  ㆍU-net : segmentation을 활용하여 의료영상자료를 분석하기 위해 분석
     - Down sampling(Encoder)와 Up Sampling(Decoder)가 U자 형으로 진행되어 'U'라고 불림
     - 가중치 개수 : (3×3)×1×64
     - 각 up sampling 단계에서 원본과 크기를 같도록 해주기 위해 원본에서 crop → copy → paste 작업을 함
  ㆍData augmentation 
     - 목적 : 학습할 데이터 늘리기 / 과적합 방지 / 다양한 상황에 대처능력을 키우기 위함
     - 주의해야할 점 : 원형정보 손상 조심, 학습방해 조심, 훈련 데이터에만 적용
  ㆍObject Recognition
     - R-CNN 
       · 작동방식의 특징 : region proposal network 
          ; 이미지의 객체가 있는 부분 찾기; 조그맣게 잘라서 합쳐 나가기 → crop → CNN → class 분류
       · 단점 : 시간이 오래 걸림
       ⇒ Fast R-CNN, Faster R-CNN로 해결
  ㆍ이미지에 하는 labeling은 노가다이다; 사전학습한 것도 fine tuning 필요

 

■ 주요함수

  ㆍ

 

■ Reference

  ㆍDetection & Segmentation : https://youtu.be/nDPWywWRIRo

  ㆍChannel : https://devkor.tistory.com/entry/%ED%95%A9%EC%84%B1%EA%B3%B1-%EC%8B%A0%EA%B2%BD%EB%A7%9D

 

[Deep Learning from Scratch] 7장. 합성곱 신경망

이번 장의 주제는 합성곱 신경망(Convolutional Neural Network, CNN) 입니다. 내용적으로 반드시 따라나와야 하는 내용은 아니지만, 워낙 효과적이고 많이 쓰이기 때문에 딥러닝을 배울때 반드시 짚고 가

devkor.tistory.com