보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

이산 확률 분포 중 하나인 푸아송 분포(Poisson Distribution)에 대해 알아보겠습니다. 



  푸아송 분포란 단위 시간 안에 어떤 사건이 몇 번 발생할 것인지를 표현하는 확률 분포입니다. 이항 분포 등의 다른 이산 확률 분포들과는 달리 실험의 전체 시도 횟수 중 실패 횟수를 알 필요가 없습니다.



  즉, 일정한 시간과 공간에서 발생하는 사건의 발생횟수와 평균만 안다면 푸아송 분포를 구할 수 있습니다. 이 때 실험의 총 시험횟수는 필요 없습니다. 그래서 푸아송 분포에서는 일어나는 사건이 독립적이고 무작위적입니다.



제가 최근에 했던 프로젝트를 예로 들어보자면,


페이스북의 페이지에서 특정 키워드가 단위 시간(시간)동안 언급된 횟수(발생횟수)가 있겠습니다. (이 때 페이지는 미리 정해져 있습니다.)


이 외에도 어떤 공장(공간)에서 제작된 불량품 수(발생횟수) 등이 있습니다.



푸아송 분포의 공식은 다음과 같습니다.



여기서 e는 자연상수이고 λ는 람다라고 부르는 기호로 평균과 분산에 해당합니다.




▶참고 링크


https://ko.wikipedia.org/wiki/%ED%91%B8%EC%95%84%EC%86%A1_%EB%B6%84%ED%8F%AC


http://math7.tistory.com/37

블로그 이미지

NCookie

,

네이버 음성 합성 API를 사용할 일이 있어서 문서를 찾아보게 되었습니다.


https://developers.naver.com/docs/labs/tts


음성 파일을 얻어오는 방식은 간단한데 지정된 포맷에 따라 http 통신을 POST 방식으로 Request하고 Response에 있는 파일을 로컬에 저장하면 됩니다.




curl 명령어를 통해서 API를 요청하는 방법은 다음과 같습니다.



curl "https://openapi.naver.com/v1/voice/tts.bin" \
	-d "speaker=mijin&speed=0&text=만나서 반갑습니다." \
	-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
	-H "X-Naver-Client-Id: {애플리케이션 등록 시 발급받은 client id 값}" \
	-H "X-Naver-Client-Secret: {애플리케이션 등록 시 발급받은 client secret 값}" -v \
		> out.mp3




위의 명렁어를 쉘 스크립트에서 간단하게 작성했습니다. 

#!/bin/sh

argc=$#
argv0=$0
argv1=$1
argv2=$2

curl "https://openapi.naver.com/v1/voice/tts.bin" -d "speaker=mijin&speed=0&text=$argv0" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "X-Naver-Client-Id: $argv1" -H "X-Naver-Client-Secret: $argv2" -v > out.mp3

chmod 775 out.mp3


argv0=$0 이 부분은 스크립트를 실행할 때 인자를 받기 위해 변수를 저장하는 코드입니다. 


리다이렉션을 통해 out.mp3 파일에 음성이 저장되었고 파일 접근 권한을 rwxrwxr-x 로 변경하였습니다.




이를 파이썬에서 실행해봅시다.


파이썬에는 외부의 명렁어를 실행시킬 수 있는 subprocess라는 모듈이 있습니다. 이 글에서는 call 이라는 메소드만 사용하였습니다.


import subprocess
subprocess.call(['./tts.sh', "hello world", "{어플리케이션 clinet id}", "{어플리케이션 clinet secret}"])






블로그 이미지

NCookie

,


대회에 참가했을 때 참고했던 링크들입니다.


2016/11/5 ~ 2016/11/6



라즈베리 파이 USB 포트로 output 전환


http://blog.naver.com/6533574/220741821114


http://vagabond-voyage.blogspot.kr/2015/08/usb-audio.html



라즈베리 파이 음성 녹음


http://blog.naver.com/6533574/220754289644



라즈베리 파이 시리얼 통신 (C)


http://creamp.tistory.com/3


이번 경우에는 /dev/ttyACM0를 /dev/ttyUSB0으로 바꿈



라즈베리 파이 시리얼 통신 (Python)


http://codeandlife.com/2012/07/29/arduino-and-raspberry-pi-serial-communication/


http://www.hardcopyworld.com/ngine/aduino/index.php/archives/1757


'대회' 카테고리의 다른 글

