[n432]Segmentation & Object Recognition
■ 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