반응형

[GAN 기초] GAN이란 무엇인가? Loss 함수는 어떻게 계산하는가

 

요약

본 글에서는 GAN이란 무엇인지 설명을 하며, 생성자와 판별자를 학습하기 위한 Loss 함수에 대한 설명을 다룬다.

 

 






 

Appendix

GAN(Generative Adversarial Network)란


정의 
- GAN이란 생성자와 구분자가 서로 학습을 하여 새로운 데이터를 생성하는 비지도 학습의 한 분야이다.
- Discriminator는 fake image는 0으로 real image는 1을 출력하도록 학습하는 과정이다. 
- Discriminator만 따로 학습을 시키는 것이 아닌, Discriminator와 Generator가 번갈아 가면서 학습을 진행한다.


코드 

실제 코드에서도 loss함수를 다음과 같이 구현함을 알 수 있다. 
########## 로스 선언 ######### 
def discriminator_loss(d_real, d_fake): 
real_loss = tf.keras.losses.BinaryCrossentropy()(tf.ones_like(d_real), d_real) fake_loss = tf.keras.losses.BinaryCrossentropy()(tf.zeros_like(d_fake), d_fake)
return real_loss + fake_loss 

def generator_loss(d_fake): 
return tf.keras.losses.BinaryCrossentropy()(tf.ones_like(d_fake), d_fake)


그 이후, discriminator와 generator가 번갈아 가며 학습을 진행한다. 

for epoch in range(num):
d_mean.update_state(d_loss)
g_mean.update_state(g_loss) 

반응형
반응형

[유튜브 논문 리뷰] You only look once: Unified, real-time object detection(2015.06)

 

1. 논문의 특징

1.1 Look Only Once
- 이미지 전체를 한번에 봄
- R-CNN은 Region Proposal을 통하여 부분을 보지만 YOLO는 전체를 봄
- 전체를 보기 때문에 예술과 같은 다른 도메인에서 더 성능이 잘 나온다.

1.2  Unified object Detection
- DPM, R-CNN은 localization 과 detection을 각각 학습시킴
- YOLO는 localization과 detection능력을 한번에 regression으로 학습 가능
- YOLO는 한번의 feedfoward로 예측도 수행함 (Only One Feedfoward 한다고 함)

1.3. Real Time
- Fast RCNN  : 7 FPS -> (ROI 추출 시 Region Proposal 을 사용함)
- Yolo : 45 FPS(Pascal VOC 2007로 평가함)
- Fast YOLO : 155FPS

2. 다른 논문과의 차이점

- 이전 DPM, R-CNN의 경우 classification, post processing 을 수행하지만 YOLO는 한번에 추론을 수행함 

2.1 DPM(Deformable Parts Models)
-  sliding window

2.2 R-CNN
- Generate Boudning Boxes : 박스를 무작위로 생성
- Classification :  분류를 수행함
- Post-Processing(refinement, elimentation, rescore) : 후처리를 수행

2.3 YOLO
- Resize Image : 이미지 크기 줄임
- Run Convolutional Network : 추론
- Nonmax suppression : 이미지를 그리드 셀로 분할한 후, 각 그리드 셀은 object detection을 수행함, 이 때, 경계선에서 겹치는 object는 nonmax suppression으로 걸러냄

3. YOLO 특징

3.1. grid cell 생성
-> sxs 개의 grid cell을 생성하며, 논문에서는 7x7 로 나눔
3.2 bounding box (x,y,w,h)
-> 각 cell은 b개의 bounding box를 생성하며, 논문에서는 각 cell 당 2개의 bounding box 를 생성함
-> 학습으로 출력되는 x,y,w,h는 이미지 크기로 나눈 0~1 사이의 값임
3.3 confidence
-> 물체가 많이 포함되어 있는지 비율/ Pr(object) * IOU
->그림에서 confidence 가 높은 bounding box는 진하게 표시를 함 
3.4 class probablity (클례쓰 확률)
-> pr(Class | Object)
-> 각셀은 하나의  class 를 갖고 있다고 판단하므로 각 셀에서 나오는 bounding box는 같은 class를 갖고 있다고 판단
3.5 학습 기법
- 1000 class갖는 image net 데이터로 pretrain으로 학습
- classifier 부분에 fully connected layer 와 CNN을 결합하여 추가 학습  
- input size를 224x224 -> 448x448로 늘려서 학습을 학습
3.6 YOLO Model
- googleLeNet (inception v1) 을 따르고 있음
3.7 tiny YOLO
-  일반 YOLO는 - 24개의 convolution layer + 2 fully connected layer, 1X1 reduction layer 사용
- 최종적으로 confidence 와 class probablity를 곱하여  pr(class) * IOU 를 스코어로 사용함

