Segmentation의 pixel 수준에서 갖는 의미 ?

 

Pixel 수준의 이미지 segmentation은 각 픽셀을 하나의 클래스 또는 라벨로 할당하는 작업입니다. 따라서 각 픽셀은 해당 이미지에서 특정 객체 또는 물체의 일부인지를 나타내는 라벨을 갖게 됩니다. 이를 통해 컴퓨터 비전 시스템은 이미지 내에 존재하는 객체의 윤곽과 영역을 이해하고, 해당 객체를 다른 객체와 구분할 수 있습니다.


세그멘테이션의 종류

 

1.Semantic Segmentation

시맨틱 세그멘테이션은 이미지 내의 각 픽셀을 클래스 또는 라벨로 분류하는 이미지 세그멘테이션 기술입니다. 이는 이미지의 모든 픽셀에 대해 물체 또는 배경과 같은 의미적인 의미를 부여하는 작업을 수행

 

2. Instance Segmentation

인스턴스 세그멘테이션은 이미지 내에 있는 각 개별 물체 인스턴스를 구별하여 분할하는 이미지 세그멘테이션 방법

 



FCN (Fully Convolutional Network):
FCN은 컨볼루션 신경망(Convolutional Neural Network)의 픽셀 단위 이미지 세그멘테이션을 위해 제안된 구조로, 컨볼루션 연산을 사용하여 입력 이미지의 픽셀을 클래스에 대응하는 확률로 매핑하는 방식을 사용합니다.

U-Net:
U-Net은 의료 영상 세그멘테이션을 위해 개발된 신경망 구조로, 인코더-디코더 구조를 활용하며, 점점 다운샘플링하여 특징을 추출한 후, 다시 업샘플링하여 세그멘테이션 맵을 얻는 방식을 채택합니다. 대규모 데이터가 없는 의료 영상 분야에서 효과적인 결과를 보여줍니다.

DeepLab:
DeepLab은 시맨틱 세그멘테이션을 위한 딥러닝 기반의 모델로, 컨볼루션 신경망과 디코더 네트워크를 이용하여 다양한 컨텍스트 정보를 고려하여 픽셀별 클래스 분류를 수행합니다. 특히, 다양한 크기의 컨볼루션 커널을 사용하여 다양한 크기의 객체를 잘 인식하는 능력을 가지고 있습니다.

 

 

객체 탐지 알고리즘

 

YOLO (You Only Look Once):
(1) 실시간 객체 감지
(2) 단일 네트워크에서 모든 객체를 한 번에 감지
(3) 높은 처리 속도
(4) 객체 감지와 클래스 분류를 동시에 수행

(5) 다양한 크기의 객체에 대한 정확성이 상대적으로 떨어질 수 있음

 

->한 번에 사진 전체를 하나의 그리드로 분할하여 모든 그리드 셀에서 객체를 감지
빠른 처리 속도를 가지지만, 작은 객체에 대한 정확성이 상대적으로 떨어질 수 있음
객체의 경계 상자와 클래스 레이블을 한 번에 예측하여 실시간 객체 감지에 적합함
작은 객체보다 큰 객체에 대해서 상대적으로 우수한 결과를 보여줄 수 있음

SSD (Single Shot Multibox Detector):
(1) 실시간 객체 감지
(2) 다양한 크기의 객체를 한 번에 감지
(3) 다중 스케일 특징 맵 사용
(4) 객체 감지와 클래스 분류를 동시에 수행
(5) YOLO보다 더 정확한 성능

(6)작은 객체에 대한 정확성이 상대적으로 높음
(7)다양한 크기의 bounding box를 동시에 예측하여 정확한 객체 위치 추정 가능


-> 한 번에 사진 전체를 여러 다양한 스케일의 특징 맵으로 변환하여 객체를 감지
YOLO보다 더 정확한 결과를 제공하면서도 상대적으로 높은 처리 속도를 가짐
다양한 크기의 객체에 대한 정확성이 높고 작은 객체도 잘 감지할 수 있음
다중 스케일 특징 맵을 사용하여 객체 감지를 수행하므로 다양한 크기의 객체를 잘 처리함


구조

YOLO (You Only Look Once):

네트워크 아키텍처: Darknet (Darknet-53, Darknet-19 등)
레이어 구조: 주로 컨볼루션(Convolution) 레이어와 풀링(Pooling) 레이어로 구성
감지 방식: 하나의 이미지를 그리드로 나누고, 각 그리드 셀에 대해 bounding box와 클래스 확률을 예측하는 레이어로 구성
특징: 하나의 네트워크로 객체 감지와 클래스 분류를 동시에 처리하여 빠른 처리 속도를 가지지만, 작은 객체에 대한 정확성이 상대적으로 떨어질 수 있음

