▶ Machine Learning

   Machine Learning은 컴퓨터에게 사람이 직접 명시적으로 Logic을 지시하지 않아도 데이터를 통해 컴퓨터가 ‘학습’을 하고 그것을 사용해 컴퓨터가 자동으로 문제를 해결하도록하는 것을 의미한다.

   머신러닝은 ‘기계’가 일일이 코드로 명시하지 않은 동작을 데이터로부터 ‘학습’하여 실행할 수 있도록 하는 ‘알고리즘’을 개발하는 연구 분야이다


▶ TensorFlow Object Detection API

   사진속의 다양한 물체의 위치를 특정하고 종류를 분류해주는 기능을 오픈소스 형태로 제공한다. 연구자들에게는 이 모델을 기초로 더 빠른 연구를 진행하게 하고 애플리케이션 개발자들에게는 딥러닝 모델을 직접 만들고 학습시키지 않아도 관련기술을 사용할 수 있게 하는데에 목적이 있다. TensorFlow API는 NestCam, 스타일 기반 이미지 검색, 구글 스트리트 뷰에서의 글자인식과 같은 구글 서비스에서 사용되고 있는 API와 같은 API라고 한다.

   참조:

    https://github.com/tensorflow/models/tree/master/research/object_detection

    https://research.googleblog.com/2017/06/supercharge-your-computer-vision-models.html


▶ Model

    어떤 상황을 해결하기 위한 문제를 세우고 그 문제를 풀기 위한 모델을 만들기 위해 데이터에 대한 가설을 세우고, 그 가설에 부합하는 알고리즘을 개발하는 과정이다.


  ㅇ 어떤 대상을 모두에게 공통적으로 이해되도록 약속된 방식(수식,그림 등)으로 표현하는 것
     - 복잡한 현실세계를 단순화(추상화) 즉, `추상적 체계적으로 표현하는 작업 또는 방법`
        . 통상, 관련자들끼리 상호이해를 쉽게 하도록 다이어그램화 함

  ㅇ 공학적으로는, 시스템(체계)적인 특성을 `수학적으로 표현하는 과정(수식화)`
     - 정량적으로 표현되도록 수학적 언어로 전환시키는 과정
        . 좋은 모델링 이란?   컴퓨터를 이용하여 해석,시뮬레이션,설계하기 쉬운 모델


▶ SSD: Single Shot Multibox Detector Model  

    1번의 네트워크 forwarding 만으로 여러 물체를 검출하는 모델입니다. R-CNN류에서 상대적으로 좋은 성능이 나오다가, 이 논문을 통해 Single shot detector로도 충분히 좋은 성능이 나올 수 있다는 것을 보여준 것 같습니다. 특히, 속도가 빠르다보니 실시간 물체 검출에 사용됩니다.

  • YOLO 보다 빠르면서 R-CNN류만큼 정확한 성능
    • SSD : 72.1% mAP @ 58FPS
    • Faster R-CNN : 73.2% mAP @ 7FPS
    • YOLO : 63.4% mAP @ 45FPS
  • 여러 Feature Scale을 잘 사용할 수 있도록 모델링
  • 학습이 쉽도록 각 filter별 역할을 잘 분리시켜, location 정보와 class 정보 등을 출력하도록 함
  • 학습이 쉽도록 각 feature map은 서로 다른 scale을 담당하도록 하고, anchor 설계를 함.

▶ Google Inception Model

    Tensorflow 공개 후 우리가 가장 많이 사용하는 Conv-Net 모델


▶ Inception. v1. (a.k.a GoogLeNet) Model

    #google 에서 ‘Inception’ 이라는 이름으로 부르는 네트워크 구조를 처음으로 밝힌 논문입니다. 22개의 네트워크를 쌓아서 2014년 ILSVRC에서 우수한 성적을 보고했습니다.

  • 알렉스넷에 비해 12배나 적은 파라미터 수, 훨씬 정확한 성능
  • 더욱 효율적임
  • 단일 Convolutional Operation을 쌓아서 네트워크를 구성하던 기존의 방식과는 다르게 Layer하나가 더욱 많은 계산을 하도록 설계. Network in Network1과 유사.
  • Network in Network1에서는 MLP로 Convolutional Filter를 대체했다면, 이 논문에서는 Inception Module로 해당 기능을 대체.

     참조:

      http://openresearch.ai/t/inception-v1-going-deeper-with-convolutions/40


▶ Inception. v2 Model

     2015.12  개선된 Inception Module과 Label Smoothing 제안. 약간의 성능 향상.


▶ Inception. v3 Model

     약간 큰 사이즈로 더 높은 정확도를 제공한다. 기술은 MobileNet과 유사하다

     Inception.v2 구조도를 그대로 Inception.v3 라 생각해도 된다.

       ◦Inception.v3 모델을 Inception.v2++ 정도로 봐도 무방

