Microsoft Word - Final_ _최정빈.docx

Similar documents
(JBE Vol. 23, No. 2, March 2018) (Special Paper) 23 2, (JBE Vol. 23, No. 2, March 2018) ISSN

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

2 : (Seungsoo Lee et al.: Generating a Reflectance Image from a Low-Light Image Using Convolutional Neural Network) (Regular Paper) 24 4, (JBE

Delving Deeper into Convolutional Networks for Learning Video Representations - Nicolas Ballas, Li Yao, Chris Pal, Aaron Courville arXiv:

(JBE Vol. 24, No. 2, March 2019) (Special Paper) 24 2, (JBE Vol. 24, No. 2, March 2019) ISSN

김기남_ATDC2016_160620_[키노트].key

6주차.key

BSC Discussion 1

(JBE Vol. 23, No. 2, March 2018) (Special Paper) 23 2, (JBE Vol. 23, No. 2, March 2018) ISSN

SchoolNet튜토리얼.PDF

3 Gas Champion : MBB : IBM BCS PO : 2 BBc : : /45

보고싶었던 Deep Learning과 OpenCV를이용한이미지처리과정에대해공부를해볼수있으며더나아가 Deep Learning기술을이용하여논문을작성하는데많은도움을받을수있으며아직배우는단계에있는저에게는기존의연구를따라해보는것만으로도큰발전이있다고생각했습니다. 그래서이번 DSP스마

Chap 6: Graphs

05-06( )_¾ÆÀÌÆù_ÃÖÁ¾

서현수

untitled

15_3oracle

Chap 6: Graphs

PCServerMgmt7

Multi Channel Analysis. Multi Channel Analytics :!! - (Ad network ) Report! -! -!. Valuepotion Multi Channel Analytics! (1) Install! (2) 3 (4 ~ 6 Page

Microsoft PowerPoint - IP11.pptx

untitled

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

Modern Javascript

SW¹é¼Ł-³¯°³Æ÷ÇÔÇ¥Áö2013

<4D F736F F D20B1E2C8B9BDC3B8AEC1EE2DC0E5C7F5>

(......).hwp

VOL /2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

JMF2_심빈구.PDF

MAX+plus II Getting Started - 무작정따라하기

Orcad Capture 9.x

Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제

레이아웃 1

PowerPoint 프레젠테이션

2 : (EunJu Lee et al.: Speed-limit Sign Recognition Using Convolutional Neural Network Based on Random Forest). (Advanced Driver Assistant System, ADA

±èÇö¿í Ãâ·Â

PowerPoint 프레젠테이션

MPLAB C18 C

DioPen 6.0 사용 설명서

s SINUMERIK 840C Service and User Manual DATA SAVING & LOADING & & /

<313120C0AFC0FCC0DA5FBECBB0EDB8AEC1F2C0BB5FC0CCBFEBC7D15FB1E8C0BAC5C25FBCF6C1A42E687770>

45호_N스크린 추진과정과 주체별 서비스 전략 분석.hwp

Secure Programming Lecture1 : Introduction

04_오픈지엘API.key

C# Programming Guide - Types

ICT03_UX Guide DIP 1605

1. GigE Camera Interface를 위한 최소 PC 사양 CPU : Intel Core 2 Duo, 2.4GHz이상 RAM : 2GB 이상 LANcard : Intel PRO/1000xT 이상 VGA : PCI x 16, VRAM DDR2 RAM 256MB

Oracle Apps Day_SEM

방송공학회논문지 제18권 제2호

HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M.

ETL_project_best_practice1.ppt

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

이제는 쓸모없는 질문들 1. 스마트폰 열기가 과연 계속될까? 2. 언제 스마트폰이 일반 휴대폰을 앞지를까? (2010년 10%, 2012년 33% 예상) 3. 삼성의 스마트폰 OS 바다는 과연 성공할 수 있을까? 지금부터 기업들이 관심 가져야 할 질문들 1. 스마트폰은

(JBE Vol. 21, No. 1, January 2016) (Regular Paper) 21 1, (JBE Vol. 21, No. 1, January 2016) ISSN 228

1217 WebTrafMon II

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Microsoft Word - KIS_Touchscreen_5Apr11_K_2.doc

_KrlGF발표자료_AI

Ⅱ. Embedded GPU 모바일 프로세서의 발전방향은 저전력 고성능 컴퓨팅이다. 이 러한 목표를 달성하기 위해서 모바일 프로세서 기술은 멀티코 어 형태로 발전해 가고 있다. 예를 들어 NVIDIA의 최신 응용프 로세서인 Tegra3의 경우 쿼드코어 ARM Corte

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

iOS4_13

DE1-SoC Board

High Resolution Disparity Map Generation Using TOF Depth Camera In this paper, we propose a high-resolution disparity map generation method using a lo

I

The Self-Managing Database : Automatic Health Monitoring and Alerting

thesis

DBPIA-NURIMEDIA

<343620B3EBB1A4C7F62DBDBAB8B6C6AEC6F9BFEB20C2F7BCB1C0CCC5BBB0E6BAB820BED6C7C3B8AEC4C9C0CCBCC720B0B3B9DF2E687770>

Microsoft Word - FunctionCall

DocsPin_Korean.pages

歯이시홍).PDF

MS-SQL SERVER 대비 기능

rmi_박준용_final.PDF

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

..,. Job Flow,. PC,.., (Drag & Drop),.,. PC,, Windows PC Mac,.,.,. NAS(Network Attached Storage),,,., Amazon Web Services*.,, (redundancy), SSL.,. * A

<4D F736F F D20C3D6BDC C0CCBDB4202D20BAB9BBE7BABB>

김경재 안현철 지능정보연구제 17 권제 4 호 2011 년 12 월

PRO1_02E [읽기 전용]

APOGEE Insight_KR_Base_3P11

Something that can be seen, touched or otherwise sensed

hw 2006 Tech guide 64p v5

09권오설_ok.hwp

<372DBCF6C1A42E687770>

PowerPoint Presentation


- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

PowerPoint Presentation

°í¼®ÁÖ Ãâ·Â

Ch 1 머신러닝 개요.pptx

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

분산처리 프레임워크를 활용한대용량 영상 고속분석 시스템

untitled

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

Lab10

Assign an IP Address and Access the Video Stream - Installation Guide


02( ) SAV12-19.hwp

Social Network

Jwplayer 요즘 웹에서 동영상 재생을 목적으로 많이 쓰이는 jwplayer의 설치와 사용하기 입니다. jwplayer홈페이지 : 위의 홈페이지에 가시면 JWplayer를 다운 받으실 수 있습니다. 현재 5.1버전

FMX M JPG 15MB 320x240 30fps, 160Kbps 11MB View operation,, seek seek Random Access Average Read Sequential Read 12 FMX () 2

Transcription:

CSED499I-01 Research Project Final Report Embedded MDNet Mobile Embedded Multi-Domain Convolutional Neural Networks for Visual Tracking 20080650 CSE Jeongbin Choe Advisor: Prof. Bohyung Han, CV Lab

1. Introduction A. Visual Tracking Visual Tracking 은 Computer Vision 의한분야로, 연속된이미지시퀀스에서움직이는오브젝트를인식하고그위치를추적하는영상추적기술이다. 일반적으로매프레임마다해당오브젝트를인식하며, 관련하여수많은알고리즘이존재한다. B. Convolutional Neural Network (CNN) 1989 년 Y. LeCun 의논문에서처음소개가된 Deep Neural Network 의일종이다. 최초에는필기체 zip code 인식을위한프로젝트에서개발이되었지만이후다양한분야에이용되고있다. CNN 은기존 Multi-layered Neural Network 에비해아래의두가지특징을갖는다. - Locality: CNN 은영상분석시공간적으로인접한정보를활용하는데, Subsampling 과정을거치면서영상의크기를줄이고 local feature 들에대한 filter 연산을반복적으로적용하며점차 global feature 를얻는다. - Shared Weights: 동일한 weight 를갖는 filter 를전체영상에

반복적으로적용함으로써변수의수를획기적으로줄일수있으며, topology 변화에무관한 invariance 를얻을수있게된다. CNN 은 Convolution Layer 와 Pooling Layer 로구성되는데, Convolution Layer 에서는 feature 를추출하기위한 filter 가적용되고, Pooling Layer 에서는 max-pooling 방식으로 subsampling 과정을거친다. 결과적으로, input 영상으로부터 convolution 을수행해 feature map 을만들고, pooling 을통해 feature map 의크기를줄인다. 보통의경우에는 1 개의 convolution 에대해 1 개의 pooling 연산을수행한다.

여러단의 convolution + pooling 과정을거치면, feature map 의크기는줄어들고전체를대표할수있는 global 한 feature 들이남게된다. 이렇게얻어진 feature 가 fully connected network 의입력으로연결이되어, 최적의인식결과를낼수있게되는것이다. 이러한특징덕에, CNN 은특히 Computer Vision 분야에서널리사용되고있다. C. MDNet MDNet 은 Multi-Domain Learning Network 로, 2015 년 H. Nam 의논문에서소개된 Visual Tracking 알고리즘이다. 3 단의 CNN 과 3 단의 fully-connected layer 로이루어져있으며, individual 한 training sequences 에대해 1 대 1 로대응하는 domain-specific layers 가 output 단에존재한다. 이알고리즘은 VOT2015 에서여러 state of the art 알고리즘들을제치고최종 winner 가되었다.

이알고리즘은 MATLAB 으로구현되어있으며, 전체코드는 Github 에공개되어있다. 논문에의하면, 8 cores Intel Xeon Processor 와 NVIDIA Tesla GPU 의환경에서약 1 fps 로작동한다. D. Project Goal MDNet 이모바일디바이스환경에서구현되었을때어떤성능을보여줄지궁금했고, 그에의해 MDNet 을모바일디바이스에 porting 하는것이이번과제연구의주제가되었다. 개발에사용한디바이스는 Apple iphone 6+ 이며, 주제를정리하면아래와같다. - MDNet 의네트워크와알고리즘을그대로 iphone 6+ 에 porting 한후, performance accuracy 를최대한유지하면서 optimization 을수행하여, 원래의 1 fps 에가깝게작동하도록만든다. (iphone 6+ 환경 : Apple A8 processor Dual-core 1.4GHz Typhoon, PowerVR GX6450) - MDNet based real-time learning and object tracking application 을제작하여, 디바이스의카메라를통해 realtime 으로 visual tracking 을수행해본다. 이보고서를쓰는시점에서 Embedded MDNet 의결과물은약 0.40 fps 의 performance 를보여주었다.

2. Requirements 이번프로젝트를진행하기위해서는아래의두가지가요구되었다. 1) ios 에서작동할수있는, Swift 나 Objective-C 로구현된 CNN framework 2) 성능확보를위한, Apple 의 GPU 가속 library 인 Metal 을지원하는 framework DeepLearningKit 이라는 Open Source framework 가위의두가지요구조건을충족하는것을확인했고, 그외에는두조건을충족하는 framework 를찾을수없었다. 결과적으로, 이번프로젝트의구현에 DeepLearningKit 이사용되었다. DeepLearningKit 은 2015 년 12 월에시작된 Open Source 프로젝트로, Apple 의개발언어인 Swift 로제작된 CNN framework 이며, Metal 을이용해 GPU 가속을지원한다. 위의요구조건을충족하며, 더구나 MDNet 에도사용되었던 Caffe 기반의 CNN 이었기에, 이번프로젝트에가장적합하다고생각했다. 3. Implemented Architectures 1) Abstract 이번프로젝트의구현에사용한환경은아래와같다. - Environments: OS X El Capitan 10.11, Xcode 7.3

