이번에 진행할 논문은 yolo라고 잘 알려진 모델의 첫번째 논문입니다
해당 리뷰는 실제 논문의 순서가 아닌 필자가 이해하기 쉬운 순서로 정리하였습니다
간단히 설명하면 이전 faster rcnn또한 초당 5 frames로 높은 속도를 보여 주나
real time 으로 구동하기 위해서는 초당 40 frames정도의 속도를 내야 되기 때문에 많이 모자란 속도를 보여줍니다
속도 측면을 해결하기 위해서 이전 region proposal 과 detection 총 2개의 network로 구성되던 과정을
하나의 network에서 처리하는 방법을 채택합니다
이를 1-satge기법이라 부르며
사용 결과 기본 yolo 45frames/second fast yolo 155frames/second를 기록하며 real time으로 적용이 가능하게 하였습니다
end to end학습을 사용하며
속도 측면에서 높은 성능을 기록하며 background error또한 절반 이상 줄어든 모습을 보여주지만
localization error이 fast rcmm비례 2배정도 높게 나오며
전체적인 정확도 또한 약간 떨어집니다
Titan X GPU를 사용하였으며
타 real time 모델들에 비해 2배 이상의 mAP를 보여줍니다
이전에는 각 픽셀들에 대한 추론을 진행했다면 yolo는 전체 이미지에 대한 추론을 진행하며
이로인해 background error는 감소하고 localization error가 늘어난 것으로 보입니다
결과표를 보면 해당 내용이 나오지만 전체적인 이미지에 대한 추론을 진행하며
실제 이미지가 아닌 그림또한 detection 에 뛰어난 모습을 보이며
이러한 모습에서 yolo는 일반화에 강점이 있다 라고 말 할 수 있습니다
해당 사진을 보면
input size - 448*448을 사용하며
Convolution network를 사용한 후
NMS(non maximal suppression)을 사용하며 NMS의 사용으로 2~3% 가량의 mAP을 향상시킬 수 있습니다
이전과는 다르게 복잡한 pipeline이 필요하지 않으며
출력으로는 bounding box와 class probabilities가 출력됩니다
YOLO의 구성이다
초기 Conv layer에서 이미지의 특징을 추출하며 Network는 GoogLeNet의 구조를 사용합니다
총 24개의 conv layer와 2개의 fc layer로 구성되며
3*3 conv layer 와 1*1 reduction layer가 사용됩니다
Fast YoLo의 경우 총 9개의 conv layer만을 가지며 conv layer의 개수 외의 다른 구성은 동일합니다
conv층이 적어짐에 따라 속도에도 영향을 주지만 정확도는 기존 yolo에 비해 떨어집니다
마지막 4개의 conv layer와 2개의 fc layer가 detection에 사용됩니다
detection에 관하여 이야기를 해 보자면
우선 input을 S*S 의 grid로 나눈 뒤
각 grid cell이 bounding box와 confidence score를 출력으로 가집니다
confidence score는 Pr(Class|object)로 표현되며 object일 경우 각 class일 확률들이라는 의미입니다
bounding box는 총 (x,y,w,h,confidence)의 인자들을 가집니다
여기서 confidence는 Pr(object)*IOU(ground truth)이며 object가 존재할 확률과 IOU의 곱을 나타내고
Test시에는 이 두 confidence의 곱한값을 사용합니다
출력 tensor의 개수는 S*S*(B*5+C)개의 tensor가 한개의 이미지에서 출력됩니다
우리는 각 grid cell마다 총 2개의 bounding box(B)를 가지며 총 20개의 class에 대해 진행(C)하며 7*7(S*S)를 가지므로
총 7*7*30개의 tensor가 출력됩니다
pretraining으로는 ImageNet의 1000개 class에대해 pretraining을 진행합니다
초기 20개의 conv layer와 average pooling layer(global average pooling) ,fc layer에 대해 진행합니다
global average pooling은 간단히 말하면 input과 동일한 크기의 filter을 사용하여 n*n*k의 input을 1*1*k로 만드는 과정이라
생각하면 이해가 빠를 것 같습니다
또한 기존 224*224의 imageNet input에서 448*448로 input값을 늘려주었습니다
앞서 말한것 처럼 마지막 layer는 클래스 확률과 BB를 예측하며 너비와 높이 X Y 좌표는 0~1사이의 값으로 정규화 시키고
활성함수로는 reaky relu를 사용합니다
총 135번의 epoch을 진행하며 VOC 2007/12 Dataset을 학습에 사용하며
batch size = 64 , momentum = 0.9를 사용하며
해당 논문의 방법으로는 처음부터 큰 값의 learning rate을 사용할시 loss함수의 값이 수렴이 아닌 발산함으로
첫 epoch 시에는 learning rate의 값을 0.001에서 0.01까지 천천히 상승시키며
trainig시 75 epochs 0.01 30 epochs 0.001 30 epochs 0.0001로 학습을 진행합니다
Dropout 역시 0.5 확률로 진행하였으며 data augmentation 은 random scaling,trainslation random exposure & saturation이 적용되었으며 원본의 20%정도로 적용되었습니다 해당 내용의 의미는 비율과 위치 빛의 노출정도와 채도를 20%정도 조절했다는 의미입니다
loss 함수 분에서는 Sum Squared Error을 적용합니다(SSE)
SSE는 편차 제곱의 합이란 의미이며
yolo의 경우 크고 작은 object 전체에 가중치가 동일하게 주어지면 localization error가 생성되므로
이를 조금이라도 낮추기 위하여 총 편차 제곱을 이용합니다
또한 objetc 와 background에서의 error 가중치도 차이를 두어 학습에 용이하게 만들었으며
를 사용합니다. coord는 object의 경우이며 noobj는 배경의 가중치를 뜻합니다
yolo의 loss함수이며 편차 제곱의 합을 이용한 부분과 object와 background의 가중치를 다르게 준 점을 확인하면 되겠습니다
다만 YOLO의 한계점으로는
1.Grid cell이 B개의 bounding box만 예측하므로 작은 object가 주면에 있는 경우
제대로 예측하지 못합니다
2.학습 data로 부터 bounding box의 형태또한 학습하므로 새로운 형태의 bounding box의
경우 제대로 예측하지 못합니다
3.Loss함수를 통해 학습을 진행하는 경우 큰 bounding box와 작은 bounding box의 비율이 크게 차이나지 않으므로(제곱근을 사용하였지만) localizaion이 부정확하다
가 있습니다
다음은 YOLO와 타 모델들의 비교입니다
1.DPM – dpm은 sliding window 형식을 사용하여 objet detection 을 한 뒤 bounding box를 예측하는 두가지 과정이 존재하지만 yolo는 1개의 network로 해결합니다
Yolo가 더 빠르고 정확한 성능을 보여줍니다
2.RCNN – selective searc를 통한 region proposa을 사용하고
SVM을 이용하여 점수화 후 NMS로 중복을 제거합니다
Yolo에 비해 복잡한 pipelin을 가지며 속도 또한 매우 느리고
2000개의 bounding box들을 생성하는데 반해 98개의 boxes들만 제안하므로 매우 간단합니다
Fast / Faster RCNN – selective search 대신 neral network를 통해 region proposal 을 생성하며
Featual map 또한 공유하기에 매우 빠르지만 아직 real time에는 미치지 못합니다
Region proposa후 detection 하는 과정을 하나로 통합하여 속도를 향상시켰습니다
Multibox – selective search 대신 neural network에서 region들을 예측하며
단일 network로 진행하지만 전체 탐지 시스템이 아닌 detection pipelin의 일부입니다
OverFeat – CNN을 이용하여 localization을 진행하며 sliding window 방식을 사용하며
분리된 2 stage network입니다
MultiGrasp – 하나의 객체를 보유하고 있는 경우 단일 영역을 예측한다 크기/위치/경계/클래스 등을 예측하지 않고 알맞은 위차만을 찾는다 , YoLo는 다양한 위치 클래스 종류 등등을 모두 예측 가능합니다
Real time 측면에서는 YOLO가 단연 뛰어난 성능을 보입니다
DPM 방식을 30hz /100hz로 진행시키는 방법도 있긴 하지만
정확도가 매우 낮음을 볼 수 있고
Fast yolo가 제일 빠르긴 하지만 정확도가 10%가량 떨어집니다
YOLO에 VGG16을 결합시킨 방법은 정확도가 더욱 올라가나 속도가 저하되어
Real time 측면에서는 보기 힘듭니다
RCNN을 사용한 fast/faster RCNN 방식은 정확도는 매우 높으나 속도적인 측면에서
너무 느리며 속도가 개선된 가장 최근의 faster rcnn방식 또한 real time 에는 미치지
못하는 모습을 보여줍니다
Fast RCNN과 YOLO의 VOC 2007 Dataset 에 대한 오류비율을 체크해 보면
배경에 대한 오류는 대폭 줄어든 모습을 보여주나
Localization error의 경우 큰 폭으로 증가된 모습을 보여줍니다
YOLO가 배경 오류를 줄이는데 효과적이기 때문에 YOLO와 Fast RCNN을 결합했을 경우 아주 높은 정확도를 보여주나
모델을 따로 진행하며 결과 또한 합쳐야 하기에 속도 측면에서 매우 비효율적입니다
Picasso 와 people-art 작품들에 대하여 재현율과 mAP 를 비교한 결과입니다
학습 자체는 실제 이미지로 하였지만 미술 작품들에 대한 detectio에도 강한 면모를 보여주며
미술 작품과 실제 사진은 픽셀값 측면에서는 많은 차이가 존재하나 객체의 크기나 모양이 유사하기에
YOLO가 높은 성능을 보여줄수 있음을 암시하며
재현율 또한 타 모델들에 비해 높은 수치를 보여줍니다
아래는 YOLO에 대해 출력 confidence score 와 bounding box , NMS에 대해 이해하기 쉽게 정리해둔 자료가 있어 링크 남기며
저역시 이해에 도움을 많이 받았기에 들어가서 보시면 좋을 것 같습니다
https://docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA/pub?start=false&loop=false&delayms=3000&slide=id.p
'논문리뷰' 카테고리의 다른 글
SSD: Single Shot MultiBox Detector 논문리뷰 (0) | 2021.12.15 |
---|---|
GoogLeNet (inceptionet) 논문리뷰 (0) | 2021.12.08 |
Resnet 논문리뷰 (0) | 2021.11.23 |
Faster RCNN 논문리뷰 (0) | 2021.11.16 |
Fast R CNN 논문리뷰 (0) | 2021.11.08 |