딥러닝 오픈소스 프로젝트 - dibleoning opeunsoseu peulojegteu

Apache MXNet 은 일반 개발자가 손쉽게 딥러닝(Deep Learning) 모델을 구축, 학습 및 실행하는 데 도움을 주는 오픈 소스 라이브러리입니다. 이전 시리즈에서 MXNet API 및 주요 기능, 활용 방법에 대해 소개했습니다.

이 글에서는 MXNet을 다양한 유스 케이스에 적용하는 특징적인 오픈 소스 프로젝트를 소개합니다. (참고로 MXNet Model Zoo에는 다양한 주요 딥러닝 학습 모델 사례가 있으니, 먼저 살펴 보시기 바랍니다!)

#1 — 이미지 객체 인식
이 프로젝트는 하나의 이미지에서 여러개의 객체를 탐지하는  것으로 mxnet-ssd (논문 링크)라는 프로젝트를 개량한 것으로 MXNet의 특징이라고 할 수 있는, 멀티 GPU에서 성능을 향상 시킨 것입니다.

딥러닝 오픈소스 프로젝트 - dibleoning opeunsoseu peulojegteu

precedenceguo/mx-rcnn
mx-rcnn – Faster R-CNN, an MXNet implementation with distributed implementation and data parallelization

이 프로젝트는 아래 연구 결과를 기반으로 합니다.

  • Ross Girshick: Fast R-CNN
  • Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun: Faster R-CNN: Towards real-time object detection with region proposal networks

#2 — 스마트폰용 이미지 분석 프로젝트

딥러닝 오픈소스 프로젝트 - dibleoning opeunsoseu peulojegteu
MXNet 입문 마지막 가이드에서 살펴본 대로,  Inception v3 을 사용하면, 모바일 기기에서도 실시간으로 이미지 분석이 가능합니다.

아래 프로젝트는 안드로이드 및 iOS에ㅓ 사용할 수 있는 이미지 인식 프로젝트입니다.

dneprDroid/ImageRecognizer-iOS

dneprDroid/ImageRecognizer-Android

#3 — 얼굴 인식 및 안면 감지 기능
이 프로젝트는 Amazon Rekognition의 얼굴 인식과 유사한 기능을 제공합니다. 좀 더 자세한 구현을 하고 싶은 경우, 좋은 출발점이 될 수 있습니다.

딥러닝 오픈소스 프로젝트 - dibleoning opeunsoseu peulojegteu

tornadomeet/mxnet-face

이 프로젝트는 아래 연구 결과를 기반으로 합니다.

  • Wu X, He R, Sun Z. A Lightened CNN for Deep Face Representation
  • Rudd E, Günther M, Boult T. MOON: A Mixed Objective Optimization Network for the Recognition of Facial Attributes
  • Jiang H, Learned-Miller E. Face detection with the faster R-CNN

#4— 자동차 번호판 인식하기

이 프로젝트는 81 % 정확도로 MacBook Pro에서 초당 9 매의 번호판 인식을 수행할 수 있습니다. 약간의 노력을 더 한다면 다른 문자 인식 사용 사례에 적용할 수 있습니다 🙂

szad670401/end-to-end-for-chinese-plate-recognition

#5 — Sockeye : 기계 번역 프로젝트

Sockeye 프로젝트는 MXNet에 기반한 신경망 기계 번역(Neural Machine Translation)을 위한 시퀀스-시퀀스(sequence-to-sequence) 프레임 워크입니다.  AWS에서 개발하고 있으며, 더 자세한 것은 MXNet 기반 Sockeye를 통한 기계 번역 학습 해보기를 참고하시기 바랍니다.

awslabs/sockeye
sockeye – Sequence-to-sequence framework with a focus on Neural Machine Translation based on MXNet

AWS  기반 배포 방법

지금까지 다른 Python 애플리케이션과 마찬가지로 Amazon EC2 인스턴스에서 MXNet 코드를 실행했습니다. AWS에서 애플리케이션을 실행할 수 있는 대체 방법(콘테이너 및 서버리스)이 있으면, 이는 MXNet에 적용할 수 있겠죠.

#6— Amazon ECS와 코드 도구를 통한 MXNet API 지속적 배포 방식

이 프로젝트는 AWS CloudFormation 템플릿을 사용하여 MXNet 모델 또는 애플리케이션 코드의 변경 사항을 파이프 라인을 통해 배포, 구성 및 조율하는 자동화 된 워크 플로우를 생성할 수 있습니다. CodePipeline과 CodeBuild를 사용하여 지속적 전달(CD) 방식이 가능하고,  몇 분 만에 사용자가 사용할 수 있습니다.

  • awslabs/ecs-mxnet-example
  • Deploy Deep Learning Models on Amazon ECS | AWS AI Blog

