owned this note
owned this note
Published
Linked with GitHub
# Object Detection 과 코드 스테이츠
- 데이터 이쿠
- Tabular Data > 다양한 머신러닝
- 거인의 어깨
- (이미지, 텍스트, 음성 등) 비정형 데이터 > 딥러닝 모델
</br>
>- 개요
- 모델의 발전 히스토리
- 모델 구조 전반
- 모델을 코드로 구현
- 최종 결과물 확인
</br>
초기 Object Detection
--
<img src='https://drive.google.com/uc?export=view&id=1-aT3J4Ei1UzmMM7O4lvL_6STDFHWPAlX' align="left" width="100%" height="50%">
단점
- 오브젝트 없는 영역도 무조건 슬라이딩 필요
- 시간이 오래 걸림
- 검출 성능이 떨어짐
- 동일한 슬라이딩이라도 이미지 Scale 에 따라 Object 크기도 달라짐
<img src='https://drive.google.com/uc?export=view&id=1fZu2Nj7XRrGz3QIpCLjFfK048cUku_FX' align="left" width="100%" height="50%">
</br></br></br>
Region Proposal (영역 추정)
--
> Object 가 있을 만한 후보 영역을 찾자!!
<img src='https://drive.google.com/uc?export=view&id=1I28Mq3J73qN92vDWoE7s-21rgHnOFv1J' align="left" width="100%" height="50%">
</br></br></br>
R-CNN
--
<img src='https://drive.google.com/uc?export=view&id=19CIPVzXPts1zxQUS3ZMVfFKkh-Gv-5tl' align="left" width="100%" height="50%">
- selective search(SS) 알고리즘
- ==2000개의 region==을 생성하고
- 각각을 ==CNN== 신경망에 넣어서 결과를 판단함
- 각 Region을 warping 수행해서
- 동일한 shape의 이미지로 변환하고 CNN으로 학습함
> ==warping== : 보정이나 찌그러진 이미지를 정규화하기 위한 처리방법
- 추출된 feature를 Linear ==SVM(분류모델)== 에 넣어
- ==Classification== 을 수행함
- SS 알고리즘으로 만든 Bbox는
- localization이 정확하지 않기 때문에
- bbox regression이 존재함
<img src='https://drive.google.com/uc?export=view&id=1Q3jppuOd-zQ686xrF51xBKJn9FXnq09V' align="left" width="90%" height="30%">
</br></br></br>
Fast R-CNN
--
- R-CNN 의 단점
- Region 연산의 반복,
- end-to-end 학습 불가
- Fast R-CNN 은 기존 R-CNN 의 단점을 보완함
- Image를 ConvNet에 넣어 feature 생성함.
- FC layer 의 입력이 고정되어 있을 뿐
- Convolutional layer의 입력은 자유롭다는 점에
- Idea 를 얻어 ==Spatial Pyramid Pooling==을 제안함.
- 생성된 feature vector 의 크기가 고정되어
- FC layer의 입력이 됨.
- 즉, 이미지에서 미리 생성된 feature map 으로
- SS 알고리즘으로 생성된 region을
- feature map에 projection 시킴.
- 이 방법을 통해 모든 과정의 학습이 가능하게 되었고
- 연산의 반복도 해결할 수 있게 됨.
<img src='https://drive.google.com/uc?export=view&id=1L4sWhiHvJ7Xm78QRBfGi3n8bMiuHgdg_' align="left" width="90%" height="30%">
</br></br></br>
Faster R-CNN
--
- Fast R-CNN 의 단점
- Region Proposal 에
- rule based algorithm 인
- Selective search 를 이용함.
- SS 알고리즘으로 인한 CPU 사용으로 인해
- 속도가 느림
- Fast R-CNN 의 단점을 보완함
- Region proposal을 GPU로 동작하도록 변경함
- ==RPN==(Region Proposal Network) 에서
- k개의 anchor box를 생성함.
- sliding window방식으로 생성되며
- 각 위치의 regression과
- 물체의 classification을 수행함.
- Box와 Ground-truth에는
- center point(x, y), width, height의 4개 element가 있음.
- RPN으로 예측을 수행하면
- 한 object에 여러 개의 proposal이 생길 수 있음.
- 이 문제 해결을 위해 NMS 알고리즘이 사용되며
- proposal의 개수를 줄임
> ==NMS==(Non-maximum Suppression, 비-최대 억제)
> object detection 에서는 한 객체에 대해 가장 신뢰도가 높은 하나의 bounding box 만 남기고 그 객체와 관련된 나머지 bounding box 를 없애는 후처리 과정이 (post-precessing) 필요한데, 이때 사용되는 알고리즘
</br></br></br>
<img src='https://drive.google.com/uc?export=view&id=10ypne4ROTYCrVAF4o2ButB4nTLEniPy0' align="left" width="100%" height="30%">
</br></br></br>
<img src='https://drive.google.com/uc?export=view&id=153IgwJn1zACdhcjvqVxfOf2ViYORgVjo' align="left" width="70%" height="30%">
</br></br></br>
Two-step Detector 의 한계
--
영역을 제안하는 Region Proposal(S.S, RPN 등) 이
별도로 구성되었느냐 아니냐에 따라
One-Stage Detector / Two-Stage Detector 로 나뉨
- 1스텝 ==Region Proposal==
- 2스텝 ==Detector==
Object 가 있을만한 위치의 바운딩 박스 Feature Map 을
Detector 에게 보내서 Detector 가 예측을 함
하지만 Two-stage detector 의 최고 성능인
Faster RCNN 도 7 FPS 정도밖에 안됨
Region Proposal 과 Detector 를
한 번에 진행하는 것이 One-stage detector
</br></br></br>
YOLO (You Only Look Once)
--
<img src='https://drive.google.com/uc?export=view&id=105l0IhldEuyX6RcpXnmbAWJ9fkOUNBMW' align="left" width="100%" height="50%">
</br></br>
==Classification== 을 위해 만들어진 ==구글 넷==의
마지막 레이어를 일부 변형하여
Object Detection 이 가능하도록 아이디어를 낸 모델입니다.
구글 넷은 Classification 을 위해
마지막 레이어를 Fully Connected 시키기 때문에
이미지 내에서 객체의 공간 정보가 없어지게 되는데
YOLO 는 마지막 레이어에 Convolution Layer 를 적용해서
객체의 공간 정보가 남아 있게 됩니다.
YOLO 의 장점은 ==빠른 속도==입니다.
일반적으로 이미지에 Convolution 이 지나갈 때 점점 Kernel 이 쌓여가고
레이어를 지날수록 데이터의 특징, 패턴들이 추상화되는데,
YOLO 는 동일한 이미지에 대해 Grid 를 각각 다르게 설정합니다.
</br></br>
<img src='https://drive.google.com/uc?export=view&id=1fIUDybEI5Z8ABvoC5vDqXjo452Ce0t7d' align="left" width="100%" height="50%">
</br></br>
예를 들어 동일한 이미지에 아래와 같은 3가지 Grid 를 설정하면
13 x 13 / 26 x 26 / 52 x 52 (세밀한 Detection 가능)
==3가지의 Feature Map 을 동시에== 얻을 수 있기 때문에
속도가 빨라집니다.
YOLO 의 인식 속도는 초당 120프레임입니다.
```
print(cv_outs)
> output_layer name: ['yolo_82', 'yolo_94', 'yolo_106']
> cv_outs type: <class 'tuple'> cv_outs의 내부 원소개수: 3
> (507, 85) (2028, 85) (8112, 85)
# 첫 번째 array 의 shape 507 x 85
# 개별 anchor box 별로 85개의 데이터를 가지고 있음
# 5 개는 좌표와 config, 80 개는 COCO 의 클래스
# 13 x 13 x 3 = 507
# 두 번째 array 의 shape 2028 x 85
# 26 x 26 x 3 = 2028
# 세 번째 array 의 shape 8112 x 85
# 52 x 52 x 3 = 8112
```
<img src='https://drive.google.com/uc?export=view&id=1jnbA890ZTj7kugNxnNCXUbGNgItu7kEJ' align="left" width="100%" height="50%">
</br></br></br>
[YOLO.v3 ~코랩~](https://colab.research.google.com/drive/1x2-2frS8kIO5hk2jUcQIWzGfzgOZn4uX?usp=share_link)
</br></br></br>
Object Detection 결과
--
- Kitchen
<img src='https://drive.google.com/uc?export=view&id=18ukymr6eq821xXjuaWMOCm_qMT36mKxo' align="left" width="80%" height="50%">
- [Kitchen Detect 결과 (R-CNN)](https://drive.google.com/file/d/1yTotzJkNE9uL4y0nwSpkWA7JaTXczBOT/view?usp=share_link)
- [Kitchen Detect 결과 (YOLO)](https://drive.google.com/file/d/1DEZdA3Du24sT3cCxe3743KD__mH9Su27/view?usp=share_link)
- 존윅
<img src='https://drive.google.com/uc?export=view&id=1Ynk47RF7s_o3YMjFpaSp_sRzWyXdS3F9' align="left" width="80%" height="50%">
- [John_Wick Detect 결과 (YOLO)](https://drive.google.com/file/d/1DX-ZN2XQte69kNuyy0LjnbCkVqOaAm_i/view?usp=share_link)
- 한국시리즈 우승
<img src='https://drive.google.com/uc?export=view&id=1Sj0v_fbXaJdBblEPRxtBAsiIaJMoFKcz' align="left" width="80%" height="50%">
- [한국 시리즈 우승 YOLO](https://drive.google.com/file/d/1Sy4526V2nOZbFlxZ7a0SFTbP0tKVvTMV/view?usp=share_link)
</br></br></br>
거인의 어깨 위에서
--
<img src='https://drive.google.com/uc?export=view&id=1t-fF9yCkj9GWx3eTDnxYJDUo2LAnnkSr' align="left" width="89%" height="50%">
딥러닝의 트렌드는 고객 맞춤형,
고객이 가진 데이터의
Feature Map 을 가장 잘 추출하는 백본을 선택
넥이랑 헤드 일부만 수정
환경안전팀의
연기, 화재 감지 CCTV 도입!
(기본 소스코드가 크게 다르지 않을 것)
YOLO, 타코트론, Wave-net 등
Pre-trained 된 딥러닝 모델,
거인의 어깨에 올라타서
비정형 데이터(이미지, 텍스트, 음성 등) 활용
DX-LSS 과제 적극 발굴!!!
</br></br></br></br></br></br></br>
###### tags: `Routine 23년`