4.  TRAIN 전략

- epochs = 135
- batch size = 64
- momentum = 0.9
- decay = 0.0005
- learning rate = [0.0001,0.001,0.0001,0.00001]
- dropout rate = 0.5
- argumentation = [scaling, translation, exposure, saturation]

5. NMS(Non Maximum Suppression)

- confidence 와 class probablity 를 곱하여 값이 큰 순서대로 나열함
- 가장 큰 값의 bounding box와 그 다음으로 큰 bounding box를 비교하여 큰 값의 bounding box를 기준으로 IOU가 0.5 이상 겹치면 지워나가는 방식으로 bounding box를 없앰
- 각 class 별로 모두 수행하여 나온 bounding box만 추려냄

6. Loss 함수

- 물체가 있는 bounding box와 없는 bounding box 를 나누어 cost 함수를 구성함
- width 와 hedight는 큰 bounding box의 변화보다  작은 bounding box의 변화에 민감하게 반응하는 것을 없애고자 루트를 씌워서 해결함 

7. YOLO 한계

- 물체의 중심이 같은 경우, 한 그리드 셀은 한가지  class 만 분류하기 때문에 오차가 발생할 수 있음
- 같은 셀 안에 여러개의 물체가 동시에 나타마녀 성능이 좋지 않으므로 이럴 경우 grid cell을 작게할 필요가 있음
- Localization 에러를 항상 포함하고 있음

8. 정리

- 빠름
- end to end learning
- false positive 가 덜 나옴
- 최신 모델보다는 정확도는 떨어짐
- 다른 모델과 결합하였을 때 성능이 더 좋게 나옴을 확인함
- 예술 작품과 같은 다른 도메인에서 성능이 잘 나옴을 확인함


9 Reference

1] 유튜브 내용 :  www.youtube.com/watch?v=eTDcoeqj1_w&t=1057s

2) 논문 원본 : arxiv.org/abs/1506.02640

 

You Only Look Once: Unified, Real-Time Object Detection

We present YOLO, a new approach to object detection. Prior work on object detection repurposes classifiers to perform detection. Instead, we frame object detection as a regression problem to spatially separated bounding boxes and associated class probabili

arxiv.org

 

반응형
반응형

[개념 설명]  Object Detection 평가 방법[2](IOU, AP, mAP)

1. IOU(Intersection Over Union)

의미 그대로 합집합 분에 교집합이며, ground truth bounding box와 predict bounding box의 교집합/합집합으로 평가함

2. mAP(mean Average Precision)

AP는 Precision Recall 그래프를 그리고 Precision값을 평균낸 값이며,mAP는 각 클래스의 Average Precision을 평균낸 값이다.

Precision과 Recall설명은 이전 글에서 자세히 설명하였다.  

 

'AI 유튜브 소개/CNN(Convolutional Neural Network)' 카테고리의 글 목록

Autonomous Vehicle Algorithm & Deep Learning Algorithm (이 블로그는 쿠팡파트너스활동으로 소정의 수수료를 받습니다.)

autonomous-vehicle.tistory.com

2.1. Pascal VOC

- Pascal VOC 대회에서는 IOU가 0.5 이상이면, Positive , 미만이면 Negative라고 판단한다.  
- 이를 기반으로 Precision과 Recall이 계산하며, 이를 그래프에 나열하여 선을 그으면 Precision-Recall그래프가 된다. 

- precision recall 그래프를 그릴 경우 계단 형태가 나오게 되는데, 아래 그림과 같이 직사각형의 모양이 나오도록 max precision 기준으로 interpolation을 수행 후, 0부터 1까지 0.1 Recall 당 Precision값들의 평균을 구하여 AP를 계산할 수 있다.   

- 각 클래스별 구한 Average Precision값을 통합하여 평균 낸 것이 Mean Average Precision이다. 

2.2. COCO dataset

IOU 값이 높은 것은 구분할 필요가 있다고 하여, IOU 가 0.5 이상일 때만 True인 것이 아니라, 0.5~0.95 사이에서 0.05 단위로 threshold값을 높여가며 mAP를 계산한 후 한번 더 평균을 내어 mAP를 계산하는 것을 제안하고 있다. 

3. Obejct Detection 주요 대회

3.1 Pascal VOC란?

