컴퓨터 비전, 이미지 인식은 컴퓨터가 이미지나 영상에서 패턴을 인식하게 하는 기술로, 의료, 자율주행, 보안 등 다양한 분야에서 활용되고 있다. 이번 포스트에서는 이러한 비전 인식에 사용되는 주요 머신러닝 알고리즘에 대해 알아볼 예정이다.
Convolutional Neural Networks (CNNs)
CNN은 이미지 인식에서 가장 널리 사용되는 딥러닝 알고리즘 중 하나이다. CNN은 이미지의 지역적 특징을 탐지하기 위해 설계되었으며, 여러 계층을 통해 복잡한 패턴을 학습한다.
- 원리: CNN은 입력 이미지를 여러 계층을 통과시키면서 점점 더 복잡한 패턴을 추출하고 학습한다. 각 계층은 이미지의 다른 특징을 감지하게 된다. 예를 들면 첫 번째 계층은 간단한 가장자리나 색상을, 후속 계층은 질감, 패턴 등을 감지한다. 최종 계층은 객체의 부분이나 전체 객체와 같은 고수준의 특징을 인식하게 된다.
![](https://15.164.228.147/wp-content/uploads/2023/09/image-14-1024x309.png)
Recurrent Neural Networks (RNNs)
RNN은 순차적인 데이터를 처리하는 데 특화된 딥러닝 알고리즘이다. 비디오 인식과 같이 시간적 순서가 중요한 작업에서 RNN은 효과적이다.
- 원리: RNN은 순차적 정보를 처리하는 데 특화된 모델이며, 이전 시점의 정보를 현재 시점의 입력과 결합시켜 처리하는 구조로, 이전의 정보를 기억하고 현재의 입력과 함께 사용하여 예측을 한다. RNN을 연속된 비디오 프레임처럼 이전 프레임이 다음 프레임에 어떤 영향을 미치는지를 기억하면서 전체 스토리를 이해한다.
![](https://15.164.228.147/wp-content/uploads/2023/09/image-15-1024x318.png)
Support Vector Machines (SVMs)
SVM은 분류와 회귀 문제에 사용되는 전통적인 머신러닝 알고리즘이다. 이미지 인식에서는 주로 특징 추출 후 분류에 사용된다.
- 원리: SVM은 데이터 포인트를 분류하는 최적의 경계선(Hyperplane, 하이퍼플레인)을 찾는 알고리즘이다. 이 경계선은 서로 다른 클래스의 데이터 포인트 사이에 최대 마진을 갖는 특성을 가지며, SVM은 각 데이터 포인트를 고차원 공간에 매핑한 다음, 이 공간에서 가장 큰 간격으로 두 클래스를 분리하는 하이퍼플레인을 찾는다. 비선형 데이터에도 적용될 수 있도록 커널 트릭이라는 기법을 사용하여 고차원으로 매핑할 수 있다.
![](https://15.164.228.147/wp-content/uploads/2023/09/image-16.png)
Random Forests
Random Forest는 여러 결정 트리를 결합하여 작동하는 앙상블 알고리즘이다. 이미지 인식에서는 주로 픽셀 또는 패치 기반의 분류에 사용된다.
- 원리: Random Forest는 여러 개의 결정 트리를 조합하여 작동하는 알고리즘이며, 각 트리의 예측을 종합하여 최종 예측을 만든다. 일반적으로 각 트리는 부트스트랩 샘플을 사용하여 학습되며, 최종 예측은 모든 트리의 예측을 평균내어 생성된다. 결정 트리는 데이터의 특징에 기반한 질문들로 구성되며, Random Forest는 이러한 여러 트리의 예측을 합쳐 더 안정적이고 정확한 예측을 생성한다.
![](https://15.164.228.147/wp-content/uploads/2023/09/image-17.png)
Transfer Learning
전이 학습은 이미 학습된 모델을 새로운 작업에 재사용하는 방법이다. 예를 들어, 사전에 훈련된 CNN 모델을 새로운 이미지 데이터셋에 적용하여 빠르게 결과를 얻을 수 있다.
- 원리: 전이 학습은 이미 학습된 모델의 지식을 새로운 문제에 적용하는 기법이다. 기존 모델의 학습된 특징 추출 부분을 가져와 새로운 작업에 재사용한다. 예를 들어, 사진에서 객체를 인식하는 모델이 이미 학습되어 있다면, 그 모델의 초기 계층(이미지의 기본 특징을 인식하는 부분)은 다른 비슷한 작업에 그대로 사용될 수 있다. 이 방법은 새 작업에 필요한 학습 데이터의 양을 크게 줄이고 학습 속도를 높일 수 있다.
![](https://15.164.228.147/wp-content/uploads/2023/09/image-18.png)
(Source: Incorporating a Novel Dual Transfer Learning Approach for Medical Images)
Generative Adversarial Networks (GANs)
GAN은 두 개의 네트워크, 생성자와 판별자를 사용하여 데이터를 생성하고 판별하는 알고리즘이다. 이미지 생성, 스타일 전송, 이미지 보정 등의 작업에서 사용되고 있다.
- 원리: GAN은 두 개의 네트워크, 생성자와 판별자가 서로 경쟁하면서 학습하며, 생성자는 진짜와 같은 데이터를 생성하려고 시도하고, 판별자는 그것이 진짜인지 가짜인지 판별하려고 한다. 예를 들면, 화폐 위조범과 경찰의 상호 작용에 비유할 수 있다. 위조범은 더 진짜 같은 화폐를 만들려고 노력하고, 경찰은 그것이 진짜인지 아닌지를 판별하려고 하는 특성을 이용한 알고리즘이다.
![](https://15.164.228.147/wp-content/uploads/2023/09/image-19-1024x592.png)
Object Detection Algorithms (YOLO, SSD, Faster R-CNN)
객체 탐지 알고리즘은 이미지 내의 객체의 위치와 종류를 동시에 식별한다. YOLO, SSD, Faster R-CNN은 객체 탐지에 널리 사용되는 알고리즘이다.
- 원리: 이 알고리즘들은 이미지 내의 여러 객체를 동시에 탐지하고 분류한다. 위치와 크기, 형태를 고려하여 각 객체에 대한 경계 상자를 그리게 된다.
![](https://15.164.228.147/wp-content/uploads/2023/09/Detected-with-YOLO-Schreibtisch-mit-Objekten-1024x659.webp)
YOLO (You Only Look Once)
- 원리: YOLO는 이미지를 그리드로 분할하고, 각 그리드 셀마다 여러 바운딩 박스와 해당 박스에 객체가 있을 확률을 예측하여 이미지 내의 객체를 탐지한다.
- 이미지를 그리드로 분할
- 각 셀에서 여러 바운딩 박스를 예측
- 각 박스에 대해 객체의 종류와 존재 확률을 예측
- 확률 임계값을 사용하여 실제 객체를 포함하고 있는 박스를 선택
SSD (Single Shot MultiBox Detector)
- 원리: SSD는 다양한 크기와 비율의 기본 박스를 사용해 다양한 크기와 형태의 객체를 탐지한다. 이러한 기본 박스들은 이미지의 다양한 부분에 적용되어 객체의 위치와 형태를 정확하게 탐지할 수 있게 도와준다.
- 여러 크기와 비율의 기본 박스를 이미지 내의 여러 위치에서 생성
- 각 기본 박스에 대해 클래스 확률과 박스의 조정값을 예측
- Non-maximum suppression을 사용하여 중복 탐지를 제거
Faster R-CNN
- 원리: Faster R-CNN은 Region Proposal Network(RPN)를 사용하여 객체가 있을만한 영역을 빠르게 제안한다. 이 후, 이 영역들을 CNN을 통해 분석하여 객체를 탐지하고 분류한다.
- RPN을 사용하여 객체 후보 영역을 생성
- 생성된 영역들을 고정된 크기로 조정하여 CNN을 통해 피쳐를 추출
- 추출된 피쳐에 대해 바운딩 박스의 조정값과 클래스 확률을 예측
- Non-maximum suppression을 사용하여 중복 탐지를 제거
비전 인식은 지속적인 연구와 알고리즘의 발전 덕분에 빠르게 진화하고 있다. 이러한 발전을 통해 더욱 정확하고 다양한 애플리케이션에서 사용될 수 있는 모델이 앞으로도 계속해서 개발될 것으로 기대된다.