Perception 18

[OpenCV] 히스토그램 평활화(Histogram Equalization)

오늘은 히스토그램 평활화(Histogram Equalization)에 대해서 포스팅하도록 하겠습니다. 히스토그램 평활화는 히스토그램이 평평하게 되도록 영상을 조작해 영상의 명암 대비를 높이는 기법입니다. 영상의 명암 대비가 높아지면 영상에 있는 물체를 더 잘 식별할 수 있게 됩니다. 이름만 봐도 알 수 있듯이 히스토그램 평활화를 이해하기 위해서는 먼저 히스토그램에 대한 지식이 필요합니다.  히스토그램(Histogram) 히스토그램은 0, 1, 2, ... , L-1의 명암단계 각각에 대해 화소의 발생 빈도를 나타내는 1차원 배열입니다. 아래 그림은 크기가 4 x 4이고 명암단계가 L = 8인 영상에 대한 히스토그램을 막대 그래프로 표현한 예시입니다.   OpenCV에서도 영상의 히스토그램을 구해주는 함수..

Perception/OpenCV 2024.05.06

[Object Detection] YOLOv3: An Incremental Improvement

저번 포스팅에 이어서 이번에는 Yolov3에 대해서 살펴보도록 하겠습니다. 위 그림은 v1부터 v3까지 YOLO를 버전 별로 비교한 표입니다. YOLOv2의 경우 YOLOv1의 detection 성능을 높이기 위해서 그 당시의 다양한 기술들을 도입해 많은 변화가 있었다는 것을 표만 봐도 알 수 있습니다. 이에 비해 YOLOv3는 YOLOv2와 비교해 향상된 Backbone(Feature Extractor), FPN(Feature Pyramid Network) 기법의 적용만으로, 큰 변화는 주지 않고 성능과 속도를 올렸습니다. 그럼 거두절미하고 YOLOv3에 대해서 설명하도록 하겠습니다. Prediction Across Scales YOLOv2와 비교해 달라진 YOLOv3의 가장 큰 특징은 바로 FPN(F..

[Object Detection] YOLOv2 (YOLO9000:Better, Faster, Stronger)

이전 포스팅에서 설명한 YOLOv1은 inference 속도는 빠르지만 크기가 작은 object는 잘 detect하지 못하고 새로운 형태의 Bounding Box의 경우 정확히 예측하지 못하는 등 detection 성능이 떨어진다는 큰 단점이 있었습니다. YOLOv2는 그 당시 나왔던 여러 기술들을 합쳐 YOLOv1에 비해 수행 시간과 성능 모두 개선시킨 모델입니다. 이번 포스팅에서는 YOLOv2와 함께 성능을 향상시킨 방법들에 대해서 YOLOv1과 비교하면서 설명하도록 하겠습니다. 성능 향상 방법 1. Batch Normalization 배치 정규화는 다른 regularization의 필요성을 없애고 학습하는 과정 자체를 전체적으로 안정화하여 학습 속도를 가속 시키는 역할을 합니다. YOLOv2는 모든..

[Object Detection] YOLOv1 (You Only Look Once:Unified, Real-Time Object Detection)

이번 포스팅부터는 one-stage detector에 해당하는 YOLO를 버전별로 설명하도록 하겠습니다. YOLO는 현재 (2024년 3월 19일 기준) 9번째 버전까지 나올 만큼 자주 사용되고 활발히 개발되면서 실시간 Object Detection의 대명사로 자리잡게 되었습니다. YOLOv1의 구조 및 동작 방식 YOLOv1의 전체적인 모델 구조는 다음과 같습니다. YOLOv1의 모델은 GoogLeNet으로부터 많은 영감을 받았으며 이를 일부 수정하여 DarkNet이라는 독자적인 Convolutional Network을 만들어 사용했습니다. 24개의 Convolutional Layer(Conv Layer)와 2개의 Fully-Connected Layer(FC Layer)로 연결된 구조이며, Google..

[Object Detection] SSD(Single Shot Multibox Detector)

지난 포스팅까지 two-stage detector인 R-CNN 계열의 모든 Object Detection 모델에 대해서 살펴봤다면, 이번 포스팅부터는 one-stage detector에 대해서 SSD부터 시작하여 알아보도록 하겠습니다. 즉 지금까지의 Object Detection 모델들(two-stage detector)은 Region Proposal과 Classification이 순차적으로 이루어졌다면, 이제부터 설명할 SSD를 포함한 여러 YOLO 모델들(one-stage detector)은 Region Proposal과 Classification이 동시에 이루어지는 것이죠. SSD는 YOLOv1과 비슷한 시기에 나왔던 모델이었습니다. YOLOv1은 수행 속도는 빨랐지만 수행 성능이 Faster R-..

[Object Detection] Faster R-CNN

Fast R-CNN은 ROI Pooling Layer을 사용하여 학습 시간과 객체 검출 시간을 이전 모델들보다 월등히 단축시켰습니다. 하지만 2.3초라는 Fast R-CNN의 detect 시간은 실시간으로 사용되기에는 너무 긴 시간입니다. Fast R-CNN의 detect 시간을 늘린 가장 큰 요인은 바로 Region Proposal로 사용된 Selective Search이었습니다. Selective Search는 딥러닝에 포함되지 않고 외부에서, CPU를 사용해야만 수행될 수 있었기에 detect 시간이 길어진 것이었죠. 이번 포스팅에서 알아볼 Faster R-CNN 모델은 이 Selective Search 부분을 Region Proposal Network(RPN)로 바꾸면서 비로소 모든 요소들을 딥러..

[Object Detection] Fast R-CNN

이전에 배운 R-CNN은 다음과 같은 한계점이 있었습니다. 개별 이미지에서 Region Proposal을 통해 뽑은 2000개의 영역 모두에 대해서 각각 CNN feacture extract을 수행하기 때문에 detect 시간이 굉장히 오래 걸린다. 2000개의 영역을 crop과 warp하는 과정에서 data 손실이 날 수도 있다. end-to-end 딥러닝이 아니기 때문에 학습시간이 오래걸린다. Fast R-CNN은 R-CNN의 한계점을 개선시키고자 나온 모델로 다음과 같은 방법을 사용함으로써 R-CNN의 한계점을 극복했습니다. SPP Layer와 비슷한 ROI Pooling Layer을 사용 SVM을 softmax로 변환 ROI Pooling Layer ROI Pooling Layer는 Fast R-..

[Object Detection] SPP(Spatial Pyramid Pooling)Net

이전 포스팅에서 배운 RCNN은 아래와 같은 문제점이 있었습니다. 개별 이미지에서 Region Proposal을 통해 뽑은 2000개의 영역 모두에 대해서 각각 CNN feacture extract을 수행하기 때문에 detect 시간이 굉장히 오래 걸린다. 2000개의 영역을 crop과 warp하는 과정에서 data 손실이 날 수도 있다. 이 문제점을 해결하기 위해서는 어떻게 해야 할까요? 단순하게 생각했을 때, 추출된 2000개의 영역 모두 CNN feacture extract을 수행하지 않고 먼저 원본 이미지만 CNN을 통과시켜 Feacture Map을 만든 후 2000개의 영역은 feature map에 mapping 시키면 문제점을 해결할 수 있습니다.(image crop & warp도 사라지고 속..

[Object Detection] R-CNN

본격적으로 딥러닝 기반 Object Detection 방법에 대해서 설명하기 이전에 Object Detection의 역사에 대해서 살펴보도록 하겠습니다. Object Detection의 역사 딥러닝이 등장하기 이전의 object detection은 규칙 기반의 고전적인 컴퓨터 비전을 이용하여 만들어졌습니다. 2012년 AlexNet이 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 대회에서 우승을 차지한 이후 CNN이 주목을 받게 되는데, 이 CNN을 처음 Object Detection 분야로 끌어와 사용된 R-CNN을 시작으로 딥러닝 기반의 Object Detection 방법이 발전하게 되었습니다. 이러한 딥러닝 기반의 Object Detectio..