hojeomi blog

Day 31. Computer Vision 기초 본문

AI/Course

Day 31. Computer Vision 기초

호저미 2021. 3. 9. 01:51

2021 03 08

컴퓨터비전 수업
- cnn

요약 1
- 지능을 얻기 위해 가장 먼저 지각능력을 얻어야한다 -> 지각능력: 입력, 출력
- 오감을 통해 지각하는 것이 아닌, multi-modal association, 얼굴, 터치, 스피치와 같이 그 외의 것을 통해서도 지각함
- 따라서, machine perception is still an open reasearch area
- 특히, 시각능력이 중요하다고 생각함
- 이유: 다른 오감에 비해 압도적으로 시각에 많이 의존함
- 컴퓨터 비전과 사람의 시각 사이의 연관성: 컴퓨터 - sensing device, 사람 - 눈, 해석: 컴퓨터 - roof; color = brown, position = top => 이런걸 원래 자료구조라고 불렀으나, AI/기계학습에서는 representation이라고 부름
- representation을 이용해 다시 이미지 등으로 재구성하면, computer graphics(렌더링 테크닉)이라고 부름, 실제를 representation화 하는 것을 컴퓨터 비전이라고 함(inverse rendering)
- 컴퓨터 비전이란?
0 사람의 시각능력을 잘 이해하는 것이 시작, 사람의 시각능력에도 불안정성이 있을 수 있음 -> 우리 눈과 시각을 담당하는 뇌가 학습할 때, 어느정도 biased 되어 학습되어 있다(예. 똑바로 서있는 얼굴만 학습함) -> 어떻게 하면 이런 불안정성을 보안할 수 있을지 생각해야함
- 어떻게 구현?
0 과거: 입력데이터 -> feature extraction(데이터들의 특징, 노이즈 등에 대한 근거를 모음) -> classification -> output
1 딥러닝: 입력데이터 & 출력데이터만 넣어주면, end-to-end
2 과거처럼 사람이 설계하는 게 좋은 게 아닌가? -> 사람은 선입견의 동물, 숨어있는 중요한 신호를 간과하게 될 가능성이 높음 -> 딥러닝은 자동적으로 그러한 것들을 찾게 됨

요약 2
- 레이블 데이터의 효율적인 학습을 위한 방법들
- data augmentation, leveraging pre-trained informaion, leveraging unlabeled dataset for training
- data augmentation에 대해
0 가장 손쉽게 성능을 올릴 수 있음
1 주로 학습데이터를 operation을 통해 여러장으로 불리는 것(예. rotate, crop...)
2 이미지 데이터를 augmentation 하는 법
3 crop: 중요한 부분을 강조하여 학습할 수 있음
4 Affine transformation: 영상의 픽셀 위치를 바꿔줌으로써 새로운 학습 데이터 생성 -> using OpenCV -> cv2.warpAffine(일반적으로 영상을 기하학적으로 바꾸는 것을 warp라고 하기에 앞에 warp가 붙음)
5 CutMix: 사진 합성과 더불어 라벨도 합성되는 것이 핵심
6 data augmentation: 한 번만 사용해야할까? -> no. 여러가지 조합해도 됨 -> 어떤 조합이 가장 좋을까? -> RandAugment: 랜덤하게 여러 기법을 선택해서 실험해보고 성능이 가장 좋은 조합을 사용하자 
- transfer learning에 대해
0 미리 학습시켜 놓은 사전식을 활용하여 연관된 새로운 태스크에 적은 노력으로도 높은 성능이 가능한 기술
1 쉽고 경제적이며 성능을 보장
2 한 데이터셋에서 학습한 것을 다른 데이터셋에 적용 -> 비슷한 패턴을 활용
3-1 Transfer knowledge from a pre-trained task to a new task: 미리 학습한 convolution layers & FC(fully connected) layers에서 FC layers만 새로운 것으로 바꿈 -> convolution layers는 그대로 두고 FC만 업데이트하며 새로운 태스크/새로운 차원의 데이터 등에 학습 -> 몸통 전체(convolution layers & FC layers)를 모두 학습할 필요 없어서 파라미터가 적고 효율적임
3-2 Fine-tuning the whole model: 첫번째 방법에서는 FC에서만 학습을 하는데, 이 방법에서는 convolution layers에 낮은 learning rate를 줌으로써 convolution layer에서는 업데이트가 느리지만, FC에서는 새로운 태스크에 빠르게 적응함 -> 데이터가 더 필요할 수 있음 -> 첫번째 방법은 데이터가 정말 적을 때 유용하겠지만, 그게 아니라면 두번째 방법이 좋을 수도
- Knowledge distillation에 대해: 수도 라벨링 = 가짜 라벨링

Comments