end to end의 모델 구조 : 객체검출의 전체과정을 하나의 통합된 모델로 처리하여 입력 이미지에서 바로 객체의 위치와 클래스를 예측


SSD (Single Shot Multibox Detector):

네트워크 아키텍처: VGG, ResNet, MobileNet 등 다양한 백본 네트워크 사용 가능
레이어 구조: 백본 네트워크에 추가적인 컨볼루션(Convolution) 레이어와 풀링(Pooling) 레이어, 그리고 객체 감지를 위한 여러 스케일의 특징 맵으로 구성
감지 방식: 다양한 스케일의 특징 맵으로부터 bounding box와 클래스 확률을 예측하여 객체를 감지하는 방식으로 구성
특징: 다양한 크기의 객체에 대한 정확성이 높고, 작은 객체도 잘 감지할 수 있는 특징이 있으며, 다중 스케일 특징 맵을 사용하여 정확하고 빠른 처리 속도를 유지함

end to end의 모델 구조 : 객체검출의 전체과정을 하나의 통합된 모델로 처리하여 입력 이미지에서 바로 객체의 위치와 클래스를 예측


객체 탐지 역사 : 시간날 때 하나씩 볼 것!

 

1 . RCNN : 높은 정확도 너무 오래걸리는 시간

https://arxiv.org/abs/1311.2524

더보기
  • 등장배경: 기존의 객체 탐지 방법들은 객체 후보 영역을 선정하는 과정과 객체 분류를 위한 학습이 복잡하고 느려서 실시간 응용에 한계가 있었습니다. RCNN은 이러한 문제를 해결하기 위해 등장했습니다.
  • 등장목적: 기존 방법들의 복잡한 객체 후보 영역 선정과 객체 분류 문제를 합치는 대신, 객체 후보 영역 선정과 객체 분류를 각각 분리하여 해결합니다. 객체 후보 영역 제안은 기존의 방법들을 이용하고, 객체 분류는 딥러닝(Convolutional Neural Networks)을 이용하여 수행합니다.
  • 주요 특징:
    • Selective Search 등의 기법을 사용하여 객체 후보 영역을 제안합니다.
    • 각 객체 후보 영역을 독립적으로 추출하고 크기를 일정하게 조정합니다.
    • CNN을 사용하여 추출한 객체 후보 영역에서 객체를 분류합니다.
    • 후보 영역들의 크기를 동일하게 만들기 위해 RoI(Region of Interest) Pooling을 사용합니다.
    • 객체 분류를 위해 softmax를 사용하여 다중 클래스를 분류합니다.
  • 결과: 기존의 방법들보다 정확도가 향상되면서도 속도가 비교적 빠르며, 객체 탐지 분야에서 큰 성과를 거두었습니다. 하지만 속도 측면에서는 실시간 응용에는 아직 제약이 있었습니다.

2. SPP net : 실행 시간 단축

https://arxiv.org/abs/1406.4729

3. Fast R-CNN

https://arxiv.org/abs/1504.08083

4. Faster RCNN

https://arxiv.org/abs/1506.01497

5. SSD
6.RetinaNet
7.YOLO(1~3)
8.YOLOv4

single_stage 감지기

-한 단계로 물검 감지 작업 끝낸다

-예시 : YOLO, SSD

-속도가 빠른 대신 작은 물체 감지가 어렵고 바운딩박스 정확도 떨어짐

 

two_stage 감지기

- 물체감지 작업을 두단계(물체가 있을만한 후보영역ROI를 찾고나서, 두번째로 추출된 후보영역에 대해 물체의 위치와 클래스 예측)

- 예시 : Faster R-CNN, Mask R-CNN

- 좀 느린 대신 더 정확

더보기
  1. 그리드 생성:
    • 입력 이미지를 여러 개의 작은 그리드 셀로 분할합니다.
    • 그리드 셀은 모두 동일한 크기로 나누어지며, 일반적으로 정사각형 형태로 나눕니다.
  2. 중심점 찾기:
    • 각 그리드 셀 내에서 물체의 중심점을 예측합니다.
    • 중심점은 물체의 위치를 나타내는 값으로 사용됩니다.
    • 예를 들어, 물체가 그리드 셀의 왼쪽 상단에 있으면 중심점은 해당 그리드 셀의 중심을 기준으로 물체의 위치를 나타내는 값이 됩니다.
  3. 앵커 박스 그리기:
    • 앵커 박스는 사전에 미리 정의된 크기와 종횡비를 가지는 작은 바운딩 박스입니다.
    • 각 그리드 셀에서 여러 개의 앵커 박스를 적용하여 물체를 예측합니다.
    • 앵커 박스의 크기와 종횡비는 다양한 물체를 대표하도록 사전에 정의되어 있습니다.
  4. 예측 결과:
    • 그리드 셀 내에서 예측된 중심점과 앵커 박스를 기반으로 실제 물체의 위치와 크기를 결정합니다.
    • 예측된 중심점과 앵커 박스를 조합하여 최종적으로 물체의 바운딩 박스를 얻습니다.

 

 

 

 

