5/01/2017

Computer Vision 관련자료 수집 (수정중)

1. Computer Vision 

Computer Vision의 기술을 잘 알지 못하여 이부분에 관하여 기본 자료조사를 하려고 하며,
이 기술의 트렌드 어떻게 진행이 되며, 어떤 다른 기술과 접목이 되어 진행이 되는지 자세히 알려고 한다.

더불어 사용되는 기술을 알아보려고 하지만, 관련된 이론과 수학지식을 부분을 이해를 해야한다면, 기초부분까지 파악 해야겠다.

현재 기본으로 사용되는 기술은 OpenCV인 것 같지만, CPU 내부에서 사용되는 ISP를 조절하여,
다른 적용 및 AI 기술 및 증강현실 기술의 적용, 로봇기술 및 자동차분야의 활용등
관련된 기술들을 알아봐야 할 것 같다.

1.1. Computer Vision 의 기술 과 역사 

일단 관련된 책을 한번 읽고, 이관련 기술 및 역사 관련된 부분을 추후 다시 정리 해야겠지만,이 기술의 범위가 어디까지 인지 현재 불문명하다.

Computer Vision의 정의를 보면, Digital Image or Video로 부터 Data를 가져와 높은 수준의 이해를 얻는 것을 다루는 기술인 것 같다.

기술로만 보면 단일 기술이 아니라 복합적인 기술이며, 디지털 영상처리를 기반으로 시작하여, Object Detection 뿐만 아니라
다른 영상기술이 들어가고 이를 이용하여 Machine Learning에 이어 Deep Learning으로 발전하는 방향으로 가는 추세인 것 같다.
점점 복잡해지고, 어려운 분야 인 것 같다.

핸드폰에서는 이 기술을 이용하여 증강현실까지 사용이 되며, 자동차에서는 자율주행 및 OCR 등 관련기술의 응용은 너무 많은 것 같다.

  https://en.wikipedia.org/wiki/Computer_vision
  https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%EB%B9%84%EC%A0%84


1.2 Computer Vision 관련 기술
Computer Vision에서 Hardware 기술을 보면, 기본적으로 Camera와 연관된 ISP 기술과
GPU에서 제공되는 기술이 있을 것 같다.
GPU의 기술은 아직 잘 모르기 때문에 추후 알게된다면 이 부분을 더 조사해보겠다.
  • Hardware
    ISP (Image Signal Processor)  : Camera와 관련된 SOC내부에 있는 HW 세부기술
  1. Demosaicing : CFA Interpolation 이라고 하며 Bay Pattern을 RGB or YUV로 변환기능
  2. 3A 기능 :  ( Autofocus, Autoexposure, Autowhitebalance)
  3. Noise reduction : 이 부분도 Computer Vision에 기능에 포함되며, ISP에 포함
  4. Filtering : Computer Vision에 기능에 포함되며, ISP에 포함
  5. Resize :  Digital Zoom in/out
  6. 기타 기능

Software 입장에서 보면, Intel에서 개발을 한 OpenCV가 있으며, DSP의 관련 Library들이 존재하겠다.
하지만, Software에서 처리하다보니, 많은 처리요구량을 필요하며 Embedded에서는 못하는기술도 있기에, 이부분은 검토를 해봐야할 것 같다.
  • Software 
  1. OpenCV   (Open Computer Vision)
  2. ARM용 Compute Library for Computer Vision

  • Computer Vision AI 와 AR 
  1. BigData 분야 
  2. AI (Machine Learning, Deep Learning) 분야 
  3. Augmented Reality (증강현실)
  4. 기타 등등 

  • AI의 Machine Learning 과 Deep Learning의 차이 

  https://www.forbes.com/sites/bernardmarr/2016/12/08/what-is-the-difference-between-deep-learning-machine-learning-and-ai/#6d41d5da26cf
  https://www.quora.com/What-is-the-difference-between-deep-learning-and-usual-machine-learning



3. Software Computer Vision 

현재 OpenCV와 ARM관련 Computer Vision Library가 존재하며, 둘다 아직 사용한 경험이
아직 없지만, 관련자료를 수집을 하고 있다.

