2016의 게시물 표시

쉽게 배우는 머신러닝 - Machine Learning Recipes with Josh Gordon

머신러닝!

쉽지가 않죠? 한국어 번역이 지원되는 비디오를 통해 머신러닝의 기본을 알아 봅시다

Josh Gordon의 YouTube 머신러닝 비디오

AMQP(Advanced Message Queuing Protocol) 오픈 소스 TOP 4!

이미지
아래 글은  Top 5 Open Source AMQP (Advanced Message Queing Protocol) Implementations 을 번역한 글입니다.

AMQP(Advanced Message Queuing Protocol)은 미들웨어를 통한 메시징을 지원하도록 설계된 개방형 표준 프로토콜입니다. AMQP는 클라이언트와 메시징 미들웨어 간의 기능적 상호 운용성을 만들었습니다. 이 모델은 브로커 서비스 내에서 메시지를 라우팅하는 구성 요소 집합과 Network Wire Live Protocol로 구성되어 클라이언트 응용 프로그램이 서버와 통신하고 AMQ 모델과 상호 작용할 수 있게 합니다. 이 프로토콜은 분산 응용 프로그램에서 사용되며, point-to-point, publish, subscribe, fan-out 그리고 request-response 메시징 시스템을 포함합니다. AMQP는 메시지를 저장하지 않고 받는 사람을 대신하여 메시지를 대기열로 라우팅합니다. AMQP 구현에 대한 상위  4개 공개 소스는 아래와 같습니다.

1. RabbitMQ RabbitMQ는 Erlang으로 작성 되었으며, 가장 널리 사용되는 강력한 메시징 중 하나입니다. RabbitMQ는 사용하기 쉽고 Cloud 규모에 적합합니다. 이 응용 프로그램은 대부분의 주요 운영 체제 및 플랫폼을 지원하며, Mozilla Public License에 기반한 오픈 소스입니다. 비즈니스 메시징 용으로 설계 되었으며, Adapters, SMTP, STOMP, HTTP 및 Light-Weight Web Messaging 통해 메시징을 제공합니다. active user들과 contributor들로 구성된 활발한 커뮤니티를 보유하고 있으며, VMAre의 SprinSoruce 부문을 통해 광범위한 상용 구현 지원을 제공합니다. RabbitMQ의 one time message는 소비자에게 메시지를 두 번 보내고, 여러 consumer들은 한 번에 서로 다른 메시지를 받을 수 있다. Rabbit…

[DRONE] Node.js로 Gazebo 3D Simulator 연동하기

Node.js을 사용하여 Gazebo Simulator와 연동하기 위해서는 Gazebojs을 설치해야 한다.
단계1. 작업 디렉토리를 만들고, Node.js와 Gazebojs을 설치한다. $ mkdir ~/simjs $ cd ~/simjs
단계2. Node.js와 Gazebojs을 설치한다. $ sudo apt install -y gazebo7 libgazebo7-dev libjansson-dev npm nodejs nodejs-legacy
단계3. npm 툴을 사용해서 Gazebojs을 설치한다. $ npm init -y $ npm install gazebojs

Google Cloud Platform 에서 PUB/SUB 사용하기

이미지
Google Cloud Platform 에서 PUB/SUB 사용하기 Google Cloud Platform(GCP)에서 실시간으로 안정적인 메시징 및 데이터 스트리밍을 제공하는 글로벌 서비스가 Pub/Sub 이다.

1. GCP Pub/Sub 서비스 소개  1.1 확장 가능한 메시징 미딜웨어 Cloud Pub/Sub는 실시간 메시징 서비스로 개별 응용 프로그램간에 메시지를 주고 받을 수 있다. 그리고 GCP 또는 인터넷의 다른 곳에 있는 시스템 또는 컴포넌트들을  분리하기 위하여 Cloud Pub/Sub을 활용할 수 있다. Cloud Pub/Sub는 1초에 100만건을 낮은 대기 시간에 '적어도 한 번은' 제공되도록 설계되어 있다고 한다.