객체 탐지 모델은 yolo, SSD를 많이 쓴다.

 


YOLO와 SSD에서 쓰는 알고리즘은 ONE-stage로 이미지 하나를 한번에 탐지하는 방식이다. 빠르지만 TWO_Stage알고리즘에 비해 성능은 떨어질 수 있다

 

 

One-stage 기본 동작 원리


앵커 박스 생성

앵커 박스 : 크기, 종횡비, 개수, 특성맵, 위치로 구성

장점 : 앵커 박스 중복 겹침 제거와 정확도 향상, 객체의 위치를 정렬하여 학습, 실시간 객체 탐지

 

 


앵커 박스를 객체 탐지 모델에 적용하는 방법

앵거 박스 설정

- 앵커박스의 크기와 종횡비 설정 (k-means 클러스터링 또는 수동으로 박스 크기 결정)

- 앵커박스는 보통 2개 이상의 크기와 종횡비를 갖는다

 

데이터 전처리

- 추출한 객체의 크기와 종횡비를 정규화하여 데이터 추출-> k-means알고리즘에 도움

 

k_means 알고리즘 적용

- 정규화된 데이터를 k-means 클러스트링 알고리즘에 적용

 

앵커 박스의 종횡비 결정

 

최종 앵커박스 생성

 

모델에 앵커박스 적용

 

객체 탐지 수행

 

 


 

객체 인식이란?

이미지를 해석하는 컴퓨터 비전 분야에서 객체 인식은 이미지나 비디오에서 특정 객체 자동 감지하고 분류하는 것을 뜻함

이미지 데이터(픽셀의 배열로 3채널로 구성)를 기반으로 수행하고 특징을 추출한다, 이를 기계학습 또는 딥러닝(특히 합성곱)신경망을 통해 진행한다.

 

응용분야:

자율 주행, 보안 시스템, 로봇 공학, 의료 영상 분석, AR, 제조 및 자동화


이미지 처리, 픽셀 기본 정리

 

이미지 처리: 컴퓨터 비전 분야에서 디지털 이미지의 품질을 향상시키거나 원하는 정보를 추출하기 위해 다양한 기법을 사용하는 과정

 

픽셀(picture element): 디지털 이미지를 구성하는 가장 작은 단위, 각 픽셀은 3가지 층(채널)로 이루어져있다(RGB), 흑백 이미지의 경우 밝기 값만 가지며 1채널을 가진다.

 

이런 픽셀의 위치와 색상 정보를 통해 디지털 이미지가 표현, 이미지 처리를 한다는 것은 즉 이런 픽셀의 값을 조절하거나 필터링 명암조절을 하는 것과 같다.

 

픽셀의 구조

좌측 모서리(0.0)을 시작으로 열과 행으로 좌표 표현
이미지의 색상, 각 픽셀마다 들어감(흑백은 1차원 Grayscale)

픽셀 처리 기법:

-밝기 조정

-명암 대비

-필터링

-색 공간 변환 (rgb에서 hsv로 변환이 가장 대표적 색 공간 변환 방법)


특징 추출

이미지나 영상에서 식별가능한 부분을 수학적으로 주변정보와 차이 계산하여 추출한다.

이를 다양한 컴퓨터 비전 작업에 전처리 단계로 사용한다.

 

특징 추출을 통해 데이터 차원을 축소하여(그렇기 때문에 처음에 해상도가 너무 낮은 이미지 사용하면 안됨) 중요한 특징에 집중하여 계산에 효율을 높일 수 있고 특징 추출은 이미지의 크기 회전 이동 등에 불변한 특징을 추출하기 때문에 일반화된 특징을 얻을 수 있다.

 

특징 추출의 기본 원리

1. 지역성 : 이미지의 작은 지역 영역을 선택하고 해당 영역의 특징 추출 

2. 불변성 : 이미지의 이동 회전 크기 등에도 불변성 유지

3. 반복성 : 이미지의 다른 부분에서도 특징 추출은 반복 가능, 일관된 특징 추출이 가능해야함

 


특징 추출 알고리즘

1. SIFT : 크기와 회전에 불변하며, 노이즈와 다양한 변형에 강건한 특징을 추출하는 데에 사용

기본 원리 : 특징점 검출 > 주위 영역 정보 추출 > 특징 기술자 생성 > 특징 매칭

 

장점:

