들어가기 전
객체 분류 : 이미지 내의 객체를 식별하고 미리 정의된 클래스로 분류하는 것을 목표로 하는 작업
일반적으로 머신 러닝 기술을 사용하여 수행, 모델은 레이블이 지정된 이미지 데이터 세트와 연관된 클래스 레이블에 대해 학습
이후, 학습된 모델을 사용하여 학습된 특징을 기반으로 클래스 레이블을 지정하여 새 이미지 분류.
Ex) 교통 표지판 인식 , 이미지에서 식물 유형 식별 등

객체 감지 : 입력 이미지 내에서 사전에 특정 정의된 클래스의 객체를 식별하고 찾는 컴퓨터 비전 작업
객체 감지를 위해 R-CNN, Faster R-CNN, YOLO, SSD와 같은 여러 알고리즘과 모델 개발.
이용 분야 : 자율 주행 자동차, 감시 시스템, 객체 추적 등

지역 기반 CNN
CNN을 사용하여 이미지에서 객체를 감지하는 객체 감지 알고리즘.
원리 : 이미지나 비디오 내에서 후보 지역 또는 “지역 제안” 세트를 생성한 다음 CNN을 사용하여 각 지역에 객체가 포함 여부를 분류, 객체가 포함되어 있는 것으로 분류된 지역 -> 객체의 위치를 정제하고 특정 클래스로 분류하기 위해 추가로 처리 “Two-shot Object Detection” 이라고도 함.
예 : R-CNN , Fast R-CNN, Faster R-CNN, Mask R-CNN
-> 객체 감지 프로세스의 속도와 정확도를 개선하기 위해 제안.
-> 선택적 검색 or 기타 지역 제안 방법을 결합하여 후보 지역을 생성하고 CNN을 사용하여 객체를 포함하는 지역을 분류하고 정제.

취약점 : 높은 계산 비용, 비효율성, 제한된 일반화 및 맥락 부족.
YOLO
합성곱 신경망을 사용하여 입력 이미지의 객체에 대한 경계 상자와 클래스 확률을 예측하는 단일 단계 객체 감지기.
입력 이미지를 셀 그리드로 나누고, 각 셀에 대해 객체의 존재 확률과 객체의 바운딩 박스 좌표를 예측 + 객체의 클래스 예측
R-CNN과 이를 응용한 2단계 객체 감지기와 달리 이미지를 한 번에 처리하여 더 효율적
이용분야 : 실시간 비디오 분석 및 실시간 비디오 감시와 같은 객체 감지 작업
YOLOv1 ~ YOLOv9(현재)까지 꾸준히 개발되어 오고 있으며, 이전 버전을 기반으로 구축

YOLO 알고리즘
입력 이미지를 셀 그리드로 나누고, 각 셀에 대해 객체의 존재 확률과 객체의 바운딩 박스 좌표를 예측.
프로세스
1. 입력 이미지를 CNN에 통과시켜 이미지에서 특징을 추출
2. 특징은 일련의 연결된 레이어를 통해 전달, 이를 통해 클래스 확률과 경계 상자 좌표 예측
3. 이미지는 셀 그리드로 나뉘며, 각 셀은 경계 상자 집합과 클래스 확률을 예측하는 역할
4. 네트워크의 출력은 각 셀에 대한 경계 상자와 클래스 확률의 집합
5. 경계 상자는 비최대 억제(non-max suppression)라는 알고리즘을 사용하여 필터링되어 겹치는 상자를 제거하고 확률이 가장 높은 상자를 선택
6. 최종 출력은 이미지의 각 객체에 대해 예측된 경계 상자 클래스 레이블의 집합
YOLO 장점과 한계점
장점 :
1. 실시간 객체 탐지 : 실시간으로 객체를 감지 할 수 있음 -> 비디오 감시 또는 자율 주행 자동차와 같은 애플리케이션에 적합
2. 높은 정확도 : CNN을 사용하여 이미지 내 객체의 클래스와 위치를 모두 예측하여 높은 정확도를 달성
3. 단일 샷 감지 : 네트워크를 한 번만 통과하여 이미지에서 객체를 감지할 수 있으므로 여러 번의 통과가 필요한 다른 객체 감지 방법보다 효율적
4. 작은 물체에 대한 우수한 성능 : 그리드 기반 접근 방식으로 인해 이미지에서 작은 물체를 감지할 수 있음.
5. GPU의 효율적 사용 : 완전 합성곱 네트워크 아키텍처를 사용하므로 학습 및 추론 중에 GPU를 효율적으로 사용할 수 있음.
6. 다양한 스케일 처리 능력 : 앵커 박스를 사용 -> 다양한 스케일의 객체를 처리할 수 있음 -> 동일한 이미지에서 다양한 크기의 객체를 감지할 수 있음.
한계점 :
1. 객체 감지에 국한 : 객체 감지를 위해 설계 ->이미지 분할이나 인스턴스 분할과 같은 다른 작업에서는 성능이 좋지 않음.
2. 다른 방법보다 정확가 낮음 : RetinaNet이나 Mask R-CNN과 같은 샷 객체 감지 방법만큼 정확하지 않음.
3. 매우 작은 물체에 대한 어려움 : 그리드 기반 접근 방식은 다른 물체 근처에 있는 경우 매우 작은 물체 감지에 대해 어려움.
4. 추적 기능 없음 : 추적 기능을 제공하지 않으므로 시관 경과에 따라 객체를 추적해야 하는 비디오 감시 애플리케이션에는 적합하지 않음.
마무리
우연히 지나가다 본 글에서 YOLO에 대한 언급을 통해 찾아보게 되었는데 현재도 꾸준히 개발되어 v9까지 업그레이드 된 걸 추가적인 자료 검색을 하다 알게 되었다.

아직 모르는 부분이 많아서 완전히 이해했다는 아니지만 매우 흥미롭게 읽을 수 있었다.
특히 최근에 논문들을 살펴보면서 CNN을 이용한 결막염 감지부터 어텐션 기법을 통한 염증이나 골절등의 통증 부위를 파악하여 가시적으로 보여주는 등의 성능테스트 논문들을 보면서 상황에 따라 분리하여 CNN, 어텐션 기법, YOLO등을 맞게 사용하는지에 대한 궁금증이 생겨 찾아보려 한다.