#7 — MXNet Lambda 함수로 배포 하기

AWS Lambda를 통해 MXNet을 사용해 미리 학습된 모델을 통해 이미지 인식 등을 해 볼 수 있는 프로젝트입니다. Serverless Application Model (SAM) 템플릿을 통해 서버리스 API 엔드포인트도 자동으로 구현합니다.

  • awslabs/mxnet-lambda
  • Seamlessly Scale Predictions with AWS Lambda and MXNet | AWS Compute Blog

지금까지 다양한 MXNet 기반의 추천 오픈 소스 프로젝트를 살펴 보았습니다. 혹시 더 추천해 주실만한 프로젝트가 있으면 알려주세요!

연재 순서

- ;

※ Disclaimer- 본 글은 개인적인 의견일 뿐 제가 재직했거나 하고 있는 기업의 공식 입장을 대변하거나 그 의견을 반영하는 것이 아닙니다. 사실 확인 및 개인 투자의 판단에 대해서는 독자 개인의 책임에 있으며, 상업적 활용 및 뉴스 매체의 인용 역시 금지함을 양해해 주시기 바랍니다. (The opinions expressed here are my own and do not necessarily represent those of current or past employers. Please note that you are solely responsible for your judgment on checking facts for your investments and prohibit your citations as commercial content or news sources.)

* 이 글의 댓글 일부는 Webmention 도구를 이용하여, 소셜 미디어 공유 반응(Comments, Like, Tweet)을 수집한 것입니다.

답글 남기기

구글이나 마이크로소프트 같은 회사들의 영향인지 최근 들어 오픈소스화 되고 있는 머신러닝 프로젝트들이 점점 늘어나고 있는 것 같습니다. 구글이나 OpenAI 도 그렇겠지만 오픈소스로 개발자 커뮤니티를 형성하는 것이 이 생태계에 뒤쳐지지 않는 것임을 소규모 스타트업들도 알고 있는 것 같습니다.

Seldon(www.seldon.io)은 작년 2월에 자사의 머신러닝 소프트웨어를 깃허브(https://github.com/SeldonIO/seldon-server/)에 공개하였습니다. Seldon은 컨텐츠 추천과 예측모델을 위한 서버 어플리케이션으로 자바로 이루어져 있습니다. 최근에 공개된 블로그에서는 왜 오픈소스를 택하게 되었는지 또 그 이후에 어떤 변화가 있었는지 등을 설명하기도 했습니다.

Seldon은 최근에 University College London(UCL)의 한 그룹과 데이터 탐색과 관련된 프로젝트를 진행하고 있습니다. 이 프로젝트는 ETL for Data Science 로 데이터의 클리닝, 시각화, 분석을 웹 기반의 어플리케이션에서 할 수 있는 도구입니다. 어플리케이션 아키텍처에서 볼 수 있듯이 Python 의 Flask 와 AngularJS, SocketIO 로 구성되어 있습니다.

딥러닝 오픈소스 프로젝트 - dibleoning opeunsoseu peulojegteu

Outline of application architecture – 출처 ETL for Data Science 프로젝트 홈페이지

데이터 탐색과 관련해서는 두드러지는 프로젝트가 많지는 않습니다. 탐색 자체가 비정형화된 형태이다 보니 이를 패키지화하는 것이 쉬운일은 아닐 것 같습니다. ETL for Data Science 와 유사한 아파치 프로젝트로는 Zeppelin이 있습니다. Zeppelin은 자바와 Spark 기반의 서버 소프트웨어로 notebook 스타일의 유저 인터페이스를 가지고 있습니다. Zeppelin 은 개발자들이 동시에 하나의 notebook을 수정할 수 있는 콜라보레이션을 지원합니다. notebook 스타일이다 보니 Zeppelin은 엔지니어나 데이터 분석가를 대상으로 합니다. 그에 반해 ETL for Data Science 는 그래픽 환경을 기반으로 하고 있어 그 대상이 좀 더 폭 넓다고 할 수 있습니다.

Zeppelin 프로젝트도 Seldon 과 유사하게 기존의 어플리케이션을 오픈소스화한 경우로 아직 아파치 인큐베이팅 단계에 있습니다. Zeppelin 프로젝트를 이끄는 회사는 국내 스타트업인 NFLabs입니다. 아래는 NFLabs의 CTO이자 Zeppelin 커미터인 이문수님의 Zeppelin 소개 동영상입니다.