OpenCV인 경우 ARM에서 사용할 경우 많은 제약이 따른다고 하며, 관련부분을 확인하고 사용해야겠다.

  • Computer Vision 의 각 기술 설명 및 기본 설명  
  https://www.tutorialspoint.com/dip/computer_vision_and_graphics.htm


3.1 OpenCV(Computer Vision) 설치 및 사용 

  • OpenCV Porting
  http://kuroikuma.tistory.com/120
  http://processors.wiki.ti.com/index.php/Building_OpenCV_for_ARM_Cortex-A8

  • OpenCV Python 설치
  http://m.blog.naver.com/samsjang/220498694383


3.2 ARM용 Computer Vision Lib 소개 및 설명  

  • ARM Compute Library for Computer Vision
ARM에서 ARM Cortex CPU and ARM Mali GPU 기반으로 Computer Vision을 위한 lib제공.

  https://community.arm.com/graphics/b/blog/posts/arm-compute-library-for-computer-vision-and-machine-learning-now-publicly-available


만약 OpenCV를 사용을 한다고 하면 Intel CPU에서 문제가 없게지만, ARM 즉 Embeded에서는
기능이 제한적이라고 하며, 아무래도 NEON Mode의 함수가 적은것 같다.

  • Computer Vision 강의  오일석 교수
  http://greenpresent.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0%EB%B9%84%EC%A0%84%EA%B0%95%EC%9D%98%EC%A0%84%EB%B6%81%EB%8C%802015011620150117
  http://cs.nyu.edu/~fergus/teaching/vision/



  • Stanford University Mobile Computer Vision

  https://web.stanford.edu/class/cs231m/lectures/


좀더 자세히 알고 싶다면, MOOC를 이용하여 수강 개별강의들을 들어보자
현재보면, 다 DeepLearning or Robotics와 연결하여 강의를 진행하는 것 같다.


4. Computer Vision 관련 책 

현재 OpenCV의 기반으로된 책의 종류는 많이 존재하며, 일단 도서관에서 읽어본 후,
기본개념과 관련용어 및
관련 알고리즘의 기본사항을 파악을 해야할 것 같다.

현재 최근에는 Python을 기반으로 하는 OpenCV까지 존재하므로 이를 이용한 것 까지
관련된 부분을 알아 봐야겠다.


  http://www.hanbit.co.kr/store/books/look.php?p_code=B4536726709


5. 각 대학교 연구 및 실적 관련 상황 

현재 가능 많이 연구를 하는 곳이 Carnegie Mellon University이며, 구글 검색을 해봐도,
처음 검색되는 것 역시 이곳이다.
LinkedIn으로 확인을 해봐도 이곳이 가장 활발하다.


5.1 외국 대학교

  • Carnegie Mellon University - Computer Vision Homepage 
  https://www.cs.cmu.edu/~cil/vision.html

  • Berkeley 
  https://www2.eecs.berkeley.edu/Research/Projects/CS/vision/

  • MIT New
  http://news.mit.edu/topic/computer-vision

이외에도 많이 존재하며, 자료는 찾기 나름인 것 같다.

5.2 국내 대학교

솔직히 국내 대학교는 참고용으로만 보는것 이 좋을 것 같으며, 해외 자료가 더 훌륭하고
좋은 자료가 풍부하다.
  • Sungkyunkwan Univesity Publications
  http://vision.skku.ac.kr/


  http://pcl.chonbuk.ac.kr/teaching/


6. Computer Vision의 활용기술의 예


  https://sites.google.com/site/roricljy/home

  • 자동차 활용기술 (Lane Detection )
Lane Detection을 검색을 하면 자동차 자율주행부터 간단한 기술들을 볼수 있습니다.
대부분 OpenCV 기반으로 했으며, OpenCV Python으로 한것도 존재한다.

  https://www.youtube.com/watch?v=Ni9nAm-Thsw
  https://www.youtube.com/watch?v=VlH3OEhZnow
  https://www.youtube.com/watch?v=8h9vU1pnNZA


  • MS Azure 의 Computer Vision의 활용 
  https://azure.microsoft.com/ko-kr/services/cognitive-services/computer-vision/