a. Pattern Analysis, Statical Modeling and Computational Learning Visual Object Classes Challenge의 약자
b. 2005~2012년 까지 8년에 걸쳐 매년 진행
c. 20가지 물체 분류
d. mark 라는 사람이 주도하여 개최되어 왔는데, 그의 사망으로 인하여 2012년을 마지막으로 종
e. Average Precision 기반으로 평가하는 것이 업계 표준(de facto)이 됨
f.최근에는 벤치마크용으로는 사용되지만, 학습용으론 잘 사용하지 않는다.
g. IOU threshold가 0.5 이상이면 true, 아래면 false 이다.

3.2 ILSVRC 란?

a.  Image Net Large Scale Visual Recognition Challenge 의 약자
b. 2010년~2017년 까지 8년에 걸쳐 매년 진행
c. 2012년 alexnet이후로 Deep Learning 기반 알고리즘이 나오게 됐으며, 2015년 ResNet이후 사람의 능력을 뛰어넘음
d. Alex Net(2012), ZFNet(2013), GoogLeNet(2014), VGG(2014), ResNet(2015), GoogLeNetv4(2016), SENet(2017)

3.3 MS COCO 데이터 셋이란?

a. ImageNet의 문제점인 object가 크고, 중앙에 밀집해 있으며, 이미지당 object 수가 적은 무제를 해결하고자 2014년에 제안

 

4. SOTA(state-of-the-art)란?

- 현시대의 최고의 성능을 가진 기법을 의미함
- SOTA 논문과 코드는 아래 링크에서 확인 가능  paperswithcode.com/task/visual-odometry

 

Reference

[1]. maP 소개(영어), kharshit.github.io/blog/2019/09/20/evaluation-metrics-for-object-detection-and-segmentation 

 

Evaluation metrics for object detection and segmentation: mAP

Read about semantic segmentation, and instance segmentation. The different evaluation metrics are used for different datasets/competitions. Most common are Pascal VOC metric and MS COCO evaluation metric. IoU (Intersection over Union) To decide whether a p

kharshit.github.io

[2]. map에 대한 해석, darkpgmr.tistory.com/179 

 

YOLO와 성능지표(mAP, AP50)

최근에 YOLO 논문들을 보다 보니 저자가 2018년 YOLOv3를 마지막으로 YOLO 연구를 중단한 것을 알게 되었다. ☞ 그리고 올해 2020년 2월 자신의 twitter를 통해 컴퓨터비전 연구를 중단한다고 선언한다. YO

darkpgmr.tistory.com

[3], ms coco 평가 지표, cocodataset.org/#detection-eval 

 

COCO - Common Objects in Context

 

cocodataset.org

 

반응형
반응형

[개념 설명]  Object Detection 평가 방법[1]

 

오분류에 대한 추정치

  Condition Positive Condition Negative  
Predict Positive True Poisitive(TP) False Positive(FP) Precision(정확도)
Predict Negative False Negative(TN) True Negative(TN) x
  Sensitive,Recall(민감도, 재현율) Specificity(특이도)  

 

내용

- Accuracy(정분류율)
a. 있는 건 있고 없는 건 없다고 할 확률, 있는거과 없는 것 모두 맞출 확률
b. (TP+TN)/(TP+TN+FP+FN)

- Error Rate 오 분류율)

a. 없는 걸 있다고 하고 있는 걸 없다고 할 확률, 다 틀릴 확률
b. (FP+FN)/(TP+TN+FP+FN)

- Specificity(특이도)
a.물체가 없는 상황에서  물체가 없는데 없다고 할 확률 (True Negative Rate)
b. (TN)/(FP+TN)

 

- 민감도(Sensitivity), 재현율(Recall)  (True Positive Rate)
a.  물체가 있는 상황에서 물체가 있는데 있다고 할 확률
b. (TP)/(TP+FN)

- Precision(정확도)
a. 물체가 있든 없든 있다고 할 롹률
b. TP/(TP+FP)

- F1 Score
a. 2 x (Precision x Recall) / (Precision+Recall)

 느낀점

- 오분류에 대한 추정치의 이름으로 TP,TN,FP,FN 로 나눈다. 앞의 True,Faslse는 예측과 정답이 일치하는지를 판단하는 것이며 뒤의 Positivie와 Negative는 예측값이 무엇인지를 의미한다.
- YOLO의 경우 RCNN에 비하여 mAP는 떨어지지만 False Positive 의 성능은 좋다고 하는데 이는 예측했다고 하지만 실제로는 없는 경우를 의미하며, YOLO는 전체 이미지를 보고 예측을 하기 때문에 아닌데 맞다고 하는 것이 적다는 것을 의미한다.
- 이에, Object Detection 을 단순히 정확도만을 보고 비교하면 안되며, 틀렸는데 맞다고 한 비율 등 모든 것을 고려할 필요가 있다.
- 정확도를 Accuracy 로 생각하고 있었다. 하지만 정확도란 Precision을 의미하며 Accuracy와 Precision은 어면히 의미가 다르다.

 

 

 