- Frameworks: Metal, OpenCV 2 for ios, DeepLearningKit - Languages: Swift, Objective-C 이번 프로젝트는, 1) 우선 MDNet 의 알고리즘과 네트워크를 그대로 ios 에 올리고, 2) optimize 를 수행하는 순서로 진행되었다. 구현에 있어 여러 어려움이 있었지만 그에 대해서는 후술하고, 결과적으로 구현된 아키텍처를 이미지로 표현하면 아래와 같다. { pooling_param : { stride : 1, kernel_size : 8, pool : 1, name : { top : [ 0.97 fps train JSON formatted models convert MDNet pretraining models CNN-layers (DeepLearningKit) Selecting track realtime track train optimize 1. Reduce the size of input or the number of layers 2. Remove online tracking process [ Embedded MDNet ] CNN-layers Fernando Sequence User drag object in camera Bounding Box Regression [ Real-time Application ] MDNet 의 기존 알고리즘과, optimize 가 수행되어 변경된 embedded MDNet 의 알고리즘은 아래와 같다.

원래의알고리즘에서, 10 번째 iteration 마다수행하는 long-term network update 과정이 optimization 을위해최종적으로제거되었다. 자세한내용은후술하겠다. 2) Porting MDNet 에서 train 을위한 CNN 은.mat 파일에정의되어있었고 (imagenet-vgg-m-conv1-3.mat), 이를 DeepLearningKit 의 input 으로제공하기위해 json 포맷으로변경해야했다. imagenet_convert.json "layer": [ { "name": "conv1", "pad": 0, "type": "Convolution", "stride":2, "blobs": [ { "shape": { "dim": [ 96, 3, 7, 7 ], "data": [ ], { "shape": { "dim": [ 96 ], "data": [ ] ], { "name": "pool1",

, "stride": 2, "pad": [0,0,0,0], "type": "Pooling", "method": "max", "pool": [3,3] 위 json 파일을 input 으로하여네트워크를로드한후, MATLAB 코드 mdnet_run.m 의로직을그대로수행한다. MDMainViewController.swift, MDSimulationViewController.mm opts = Options() deepnetwork = DeepNetwork() var caching_mode = false // JSON 을통해 CNN 을로드한다. deepnetwork.loaddeepnetworkfromjson("imagenet_convert", inputimage: nil, inputshape: imageshape, caching_mode:caching_mode) if (opts.bbreg) { possamples = samples( uniform, location: bb_loc, count: opts.bbreg_nsamples*10, opts: opts) // Uniform distribution 으로 positive sample 을만들고, bounding box regressor 를 train 한다. boundingbox = BoundingBox(pos_samples) let targetscore : Int = starttracking() // 재귀적으로 tracker 의 processframe 을호출하는시작점 if (opts.bbreg && targetscore > 0) { // Bounding box regression deepnetwork.updatelayer(boundingbox.predict(deepnetwork.conv[0])) if (targetscore > 0) { // Positive sample: Gaussian dist

// Negative sample: Uniform dist deepnetwork.update(tmppossamples, negative: tmpnegsamples) // invoke // main 의 starttracking() 에서호출됨 - (void)invoke:(cv::mat &)image { Mat img_grey; cvtcolor(image, img_grey, CV_RGB2GRAY); // Change color space if (_begininitialize) { if (_tracker!= NULL) { delete _tracker; _tracker->initialize(img_grey, _box); _starttracking = YES; _begininitialize = NO; NSLog(@"Tracker initalized"); if (_starttracking) { weak typeof(self) weakself = self; block typeof(image) blockimage = image; dispatch_async(dispatch_get_global_queue(dispatch_queue_priority_high, 0), ^{ if (weakself.disabled) { return; NSLog(@"processing..."); NSDate *start = [NSDate date]; _tracker->processframe(img_grey); // tracker 는 deepnetwork 를참조하여 deepnetwork.classify() 를호출한다. RotatedRect rect = _tracker->bb_rot; Point2f vertices[4]; rect.points(vertices);

NSTimeInterval end = [[NSDate date] timeintervalsincedate:start]; NSLog(@"%f", end); strong typeof(weakself) strongself = self; dispatch_sync(dispatch_get_main_queue(), ^{ [_timelabel settext:[nsstring stringwithformat:@"%.3f fps", 1.0f/end]]; [strongself showimage:blockimage]; if (_imageindex < NUM_IMAGES) { // 다음이미지로 tracking 을수행한다. [_indexlabel settext:[nsstring stringwithformat:@"%ld/%d", _imageindex+1, NUM_IMAGES]]; UIImage *nextimage = [UIImage imagenamed:[nsstring stringwithformat:@"%08ld", (long)(++_imageindex+1)]]; cv::mat newimage; UIImageToMat(nextImage, newimage); [strongself invoke:newimage]; else { _starttracking = NO; ); ); 3) Optimization Performance 향상을위한 optimization 을 trial-and-error 과정을통해진행했다. Convolution layer 의 parameter 와개수조절은 imagenet_convert.json 파일내용을수정하면서수행했다. MDNet 의원래의 layer 구조는아래와같다.

Embedded MDNet 에서는, 1) input size 를 107 X 107 에서 51 X 51 로줄이고 (51 X 51 은 MDNet 의 conv2 layer 의 input size 와같다 ), 2) Convolution layer 와 fully-connected layer 를각각하나씩줄여, 최종적으로아래와같은네트워크를구성했다. (conv1 conv2 fc1 fc2) 4) Real-time Application Embedded MDNet 의 network 를객체로저장하고, 카메라의매 frame image 에서, 유저가화면에서드래그한부분의 object 를 tracking 하는애플리케이션을구현했다. MDtrackingViewController.mm // Configure camera _videocamera = [[CvVideoCamera alloc] initwithparentview:self.cameraview]; [_videocamera setdelegate:self]; [_videocamera setdefaultavcapturedeviceposition:avcapturedevicepositionback]; [_videocamera setdefaultavcapturesessionpreset:avcapturesessionpreset1280x720]; [_videocamera setdefaultavcapturevideoorientation:avcapturevideoorientationlandscapeleft]; [_videocamera setdefaultfps:30]; #pragma mark - Touch

- (void)touchesbegan:(nsset<uitouch *> *)touches withevent:(uievent *)event { _starttracking = NO; _begininitialize = NO; _ltpoint = [[touches anyobject] locationinview:self.cameraview]; _rbpoint = CGPointZero; _selectbox = cv::rect(_ltpoint.x * _screenratio, _ltpoint.y * _screenratio, 0, 0); - (void)touchesmoved:(nsset<uitouch *> *)touches withevent:(uievent *)event { _rbpoint = [[touches anyobject] locationinview:self.cameraview]; - (void)touchesended:(nsset<uitouch *> *)touches withevent:(uievent *)event { _rbpoint = [[touches anyobject] locationinview:self.cameraview]; _selectbox.width = abs(_rbpoint.x * _screenratio - _selectbox.x); _selectbox.height = abs(_rbpoint.y * _screenratio - _selectbox.y); _begininitialize = YES; _initbox = _selectbox; #pragma mark - Delegate - (void)processimage:(cv::mat &)image { if (_ltpoint.x > 0 && _ltpoint.y > 0 && _rbpoint.x > _ltpoint.x && _rbpoint.y > _ltpoint.y) { if (!_begininitialize &&!_starttracking) { rectangle(image, cv::point(_ltpoint.x * _screenratio, _ltpoint.y * _screenratio), cv::point(_rbpoint.x * _screenratio, _rbpoint.y * _screenratio), Scalar(0, 0, 255)); // 매프레임마다 image 에서 [ltpoint-rbpoint] 의영역에존재하는 object 를 tracking 한다. [self invoketracking:image]; 4. Technical Issues 이번프로젝트를진행하면서기술적으로가장문제가되었던부분은

DeepLearningKit 자체에있었다. DeepLearningKit 은 2015 년 12 월에런칭하여, 2016 년 2 월까지는활발히개발되던 framework 였다. 하지만그후, 과제연구발표일까지도더이상의업데이트가없었고, 따라서 CNN 의몇몇 parameter 들에대한구현이되어있지않은미완성상태의 framework 를사용해프로젝트를구현해야했다. MDNet 의 porting 을위해몇몇 parameter 는다른코드를참고하여직접구현해야했고, 구현하지못했던나머지 parameter- sync, disable_dropout, feat, conserve_memory 등-는미지원상태그대로사용해야했던점이이번프로젝트를진행함에있어서가장어려운점이되었다. 특히코드를분석하고직접구현에쏟은시간이이번프로젝트구현전체시간의많은부분을차지했기때문에, 상대적으로 optimization 에투자할수있는시간이적어진부분이가장아쉬웠다. ( 사실 DeepLearningKit 은 6 월 1 일에한번의업데이트가이루어졌지만, 해당업데이트는단순히코드를 Swift 3 에 compatible 하도록바꾼내용이기때문에위의 issue 는여전히해결되지않았다.)

5. Results MDNet 프로젝트에포함되어있는 Dataset 인 VOT2015.ball1 sequence 로 Embedded MDNet 의 accuracy 와작동시간을측정하였다 ( 논문에서는함께측정했던 Region_noise 는측정하지못했다 ). Accuracy 의유도식은다음과같다. Accuracy = Area of the ground truth box Area oftracked box Area of the ground truth box 결과적으로, Embedded MDNet 은평균 0.4 fps 정도의 performance 를보여주었고, ball1 sequence 에대한 accuracy 는평균 0.60 으로측정되었다. 이는논문에서언급한다른 state of the art 알고리즘과비교해높은수치이며, 기존의 MDNet 의 accuracy 인 0.63 보다 4.8% 정도하락한수치이다. 물론앞서언급했듯이, Embedded MDNet 의 accuracy 는오직 ball1 sequence 로만측정한결과이므로그비교의의미가크게중요하지않을수있다.

Real-time Application 의경우, ground truth 를추출할수없기때문에따로 accuracy 를측정하지는않았다. Real-time Application 에심어진 Embedded MDNet 네트워크는기본적으로작동하는 fps 가매우낮기때문에, 특히빠르게움직이는물체의경우 tracking 을제대로수행하지못하는경우를자주보여주었다. Heuristic 하게판단할수있는부분도있었는데, 육안으로봤을때 background 와 object 의구분이잘되는상황에서는상당히빠른, 최대 7 fps 정도로 real-time tracking 을수행하는모습을보여주는경우가있었고, 반대의경우에는 tracking 에성공하더라도최저 0.15 정도의매우낮은 fps 를보여주었다.

6. Discussion and Future Research 미완성 framework 인 DeepLearningKit 을사용했고, 상대적으로 optimization 에투자한시간이부족했던문제가있었지만, Visual Tracking 알고리즘을개발할때 MDNet 의접근과같이적은 layer 개수의 CNN 을사용하는방식이좋은결과를낼수있다는사실을확인할수있었다. 원래의알고리즘으로부터 fully-connected layer 를모두 update 하는 long-term network update 과정을제거했음에도, ( 단하나의 sequence 에서만테스트를진행했다는한계가있지만 ) accuracy 가 4.8% 로매우적게하락한점을볼때, mobile device 와같이하드웨어적한계가존재하는플랫폼에서는 long-term update 과정을제거한 CNN network 로속도와정확도를모두고려할수있다는결론을내릴수있다. 더해 Embedded MDNet 이올라간카메라애플리케이션에서, Real-time visual tracking 이작동하는것을확인할수있었고, 그렇기에추후상용화가능한단계까지 performance 를끌어올릴수있다면관련기술을이용한상업적인서비스를개발하는것도가능하다고결론지을수있다. 개인적으로는첫딥러닝프로젝트였는데, 결과물이왜좋게나오는지, 혹은왜나쁘게나오는지정확히알수없다는점이프로젝트를진행하면서가장특이한부분이었다. 예컨대, 최종적인 optimization 의결과로 4 개의 layer 로이루어진 network 가나왔지만, 그전에 fullyconnected layer 하나를더붙여 5 개의 layer 로이루어진 network 로 tracking 을수행하면결과가안좋은것을확인할수있었다. 왜 fullyconnected layer 가 2 개일때에는결과가더좋은것이고, 3 개일때에는안좋은것인지를알수가없었고, 이게딥러닝의특징일지도모른다는생각을하게되었다. 만일 DeepLearningKit 이 CNN 의 (Caffe 기반의 ) 모든 parameter 를지원하게된다면, 더좋은연구를할수있을것이다. ios 에서 CNN 을

지원하는 torch7-ios 와같은몇몇대안이존재하는것이사실이지만, 그대안들은모두 GPU 가속을지원하지않는다는점에서 MDNet 과같은 deep network 기반의알고리즘은사실상제대로된작동이힘들것이다. 비록 4 개월넘게한번의업데이트도이뤄지지않았지만, 최근에한번업데이트가이뤄진것을보면아직버려진프로젝트는아니라고생각한다. 완성에가까워진 DeepLearningKit 을사용해다시한번 MDNet 을 iphone 에 porting 하고 optimization 을진행하면더좋은결과를낼수있을것이다. 또한고성능 Android device 의경우평균적으로 iphone 보다하드웨어성능이더좋으니, Android 에서도이과제연구와비슷한 porting 및 optimization 을진행하면좋은결과를낼수도있을것이다. 7. References [1] Y. LeCun, Backpropagation Applied to Handwritten Zip Code Recognition, Neural Computation, 1989. [2] H. Nam, Learning multi-domain convolutional neural networks for visual tracking, arxiv:1510.07945, 2015. [3] Y. Wu, Object tracking benchmark, TPAMI, 2015. [4] S. Chen, Convolutional Neural Network and Convex Optimization, 2015, Retrieved from http://acsweb.ucsd.edu/~yuw176/report/ece273.pdf [5] VOT2015, http://www.votchallenge.net/vot2015 [6] DeepLearningKit, http://deeplearningkit.org [7] MDNet, https://github.com/hyeonseobnam/mdnet [8] torch7-ios, https://github.com/clementfarabet/torch-ios