▶ MobileNet Model

     1000개의 object 클래스들은 디텍션하는 모델을 모바일과 임베디드에 맞춰서 다시 진행


▶ ResNet Model

    #microsoft::Tag 에서 Resnet 이라는 이름으로 제안한 네트워크 아키텍쳐입니다.

  • 100개, 1000개가 넘는 Layer를 쌓아 Imagenet 3.5% 에러 수준을 달성
  • Residual Learning이라는 개념의 소개로, Skip connection을 도입해 네트워크를 deep하게 쌓음

▶ RCNN 

Multiple-Object Detection에 대한 관심을 가지게 된다면 가장 먼저 접하게 될 테크닉이 바로 R-CNN이다. Region의 R을 CNN에 붙인 이 방법은 사실 간단한 프로세스를 거친다. 

  1. CNN을 fine-tuning한다.
  2. Input Image에 Selective search를 적용하여 object detecting을 수행한다.
  3. Detected Object(proposals)를 CNN에 넣고 feature extract를 수행한다.
  4. 분석된 Feature들을 softmax classifier나 SVM에 붙여서 각 proposal의 score를 매긴다.
  5. Non-Maximum Suppression(NMS)을 이용하여 bounding box를 구한다.

  6. <span style="font-size: 8pt;">*여기서 사용된 Selective search와 NMS는 다음 포스트에서 설명하기로 한다. </span>

간단히 말하자면, R-CNN은 Input image에서 수많은 Object 후보들을 찾아내고 이들을 모두 CNN에 넣어서 Feature를 뽑아낸다. 그리고 뽑아낸 Feature들을 SVM등의 Classifier에 넣어서 분류작업을 수행하고 NMS와 같은 기법으로 Bounding Box를 이미지 위에 그려내는 방법이다. 다음 그림은 전체적인 과정에 대한 이해를 도와준다.


▶ COCO(Common Objects in COntext) Detection Challenge

    마이크로소프트에서 만든 이미지 인식(recognition), 분리(segmentation), 캡션 붙이기(captioning), 사람의 키포인트(keypoint) 찾기 등을 위한 데이터입니다. 대단히 많은 데이터로 구성되어 있고 MS에서 작정하고 만든 데이터입니다. 매년 챌린지가 열리고 있습니다!

    마이크로소프트의 COCO(Common Object in COntex) 프로젝트는 이미지 객체 인식을 확장한 장면 이해를
목표로 91종의 객체 유형에 대해 라벨링된 33만장 규모의 새로운 DB를 공개

   참조:

    http://cocodataset.org/#home


▶ ImageNet

    ImageNet은 ILSVRC 챌린지에서 사용하는 데이터입니다. ImageNet 전 세계에서 모은 이미지들로 챌린지를 열어 누가 컴퓨터 비젼 분야에서 제일 뛰어난 기술을 갖고 있는지를 겨룹니다. 매년 새로운 승자가 등장하고, 그렇게 등장한 기술들은 거의 대부분 반드시 사용해야만 하는 기술이 되곤 합니다. 아쉽게도 2017년을 마지막으로 한다는 뉴스가 있었습니다.

1,000 종류의 1,281,167 개 데이터가 주어지고 데이터가 어떤 물체인지를 맞추는 챌린지입니다. 각 종류별 데이터의 갯수도 다릅니다. 분류 외에도 탐지(detection) 등 다른 부문도 있지만, 제일 유명한 것은 1,000 종류 분류입니다. 엄청나게 많은 데이터인데다, 전체를 합치면 200GB에 가깝습니다. 이 크기는 절대 GPU에 들어갈 수 없기 때문에 보통 특별한 방법을 써서 GPU 훈련을 시킵니다.


   ILSVRC: ImageNet Large Scale Visual Recognition Competetion


    논문에서 사용하는 ImageNet 데이터는 ILSVRC 2012 의 분류 문제에 사용된 데이터입니다. 실제로 ImageNet 데이터는 저게 전부가 아니고, 훨씬 많은 전 세계에서 모은 데이터들을 모아 놓은 사이트입니다. 다만 이 중 일부를 떼서 챌린지 용으로 사용하는 것 뿐입니다. ImageNet 회원이 되면 비상업적 목적으로 원본 이미지를 다운받을 수도 있고, 이미지의 URL만 받아 불러올 수도 있습니다. 하지만 훈련을 위해서는 역시 원본 이미지가 있어야 합니다. 이미지들의 크기도 전부 다르기 때문에 전처리도 필요합니다. 
    참조:

     http://www.image-net.org/



+ MAP

+ Pre-trained

+ TFRecord

+ CloudML

+ Oxford-IIIT Pets lives

+ Annotate

+ Label

...

Posted by 이성윤