- 크기와 회전에 불변: SIFT는 다양한 이미지 크기와 회전에 대해 불변한 특징점을 검출하여 이미지 스케일 변화나 회전에 강건합니다.
- 고유한 특징 추출: SIFT는 이미지의 고유한 특징을 추출하여 다른 이미지와 구별하기 쉬운 특징 기술자를 생성합니다.
- 효율적인 매칭: 특징 기술자를 사용하여 이미지 간 매칭을 효율적으로 수행할 수 있어, 객체 추적 등 다양한 응용에 유용합니다.

단점:

- 계산 비용: SIFT는 복잡한 계산을 필요로 하기 때문에 큰 이미지에서는 속도가 느릴 수 있습니다.
- 노이즈에 민감: 노이즈가 많은 이미지에서는 잘못된 특징점이 검출될 수 있고, 이에 따라 특징 기술자가 왜곡될 수 있습니다.
- 특징 선택에 따른 변동성: 특징점을 선택하는 기준에 따라 매칭 결과가 변할 수 있습니다. 적절한 특징점 선택이 중요합니다.

 

2. SURF  :  SIFT 특징점 검출 알고리즘을 기반으로 개선된 컴퓨터 비전 알고리즘

기본 원리 : Gaussian 이미지 피라미드: 이미지 크기를 다양하게 축소하여 생성한 피라미드 구조. 다양한 스케일에서 특징 검출 수행 ->
Hessian 행렬: 이미지에서 주변 픽셀의 변화율을 나타내는 행렬. 특징점 검출을 위해 특정 값들을 계산하여 후보 특징점 선별 ->
특징점 검출: Hessian 행렬의 값에 기반하여 이미지에서 특징점 후보들을 찾아냄 ->
특징 기술자: 특징점을 중심으로 주변 정보를 기반으로 특징을 표현하는 기술자 생성. 이미지의 변환에 강건하게 유지.변환에도 강건하게 유지됩니다.

 

장점:

- 빠른 처리 속도: 이미지 피라미드와 특정 알고리즘을 사용하여 빠른 특징 검출 가능.
- 크기 및 회전 불변성: 특징 기술자가 크기와 회전에 강건하여 다양한 변형에서도 특징 매칭 가능.
- 다양한 응용: 이미지 매칭, 객체 인식, 영상 스티칭 등 다양한 컴퓨터 비전 작업에 활용.

단점:

- 특징 검출 불가능한 경우: 특정 이미지에서 특징을 잘 검출하지 못할 수 있음.
- 높은 계산 복잡도: 특징점 검출과 기술자 생성에 높은 계산 비용이 요구될 수 있음.
- 정확성 문제: 특정 환경에서 잘못된 특징 매칭이 발생할 수 있음. 추가 필터링이 필요할 수 있음.

 

3. ORB

SIFT나 SURF보다 빠르면서도 비슷한 성능을 제공하므로 실시간 응용 프로그램 및 리소스 제한 환경에서 많이 사용. 또한 무엇보다도 오픈소스 라이브러리인 OpenCV에서 구현되어 쉽게 활용할 수 있다, 로봇 비전분야에 많이 사용

 

장점:

- 빠른 처리 속도: FAST와 BRIEF를 조합하여 빠른 특징점 검출 및 기술자 생성 가능.
- 강건성: 회전 불변성과 정확한 특징 기술자 생성으로 다양한 변형에서도 강건한 특징 매칭 가능.
- 리소스 제한 환경에 적합: 빠른 처리 속도와 간단한 구현으로 리소스 제한된 환경에서 효과적으로 사용 가능.

 

단점:

- 정확성 제한: SIFT나 SURF보다 정확성이 상대적으로 낮을 수 있음.
- 특징 검출 한계: 특정 이미지에서 특징을 잘 검출하지 못할 수 있음.
- 높은 차원 기술자: BRIEF의 이진 기술자는 차원이 높아서 찾는 매칭 쌍의 개수를 증가시키는데 한계가 있을 수 있음.

 


특징 디스크립터

이미지 간의 특징을 수치적으로 표현하여 매칭, 특징 추출과 다른 개념( 특징 추출은 이미지에서 키포인트를 찾는 과정을 의미하고, 특징 디스크립터는 키포인트 주변 영역의 특성을 벡터로 표현하는 과정을 의미)

1. 전처리된  데이터 파일을  train/val 폴더에 8:2 비율로 나누기

2. CustomDataset  클래스 만들기 - 차후 모듈화하여 import해서 사용

3. 트레인 : 모델(모델 불러와서 구조 보고 고칠 곳 고치기), 옵티마이저, 손실함수 등 정의하고 best model 추출

 

 

pip install PySide6 SQLAlchemy

 

https://www.sqlite.org/index.html

+ Recent posts