1.2 모든 데이터에 연결 Cloud Pub/Sub을 사용하여 여러 소스로부터 데이터에 publish와 subscribe 한 후, Google Cloud Dataflow에 의한 데이터의 파악도 실시간으로 실행할 수 있다. Cloud Pub/Sub을 사용하면 분산 응용 프로그램 구성 요구산의 복잡한 종석성을 줄일 수 있다. Cloud Pub/Sub는 구글의 광고에서 GMail까지 구글 앱에 사용되는 동일한 메시징 기술이라고 한다.

1.3 GCP의 Pub/Sub 특징뛰어난 확장성기본적으로 1초에 1만건의 메시지를 보낼 수 있고, 요청에 따라 100만 건 이상을 보낼 수 있음Push / Poll 전달Subscribers이 인터넷 또는 방화벽 내에 위치 여부에 상관없이 유연한 전달 옵션들을 가짐암호화모든 메시지 데이터는 전송될 때나 저장될 때도 암호화 되어 안전하게 보호복제된 스토리지모든 메시지를 여러 영역의 여러 서버에 저장하여 'at least once' 메시지 전달이 제공되도록 설계메시지 큐1:1 통신 패턴을 지원하기 위해 단일 Topic과 Subscription을 사용하는 확장 가능한 메시지 큐 생성종단 간 응답 확인응용 프로그램 수준에서 명시적인 응답을 확인함으로써 신뢰할 수 있는 응용 프로그…

[ROS] macOS Sierra에 ROS Kinetic 설치하기

ROS 중 Kinetic 버전을 macOS에 설치할 때는 ROS.org 홈페이지를 참고한다. 이 글에서는 설치 과정에서 발생할 수 있는 문제점들에 대해 보충 설명한다.

하지만 아직 ROS.org 홈페이지에서도 작업이 진행 중이라 설치 후 모든 macOS에서 정상 동작을 보장하지 않는다.

설치 참고: http://wiki.ros.org/kinetic/Installation/OSX/Homebrew/Source