반응형
반응형
제목 

Multimodal Unsupervised Image-toImage Translation (2018.04)

저자

NVIDIA / Xun Huang, Ming-Yu Liu, Serge Belongie, Jan Kautz

Abstract 

Unsupervised Image-to-Image 번역 문제는 비전에 있어서 도전적인 문제이다. 기존의 Unsupervised Image-to-Image문제는 지나치게 단순화된 가정을 하여 일대일 매핑 모델링을 하게 된다. 그 결과 소스 이미지로 부터 다양한 출력을 생성하지 못한다는 한게가 있다. 본 논문에서는 단순화된 과정으로 인한 출력의 한계를 해결하기 위하여 Multimodal Unsupervised Image-to-Image Translation 을 제안한다. 

Reference

1. 논문(MUNIT) : arxiv.org/abs/1804.04732

2. 유튜브 개념 및 코드 설명 : https://www.youtube.com/watch?v=yOLE9aCWAN4 

 

 

반응형
반응형

AI 란 무엇인가?

AI는 General AI와 Narrow Ai로 구분된다

- General AI 는 모든 것을 다 할 수 있는 AI를 의미한다. ex) 아이언맨

- Narrow AI 는 한 분야의 것만을 할 수 있는 AI 이다. ex) 우리가 일반적으로 개발하는 AI를 의미한다. 

- 이러한 Narrow AI는 능동적으로 명령을 줘야 움직였던 머신들을 생각을 가지고 움직이도록 변화시키는 모든 기술들을 포괄하여 말한다.

 

Machine Learning이란 무엇인가?

Machine Learning 은 작게는 3가지로 나뉜다. 

Supervised Learning, Unsupervised Learning, Reinforcement Learning이다.

Superviesed Learning - 정답 label이 주어져 이를 기반으로 학습하는 머신런닝 기법이다.                                    ex) 주식 예측

Unsupervised Learning - 정답이 없는 문제를 학습시키는 머신런닝 기법,                                                              ex) clustering 

Reinforcement Learning- 당근과 책을을 줌으로써 문제를 알아서 학습할 수 있도록 하는 머신런닝 기법               ex) 알파고

 

Classification vs Regression 이란 무엇인가?

Supervised Learning은 크게 2가지로 나뉜다. Classification, Regression 이다.

Classification : 이진분류, 다중분류 와 같이 discrete한 output을 내는 문제이다.                                                  ex)주식의 값이 오를지 내릴지지 예측

Regression : 연속적인 output을 예측하는 문제이다.                                                                                          ex) 주식의 수치를 예측하는 문제.

 

Deep Learning이란 무엇인가?

Deep Leanring은 심층 신경망을 사용한 머신런닝 기법 중 한가지이다. 신경망을 어느 분야에 사용했느냐에 따라 신경망 모델이 다르며 크게 CNN, RNN, GAN, Reinforcement 계열이 연구가 많이 진행되었다.

CNN : CNN은 Convolutional Neural Network의 약자로 이미지 분류에 주로 사용되는 딥러닝 모델이다. 얀 르쿤 교수님이 처음으로 만들었다. 

RNN : RNN 은 Recurrent Neural Network의 약자로 주로 음성인식에 활용되며, 이전 데이터를 고려하여 문맥을 파악한 후 다음에 나올 단어를 예측하거나 말의 의미를 파악할 때 주로 사용된다.

GAN : GAN 은 Generative Adversarial Neural Network의 약자로 생성적 적대 신경망이다. 경쟁을 통해서 배운다는 의미이다. 이안굿펠로우 라는 사람이 만든 뉴럴네트워크로  감별사(Detective)가 실제 데이터와 생성해낸 데이터를 감별하지 못할 때까지 적대적으로 학습시키는 기법이다.

 

Reference

1)AI, Machine Learning, Deep Learning 차이

http://www.youtube.com/watch?v=arbbhHyRP90 

2) GAN이란 무엇인가

http://www.youtube.com/watch?v=N9ewzLUZhL8" target="_blank" rel="noopener" data-mce-href="http:// http://www.youtube.com/watch?v=N9ewzLUZhL8">http:// http://www.youtube.com/watch?v=N9ewzLUZhL8   

 

반응형

+ Recent posts