라즈베리 파이 랜선으로 접속하기  (0) 2016.12.13
전국 고등학교 동아리 SW경진대회  (0) 2016.11.21
3D 메이킹 경진 대회(결선)  (0) 2016.11.12
블로그 이미지

NCookie

,
===== 2016년 5월 당시 설치 기준입니다. =====

GPU 연산 포함

NVIDIA Cuda Toolkit Ver 7.5
Cudann 4.0

TensorFlow 설치

Pip Installation

$ sudo apt-get install python-pip python-dev
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl

Virtualenv installation

$ sudo apt-get install python-pip python-dev python-virtualenv
$ virtualenv --system-site-packages ~/tensorflow

$ source ~/tensorflow/bin/activate
(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
(tensorflow)$ deactivate


설치 필요 프로그램

Install Bazel

패키지 의존성 : http://bazel.io/docs/install.html
.sh 파일 설치 : https://github.com/bazelbuild/bazel/releases

$ chmod +x PATH_TO_INSTALL.SH
$ ./PATH_TO_INSTALL.SH --user

Install other dependencies

$ sudo apt-get install python-numpy swig python-dev

Download and install Cuda Toolkit(Ver 7.5)

https://developer.nvidia.com/cuda-downloads

Install version 7.5 if using our binary releases.

Install the toolkit into e.g. /usr/local/cuda

Download and install cuDNN(Ver 4.0)

https://developer.nvidia.com/cudnn

Download cuDNN v4 (v5 is currently a release candidate and is only supported when installing TensorFlow from sources).

Uncompress and copy the cuDNN files into the toolkit directory. Assuming the toolkit is installed in/usr/local/cuda, run the following commands (edited to reflect the cuDNN version you downloaded):


파일 복사

$ tar xvzf cudnn-7.5-linux-x64-v4.tgz
$ sudo cp cudnn-7.5-linux-x64-v4/cudnn.h /usr/local/cuda/include
$ sudo cp cudnn-7.5-linux-x64-v4/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

~/.profile 가장 아래 부분에
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda

설치 테스트
홈 디렉터리에서
$ source ~/tensorflow/bin/activate
입력 후
$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>


'인공지능' 카테고리의 다른 글

tensorflow 설치 완료  (0) 2016.12.11
블로그 이미지

NCookie

,
1. boot-repair 사용하기

$ sudo add-apt-repository ppa:yannubuntu/boot-repair
$ sudo apt-get update
$ sudo apt-get install -y boot-repair

$ boot-repair

Recommended repair (repairs most frequent problems)


2. Try Ubuntu without installing

  1. 우분투 설치 없이 실행

  2. 터미널 창에서 명령어 입력
    sudo fdisk -l
    명령어를 입력하고 나면 부트로더가 설치된 디스크를 알 수 있을 것이다. 이 디스크의 경로를 기억하자.

  3. 홈 디렉터리에 임시 폴더를 만듦 ( /home/ubuntu/temp )
  4. sudo mount /dev/sda5 /home/ubuntu/temp ( 부트로더가 /dev/sda5에 설치되어 있을 때

  5. 마운트가 되었는지 확인하기 위해서는 임시 디렉터리에 들어가보자. 제대로 되었다면 '/' 디렉터리로 이동해있을 것이다.

  6. grub를 설치하자

    sudo grub-install --root-directory=/home/ubuntu/temp /dev/sda

    여기서 /dev/sda는 하드 디스크 이름이다.  sudo fdisk -l 명령어를 입력했을 때 각자의 상황에 맞게 대체하자.

  7. 이제 끝이다. 다시 시작하자.



3. In Grub Rescue

no such as device...

grub rescue> ls
(hd0) (hd1) (hd1,gpt1) (hd1,gpt2) ......
부트로더가 설치된 파티션을 선택하자.

grub rescue> ls (hd1,gpt10)/
/boot ......
(ls와 그 다음 단어 사이에 공백이 있다)

위와 같이 /boot 폴더가 보이는 파티션이 리눅스 boot 파티션이다. 이제 아래와 같이 하면 Grub으로 부팅할 수 있다.

grub rescue> set prefix=(hd1,gpt10)/boot/grub
grub rescue> insmod normal
grub rescue> normal

이제 우분투 Grub으로 정상 부팅하게 된다. 우분투로 부팅 후, 첫번째 하드디스크에 우분투가 설치되어 있다는 가정하에 아래 두개의 명령으로 Grub이 복구된다.

$ sudo grub-install /dev/sda
(grub-install 공백 /dev/sda)
$ sudo update-grub

위의 첫번째 명령은 UEFI 방식이든 BIOS 방식이든 Grub이 사용자들에게 일관된 명령을 사용하도록 유도하려는 목적인 듯하다. 실제로는 UEFI와 BIOS 모드의 grub은 서로 다른 패키지이고, 세부 명령 파라메터도 아래의 UEFI 모드에서의 grub-install 명령이 매우 복잡한 것에서 알 수 있듯이 명령 자체가 다르게 수행된다.


참고링크

1. boot-repair 사용하기


2. Try Ubuntu without installing


'리눅스' 카테고리의 다른 글

[우분투] apt / apt-get 차이  (2) 2016.12.25
우분투 16.04 Octave 설치  (0) 2016.12.09
[리눅스] ds, df  (0) 2016.12.02
[리눅스] crontab 사용 시 주의할 점 및 해결법  (0) 2016.10.26
[리눅스] 반복 예약작업 crontab  (0) 2016.10.20
블로그 이미지

NCookie

,

  아마 파이썬 스크립트를 실행할 때 커맨드 라인에서 인자를 전달하기 위해서 argparse 모듈을 사용해 본적이 있으실 것입니다. 그런데 python 2.7에서는 유니코드 문자열을 전달하려고 하면 자꾸 거부를 합니다. (파이썬 2.x 버전은 문자열 인코딩이 제일 짜증나는 것 같습니다.)


UnicodeDecodeError: 'ascii' codec can't decode byte 0xb9 in position 0: ordinal not in range(128)


  이 때 해결할 수 있는 방법이 있습니다. 바로 sys.getfilesystemencoding() 이라는 함수를 이용하는 것입니다, 예제 코드를 보겠습니다.


# -*- coding: utf-8 -*-

import argparse
import unicodecsv as csv
import sys


def commandline_arg(byte_string):
unicode_string = byte_string.decode(sys.getfilesystemencoding())
return unicode_string

parser = argparse.ArgumentParser()
parser.add_argument("-i", dest="input_file_name", default=None,
help="input file name(s) for CSV data to get data")
parser.add_argument("-target", dest="target_name", default=None,
type=commandline_arg,
help="target name is data for parsing")
parser.add_argument("-o", dest="output_file_name", default="data_set.csv",
type=commandline_arg)

args = parser.parse_args()

with open('input_data_set.csv', 'r') as r:
reader = csv.reader(r) # Here your csv file
lines = [l for l in reader if l[3] == args.target_name]

with open(args.output_file_name, 'wb') as w:
writer = csv.writer(w)
writer.writerows(lines)


 위와 같이 comandline_arg(byte_string) 함수를 선언하고 args type에 함수 이름을 넣어주면 됩니다.

블로그 이미지

NCookie

,

텔레매틱스(Telematics)


- 무선통신과 GPS(Global Positioning system) 기술이 결합되어 자동차에서 위치 정보, 안전 운전, 오락, 금융 서비스, 예약 및 상품 구매 등의 다양한 이동통신 서비스 제공


- 양방향성, 실시간성, 위치인식/추적성

 

- 기존의 여러 기술(ITS, GIS, LBS, 기타 다양한 유무선 기술 등)이 융합됨

 

- 자동차 텔레매틱스 서비스 : 이동통신기술과 위치추적기술을 자동차에 접목하여 차량사고나 도난감지, 운전경로 안내, 교통 및 생활정보, 게임 등을 운전자에게 실시간으로 제공



ITS(Intelligent Transport Systems)

 

- 교통체계 구성요소에 교통전자통신제어 등 첨단기술을 적용하여 교통시설수단의 실시간 관리제어와 교통정보의 실시간 수집활용하는 환경 친화적 미래형 교통체계


- 동화를 포함한 멀티미디어 정보 제공

 

- 시스템의 통합, 서비스의 융합화

 

- 개개의 사람/자동차가 양방향통신에 의해 정보수집, 발언

 

- 특정한 자동차에 대한 리얼타임 정보전달

 

- 교통흐름 제어, 돌발상황 대치 및 대처, 교통위반 단속, 주의구간 관리, 대중교통, 하이패스, 교통정보 제공, 여행정보 제공, 화물운송 등



GIS(Geographic Information System)

 

- 지리공간적으로 참조가능한 모든 형태의 정보를 효과적으로 수집, 저장, 갱신, 조정, 분석, 표현할 수 있도록 설계된 컴퓨터의 하드웨어와 소프트웨어 및 지리적 자료, 인적자원의 통합체

 

- 다양한 계획이나 정책수립을 위한 시나리오의 분석, 의사결정 모형의 운영, 변화의 탐지 및 분석기능에 활용(정부기관)



LBS(Location-based service)

 

- 무선 인터넷 사용자에게, 사용자의 변경되는 위치에 따르는 특정 정보를 제공하는 무선 콘텐츠 서비스들을 가리킴.


- 고객이 요구하는 정보를 이동통신단말기를 통해 실시간으로 제공

 

- 전국 어디서나 서비스 제공이 가능

 

- 개인의 현재 위치와 요구사항에 맞는 서비스 제공

 

지역적으로 분산된 자원의 관리, 물자 위치, (주위에서) 사람이나 물건 위치 찾기, 목표 근접 시 알림 기능, 목표 근접 시 자동 수행



출처


텔레매틱스

https://ko.wikipedia.org/wiki/%ED%85%94%EB%A0%88%EB%A7%A4%ED%8B%B1%EC%8A%A4

http://www.ktword.co.kr/abbr_view.php?m_temp1=2823

http://tip.daum.net/openknow/39095806


ITS

https://www.molit.go.kr/USR/policyData/m_34681/dtl?id=406

tring.tistory.com/attachment/cfile27.uf@116F573E4EDDC5F7191B59.pdf 

(논문 pdf 파일, 다운로드 주의)

https://www.molit.go.kr/USR/policyData/m_34681/dtl?id=409


GIS

https://ko.wikipedia.org/wiki/%EC%A7%80%EB%A6%AC_%EC%A0%95%EB%B3%B4_%EC%B2%B4%EA%B3%84

https://www.nsdi.go.kr/?menuno=2724


LBS

https://ko.wikipedia.org/wiki/%EC%9C%84%EC%B9%98_%EA%B8%B0%EB%B0%98_%EC%84%9C%EB%B9%84%EC%8A%A4

https://prezi.com/yduxt-fanopi/presentation/


블로그 이미지

NCookie

,

[웹] REST API란

웹/기타 2016. 10. 28. 08:15
REST(REpresentational State Transfer)

- ROA(Resource Oriented Architecture)를 따르는 웹 서비스 아키텍처

URI와 HTTP 메소드를 이용해 객체화된 서비스에 접근하는 것

- SOAP이 서비스 지향 구조인 것과 달리 자원지향구조(ROA: Resource Oriented Architecture)로 웹 사이트의 컨텐츠(Text, 이미지, 동영상), DB의 내용 등을 전부 하나의 자원으로 파악하여 각 자원의 고유한 URI(Uniform Resource Identifier)를 부여하고, 해당 자원에 대한 CRUD(Create, Read, Update, Delete) 작업을 HTTP의 기본 명령어인 POST, GET, PUT, DELETE를 통해서 처리함

- 대규모 네트워크 시스템을 위한 아키텍처

REST API

- REST 구조 스타일에 적합한 Web API를 REST API라고 함
- REST API를 제공하는 웹 서비스를 RESTful 하다고 함

REST API 설계



' > 기타' 카테고리의 다른 글

[티스토리] 인용문  (0) 2016.11.17
Highlight.js 티스토리 Line Numbers 추가  (1) 2016.11.16
URL, URI 차이점  (0) 2016.10.24
블로그 이미지

NCookie

,

IPv4에서의 TTL

TTL값은 IP 데이터그램이 인터넷 시스템 내에서 존재할 수 있는 시간의 상한선으로 볼 수 있음. TTL 필드는 데이터그램의 송신자에 의해 설정되며, 목적지까지의 전송 경로에 있는 모든 라우터들에 의해 그 값이 감소됨. 목적지에 다다르기 전에 TTL 필드의 값이 0이 되면 해당 데이터그램은 폐기됨. IPv4 헤더에서 TTL20 옥텟 중 8번째 옥텟임.

 

IPv6에서의 TTL

IPv6 헤더에서는 40 옥텟 중 8번째 옥텟. ipv6의 기본헤더에서 홉제한필드(hop limit). 명칭만 다를 뿐 실제로는 IPv4에서의 TTL과 같음

블로그 이미지

NCookie

,