1. 설치 준비 먼저 다음 툴들이 설치되어 있거나, 필요시 설치해야 한다.
HomebrewcmakePythonpip
1.1 Homebrew ROS을 macOS에 설치할 때 우선 필요한 툴은 Homebrew이다. Homebrew는 홈페이지를 참고하여 설치한다. (http://brew.sh/)

1.2 cmake
Homebrew가 설치 되었다면 cmake을 설치한다.

$ brew update $ brew install cmake
1.3 python 공식 설치 홈페이지를 참고한다. (http://docs.python-guide.org/en/latest/starting/install/osx/)

Pytone2.7 설치
$ brew install python
Python3 설치
$ brew install python3
1.4 pippip is a package management system used to install and manage software packages written in Python. Many packages can be found in the Python Package Index (PyPI).[4] $ sudo easy_install pip
1.4 ROS 참조들 그리고 ROS 설치에 필요한 참조들을 brew에 설정한다.
$ brew tap ros/deps $ brew tap osrf/simulation # Gazebo, sdformat, and ogre $ brew tap homebrew/versions # VTK5 $ brew tap homebrew/sci…

Google Cloud Platform을 이용한 iPhone 7의 이슈(반응) 분석

이미지
Google Cloud Platform을 이용한 iPhone 7의 이슈(반응) 분석 Google Cloud Platform(GCP)을 이용하면 빅데이터 관련 지식이 없으면서도, 복잡한 Private Cloud 설치을 설치하지 않아도 보다 저렴한 비용으로 다양한 빅데이터를 수집하고 분석할 수 있다.
여러가지 데이터 분석이 있겠지만, 최근 iPhone 7이 한국에 출시되어서 이에 대해 Twitter에서는 어떤 이슈들(빅데이터 분석)이 나오고 있는지 분석해 보겠다.
SNS 상에서 iPhone 7 이슈 분석을 위해 GCP을 사용하고, 먼저 Twitter에서 데이터를 수집하면서 다른 SNS 서비스에서도 수집할 수 있도록 준비할 예정이다. 데이터 수집은 fluentd을 사용할 예정이다. 수집된 데이터는 필터링 및 재포맷되어 GCP의 Pub/Sub에 저장되며, DataFlow 서비스를 통해 자연어 분석 후 BigQuery 서비스을 이용해 데이터를 분석하여 다양한 챠트로 구체화 된다. 

'빅데이터 로그 수집기, Fluentd 소개(https://mansoo-sw.blogspot.kr/2016/10/fluentd.html)' 글에서 fluentd는 input 단계에서 다양한 데이터 소스를 받아 들일 수 있기 때문에 'Twitter' 외에도 다른 SNS의 정보들도 수집할 수 있다. 그리고 output 단계에서 수집된 데이터를 GCP Pub/Sub로 보내기 위해서 'fluentd pub/sub plugin'을 설치해야 한다. 설치방법은 '빅데이터 로그 수집기, Fluentd 소개' 글을 참고한다. 
1. Twitter Feed 수집 서버 fluentd에서 수집된 데이터를 GCP에서 분석하기 위해서는 아래 그림과 같이 Output 쪽에 Google Pub/Sub plugin을 설치가 필요하다.


fluentd 설치가 되었다면 간단하게 'td-agent-gem' 툴을 사용하여 plugin을 설치할 수 있다.
$ …

빅데이터 로그 수집기, Fluentd 소개

이미지
Introducing BigData Log Aggregator, Fluentd 빅데이터를 처리하기 위해서는 각종 로그들의 수집이 필요한데, 이 때 사용하는 것이 로그 수집기(Log Aggregator)이다.  로그 수집 툴은 Scribe, Flume, Fluentd 및 logstash 등이 있는데, 이들 수집기 비교는 다음 글을 참고한다. Log Aggregator 비교: Log Aggregator 비교 - Scribe, Flume, Fluentd, logstash
1. Fluentd 소개 fluentd는 효율적으로 데이터를 사용하고 이해하기 위한 데이터의 수집과 소비를 통합할 수 있는 오픈 소스 데이터 수집기이다. 홈페지이지: http://www.fluentd.org/설치가이드: http://docs.fluentd.org/categories/installation 다음 그림은 fluentd의 아키텍쳐 그림이다. 입력과 출력을 다양화 할 수 있으며, 입/출력 부분을 사용자가 직접 코드로 작성하여 연결할 수 있는 확장성을 제공한다.



다음 그림은 다양한 형태의 입력을 받을 수 있고, 출력을 형식화 할 수 있는 fluentd의 구조를 보여준다.

Input 단계는 로그를 수집하는 모듈로 사용자화 할 수 있는 플러그인 형태이다. 따라서 다양한 로그 소스를 지원할 수 있다. File, HTTP, TCP 등 기본 플러그인을 비롯하여 확장 플러그인들을 다운로드 받거나 직접 설치할 수 있다.

Buffer는 시스템 또는 네트워크 이상 또는 부하에 따른 재처리를 위해 파일 또는 메모리를 사용하여 데이터를 유지할 수 있고, Output 역시 Input 과 동일하게 사용자화할 수 있는 플러그인 형태로 다양한 포맷으로 데이터를 변경할 수 있다.

Input 단계에서 획득한 모든 정보들이 Output 단계로 보내지는 것은 아니며, Engine에서 필터링하여 항목을 삭제하거나 추가할 수 있다. 그리고 Input 단계 또는 Output 단계는 또 다른 fluentd와 연결이 가능 가능한다.




[DRONE] Gazebo 시물레이터와 ROS 인터페이스 연결하기

드론 비행을 위해서는 여러가지 방법들이 있다. 드론의 비행 제어 알고리즘, 센서 제어 등 모든 것을 직접 프로그래밍 하는 방법이 있고, 비행은 비행 제어 알고리즘이 내장된 HW을 이용하고, 센서 또는 비전 처리를 통해 더 효율적인 비행을 할 수 있는 방법도 있다.

다양한 하드웨어 및 소프트웨어 드론 프로젝트 중에 리눅스 재단이 공식 지원하는 Dronecode 프로젝트가 있는데, 다양한 기업들이 이 프로젝트에 참여하고 있다. Dronecode 프로젝트 기반으로 만든 레퍼런스 보드들 중 유명한 것이 Pixhawk이다. 그리고 드론의 펌웨어와 미들웨어를 개발하는 프로젝트가 PX4 프로젝트이다.

PX4는 MAVLink 프로토콜을 사용하여 제어할 수 있는데, 만일 ROS을 사용하여 PX4을 제어한다면 MAVROS을 사용하면 된다. 하지만 드론을 직접 만들어 비행 시험을 하기에는 장소와 안전 문제가 중요한 문제로 대두된다. 따라서 충분한 시물레이션 시험이 필요한데, 이 때 사용할 수 있는 3D 시물레이터 중 하나가 Gazebo이다. Gazebo를 사용하는 이유는 ROS와 연동이 보다 쉽다. 따라서 ROS와 MAVROS을 사용하여 PX4 미들웨어을 사용한다면 Gazebo을 사용하여 시물레이션이 가능하다.

PX4을 이용한 드론의 개발 가이드는 다음 주소를 참고한다.
PX4 Development GuideSubak.io (한글 사이트)
1. Gazebo7 설치 및 실행 Gazebo7은 PX4 Development Guide을 참고하여(Gazebo Simulation) 설치한다. 하지만 ROS와 연동된 드론을 시물레이터와 연동하기 위해서는 PX4 Firmware을 GitHub에서 Clone 또는 다운로드 받아 설치 후 Firmware을 실행하여 Gazebo 시물레이터와 연동을 시켜야 한다. 
실행 방법은 다음과 같다. (Running the Simulation) $ cd ~/src/Firmware $ make posix_sitl_default gazebo
만일 Optical Fl…

Google Codelabs에서 GCP(Google Cloud Platform)을 공부해보자

Google Cloud Platform(GCP)은 구글에서 만든 Open Cloud 제품으로 기본적으로 IaaS, PaaS 등을 쉽게 구성, 관리 및 서비스 할 수 있다. 구글링을 통해 GCP 관련된 자료들을 찾아볼 수 있지만, Google Codelabs의 GCP 섹션에서 기본적인 설명, 튜터리얼 및 프로그래밍 등의 다양한 예제들을 쉽게 직접 다뤄볼 수 있다.

예를 들어 GCP을 이용한 네트워크 설정과 HTTP 부하 분산(Load Balancers)을 시스템 구성과 더불어 시험해 볼 수 있다. 그 외에도 BigQuery를 이용한 Wikipedia 검색, Node.js와 Angular2 Web App 생성 등 다양한 경험들을 할 수 있다.

OpenCV 에서 OpenCL 사용하기

이미지
OpenCL(Open Computing Language)은 개방형 범용 병렬 컴퓨팅 프레임워크이다. CPU, GPU, DSP 등의 프로세서로 이루어진 이종 플랫폼에서 실행되는 프로그램을 작성할 수 있게 해 준다. OpenCL에서는 작업을 병렬로 처리하거나 또는 데이터를 병렬로 처리할 수 있다. 자세한 내용은 Wikipedia을 참고한다. (OpenCL)



OpenCV에서도 OpenCL을 사용할 수 있는데, 가능한 OpenCV 3.1 이상 버전에서 사용이 필요하다.
OpenCV에서 OpenCL 사용에 대한 간단한 소개는 아래 송승화씨의 슬라이드를 참고한다.

OpenCV 에서 OpenCL 살짝 써보기 from Seunghwa Song

OpenCV 에서 OpenCL 사용하기

이미지
OpenCL(Open Computing Language)은 개방형 범용 병렬 컴퓨팅 프레임워크이다. CPU, GPU, DSP 등의 프로세서로 이루어진 이종 플랫폼에서 실행되는 프로그램을 작성할 수 있게 해 준다. OpenCL에서는 작업을 병렬로 처리하거나 또는 데이터를 병렬로 처리할 수 있다. 자세한 내용은 Wikipedia을 참고한다. (OpenCL)



OpenCV에서도 OpenCL을 사용할 수 있는데, 가능한 OpenCV 3.1 이상 버전에서 사용이 필요하다.
OpenCV에서 OpenCL 사용에 대한 간단한 소개는 아래 송승화씨의 슬라이드를 참고한다.

OpenCV 에서 OpenCL 살짝 써보기 from Seunghwa Song

macOS Sierra에 Intel Thread Building Blocks (TBB) 설치하기

macOS Sierra에 Intel Thread Building Blocks (TBB) 설치하기 TBB는 멀티코어 성능의 모든 장점을 가지는 C++ 병렬 프로그램을 쉽게 작성할 수 있게 한다. OpenCV의 많은 라이브러리에서 사용할 수 있다.
$brew install tbb
만약 brew 툴이 설치되지 않았다면, Homebrew 설치 방법은 다음과 같다. 자세한 내용은 Homebrew 홈페이지를 참고한다. $/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

macOS에서 Ruby 최신 버전으로 업그레이드 하기

macOS Sierra에서 Ruby 최신 버전으로 업그레이드 하기 macOS에서 ruby를 사용하여 특정 모듈을 설치할 때 버전이 낮아 설치가 안될 경우가 있다. 아래 shell을 이용하면 Ruby를 최신 버전으로 업그레이드 할 수 있다. 이 포스팅이 작성될 때 Ruby의 최신 버전은 2.3.0 이다.
$curl -sSL https://get.rvm.io | bash -s stable --ruby $rvm install 2.3 $rvm use 2.3--default

Swift로 OpenCV 3.1 사용하여 iOS 앱 만들기

이미지
Swift로 OpenCV 3.1 사용하여 iOS 앱 만들기 iOS 9.0 이상에서 Swift로 OpenCV 3.1 버전을 사용하여 앱을 만들 수 있는 간단한 예제이다. http://opencv.org/ 에서 iOS로 빌드된 OpenCV 3.1 Framework을 다운로드 받아 사용하면 애물레이터에서는 문제가 없지만, 단말 환경에 맞춰 빌드를 하면 png 모듈에서 링크 오류가 발생한다. 따라서 이 문제를 해결한 OpenCV 3.1 패치버전의 iOS Framework을 빌드하거나 다운로드 받아 사용해야 한다. OpenCV 빌드 및 설치 관련 내용은 macOS Xcode에서 OpenCV 사용하기 포스팅을 참고하면 된다.

이 포스팅은  https://www.youtube.com/watch?v=ywUBHqxwM5Q을 참고하여 작성했다.
1. 개발 환경 이 포스팅에서 소개할 Xcode 프로젝트 개발환경은 다음과 같다.  Macbook Pro, macOS SierraXcode v8.0iOS 10.0.1iPhone 6 Plus OpenCV 3.1 수정 버전수정된 OpenCV 3.1 Framework 다운로드: opencv2.framework_v3.1_fix_link_error.zip 2. OpenCV 프로젝트 생성 2.1 HelloOpenCV 프로젝트 생성 Xcode을 실행 후에 아래 화면과 같이 'Create a new Xcode project'을 선택한다.
iOS을 선택하고, Single View Application을 선택 후에 'Next' 버튼을 선택한다.
프로젝트 이름을 'HelloOpenCV' 로 입력하고, Language는 'Swift'을 선택 후 Devices 항목은 가지고 있는 단말에 맞춰 선택하면 된다. 예제에서는 iPhone을 선택했다.
그 이후에 프로젝트가 생성될 위치를 선택하면 간단하게 Xcode 프로젝트는 생성된다.

2.2 iOS용 OpevCV Framework 연결 프로젝트가 생성되면 아래…