SlideShare ist ein Scribd-Unternehmen logo
1 von 105
Downloaden Sie, um offline zu lesen
1 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
Neural Networks as Filters of Stream Pipelines
실시간 데이터 흐름에 신경망을 쉽고 효율적으로 붙이고 구성하기
nnstreamer
Samsung Research | AI Center | 함명주
2 https://github.com/nnsuite/nnstreamer
SOSCON 2018
nnstreamer는 신경망들을 Stream Filter로 간주하여 사용할 수 있도록 해주는
gstreamer Plugin의 모음
gstreamer는 Multimedia Stream Pipeline을 다루기 위한 “전통” Framework
• Fully Open Sourced
– https://github.com/nnsuite/nnstreamer 에서 코드 개발 진행
– 누구나 제안/참여 가능
– LGPLv2로서 누구나 사용 가능 (상업 사용 포함)
• 0.0.2 released (2018/10/15)
nnstreamer는?
3 https://github.com/nnsuite/nnstreamer
SOSCON 2018
For Everyone!
• OS: Linux (Tizen/Ubuntu/…), BSD, iOS, macOS, Windows, Android, … … …
• Language: C, C++, C#(.NET), Java, Haskell, Qt, Python, Perl, Ruby, … … …
• ISA: x86_64, x86_32, armv7, aarch64, …
• Ubuntu PPA: ppa:nnstreamer/ppa
nnstreamer는?
4 https://github.com/nnsuite/nnstreamer
SOSCON 2018nnstreamer로 뭘 만들 수 있나요?
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식
화자인식
감정인식
배경/환경인식
물체감지 물체인식
안면인식
물체추적
감정인식V
안면추적
영역구분
상황인식
감정인식AV
화자추적AV
상황인식AV
Preprocessors
Preprocessors
설명을 위한 가상 예제입니다.
• 다양한 신경망 Framework/Model 으로 구성된 Pipeline을 쉽게 구현
• 고성능 Data Stream 처리 기능 제공.
• 기존의 Multimedia Plugin과 Stream Framework의 재사용
5 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
Background
Motivation
Concepts
Details (nnstreamer Plugins)
Usage Example / Demo
How-To-Contribute
Conclusion
01
02
03
04
05
06
07
Topics
6 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
Cast Study
Background
7 https://github.com/nnsuite/nnstreamer
SOSCON 2018Case 1: 자율주행
LIDAR
Camera
RADAR
* 실제 시스템보다 단순화 되었음.
8 https://github.com/nnsuite/nnstreamer
SOSCON 2018
실제보다 단순화 된 가상 모델
Case 1: 자율주행 센서 / 신경망 모델
LIDAR
Camera
RADAR
Object Detection
Object Recognition
Object Tracking
Image Segmentation
Lane Detection
SLAM
Planning
Control
......
SLAM: Simultaneous localization and mapping * 실제 시스템보다 단순화 되었음.
9 https://github.com/nnsuite/nnstreamer
SOSCON 2018
실제보다 단순화 된 가상 모델
Case 1: 자율주행 Data Stream Pipelines
Text / Sign / Signal
......
LIDAR
Camera
RADAR
Object Detection
Object Recognition
Object TrackingImage Segmentation
Lane Detection
SLAM
Planning-2
Control-1
LIDAR
Camera
RADAR
RADAR
Camera
Camera
Camera
Control-2
Planning-1
Object Detection
Object Detection
Preprocessors
* 실제 시스템보다 단순화 되었음.
10 https://github.com/nnsuite/nnstreamer
SOSCON 2018
주요 발생 이슈
• High Bandwidth / Real-Time
• Complex Pipeline Topology
• Synchronization & Parallelism
• Latency & Jitter Control
Case 1: 자율주행 Data Stream Pipelines
11 https://github.com/nnsuite/nnstreamer
SOSCON 2018
ROS 사용 시 주요 발생 이슈 (Socket!)
• High Bandwidth / Real-Time
– 고해상도 이미지 실시간 전송
• ROS2 / DDS (RTI Connext DDS) may help?
– 모델간 데이터 전송
– 중복 데이터 전송
• 고성능 Workstation에서도
감당하기 힘들 수 있음!!
(Memory Transaction!)
Case 1: 자율주행 Data Stream Pipelines w/ ROS
12 https://github.com/nnsuite/nnstreamer
SOSCON 2018
ROS 사용 시 주요 발생 이슈 (Socket!)
• Complex Pipeline Topology
– Pub/Sub 구조로 복잡한 Topology도 감당 가능.
– Pub/Sub 구조는 Overkill???
Case 1: 자율주행 Data Stream Pipelines
13 https://github.com/nnsuite/nnstreamer
SOSCON 2018
ROS 사용 시 주요 발생 이슈 (Socket!)
• Synchronization
– 독립 Process로 동작하여 골치 아플 수 있음!
• Parallelism
– 각 Node는 독립 Process. 문제없음
Case 1: 자율주행 Data Stream Pipelines
14 https://github.com/nnsuite/nnstreamer
SOSCON 2018
ROS 사용 시 주요 발생 이슈 (Socket!)
• Latency
– 과도한 Memcpy로 인해 Communication Latency 증가
• Jitter Control
– 각 Node들에 대한 Resource/Rate 제어 어려움
– Node간 생성물에 대하 동기화 어려움
Case 1: 자율주행 Data Stream Pipelines w/ ROS
15 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Multiple Sensors
카메라, 마이크, IR, 관성, 그 외 다수
16 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Multiple AI-based Services
감정인식, 화자인식, STT, 앱연결, 그 외
상상하시는 아무거나…
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
17 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식
화자인식
감정인식
마이크 입력을 사용할 기본 요소?
배경/환경인식
설명을 위한 가상 예제입니다.
18 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식
화자인식
감정인식
비디오 입력을 사용할 기본 요소?
배경/환경인식
물체감지 물체인식
안면인식
물체추적
감정인식V
안면추적
영역구분
상황인식
설명을 위한 가상 예제입니다.
19 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식
화자인식
감정인식
오디오 비디오 입력을 함께 사용할 기본 요소?
배경/환경인식
물체감지 물체인식
안면인식
물체추적
감정인식V
안면추적
영역구분
상황인식
감정인식AV
화자추적AV
상황인식AV
설명을 위한 가상 예제입니다.
20 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식
화자인식
감정인식
오디오 비디오 미디어 전처리
배경/환경인식
물체감지 물체인식
안면인식
물체추적
감정인식V
안면추적
영역구분
상황인식
감정인식AV
화자추적AV
상황인식AV
Preprocessors
Preprocessors
설명을 위한 가상 예제입니다.
21 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식
화자인식
감정인식
Data Stream Pipelines
배경/환경인식
물체감지 물체인식
안면인식
물체추적
감정인식V
안면추적
영역구분
상황인식
감정인식AV
화자추적AV
상황인식AV
Preprocessors
Preprocessors
설명을 위한 가상 예제입니다.
22 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식
화자인식
감정인식
Issue 1. Data Stream Performance.
배경/환경인식
물체감지 물체인식
안면인식
물체추적
감정인식V
안면추적
영역구분
상황인식
감정인식AV
화자추적AV
상황인식AV
Preprocessors
Preprocessors
설명을 위한 가상 예제입니다.
데이터 전송 효율성 / 속도문제!
(Socket통신으로는 답이 없음)
23 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식
화자인식
감정인식
Issue 2. Neural Network Frameworks
배경/환경인식
물체감지 물체인식
안면인식
물체추적
감정인식V
안면추적
영역구분
상황인식
감정인식AV
화자추적AV
상황인식AV
Preprocessors
Preprocessors
설명을 위한 가상 예제입니다.
Caffe
Caffe
Caffe
Caffe
Caffe
OpenCV
tensorflow
tensorflow
tensorflow
Tensorflow-lite
Tensorflow-lite
Custom C code
Custom C code
Custom C code
Custom C# code
각자 다른 Framework로 Inference
하면 어떻게 통합하지???
24 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식
화자인식
감정인식
Issue 3. Multimedia Data Processing
배경/환경인식
물체감지 물체인식
안면인식
물체추적
감정인식V
안면추적
영역구분
상황인식
감정인식AV
화자추적AV
상황인식AV
Preprocessors
Preprocessors
설명을 위한 가상 예제입니다.
각자 다른 Framework로
Inference
하면 어떻게 통합하지???
Media Preprocessor Filter들은
어떻게 만들고 통합하지?
Data Stream 제어는??
(좋은게 있는데….;;;)
25 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
Issue 4. Data Stream Synchronization
Preprocessors
Preprocessors
설명을 위한 가상 예제입니다.
Model B
Model A
Model C
……
……
A, B가 다른 속도로 동작하면 C에서는 어떻게 받아들일
것인가?
A, B의 데이터 출력 시기가 일정하지 않으면 어떻게 C에
서 받아들일 것인가?
26 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
Issue 5. Data Stream Rate Control
Preprocessors
Preprocessors
설명을 위한 가상 예제입니다.
Model B
Model A
Model C
……
……
이래도 되나?
27 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식
화자인식
감정인식
Issue 6. Dynamic Stream Pipelines
배경/환경인식
물체감지 물체인식
안면인식
물체추적
감정인식V
안면추적
영역구분
상황인식
감정인식AV
화자추적AV
상황인식AV
Preprocessors
Preprocessors
설명을 위한 가상 예제입니다.
28 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식 2.0
화자인식
감정인식
Issue 6. Dynamic Stream Pipelines
배경/환경인식
물체감지 물체인식
안면인식
물체추적
감정인식V
안면추적
영역구분
상황인식
감정인식AV
화자추적AV
상황인식AV
Preprocessors
Preprocessors
설명을 위한 가상 예제입니다.
새롭고 좋은거
새롭고 좋고 놀라운거
29 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Robots, Consumer Electronics, Mobile Devices
Case 2: Multi-Modal Interactions
Intelligence Service 1
Intelligence Service 2
Intelligence Service 3
Intelligence Service 4
……
음성인식 2.0
화자인식
감정인식
Issue 6. Dynamic Stream Pipelines
배경/환경인식
물체감지 물체인식
안면인식
물체추적
감정인식V
안면추적
영역구분
상황인식
감정인식AV
화자추적AV
상황인식AV
Preprocessors
Preprocessors
설명을 위한 가상 예제입니다.
새롭고 좋은거
새롭고 좋고 놀라운거
Preprocessors
30 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
Why nnstreamer?
Motivation
31 https://github.com/nnsuite/nnstreamer https://pixabay.com/photo-2490210/
32 https://github.com/nnsuite/nnstreamer https://pixabay.com/photo-2490210/
33 https://github.com/nnsuite/nnstreamer
Do NOT Reinvent the Wheel
34 https://github.com/nnsuite/nnstreamer
SOSCON 2018
gstreamer for intelligence!
What is gstreamer?
• Pipeline 기반 Open Source (LGPL) Multimedia Framework (2001.1. 첫 공개)
• Linux 계열 표준
– Linux, BSD, macOS, iOS, Windows, … 지원.
– TV: 삼성, LG, Sony, …
• Audio/Video 재생, 기록, 스트리밍/방송, 변환, 편집 등에 광범위하게 사용됨
– Stream Filter로 사용 가능한 수백가지 Plugin 제공.
– Plugin을 제작하기 위한 환경 포함
– C/C++/C#/Java/Python/Perl/CLI/… 에의 표준 API 제공
– Pipeline 구성을 표현하는 것 만으로 동작하는 Application이 완성됨!
• GUI Tool로 Pipeline 그려서 만들기도…
Do NOT Reinvent the Wheel
35 https://github.com/nnsuite/nnstreamer
SOSCON 2018
gstreamer for intelligence!
Why gstreamer?
• Data Stream Pipeline 을 표현, 관리, 실행하는 안정된 표준 Framework
• 언급된 Issue는 이미 수십년 된 Multimedia의 주요 Issue!
– 이미 해결한 문제 다시 풀지 말자!
• 신경망 == Data Stream Filter!
Do NOT Reinvent the Wheel
36 https://github.com/nnsuite/nnstreamer
SOSCON 2018
gstreamer for intelligence!
Why gstreamer?
• Configure & run complex stream pipelines, dynamically in run-time!
Do NOT Reinvent the Wheel
37 https://github.com/nnsuite/nnstreamer
SOSCON 2018
gstreamer for intelligence!
Why gstreamer?
• Configure & run complex stream pipelines… even with GUI tools
Do NOT Reinvent the Wheel
https://github.com/virinext/pipeviz
38 https://github.com/nnsuite/nnstreamer
SOSCON 2018
비교
ROS vs GStreamer
ROS GStreamer
Community HIGH (11 years old)
Many robot-related plugins
HIGH (17 years old)
Many multimedia plugins
Maturity
(commercial products)
MEDIUM (Questionable for mass pr
oduction)
HIGH (Mass Production: TV, Wearable, …)
OS Linux, Windows 10 Linux, BSD, Solaris, Android, macOS, iOS,
Windows, OS/400
Communication Socket
(ROS2: DDS supported)
Shared memory chunks (faster!)
Distributed System Fully supported Experimental
(may use ROS as gstreamer plugins)
Sensors More varying.
Many unstable (even sound)
Video/Audio: good / Other sensors: unstable
Neural Network Custom plugins Custom plugins → nnstreamer
39 https://github.com/nnsuite/nnstreamer https://pixabay.com/photo-2490210/
40 https://github.com/nnsuite/nnstreamer
SOSCON 2018
gstreamer for intelligence ➔ nnstreamer
Gstreamer가 신경망을 이해하여 AI Device의 기반이 되도록 하기 위해…
• 다양한 신경망 Framework / Model 들에게 공통으로 주어질 Data Stream 표준
• 다양한 신경망 Framework / Model 들을 Invoke할 방법
• Audio/Video/Text 외 다른 Data Stream을 GStreamer에서 다루도록 할 방법
Don’t Reinvent the Wheel, Perfect it!
41 https://github.com/nnsuite/nnstreamer
SOSCON 2018
gstreamer for intelligence ➔ nnstreamer
Gstreamer가 신경망을 이해하여 AI Device의 기반이 되도록 하기 위해…
• 다양한 신경망 Framework / Model 들에게 공통으로 주어질 Data Stream 표준
• 다양한 신경망 Framework / Model 들을 Invoke할 방법
• Audio/Video/Text 외 다른 Data Stream을 GStreamer에서 다루도록 할 방법
Don’t Reinvent the Wheel, Perfect it!
➔ nnstreamer
42 https://github.com/nnsuite/nnstreamer
SOSCON 2018
gstreamer for intelligence ➔ nnstreamer
License: LGPL 2.1
기존 GStreamer LGPL 코드 재사용
Public Open: https://github.com/nnsuite/nnstreamer
2018.07: 0.0.1
2018.10: 0.0.2
Current: 0.0.3-rc1
Don’t Reinvent the Wheel, Perfect it!
➔ nnstreamer
43 https://github.com/nnsuite/nnstreamer
SOSCON 2018
gstreamer for intelligence ➔ nnstreamer
Gstreamer가 신경망을 이해하여 AI Device의 기반이 되면…
• 신경망 알고리즘 개발자
• 신경망 사용 디바이스/애플리케이션 개발자
• 멀티미디어 개발자
Don’t Reinvent the Wheel, Perfect it!
44 https://github.com/nnsuite/nnstreamer
SOSCON 2018
gstreamer for intelligence ➔ nnstreamer
Gstreamer가 신경망을 이해하여 AI Device의 기반이 되면…
• 신경망 알고리즘 개발자
– 각종 센서 / 미디어 / 데이터 스트림에 쉽고 즉각적인 통합 ➔ 빠른 테스트 / 프로토타이핑
– 예:
$ gst-launch-1.0 v4l2src name=cam_src ! videoscale !  # “cam_src”에서 영상 받아서 scale
video/x-raw,width=640,height=640,format=RGB !  # 3x640x480의 RGB Stream
tee name_t_raw  # Data Stream 분기
t_raw. ! queue ! videoscale ! video/x-raw,width=224,height=224 !  # 224x224 RGB 로 전환
tensor_converter !  # “tensor” 포맷으로 전환
tensor_filter framework=tensorflow-lite model=mobilenetssd.tflite !  # tflite 모델 부름
tensor_decoder mode=labeling option1=labels.txt ! txt.  # 결과값 해석 방법 지정 ➔ txt
t_raw. ! queue ! textoverlay name=txt !  # txt로 들어온 문자열을 합성
videoconvert ! ximagesink # 합성결과를 화면에 출력
Don’t Reinvent the Wheel, Perfect it!
videoscale tee
queue
queue
videoscale tensor_converter tensor_filter
tflite model
tensor_decoder
textoverlay videoconvert ximagesink
45 https://github.com/nnsuite/nnstreamer
SOSCON 2018
gstreamer for intelligence ➔ nnstreamer
Gstreamer가 신경망을 이해하여 AI Device의 기반이 되면…
• 신경망 사용 디바이스/애플리케이션 개발자
– 복잡한 Data Stream Pipeline 의
• 표현이 쉽다
• 변경, 관리도 쉽다
• 실행이 효율적이고 빠르다
• 구성하는 알고리즘/모델의 교체도 쉽다.
– 다양한 언어/OS에 표준 API 지원
• C, C++, C#(.NET), Java, Python, Perl, Rust, D, Qt, Haskell, Ruby, CLI (shell)
• Linux, BSD, Solaris, Android, macOS, iOS, Windows, OS/400
– 다양한 Input 과 Media Filter의 재사용
– 기존 SW Platform의 재사용 / 통합.
Don’t Reinvent the Wheel, Perfect it!
저비용! 고효율!
46 https://github.com/nnsuite/nnstreamer
SOSCON 2018
gstreamer for intelligence ➔ nnstreamer
Gstreamer가 신경망을 이해하여 AI Device의 기반이 되면…
• 멀티미디어 개발자
– 신경망 알고리즘을 Media Filter로 사용하자!
화질 개선, Context 인식, Style 변형, ………
Don’t Reinvent the Wheel, Perfect it!
47 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
How nnstreamer works?
Concepts
48 https://github.com/nnsuite/nnstreamer
SOSCON 2018
신경망도 또 하나의 Media Filter 일뿐.
그럼 신경망 사이의 데이터는 Video Stream? Audio Stream? Text Stream? …
• ➔ “Tensor Stream”!
• Tensor : Multi-Dimensional Array
How GStreamer handle neural networks?
49 https://github.com/nnsuite/nnstreamer
SOSCON 2018
신경망도 또 하나의 Media Filter. Tensor도 또 하나의 Media Type.
Data Stream으로서의 “Tensor”에 대한 정의
• Refer: https://github.com/nnsuite/nnstreamer/wiki/AD%3A-Data-Type%2C-Caps%2C-
and-Flow-Design “GStreamer data types (pad capabilities)”
How GStreamer handle neural networks?
other/tensor
framerate: (fraction) [ 0/1, 2147483647/1 ]
dim1: (int) [1, 65535]
dim2: (int) [1, 65535]
dim3: (int) [1, 65535]
dim4: (int) [1, 65535] # 아직 5차원 이상은 지원하지 않습니다.
type: (string) { uint8, int8, uint16, int16, uint32, int32, uint64, int64, float32
, float64 }
50 https://github.com/nnsuite/nnstreamer
SOSCON 2018
NO!
Tensor 만으로는 충분하지 않은 경우들…
Tensor로 다 될까요?
신경망 신경망
영상
3x640x480 uint8
소리
4410 int16
각 물체의 위치와 크기
4x1000
각 물체의 종류와 확률
1000x1000
Tensor가 여러 개 뭉쳐야 하네요…
51 https://github.com/nnsuite/nnstreamer
SOSCON 2018
어떻게?
• Tensor는 그대로 두고 Data Stream 여러 개 사용?
– Synchronization 문제 추가 발생. (GST 기능 적용 곤란)
• Tensor Dimension만 키워서 사용?
– 메모리 낭비! 성능 저하!
• Tensor의 묶음을 나타낼 표준 제정? (“Tensors”)
– nnstreamer v0.0.2 !
Tensor의 묶음을 표현하자
신경망
영상1 30fps
영상2 29.1fps
이런 동기화 문제는 정리
해서 넣어주시지;;;;
영상1 3x640x480
영상2 1x1920x1080
종합영상
3x1920x1080
약 절반은 낭비됨
52 https://github.com/nnsuite/nnstreamer
SOSCON 2018
other/tensors
Tensor 만으로는 충분하지 않은 경우였던…
Tensors 로 표현되면…
tensor_mux
영상
3x640x480 uint8
소리
4410 int16
Tensors
tensor0: 3x640x480 uint8
tensor1: 4410 int16
신경망
53 https://github.com/nnsuite/nnstreamer
SOSCON 2018
other/tensors
Tensor 만으로는 충분하지 않은 경우였던…
Tensors 로 표현되면…
신경망
각 물체의 위치와 크기
4x1000
각 물체의 종류와 확률
1000x1000
tensor_demux
Tensors
tensor0: 4x1000
tensor1: 1000x1000
54 https://github.com/nnsuite/nnstreamer
SOSCON 2018
other/tensors
Mux / Demux 성능
Tensors 로 표현되면…
신경망
각 물체의 위치와 크기
4x1000
각 물체의 종류와 확률
1000x1000
tensor_demux
Tensors
tensor0: 4x1000
tensor1: 1000x1000
55 https://github.com/nnsuite/nnstreamer
SOSCON 2018
MUX/DEMUX 때 성능 낭비 없나요?
Memcpy-less mux & demux!
• GstBuffer Multi-memory-chunk 기능 사용.
• 대신. 최대 16개의 Tensor만 뭉쳐집니다.
• 16개 넘기려면 Gstreamer 재빌드 필요. (Hardcoded Parameter)
Tensors 성능 문제?
56 https://github.com/nnsuite/nnstreamer
SOSCON 2018
신경망도 또 하나의 Media Filter. Tensor도 Tensors도 또 하나의 Media Type.
Data Stream으로서의 “Tensors”에 대한 정의
• Refer: https://github.com/nnsuite/nnstreamer/wiki/AD%3A-Data-Type%2C-Caps%2C-
and-Flow-Design “GStreamer data types (pad capabilities)”
Tensors. 그 생김새는?
other/tensors
num_tensors = (int) [1, 16] # GST_MAX_MEMCHUNK_PER_BUFFER
framerate: (fraction) [ 0/1, 2147483647/1 ]
types = (string) Typestrings
dimensions = (string) Dimensions
Typestrings = Typestring | Typestring, Typestrings
Dimensions = Dimension | Dimension, Dimensions
Typestring = (string) {float32, float64, . . . , int16, uint16, int8, uint8}
Dimension = (string) [1-65535]:[1-65535]:[1-65535]:[1-65535]
57 https://github.com/nnsuite/nnstreamer
SOSCON 2018
other/tensorsave
파일로 tensor / tensors 를 저장하고 로드하기 위한 표준
• 현재 v 0.0.2 에서는 구현하지 않습니다.
• 향후 GStreamer 표준으로 제안될 Format Draft는 Wiki에..
Tensor File Format
58 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
What nnstreamer actually does
nnstreamer plugins
59 https://github.com/nnsuite/nnstreamer
SOSCON 2018
어떤 종류의 Plugin 들이…?
https://github.com/nnsuite/nnstreamer/blob/master/Documentation/component-description.md
• Converter
– 기존 Media Type → Tensor / Tensor → 기존 Media Type
• Filter
– Caffe/Tensorflow 등 Framework 나 nnstreamer API로 만들어진 신경망 호출
• Utility
– Stream Pipeline 제어, Tensor 변환/연산 등
• Connector
– Gstreamer 외부 요소와의 연결 (비 A/V 센서, ROS, Application, Filesystem 등 src/sink)
nnstreamer plugins
60 https://github.com/nnsuite/nnstreamer
SOSCON 2018
v0.0.1 (video) / v0.0.2 (all)
nnstreamer/gst/tensor_converter/
• Video (video/x-raw)
– RGB/BGRx 지원. 기타 Colorspace는 향후 지원 할 계획.
– RGB기준 3:Width:Height uint8 Tensor 출력 (uint8[1][height][width][3])
• Audio (audio/x-raw)
– Channel:Frames-per-buffer <type> Tensor 출력 ( Frames-per-buffer: buffer당 sample 수)
• Text (text/x-raw)
– Frames-per-buffer uint8 Tensor 출력(Frames-per-buffer: buffer당 text 최대 길이)
• Binary Blob (application/octet)
– 아무 Binary나 Tensor로 받아 들임. App개발자가 Tensor dimension/type을 지정해야 함.
nnstreamer plugins: tensor_converter
61 https://github.com/nnsuite/nnstreamer
SOSCON 2018
v0.0.1 (video) / v0.0.2 (all)
nnstreamer/gst/tensor_converter/
• 사용 예:
(video stream) ... ! tensor_converter ! ... (tensor stream)
nnstreamer plugins: tensor_converter
tensor_converter
video/x-raw other/tensor
62 https://github.com/nnsuite/nnstreamer
SOSCON 2018
v0.0.2 (partial)
nnstreamer/gst/tensor_decoder/ (부분 구현)
• 향후 Bounding box, object labeling 등 많이 쓰는 decode 기능 추가. (video output)
• 사용 예:
(tensor stream) ... ! tensor_converter ! ... (text stream)
nnstreamer plugins: tensor_decoder
tensor_decoder
text/x-rawother/tensor
mode = labeling
option1 = labels.txt
{ 0, …. , 0.90 , …. } “laptop”
63 https://github.com/nnsuite/nnstreamer
SOSCON 2018
v0.0.1/v0.0.2
nnstreamer/gst/tensor_filter/
• 각 신경망 Framework 는 하나의 “Subplugin”으로 지원함.
– 현재 (TF-Lite, Custom) 지원.
– 향후 Caffe/Caffe2, Tensorflow 추가.
– Subplugin 형태로서 쉽게 추가 가능함. (별도 .so 파일로 추가)
• Custom subplugin
– nnstreamer API 를 이용해 구현한 신경망 Binary를 사용.
– “tensor_filter_custom.h” 참조
nnstreamer plugins: tensor_filter
64 https://github.com/nnsuite/nnstreamer
SOSCON 2018
v0.0.1/v0.0.2
nnstreamer/gst/tensor_filter/
• 사용 예:
... ! tensor_filter framework=tensorflow-lite model=a.tflite !
tensor_filter framework=custom model=b.so ! ...
nnstreamer plugins: tensor_filter
tensor_filter
tensorflow-lite
a.tflite
tensor_filter
custom
b.so
65 https://github.com/nnsuite/nnstreamer
SOSCON 2018
v0.0.1/v0.0.2
nnstreamer/gst/tensor_transform/ (부분구현)
• Transpose, Type 바꾸기, Normalization 하기, 곱하기, 더하기, ……
• TODO: SIMD / Multi-op 지원
• 사용 예:
... ! tensor_transform mode=dimchg option=0:2 ! ...
nnstreamer plugins: utility / tensor_transform
tensor_transform
dimchg (0:2)
3:10:20:30 10:20:3:30
66 https://github.com/nnsuite/nnstreamer
SOSCON 2018
v0.0.2
nnstreamer/gst/tensor_mux/
• Tensor 들을 묶어서 하나의 Tensors 로 (v 0.0.2 한계: 16)
• 동기화 정책 표현 가능 (v 0.0.3 이후). Memcpy 없음.
• 사용 예:
... mux.sink_0 ... mux.sink_1 ... mux.sink_2 ... tensor_mux name=mux ! ...
nnstreamer plugins: utility / tensor_mux
tensor_mux
“mux”
sink_0
sink_1
sink_2
67 https://github.com/nnsuite/nnstreamer
SOSCON 2018
v0.0.2
nnstreamer/gst/tensor_demux/
• Tensors 들을 풀어서 여러 개의 Tensor 로.
• Memcpy 없음. “tensorpick” 옵션을 통해 개별 Tensor 선택 가능.
• 사용 예:
... ! tensor_demux name=demux ... demux.src_0 ... demux.src_1 ... demux.src_2
nnstreamer plugins: utility / tensor_demux
tensor_demux
“demux”
src_0
src_1
src_2
68 https://github.com/nnsuite/nnstreamer
SOSCON 2018
v0.0.2 (partial)
nnstreamer/gst/tensor_merge/ (부분구현)
• Tensor 들을 묶어서 하나의 Tensor 로 (e.g., 좌우 카메라 화면 이어 붙이기)
• 동기화 정책 표현 가능 (v 0.0.3 이후). Memcpy 많음.
• 사용 예:
... m.sink_0 ... m.sink_1 ... tensor_merge name=m ! ...
nnstreamer plugins: utility / tensor_merge
tensor_merge
“m”
sink_0
sink_1
640:480
640:480
1280:480
그 외 “640:960”, “640:480:2”,
“2:640:480”, “640:480/sum”,
“640:480/avg”, 3개 이상 붙이기, 가
로/세로로 4개 붙이기 등 다양한 기
능이 향후 추가 가능.
69 https://github.com/nnsuite/nnstreamer
SOSCON 2018
future item
nnstreamer/gst/tensor_split/ (미구현)
• Tensor 들을 잘라서 여러 개의 Tensor 로 (e.g., 좌우 화면으로 자르기)
• Memcpy 많음.
• 사용 예:
... ! tensor_split name=m ! ... m.src_0 ... m.src_1 ...
nnstreamer plugins: utility / tensor_split
tensor_split
“m”
src_0
src_1
640:480
640:480
1280:480
70 https://github.com/nnsuite/nnstreamer
SOSCON 2018
v0.0.2
nnstreamer/gst/tensor_aggregator/
• Tensor Stream의 Frame Sequence를 묶어서 제공함.
(e.g., 현재부터 과거 10개의 Frame을 한번에 묶어서 신경망에 입력)
• 사용 예:
... ! tensor_aggregator frames-out=4, frames-flush=2, frames=dim=1 ! ...
nnstreamer plugins: utility / tensor_aggregator
tensor_aggregator
in=1/out=4
flush=2/dim=1
16:6416:16
Time = 0, 1, 2, 3, 4, 5, 6, 7, … Time = (0, 1, 2, 3), (2, 3, 4, 5), (4, 5, 6, 7), …
16:16:4 (if dim=2)
64:16 (if dim=0)
71 https://github.com/nnsuite/nnstreamer
SOSCON 2018
v0.0.1
nnstreamer/gst/tensor_sink/
• Tensor Stream의 Frame들을 Shared Mem으로 외부 App에게 제공
• 사용 예:
... ! tensor_sink name=abc
nnstreamer plugins: connector / tensor_sink
tensor_sink
name=abc
Application “X”
attach to “abc”
Shared Mem
Buffer
72 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Future Work
nnstreamer/gst/tensor_ros_sink/ (미구현)
• ROS Topic 으로 Tensor Stream을 발송
• 사용 예:
... ! tensor_ros_sink rostopic=mymanifest.xml
nnstreamer plugins: connector / tensor_ros_sink
tensor_ros_sink
rostopic=mymanifest.xml
ROS Node X
ROS Topic Publish
ROS Topic Subscribe
ROS Node X
ROS Node X
ROS Node X
ROS Node X
73 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Future Work
nnstreamer/gst/tensor_ros_sink/ (미구현)
• ROS Topic 받아와서 Tensor Stream 생성
• 사용 예:
tensor_ros_src rostopic=mymanifest.xml ! ...
nnstreamer plugins: connector / tensor_ros_src
tensor_ros_src
rostopic=mymanifest.xml
ROS Node X
ROS Topic Publish
ROS Topic Subscribe
74 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Future Work
nnstreamer/gst/tensor_ros_src/ (미구현)
• 기타 Input Source / Sensor 로부터 Tensor Stream 생성
• 사용 예:
tensor_src mode=IIO node=/dev/iio0! ...
nnstreamer plugins: connector / tensor_src
tensor_src
IIO subplugin
/dev/iio0
Kernel / IIO Subsystem
75 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Future Work
nnstreamer/gst/tensor_saveload/ (미구현)
• Tensor Stream을 File 저장을 위한 Headed Data로 전환
• 사용 예:
... ! tensor_save ! filesink location=abc.tnsr
nnstreamer plugins: connector / tensor_save
tensor_save filesink
File systems
76 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Future Work
nnstreamer/gst/tensor_saveload/ (미구현)
• File 로부터 Tensor Stream (tensor/tensors) 을 생성
• 사용 예:
1. filesrc location=abc.tnsr ! tensor_loadsave ! ...
2. filesrc location=abc.tnsr ! autodecode ( “tensorsave” Gstreamer 표준 채택시)
nnstreamer plugins: connector / tensor_load
tensorloadfilesrc
File systems
77 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
nnstreamer in action
Usage example
78 https://github.com/nnsuite/nnstreamer
SOSCON 2018
실 적용 사례
Fall Detection Device, Elderly Care
Images from: https://pixabay.com/ko/%EC%8B%A4%EB%A3%A8%EC%97%A3-%EA%B0%80-%EB%96%A8%EC%96%B4%EC%A7%80%EB%8A%94-%EC%B6%95%EC%86%8C-%EC%84%9C%EC%82%AC%EC%8B%9C-%EB%94%94%EC%9E%90%EC%9D%B8-%EC%95%84%EC%9D%B4%EC%BD%98-%EA%B8%88%EC%9C%B5-3172280/
79 https://github.com/nnsuite/nnstreamer
SOSCON 2018
실 적용 사례
Fall Detection Device, Elderly Care
Images from: https://pixabay.com/ko/%EC%8B%A4%EB%A3%A8%EC%97%A3-%EA%B0%80-%EB%96%A8%EC%96%B4%EC%A7%80%EB%8A%94-%EC%B6%95%EC%86%8C-%EC%84%9C%EC%82%AC%EC%8B%9C-%EB%94%94%EC%9E%90%EC%9D%B8-%EC%95%84%EC%9D%B4%EC%BD%98-%EA%B8%88%EC%9C%B5-3172280/
DVS 센서
(Samsung Artik 5 IoT)
• H. Lee, et. al., “Embedded Real-Time Fall Detection Using Deep Learning For Elderly Care”
80 https://github.com/nnsuite/nnstreamer
SOSCON 2018
실 적용 사례
Fall Detection Device, Elderly Care
Images from: https://pixabay.com/ko/%EC%8B%A4%EB%A3%A8%EC%97%A3-%EA%B0%80-%EB%96%A8%EC%96%B4%EC%A7%80%EB%8A%94-%EC%B6%95%EC%86%8C-%EC%84%9C%EC%82%AC%EC%8B%9C-%EB%94%94%EC%9E%90%EC%9D%B8-%EC%95%84%EC%9D%B4%EC%BD%98-%EA%B8%88%EC%9C%B5-3172280/
DVS 센서
(Samsung Artik 5 IoT)
• H. Lee, et. al., “Embedded Real-Time Fall Detection Using Deep Learning For Elderly Care”
81 https://github.com/nnsuite/nnstreamer
SOSCON 2018
실 적용 사례
Fall Detection Device, Elderly Care
• nnstreamer 적용으로 생산성 (수천라인 → 수십라인) / 성능 (x ~4) 대폭 향상
➔ 신규 기능 / 신경망 추가할 여력 발생
82 https://github.com/nnsuite/nnstreamer
SOSCON 2018
실 적용 사례
Fall Detection Device, Elderly Care, “Next-Gen”
• LSTM 적용, 신경망 상호 작용 구조 변경, 신규 센서 및 신경망 추가 등.
• 매우 빠른 시간 내에 고성능/저비용 Solution 제작.
신규 센서
새 신경망 1
새 신경망 2
새 신경망 3
새 신
경망
4
83 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
nnstreamer live action
Demonstration
84 https://github.com/nnsuite/nnstreamer
SOSCON 2018
https://github.com/nnsuite/nnstreamer : nnstreamer_example/example_filter (C & Python)
$ ./example_filter
or
$ python example_filter.py
Demonstration
videoscale tee
queue
queue
videoscale tensor_converter tensor_filter
tflite model
tensor_sink
textoverlay videoconvert ximagesink
Video
640x480
Video
1920x1080
Video
224x224
Tensor
3x224x224
Tensor
1001
Example_filter
85 https://github.com/nnsuite/nnstreamer
SOSCON 2018
nnstreamer @ Ubuntu Demo
$ gst-launch-1.0 v4l2src name=cam_src ! videoscale !  # “cam_src”에서 영상 받아서 scale
video/x-raw,width=640,height=640,format=RGB !  # 3x640x480의 RGB Stream
tee name_t_raw  # Data Stream 분기
t_raw. ! queue ! videoscale ! video/x-raw,width=224,height=224 !  # 224x224 RGB 로 전환
tensor_converter !  # “tensor” 포맷으로 전환
tensor_filter framework=tensorflow-lite model=mobilenetssd.tflite !  # tflite 모델 부름
tensor_decoder mode=labeling option1=labels.txt ! txt.  # 결과값 해석 방법 지정 ➔ txt
t_raw. ! queue ! textoverlay name=txt !  # txt로 들어온 문자열을 합성
videoconvert ! ximagesink # 합성결과를 화면에 출력
Demonstration
videoscale tee
queue
queue
videoscale tensor_converter tensor_filter
tflite model
tensor_decoder
textoverlay videoconvert ximagesink
86 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
How nnstreamer is developed
How you can contribute
CI / CD & How to Contribute
87 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Continuous Integration (CI)
CI system을 통해 모든 개별 Commit은 자동으로 검수
• Regression 방지
– Build & Unit Test
• Coding Style/Rule 강제
• Integration 확인
– Tizen/Ubuntu Packaging & UI App Test
• G. Lim, M. Ham, J. Moon, W. Song, S. Woo, S. Oh, “TAOS-CI: Lightweight & Modular Continuous Integration System for Edge Computing”, ICCE, 2019 (Accepted)
nnstreamer CI: TAOS-CI
88 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Continuous Deployment (CD)
CD system을 통해 설치용 Package 상시 릴리즈
• Ubuntu: launchpad PPA
• Tizen: OBS
• 향후 지속 추가
nnstreamer CD
89 https://github.com/nnsuite/nnstreamer
SOSCON 2018
You are welcomed to contribute!
Github (github.com/nnsuite/nnstreamer) 에서 개발 진행
• Issue 를 통해 개발할 기능, 해결할 버그를 등록.
• Pull Request를 통해 해당 Issue를 해결하는 Code를 등록.
– Coding Style/Rule 및 모든 Build/Unit/Integration Test를 통과해야 함.
• Submit 전에 미리 빌드/테스트 해주세요!
– 신규 기능은 해당 기능을 위한 Unit Test를 포함하는 Commit도 추가해야 함.
– Bug Fix는 해당 Bug를 확인하는 Unit Test를 추가해야 함.
– Maintainer/Reviewer와의 적극적인 소통 권장
How to Contribute?
90 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
Future of nnstreamer
Work In Progress / Plans
91 https://github.com/nnsuite/nnstreamer
SOSCON 2018
OS Integration
• 2018
– Tizen: the standard target. Tested: arm/x64 / Built (no test): arm64/x86-32
– Ubuntu: release via PPA. Tested: x64
• 2019
– Tizen: full SW platform integration & release
– Android: secondary standard target. Tested: arm or arm64
– Windows/macOS: built tested only: x64
– Other Linux Distro: release via openSUSE OBS.
Work-In-Progress & Plans
92 https://github.com/nnsuite/nnstreamer
SOSCON 2018
Features
• 2018
– Tensor_filter: tensorflow
– Tensor_ros_sink: send ROS topics (pub)
– Tensor_decoder: bounding boxes, object labeling
– Tensor_merge: more options required
• 2019
– Tensor_filter: caffe/caffe2, LSTM (recurrent net) support
– Tensor_transform: SIMD support. Multi-op support
– Tensor_source: IIO sensors, LIDAR/RADAR support
– Tensor_ros_source: receive ROS topics (sub): “FULLY DISTRIBUTED GST PIPELINE!”
– Tensor_decoder: more incoming!
– Tensor_save/load
– Try to become gst-plugins-good!
• 2020
– Support training phases
– Multi-computer/board support
Work-In-Progress & Plans
93 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
nnstreamer
Conclusion
94 https://github.com/nnsuite/nnstreamer
SOSCON 2018
혹시 이런 것을 만드신다면…
• Cloud/Server가 아닌 Device에서 직접 신경망 처리
• 실시간으로 생성되는 Audio/Video Stream애 신경망 처리
• 한 Device 혹은 한 Stream Pipeline 내에 여러 신경망을 혼합 사용
• 기존 Audio/Video Media Filter들의 재사용
• Stream Topology가 복잡하거나 동적임
• 고성능 Data Stream 처리 필요
• …
물론, 그 모든 것을 다 잘 직접 구현해서 쓰실 수 있으시면 상관 없습니다. ^^
그런데… “Don’t Invent the Wheel!”
Recommended Applications
95 https://github.com/nnsuite/nnstreamer
SOSCON 2018
그 플러긴들 어디다 어떻게 쓰지요??
https://github.com/nnsuite/nnstreamer
/wiki/AD%3A-Overall-Design
nnstreamer github 내 Wiki page 참조
nnstreamer Cheat Sheet
96 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
THANK YOU
97 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
Appendix
98 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
99 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
소제목 나눔고딕 EB 20pt
삼성 오픈소스 컨퍼런스
제목 나눔고딕 EB 32pt
소속 | 부서 | 작성자
날짜, 나눔고딕 EB 14pt
100 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
소제목 나눔고딕 R 16pt
소제목 나눔고딕 R 16pt
소제목 나눔고딕 R 16pt
소제목 나눔고딕 R 16pt
소제목 나눔고딕 R 16pt
소제목 나눔고딕 R 16pt
소제목 나눔고딕 R 16pt
01
02
03
04
05
06
07
제목 나눔고딕 EB 22pt
101 https://github.com/nnsuite/nnstreamer
SOSCON 2018
소제목 나눔고딕 R 18pt
내용 나눔고딕 R 16pt
• 글머리기호 나눔고딕 R 16pt
– 서브 글머리 기호, 14 pt
• 1슬라이드에 글머리기호 최대 8개 사용
제목 나눔고딕 EB 22pt
102 https://github.com/nnsuite/nnstreamer
SOSCON 2018
소제목 나눔고딕 R 18pt
내용 나눔고딕 R 16pt
• 글머리기호 나눔고딕 R 16pt
– 서브 글머리 기호, 14 pt
• 1슬라이드에 글머리기호 최대 8개 사용
제목 나눔고딕 EB 22pt
103 https://github.com/nnsuite/nnstreamer
SOSCON 2018
<?php if( have_rows('repeater_field_name') ): ?>
<ul>
<?php while( have_rows('repeater_field_name') ): the_row(); ?> <li>sub_field_1 =
<?php the_sub_field('sub_field_1'); ?>, sub_field_2 = <?php the_sub_field('sub_fi
eld_2'); ?>, etc</li>
<?php
$sub_field_3 = get_sub_field('sub_field_3');
// do something with $sub_field_3
?>
<?php endwhile; ?>
</ul>
<?php endif; ?>
소스코드제목 나눔고딕 EB 22pt
소제목 나눔고딕 R 18pt
104 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
소제목 나눔고딕 EB 22pt
Section Divider 나눔고딕 EB 36pt
105 https://github.com/nnsuite/nnstreamer
SOSCON 2018
SAMSUNG OPEN SOURCE CONFERENCE 2018
THANK YOU

Weitere ähnliche Inhalte

Was ist angesagt?

공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반BJ Jang
 
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례BJ Jang
 
Multiprocessor Game Loops: Lessons from Uncharted 2: Among Thieves
Multiprocessor Game Loops: Lessons from Uncharted 2: Among ThievesMultiprocessor Game Loops: Lessons from Uncharted 2: Among Thieves
Multiprocessor Game Loops: Lessons from Uncharted 2: Among ThievesNaughty Dog
 
I/O仮想化最前線〜ネットワークI/Oを中心に〜
I/O仮想化最前線〜ネットワークI/Oを中心に〜I/O仮想化最前線〜ネットワークI/Oを中心に〜
I/O仮想化最前線〜ネットワークI/Oを中心に〜Ryousei Takano
 
About GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginnersAbout GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginnersShota TAMURA
 
Linux performance tuning & stabilization tips (mysqlconf2010)
Linux performance tuning & stabilization tips (mysqlconf2010)Linux performance tuning & stabilization tips (mysqlconf2010)
Linux performance tuning & stabilization tips (mysqlconf2010)Yoshinori Matsunobu
 
대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기Jaikwang Lee
 
SQL Server/SQL Database の新機能のお話し
SQL Server/SQL Database の新機能のお話しSQL Server/SQL Database の新機能のお話し
SQL Server/SQL Database の新機能のお話しInsight Technology, Inc.
 
Mastering Security with GeoServer and GeoFence - FOSS4G EU 2017
Mastering Security with GeoServer and GeoFence - FOSS4G EU 2017Mastering Security with GeoServer and GeoFence - FOSS4G EU 2017
Mastering Security with GeoServer and GeoFence - FOSS4G EU 2017GeoSolutions
 
FPGAアクセラレータの作り方
FPGAアクセラレータの作り方FPGAアクセラレータの作り方
FPGAアクセラレータの作り方Mr. Vengineer
 
디지털트윈 기술 및 스마트시티 적용 사례
디지털트윈 기술 및  스마트시티 적용 사례 디지털트윈 기술 및  스마트시티 적용 사례
디지털트윈 기술 및 스마트시티 적용 사례 SANGHEE SHIN
 
Deep generative model.pdf
Deep generative model.pdfDeep generative model.pdf
Deep generative model.pdfHyungjoo Cho
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディングTakuya ASADA
 
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史智啓 出川
 
공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습
 공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습 공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습
공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습HaNJiN Lee
 
仮想マシンにおけるメモリ管理
仮想マシンにおけるメモリ管理仮想マシンにおけるメモリ管理
仮想マシンにおけるメモリ管理Akari Asai
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)Takeshi HASEGAWA
 
NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017Mark Kilgard
 

Was ist angesagt? (20)

공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반
 
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
 
Multiprocessor Game Loops: Lessons from Uncharted 2: Among Thieves
Multiprocessor Game Loops: Lessons from Uncharted 2: Among ThievesMultiprocessor Game Loops: Lessons from Uncharted 2: Among Thieves
Multiprocessor Game Loops: Lessons from Uncharted 2: Among Thieves
 
I/O仮想化最前線〜ネットワークI/Oを中心に〜
I/O仮想化最前線〜ネットワークI/Oを中心に〜I/O仮想化最前線〜ネットワークI/Oを中心に〜
I/O仮想化最前線〜ネットワークI/Oを中心に〜
 
About GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginnersAbout GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginners
 
Linux performance tuning & stabilization tips (mysqlconf2010)
Linux performance tuning & stabilization tips (mysqlconf2010)Linux performance tuning & stabilization tips (mysqlconf2010)
Linux performance tuning & stabilization tips (mysqlconf2010)
 
ZynqMP勉強会
ZynqMP勉強会ZynqMP勉強会
ZynqMP勉強会
 
대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기
 
SQL Server/SQL Database の新機能のお話し
SQL Server/SQL Database の新機能のお話しSQL Server/SQL Database の新機能のお話し
SQL Server/SQL Database の新機能のお話し
 
Mastering Security with GeoServer and GeoFence - FOSS4G EU 2017
Mastering Security with GeoServer and GeoFence - FOSS4G EU 2017Mastering Security with GeoServer and GeoFence - FOSS4G EU 2017
Mastering Security with GeoServer and GeoFence - FOSS4G EU 2017
 
FPGAアクセラレータの作り方
FPGAアクセラレータの作り方FPGAアクセラレータの作り方
FPGAアクセラレータの作り方
 
디지털트윈 기술 및 스마트시티 적용 사례
디지털트윈 기술 및  스마트시티 적용 사례 디지털트윈 기술 및  스마트시티 적용 사례
디지털트윈 기술 및 스마트시티 적용 사례
 
20191019 sinkhorn
20191019 sinkhorn20191019 sinkhorn
20191019 sinkhorn
 
Deep generative model.pdf
Deep generative model.pdfDeep generative model.pdf
Deep generative model.pdf
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
 
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
 
공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습
 공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습 공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습
공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습
 
仮想マシンにおけるメモリ管理
仮想マシンにおけるメモリ管理仮想マシンにおけるメモリ管理
仮想マシンにおけるメモリ管理
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
 
NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017
 

Ähnlich wie Nnstreamer stream pipeline for arbitrary neural networks

초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)FNGS Labs
 
KOPENS OI SOLUTION v1.0
KOPENS OI SOLUTION v1.0KOPENS OI SOLUTION v1.0
KOPENS OI SOLUTION v1.0Lee Sangboo
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)Yoonseok Pyo
 
RealDisplay Platform V1.5 소개
RealDisplay Platform V1.5 소개RealDisplay Platform V1.5 소개
RealDisplay Platform V1.5 소개Lee Sangboo
 
if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01Klaytn
 
20160414 ROS 2차 강의 (for 아스라다 팀)
20160414 ROS 2차 강의 (for 아스라다 팀)20160414 ROS 2차 강의 (for 아스라다 팀)
20160414 ROS 2차 강의 (for 아스라다 팀)Yoonseok Pyo
 
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장Devgear
 
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱NAVER Engineering
 
[경북] I'mcloud information
[경북] I'mcloud information[경북] I'mcloud information
[경북] I'mcloud informationstartupkorea
 
A Financial Company Story of Bringing Open Source and ML in
A Financial Company Story of Bringing Open Source and ML inA Financial Company Story of Bringing Open Source and ML in
A Financial Company Story of Bringing Open Source and ML inDataya Nolja
 
Multithread pattern 소개
Multithread pattern 소개Multithread pattern 소개
Multithread pattern 소개Sunghyouk Bae
 
[Polygon] Bring the World to Ethereum 발표자료
[Polygon] Bring the World to Ethereum 발표자료[Polygon] Bring the World to Ethereum 발표자료
[Polygon] Bring the World to Ethereum 발표자료Seung-chan Baeg
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineeringYoungSu Son
 
Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218Hyoungjun Kim
 
하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요TIMEGATE
 
하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요Seung-Woo Kang
 

Ähnlich wie Nnstreamer stream pipeline for arbitrary neural networks (20)

초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
 
KOPENS OI SOLUTION v1.0
KOPENS OI SOLUTION v1.0KOPENS OI SOLUTION v1.0
KOPENS OI SOLUTION v1.0
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)
 
RealDisplay Platform V1.5 소개
RealDisplay Platform V1.5 소개RealDisplay Platform V1.5 소개
RealDisplay Platform V1.5 소개
 
if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01
 
20160414 ROS 2차 강의 (for 아스라다 팀)
20160414 ROS 2차 강의 (for 아스라다 팀)20160414 ROS 2차 강의 (for 아스라다 팀)
20160414 ROS 2차 강의 (for 아스라다 팀)
 
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
 
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
 
[경북] I'mcloud information
[경북] I'mcloud information[경북] I'mcloud information
[경북] I'mcloud information
 
A Financial Company Story of Bringing Open Source and ML in
A Financial Company Story of Bringing Open Source and ML inA Financial Company Story of Bringing Open Source and ML in
A Financial Company Story of Bringing Open Source and ML in
 
Multithread pattern 소개
Multithread pattern 소개Multithread pattern 소개
Multithread pattern 소개
 
[Polygon] Bring the World to Ethereum 발표자료
[Polygon] Bring the World to Ethereum 발표자료[Polygon] Bring the World to Ethereum 발표자료
[Polygon] Bring the World to Ethereum 발표자료
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineering
 
Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218
 
INFRASTRUCTURE
INFRASTRUCTUREINFRASTRUCTURE
INFRASTRUCTURE
 
하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요
 
하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요
 

Mehr von NAVER Engineering

디자인 시스템에 직방 ZUIX
디자인 시스템에 직방 ZUIX디자인 시스템에 직방 ZUIX
디자인 시스템에 직방 ZUIXNAVER Engineering
 
진화하는 디자인 시스템(걸음마 편)
진화하는 디자인 시스템(걸음마 편)진화하는 디자인 시스템(걸음마 편)
진화하는 디자인 시스템(걸음마 편)NAVER Engineering
 
서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트NAVER Engineering
 
BPL(Banksalad Product Language) 무야호
BPL(Banksalad Product Language) 무야호BPL(Banksalad Product Language) 무야호
BPL(Banksalad Product Language) 무야호NAVER Engineering
 
이번 생에 디자인 시스템은 처음이라
이번 생에 디자인 시스템은 처음이라이번 생에 디자인 시스템은 처음이라
이번 생에 디자인 시스템은 처음이라NAVER Engineering
 
날고 있는 여러 비행기 넘나 들며 정비하기
날고 있는 여러 비행기 넘나 들며 정비하기날고 있는 여러 비행기 넘나 들며 정비하기
날고 있는 여러 비행기 넘나 들며 정비하기NAVER Engineering
 
쏘카프레임 구축 배경과 과정
 쏘카프레임 구축 배경과 과정 쏘카프레임 구축 배경과 과정
쏘카프레임 구축 배경과 과정NAVER Engineering
 
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기NAVER Engineering
 
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)NAVER Engineering
 
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드NAVER Engineering
 
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기NAVER Engineering
 
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활NAVER Engineering
 
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출NAVER Engineering
 
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우NAVER Engineering
 
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...NAVER Engineering
 
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법NAVER Engineering
 
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며NAVER Engineering
 
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기NAVER Engineering
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기NAVER Engineering
 

Mehr von NAVER Engineering (20)

React vac pattern
React vac patternReact vac pattern
React vac pattern
 
디자인 시스템에 직방 ZUIX
디자인 시스템에 직방 ZUIX디자인 시스템에 직방 ZUIX
디자인 시스템에 직방 ZUIX
 
진화하는 디자인 시스템(걸음마 편)
진화하는 디자인 시스템(걸음마 편)진화하는 디자인 시스템(걸음마 편)
진화하는 디자인 시스템(걸음마 편)
 
서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트
 
BPL(Banksalad Product Language) 무야호
BPL(Banksalad Product Language) 무야호BPL(Banksalad Product Language) 무야호
BPL(Banksalad Product Language) 무야호
 
이번 생에 디자인 시스템은 처음이라
이번 생에 디자인 시스템은 처음이라이번 생에 디자인 시스템은 처음이라
이번 생에 디자인 시스템은 처음이라
 
날고 있는 여러 비행기 넘나 들며 정비하기
날고 있는 여러 비행기 넘나 들며 정비하기날고 있는 여러 비행기 넘나 들며 정비하기
날고 있는 여러 비행기 넘나 들며 정비하기
 
쏘카프레임 구축 배경과 과정
 쏘카프레임 구축 배경과 과정 쏘카프레임 구축 배경과 과정
쏘카프레임 구축 배경과 과정
 
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
 
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
 
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
 
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
 
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
 
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
 
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
 
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
 
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
 
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
 
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 

Nnstreamer stream pipeline for arbitrary neural networks

  • 1. 1 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 Neural Networks as Filters of Stream Pipelines 실시간 데이터 흐름에 신경망을 쉽고 효율적으로 붙이고 구성하기 nnstreamer Samsung Research | AI Center | 함명주
  • 2. 2 https://github.com/nnsuite/nnstreamer SOSCON 2018 nnstreamer는 신경망들을 Stream Filter로 간주하여 사용할 수 있도록 해주는 gstreamer Plugin의 모음 gstreamer는 Multimedia Stream Pipeline을 다루기 위한 “전통” Framework • Fully Open Sourced – https://github.com/nnsuite/nnstreamer 에서 코드 개발 진행 – 누구나 제안/참여 가능 – LGPLv2로서 누구나 사용 가능 (상업 사용 포함) • 0.0.2 released (2018/10/15) nnstreamer는?
  • 3. 3 https://github.com/nnsuite/nnstreamer SOSCON 2018 For Everyone! • OS: Linux (Tizen/Ubuntu/…), BSD, iOS, macOS, Windows, Android, … … … • Language: C, C++, C#(.NET), Java, Haskell, Qt, Python, Perl, Ruby, … … … • ISA: x86_64, x86_32, armv7, aarch64, … • Ubuntu PPA: ppa:nnstreamer/ppa nnstreamer는?
  • 4. 4 https://github.com/nnsuite/nnstreamer SOSCON 2018nnstreamer로 뭘 만들 수 있나요? Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 화자인식 감정인식 배경/환경인식 물체감지 물체인식 안면인식 물체추적 감정인식V 안면추적 영역구분 상황인식 감정인식AV 화자추적AV 상황인식AV Preprocessors Preprocessors 설명을 위한 가상 예제입니다. • 다양한 신경망 Framework/Model 으로 구성된 Pipeline을 쉽게 구현 • 고성능 Data Stream 처리 기능 제공. • 기존의 Multimedia Plugin과 Stream Framework의 재사용
  • 5. 5 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 Background Motivation Concepts Details (nnstreamer Plugins) Usage Example / Demo How-To-Contribute Conclusion 01 02 03 04 05 06 07 Topics
  • 6. 6 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 Cast Study Background
  • 7. 7 https://github.com/nnsuite/nnstreamer SOSCON 2018Case 1: 자율주행 LIDAR Camera RADAR * 실제 시스템보다 단순화 되었음.
  • 8. 8 https://github.com/nnsuite/nnstreamer SOSCON 2018 실제보다 단순화 된 가상 모델 Case 1: 자율주행 센서 / 신경망 모델 LIDAR Camera RADAR Object Detection Object Recognition Object Tracking Image Segmentation Lane Detection SLAM Planning Control ...... SLAM: Simultaneous localization and mapping * 실제 시스템보다 단순화 되었음.
  • 9. 9 https://github.com/nnsuite/nnstreamer SOSCON 2018 실제보다 단순화 된 가상 모델 Case 1: 자율주행 Data Stream Pipelines Text / Sign / Signal ...... LIDAR Camera RADAR Object Detection Object Recognition Object TrackingImage Segmentation Lane Detection SLAM Planning-2 Control-1 LIDAR Camera RADAR RADAR Camera Camera Camera Control-2 Planning-1 Object Detection Object Detection Preprocessors * 실제 시스템보다 단순화 되었음.
  • 10. 10 https://github.com/nnsuite/nnstreamer SOSCON 2018 주요 발생 이슈 • High Bandwidth / Real-Time • Complex Pipeline Topology • Synchronization & Parallelism • Latency & Jitter Control Case 1: 자율주행 Data Stream Pipelines
  • 11. 11 https://github.com/nnsuite/nnstreamer SOSCON 2018 ROS 사용 시 주요 발생 이슈 (Socket!) • High Bandwidth / Real-Time – 고해상도 이미지 실시간 전송 • ROS2 / DDS (RTI Connext DDS) may help? – 모델간 데이터 전송 – 중복 데이터 전송 • 고성능 Workstation에서도 감당하기 힘들 수 있음!! (Memory Transaction!) Case 1: 자율주행 Data Stream Pipelines w/ ROS
  • 12. 12 https://github.com/nnsuite/nnstreamer SOSCON 2018 ROS 사용 시 주요 발생 이슈 (Socket!) • Complex Pipeline Topology – Pub/Sub 구조로 복잡한 Topology도 감당 가능. – Pub/Sub 구조는 Overkill??? Case 1: 자율주행 Data Stream Pipelines
  • 13. 13 https://github.com/nnsuite/nnstreamer SOSCON 2018 ROS 사용 시 주요 발생 이슈 (Socket!) • Synchronization – 독립 Process로 동작하여 골치 아플 수 있음! • Parallelism – 각 Node는 독립 Process. 문제없음 Case 1: 자율주행 Data Stream Pipelines
  • 14. 14 https://github.com/nnsuite/nnstreamer SOSCON 2018 ROS 사용 시 주요 발생 이슈 (Socket!) • Latency – 과도한 Memcpy로 인해 Communication Latency 증가 • Jitter Control – 각 Node들에 대한 Resource/Rate 제어 어려움 – Node간 생성물에 대하 동기화 어려움 Case 1: 자율주행 Data Stream Pipelines w/ ROS
  • 15. 15 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Multiple Sensors 카메라, 마이크, IR, 관성, 그 외 다수
  • 16. 16 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Multiple AI-based Services 감정인식, 화자인식, STT, 앱연결, 그 외 상상하시는 아무거나… Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 ……
  • 17. 17 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 화자인식 감정인식 마이크 입력을 사용할 기본 요소? 배경/환경인식 설명을 위한 가상 예제입니다.
  • 18. 18 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 화자인식 감정인식 비디오 입력을 사용할 기본 요소? 배경/환경인식 물체감지 물체인식 안면인식 물체추적 감정인식V 안면추적 영역구분 상황인식 설명을 위한 가상 예제입니다.
  • 19. 19 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 화자인식 감정인식 오디오 비디오 입력을 함께 사용할 기본 요소? 배경/환경인식 물체감지 물체인식 안면인식 물체추적 감정인식V 안면추적 영역구분 상황인식 감정인식AV 화자추적AV 상황인식AV 설명을 위한 가상 예제입니다.
  • 20. 20 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 화자인식 감정인식 오디오 비디오 미디어 전처리 배경/환경인식 물체감지 물체인식 안면인식 물체추적 감정인식V 안면추적 영역구분 상황인식 감정인식AV 화자추적AV 상황인식AV Preprocessors Preprocessors 설명을 위한 가상 예제입니다.
  • 21. 21 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 화자인식 감정인식 Data Stream Pipelines 배경/환경인식 물체감지 물체인식 안면인식 물체추적 감정인식V 안면추적 영역구분 상황인식 감정인식AV 화자추적AV 상황인식AV Preprocessors Preprocessors 설명을 위한 가상 예제입니다.
  • 22. 22 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 화자인식 감정인식 Issue 1. Data Stream Performance. 배경/환경인식 물체감지 물체인식 안면인식 물체추적 감정인식V 안면추적 영역구분 상황인식 감정인식AV 화자추적AV 상황인식AV Preprocessors Preprocessors 설명을 위한 가상 예제입니다. 데이터 전송 효율성 / 속도문제! (Socket통신으로는 답이 없음)
  • 23. 23 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 화자인식 감정인식 Issue 2. Neural Network Frameworks 배경/환경인식 물체감지 물체인식 안면인식 물체추적 감정인식V 안면추적 영역구분 상황인식 감정인식AV 화자추적AV 상황인식AV Preprocessors Preprocessors 설명을 위한 가상 예제입니다. Caffe Caffe Caffe Caffe Caffe OpenCV tensorflow tensorflow tensorflow Tensorflow-lite Tensorflow-lite Custom C code Custom C code Custom C code Custom C# code 각자 다른 Framework로 Inference 하면 어떻게 통합하지???
  • 24. 24 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 화자인식 감정인식 Issue 3. Multimedia Data Processing 배경/환경인식 물체감지 물체인식 안면인식 물체추적 감정인식V 안면추적 영역구분 상황인식 감정인식AV 화자추적AV 상황인식AV Preprocessors Preprocessors 설명을 위한 가상 예제입니다. 각자 다른 Framework로 Inference 하면 어떻게 통합하지??? Media Preprocessor Filter들은 어떻게 만들고 통합하지? Data Stream 제어는?? (좋은게 있는데….;;;)
  • 25. 25 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… Issue 4. Data Stream Synchronization Preprocessors Preprocessors 설명을 위한 가상 예제입니다. Model B Model A Model C …… …… A, B가 다른 속도로 동작하면 C에서는 어떻게 받아들일 것인가? A, B의 데이터 출력 시기가 일정하지 않으면 어떻게 C에 서 받아들일 것인가?
  • 26. 26 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… Issue 5. Data Stream Rate Control Preprocessors Preprocessors 설명을 위한 가상 예제입니다. Model B Model A Model C …… …… 이래도 되나?
  • 27. 27 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 화자인식 감정인식 Issue 6. Dynamic Stream Pipelines 배경/환경인식 물체감지 물체인식 안면인식 물체추적 감정인식V 안면추적 영역구분 상황인식 감정인식AV 화자추적AV 상황인식AV Preprocessors Preprocessors 설명을 위한 가상 예제입니다.
  • 28. 28 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 2.0 화자인식 감정인식 Issue 6. Dynamic Stream Pipelines 배경/환경인식 물체감지 물체인식 안면인식 물체추적 감정인식V 안면추적 영역구분 상황인식 감정인식AV 화자추적AV 상황인식AV Preprocessors Preprocessors 설명을 위한 가상 예제입니다. 새롭고 좋은거 새롭고 좋고 놀라운거
  • 29. 29 https://github.com/nnsuite/nnstreamer SOSCON 2018 Robots, Consumer Electronics, Mobile Devices Case 2: Multi-Modal Interactions Intelligence Service 1 Intelligence Service 2 Intelligence Service 3 Intelligence Service 4 …… 음성인식 2.0 화자인식 감정인식 Issue 6. Dynamic Stream Pipelines 배경/환경인식 물체감지 물체인식 안면인식 물체추적 감정인식V 안면추적 영역구분 상황인식 감정인식AV 화자추적AV 상황인식AV Preprocessors Preprocessors 설명을 위한 가상 예제입니다. 새롭고 좋은거 새롭고 좋고 놀라운거 Preprocessors
  • 30. 30 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 Why nnstreamer? Motivation
  • 34. 34 https://github.com/nnsuite/nnstreamer SOSCON 2018 gstreamer for intelligence! What is gstreamer? • Pipeline 기반 Open Source (LGPL) Multimedia Framework (2001.1. 첫 공개) • Linux 계열 표준 – Linux, BSD, macOS, iOS, Windows, … 지원. – TV: 삼성, LG, Sony, … • Audio/Video 재생, 기록, 스트리밍/방송, 변환, 편집 등에 광범위하게 사용됨 – Stream Filter로 사용 가능한 수백가지 Plugin 제공. – Plugin을 제작하기 위한 환경 포함 – C/C++/C#/Java/Python/Perl/CLI/… 에의 표준 API 제공 – Pipeline 구성을 표현하는 것 만으로 동작하는 Application이 완성됨! • GUI Tool로 Pipeline 그려서 만들기도… Do NOT Reinvent the Wheel
  • 35. 35 https://github.com/nnsuite/nnstreamer SOSCON 2018 gstreamer for intelligence! Why gstreamer? • Data Stream Pipeline 을 표현, 관리, 실행하는 안정된 표준 Framework • 언급된 Issue는 이미 수십년 된 Multimedia의 주요 Issue! – 이미 해결한 문제 다시 풀지 말자! • 신경망 == Data Stream Filter! Do NOT Reinvent the Wheel
  • 36. 36 https://github.com/nnsuite/nnstreamer SOSCON 2018 gstreamer for intelligence! Why gstreamer? • Configure & run complex stream pipelines, dynamically in run-time! Do NOT Reinvent the Wheel
  • 37. 37 https://github.com/nnsuite/nnstreamer SOSCON 2018 gstreamer for intelligence! Why gstreamer? • Configure & run complex stream pipelines… even with GUI tools Do NOT Reinvent the Wheel https://github.com/virinext/pipeviz
  • 38. 38 https://github.com/nnsuite/nnstreamer SOSCON 2018 비교 ROS vs GStreamer ROS GStreamer Community HIGH (11 years old) Many robot-related plugins HIGH (17 years old) Many multimedia plugins Maturity (commercial products) MEDIUM (Questionable for mass pr oduction) HIGH (Mass Production: TV, Wearable, …) OS Linux, Windows 10 Linux, BSD, Solaris, Android, macOS, iOS, Windows, OS/400 Communication Socket (ROS2: DDS supported) Shared memory chunks (faster!) Distributed System Fully supported Experimental (may use ROS as gstreamer plugins) Sensors More varying. Many unstable (even sound) Video/Audio: good / Other sensors: unstable Neural Network Custom plugins Custom plugins → nnstreamer
  • 40. 40 https://github.com/nnsuite/nnstreamer SOSCON 2018 gstreamer for intelligence ➔ nnstreamer Gstreamer가 신경망을 이해하여 AI Device의 기반이 되도록 하기 위해… • 다양한 신경망 Framework / Model 들에게 공통으로 주어질 Data Stream 표준 • 다양한 신경망 Framework / Model 들을 Invoke할 방법 • Audio/Video/Text 외 다른 Data Stream을 GStreamer에서 다루도록 할 방법 Don’t Reinvent the Wheel, Perfect it!
  • 41. 41 https://github.com/nnsuite/nnstreamer SOSCON 2018 gstreamer for intelligence ➔ nnstreamer Gstreamer가 신경망을 이해하여 AI Device의 기반이 되도록 하기 위해… • 다양한 신경망 Framework / Model 들에게 공통으로 주어질 Data Stream 표준 • 다양한 신경망 Framework / Model 들을 Invoke할 방법 • Audio/Video/Text 외 다른 Data Stream을 GStreamer에서 다루도록 할 방법 Don’t Reinvent the Wheel, Perfect it! ➔ nnstreamer
  • 42. 42 https://github.com/nnsuite/nnstreamer SOSCON 2018 gstreamer for intelligence ➔ nnstreamer License: LGPL 2.1 기존 GStreamer LGPL 코드 재사용 Public Open: https://github.com/nnsuite/nnstreamer 2018.07: 0.0.1 2018.10: 0.0.2 Current: 0.0.3-rc1 Don’t Reinvent the Wheel, Perfect it! ➔ nnstreamer
  • 43. 43 https://github.com/nnsuite/nnstreamer SOSCON 2018 gstreamer for intelligence ➔ nnstreamer Gstreamer가 신경망을 이해하여 AI Device의 기반이 되면… • 신경망 알고리즘 개발자 • 신경망 사용 디바이스/애플리케이션 개발자 • 멀티미디어 개발자 Don’t Reinvent the Wheel, Perfect it!
  • 44. 44 https://github.com/nnsuite/nnstreamer SOSCON 2018 gstreamer for intelligence ➔ nnstreamer Gstreamer가 신경망을 이해하여 AI Device의 기반이 되면… • 신경망 알고리즘 개발자 – 각종 센서 / 미디어 / 데이터 스트림에 쉽고 즉각적인 통합 ➔ 빠른 테스트 / 프로토타이핑 – 예: $ gst-launch-1.0 v4l2src name=cam_src ! videoscale ! # “cam_src”에서 영상 받아서 scale video/x-raw,width=640,height=640,format=RGB ! # 3x640x480의 RGB Stream tee name_t_raw # Data Stream 분기 t_raw. ! queue ! videoscale ! video/x-raw,width=224,height=224 ! # 224x224 RGB 로 전환 tensor_converter ! # “tensor” 포맷으로 전환 tensor_filter framework=tensorflow-lite model=mobilenetssd.tflite ! # tflite 모델 부름 tensor_decoder mode=labeling option1=labels.txt ! txt. # 결과값 해석 방법 지정 ➔ txt t_raw. ! queue ! textoverlay name=txt ! # txt로 들어온 문자열을 합성 videoconvert ! ximagesink # 합성결과를 화면에 출력 Don’t Reinvent the Wheel, Perfect it! videoscale tee queue queue videoscale tensor_converter tensor_filter tflite model tensor_decoder textoverlay videoconvert ximagesink
  • 45. 45 https://github.com/nnsuite/nnstreamer SOSCON 2018 gstreamer for intelligence ➔ nnstreamer Gstreamer가 신경망을 이해하여 AI Device의 기반이 되면… • 신경망 사용 디바이스/애플리케이션 개발자 – 복잡한 Data Stream Pipeline 의 • 표현이 쉽다 • 변경, 관리도 쉽다 • 실행이 효율적이고 빠르다 • 구성하는 알고리즘/모델의 교체도 쉽다. – 다양한 언어/OS에 표준 API 지원 • C, C++, C#(.NET), Java, Python, Perl, Rust, D, Qt, Haskell, Ruby, CLI (shell) • Linux, BSD, Solaris, Android, macOS, iOS, Windows, OS/400 – 다양한 Input 과 Media Filter의 재사용 – 기존 SW Platform의 재사용 / 통합. Don’t Reinvent the Wheel, Perfect it! 저비용! 고효율!
  • 46. 46 https://github.com/nnsuite/nnstreamer SOSCON 2018 gstreamer for intelligence ➔ nnstreamer Gstreamer가 신경망을 이해하여 AI Device의 기반이 되면… • 멀티미디어 개발자 – 신경망 알고리즘을 Media Filter로 사용하자! 화질 개선, Context 인식, Style 변형, ……… Don’t Reinvent the Wheel, Perfect it!
  • 47. 47 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 How nnstreamer works? Concepts
  • 48. 48 https://github.com/nnsuite/nnstreamer SOSCON 2018 신경망도 또 하나의 Media Filter 일뿐. 그럼 신경망 사이의 데이터는 Video Stream? Audio Stream? Text Stream? … • ➔ “Tensor Stream”! • Tensor : Multi-Dimensional Array How GStreamer handle neural networks?
  • 49. 49 https://github.com/nnsuite/nnstreamer SOSCON 2018 신경망도 또 하나의 Media Filter. Tensor도 또 하나의 Media Type. Data Stream으로서의 “Tensor”에 대한 정의 • Refer: https://github.com/nnsuite/nnstreamer/wiki/AD%3A-Data-Type%2C-Caps%2C- and-Flow-Design “GStreamer data types (pad capabilities)” How GStreamer handle neural networks? other/tensor framerate: (fraction) [ 0/1, 2147483647/1 ] dim1: (int) [1, 65535] dim2: (int) [1, 65535] dim3: (int) [1, 65535] dim4: (int) [1, 65535] # 아직 5차원 이상은 지원하지 않습니다. type: (string) { uint8, int8, uint16, int16, uint32, int32, uint64, int64, float32 , float64 }
  • 50. 50 https://github.com/nnsuite/nnstreamer SOSCON 2018 NO! Tensor 만으로는 충분하지 않은 경우들… Tensor로 다 될까요? 신경망 신경망 영상 3x640x480 uint8 소리 4410 int16 각 물체의 위치와 크기 4x1000 각 물체의 종류와 확률 1000x1000 Tensor가 여러 개 뭉쳐야 하네요…
  • 51. 51 https://github.com/nnsuite/nnstreamer SOSCON 2018 어떻게? • Tensor는 그대로 두고 Data Stream 여러 개 사용? – Synchronization 문제 추가 발생. (GST 기능 적용 곤란) • Tensor Dimension만 키워서 사용? – 메모리 낭비! 성능 저하! • Tensor의 묶음을 나타낼 표준 제정? (“Tensors”) – nnstreamer v0.0.2 ! Tensor의 묶음을 표현하자 신경망 영상1 30fps 영상2 29.1fps 이런 동기화 문제는 정리 해서 넣어주시지;;;; 영상1 3x640x480 영상2 1x1920x1080 종합영상 3x1920x1080 약 절반은 낭비됨
  • 52. 52 https://github.com/nnsuite/nnstreamer SOSCON 2018 other/tensors Tensor 만으로는 충분하지 않은 경우였던… Tensors 로 표현되면… tensor_mux 영상 3x640x480 uint8 소리 4410 int16 Tensors tensor0: 3x640x480 uint8 tensor1: 4410 int16 신경망
  • 53. 53 https://github.com/nnsuite/nnstreamer SOSCON 2018 other/tensors Tensor 만으로는 충분하지 않은 경우였던… Tensors 로 표현되면… 신경망 각 물체의 위치와 크기 4x1000 각 물체의 종류와 확률 1000x1000 tensor_demux Tensors tensor0: 4x1000 tensor1: 1000x1000
  • 54. 54 https://github.com/nnsuite/nnstreamer SOSCON 2018 other/tensors Mux / Demux 성능 Tensors 로 표현되면… 신경망 각 물체의 위치와 크기 4x1000 각 물체의 종류와 확률 1000x1000 tensor_demux Tensors tensor0: 4x1000 tensor1: 1000x1000
  • 55. 55 https://github.com/nnsuite/nnstreamer SOSCON 2018 MUX/DEMUX 때 성능 낭비 없나요? Memcpy-less mux & demux! • GstBuffer Multi-memory-chunk 기능 사용. • 대신. 최대 16개의 Tensor만 뭉쳐집니다. • 16개 넘기려면 Gstreamer 재빌드 필요. (Hardcoded Parameter) Tensors 성능 문제?
  • 56. 56 https://github.com/nnsuite/nnstreamer SOSCON 2018 신경망도 또 하나의 Media Filter. Tensor도 Tensors도 또 하나의 Media Type. Data Stream으로서의 “Tensors”에 대한 정의 • Refer: https://github.com/nnsuite/nnstreamer/wiki/AD%3A-Data-Type%2C-Caps%2C- and-Flow-Design “GStreamer data types (pad capabilities)” Tensors. 그 생김새는? other/tensors num_tensors = (int) [1, 16] # GST_MAX_MEMCHUNK_PER_BUFFER framerate: (fraction) [ 0/1, 2147483647/1 ] types = (string) Typestrings dimensions = (string) Dimensions Typestrings = Typestring | Typestring, Typestrings Dimensions = Dimension | Dimension, Dimensions Typestring = (string) {float32, float64, . . . , int16, uint16, int8, uint8} Dimension = (string) [1-65535]:[1-65535]:[1-65535]:[1-65535]
  • 57. 57 https://github.com/nnsuite/nnstreamer SOSCON 2018 other/tensorsave 파일로 tensor / tensors 를 저장하고 로드하기 위한 표준 • 현재 v 0.0.2 에서는 구현하지 않습니다. • 향후 GStreamer 표준으로 제안될 Format Draft는 Wiki에.. Tensor File Format
  • 58. 58 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 What nnstreamer actually does nnstreamer plugins
  • 59. 59 https://github.com/nnsuite/nnstreamer SOSCON 2018 어떤 종류의 Plugin 들이…? https://github.com/nnsuite/nnstreamer/blob/master/Documentation/component-description.md • Converter – 기존 Media Type → Tensor / Tensor → 기존 Media Type • Filter – Caffe/Tensorflow 등 Framework 나 nnstreamer API로 만들어진 신경망 호출 • Utility – Stream Pipeline 제어, Tensor 변환/연산 등 • Connector – Gstreamer 외부 요소와의 연결 (비 A/V 센서, ROS, Application, Filesystem 등 src/sink) nnstreamer plugins
  • 60. 60 https://github.com/nnsuite/nnstreamer SOSCON 2018 v0.0.1 (video) / v0.0.2 (all) nnstreamer/gst/tensor_converter/ • Video (video/x-raw) – RGB/BGRx 지원. 기타 Colorspace는 향후 지원 할 계획. – RGB기준 3:Width:Height uint8 Tensor 출력 (uint8[1][height][width][3]) • Audio (audio/x-raw) – Channel:Frames-per-buffer <type> Tensor 출력 ( Frames-per-buffer: buffer당 sample 수) • Text (text/x-raw) – Frames-per-buffer uint8 Tensor 출력(Frames-per-buffer: buffer당 text 최대 길이) • Binary Blob (application/octet) – 아무 Binary나 Tensor로 받아 들임. App개발자가 Tensor dimension/type을 지정해야 함. nnstreamer plugins: tensor_converter
  • 61. 61 https://github.com/nnsuite/nnstreamer SOSCON 2018 v0.0.1 (video) / v0.0.2 (all) nnstreamer/gst/tensor_converter/ • 사용 예: (video stream) ... ! tensor_converter ! ... (tensor stream) nnstreamer plugins: tensor_converter tensor_converter video/x-raw other/tensor
  • 62. 62 https://github.com/nnsuite/nnstreamer SOSCON 2018 v0.0.2 (partial) nnstreamer/gst/tensor_decoder/ (부분 구현) • 향후 Bounding box, object labeling 등 많이 쓰는 decode 기능 추가. (video output) • 사용 예: (tensor stream) ... ! tensor_converter ! ... (text stream) nnstreamer plugins: tensor_decoder tensor_decoder text/x-rawother/tensor mode = labeling option1 = labels.txt { 0, …. , 0.90 , …. } “laptop”
  • 63. 63 https://github.com/nnsuite/nnstreamer SOSCON 2018 v0.0.1/v0.0.2 nnstreamer/gst/tensor_filter/ • 각 신경망 Framework 는 하나의 “Subplugin”으로 지원함. – 현재 (TF-Lite, Custom) 지원. – 향후 Caffe/Caffe2, Tensorflow 추가. – Subplugin 형태로서 쉽게 추가 가능함. (별도 .so 파일로 추가) • Custom subplugin – nnstreamer API 를 이용해 구현한 신경망 Binary를 사용. – “tensor_filter_custom.h” 참조 nnstreamer plugins: tensor_filter
  • 64. 64 https://github.com/nnsuite/nnstreamer SOSCON 2018 v0.0.1/v0.0.2 nnstreamer/gst/tensor_filter/ • 사용 예: ... ! tensor_filter framework=tensorflow-lite model=a.tflite ! tensor_filter framework=custom model=b.so ! ... nnstreamer plugins: tensor_filter tensor_filter tensorflow-lite a.tflite tensor_filter custom b.so
  • 65. 65 https://github.com/nnsuite/nnstreamer SOSCON 2018 v0.0.1/v0.0.2 nnstreamer/gst/tensor_transform/ (부분구현) • Transpose, Type 바꾸기, Normalization 하기, 곱하기, 더하기, …… • TODO: SIMD / Multi-op 지원 • 사용 예: ... ! tensor_transform mode=dimchg option=0:2 ! ... nnstreamer plugins: utility / tensor_transform tensor_transform dimchg (0:2) 3:10:20:30 10:20:3:30
  • 66. 66 https://github.com/nnsuite/nnstreamer SOSCON 2018 v0.0.2 nnstreamer/gst/tensor_mux/ • Tensor 들을 묶어서 하나의 Tensors 로 (v 0.0.2 한계: 16) • 동기화 정책 표현 가능 (v 0.0.3 이후). Memcpy 없음. • 사용 예: ... mux.sink_0 ... mux.sink_1 ... mux.sink_2 ... tensor_mux name=mux ! ... nnstreamer plugins: utility / tensor_mux tensor_mux “mux” sink_0 sink_1 sink_2
  • 67. 67 https://github.com/nnsuite/nnstreamer SOSCON 2018 v0.0.2 nnstreamer/gst/tensor_demux/ • Tensors 들을 풀어서 여러 개의 Tensor 로. • Memcpy 없음. “tensorpick” 옵션을 통해 개별 Tensor 선택 가능. • 사용 예: ... ! tensor_demux name=demux ... demux.src_0 ... demux.src_1 ... demux.src_2 nnstreamer plugins: utility / tensor_demux tensor_demux “demux” src_0 src_1 src_2
  • 68. 68 https://github.com/nnsuite/nnstreamer SOSCON 2018 v0.0.2 (partial) nnstreamer/gst/tensor_merge/ (부분구현) • Tensor 들을 묶어서 하나의 Tensor 로 (e.g., 좌우 카메라 화면 이어 붙이기) • 동기화 정책 표현 가능 (v 0.0.3 이후). Memcpy 많음. • 사용 예: ... m.sink_0 ... m.sink_1 ... tensor_merge name=m ! ... nnstreamer plugins: utility / tensor_merge tensor_merge “m” sink_0 sink_1 640:480 640:480 1280:480 그 외 “640:960”, “640:480:2”, “2:640:480”, “640:480/sum”, “640:480/avg”, 3개 이상 붙이기, 가 로/세로로 4개 붙이기 등 다양한 기 능이 향후 추가 가능.
  • 69. 69 https://github.com/nnsuite/nnstreamer SOSCON 2018 future item nnstreamer/gst/tensor_split/ (미구현) • Tensor 들을 잘라서 여러 개의 Tensor 로 (e.g., 좌우 화면으로 자르기) • Memcpy 많음. • 사용 예: ... ! tensor_split name=m ! ... m.src_0 ... m.src_1 ... nnstreamer plugins: utility / tensor_split tensor_split “m” src_0 src_1 640:480 640:480 1280:480
  • 70. 70 https://github.com/nnsuite/nnstreamer SOSCON 2018 v0.0.2 nnstreamer/gst/tensor_aggregator/ • Tensor Stream의 Frame Sequence를 묶어서 제공함. (e.g., 현재부터 과거 10개의 Frame을 한번에 묶어서 신경망에 입력) • 사용 예: ... ! tensor_aggregator frames-out=4, frames-flush=2, frames=dim=1 ! ... nnstreamer plugins: utility / tensor_aggregator tensor_aggregator in=1/out=4 flush=2/dim=1 16:6416:16 Time = 0, 1, 2, 3, 4, 5, 6, 7, … Time = (0, 1, 2, 3), (2, 3, 4, 5), (4, 5, 6, 7), … 16:16:4 (if dim=2) 64:16 (if dim=0)
  • 71. 71 https://github.com/nnsuite/nnstreamer SOSCON 2018 v0.0.1 nnstreamer/gst/tensor_sink/ • Tensor Stream의 Frame들을 Shared Mem으로 외부 App에게 제공 • 사용 예: ... ! tensor_sink name=abc nnstreamer plugins: connector / tensor_sink tensor_sink name=abc Application “X” attach to “abc” Shared Mem Buffer
  • 72. 72 https://github.com/nnsuite/nnstreamer SOSCON 2018 Future Work nnstreamer/gst/tensor_ros_sink/ (미구현) • ROS Topic 으로 Tensor Stream을 발송 • 사용 예: ... ! tensor_ros_sink rostopic=mymanifest.xml nnstreamer plugins: connector / tensor_ros_sink tensor_ros_sink rostopic=mymanifest.xml ROS Node X ROS Topic Publish ROS Topic Subscribe ROS Node X ROS Node X ROS Node X ROS Node X
  • 73. 73 https://github.com/nnsuite/nnstreamer SOSCON 2018 Future Work nnstreamer/gst/tensor_ros_sink/ (미구현) • ROS Topic 받아와서 Tensor Stream 생성 • 사용 예: tensor_ros_src rostopic=mymanifest.xml ! ... nnstreamer plugins: connector / tensor_ros_src tensor_ros_src rostopic=mymanifest.xml ROS Node X ROS Topic Publish ROS Topic Subscribe
  • 74. 74 https://github.com/nnsuite/nnstreamer SOSCON 2018 Future Work nnstreamer/gst/tensor_ros_src/ (미구현) • 기타 Input Source / Sensor 로부터 Tensor Stream 생성 • 사용 예: tensor_src mode=IIO node=/dev/iio0! ... nnstreamer plugins: connector / tensor_src tensor_src IIO subplugin /dev/iio0 Kernel / IIO Subsystem
  • 75. 75 https://github.com/nnsuite/nnstreamer SOSCON 2018 Future Work nnstreamer/gst/tensor_saveload/ (미구현) • Tensor Stream을 File 저장을 위한 Headed Data로 전환 • 사용 예: ... ! tensor_save ! filesink location=abc.tnsr nnstreamer plugins: connector / tensor_save tensor_save filesink File systems
  • 76. 76 https://github.com/nnsuite/nnstreamer SOSCON 2018 Future Work nnstreamer/gst/tensor_saveload/ (미구현) • File 로부터 Tensor Stream (tensor/tensors) 을 생성 • 사용 예: 1. filesrc location=abc.tnsr ! tensor_loadsave ! ... 2. filesrc location=abc.tnsr ! autodecode ( “tensorsave” Gstreamer 표준 채택시) nnstreamer plugins: connector / tensor_load tensorloadfilesrc File systems
  • 77. 77 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 nnstreamer in action Usage example
  • 78. 78 https://github.com/nnsuite/nnstreamer SOSCON 2018 실 적용 사례 Fall Detection Device, Elderly Care Images from: https://pixabay.com/ko/%EC%8B%A4%EB%A3%A8%EC%97%A3-%EA%B0%80-%EB%96%A8%EC%96%B4%EC%A7%80%EB%8A%94-%EC%B6%95%EC%86%8C-%EC%84%9C%EC%82%AC%EC%8B%9C-%EB%94%94%EC%9E%90%EC%9D%B8-%EC%95%84%EC%9D%B4%EC%BD%98-%EA%B8%88%EC%9C%B5-3172280/
  • 79. 79 https://github.com/nnsuite/nnstreamer SOSCON 2018 실 적용 사례 Fall Detection Device, Elderly Care Images from: https://pixabay.com/ko/%EC%8B%A4%EB%A3%A8%EC%97%A3-%EA%B0%80-%EB%96%A8%EC%96%B4%EC%A7%80%EB%8A%94-%EC%B6%95%EC%86%8C-%EC%84%9C%EC%82%AC%EC%8B%9C-%EB%94%94%EC%9E%90%EC%9D%B8-%EC%95%84%EC%9D%B4%EC%BD%98-%EA%B8%88%EC%9C%B5-3172280/ DVS 센서 (Samsung Artik 5 IoT) • H. Lee, et. al., “Embedded Real-Time Fall Detection Using Deep Learning For Elderly Care”
  • 80. 80 https://github.com/nnsuite/nnstreamer SOSCON 2018 실 적용 사례 Fall Detection Device, Elderly Care Images from: https://pixabay.com/ko/%EC%8B%A4%EB%A3%A8%EC%97%A3-%EA%B0%80-%EB%96%A8%EC%96%B4%EC%A7%80%EB%8A%94-%EC%B6%95%EC%86%8C-%EC%84%9C%EC%82%AC%EC%8B%9C-%EB%94%94%EC%9E%90%EC%9D%B8-%EC%95%84%EC%9D%B4%EC%BD%98-%EA%B8%88%EC%9C%B5-3172280/ DVS 센서 (Samsung Artik 5 IoT) • H. Lee, et. al., “Embedded Real-Time Fall Detection Using Deep Learning For Elderly Care”
  • 81. 81 https://github.com/nnsuite/nnstreamer SOSCON 2018 실 적용 사례 Fall Detection Device, Elderly Care • nnstreamer 적용으로 생산성 (수천라인 → 수십라인) / 성능 (x ~4) 대폭 향상 ➔ 신규 기능 / 신경망 추가할 여력 발생
  • 82. 82 https://github.com/nnsuite/nnstreamer SOSCON 2018 실 적용 사례 Fall Detection Device, Elderly Care, “Next-Gen” • LSTM 적용, 신경망 상호 작용 구조 변경, 신규 센서 및 신경망 추가 등. • 매우 빠른 시간 내에 고성능/저비용 Solution 제작. 신규 센서 새 신경망 1 새 신경망 2 새 신경망 3 새 신 경망 4
  • 83. 83 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 nnstreamer live action Demonstration
  • 84. 84 https://github.com/nnsuite/nnstreamer SOSCON 2018 https://github.com/nnsuite/nnstreamer : nnstreamer_example/example_filter (C & Python) $ ./example_filter or $ python example_filter.py Demonstration videoscale tee queue queue videoscale tensor_converter tensor_filter tflite model tensor_sink textoverlay videoconvert ximagesink Video 640x480 Video 1920x1080 Video 224x224 Tensor 3x224x224 Tensor 1001 Example_filter
  • 85. 85 https://github.com/nnsuite/nnstreamer SOSCON 2018 nnstreamer @ Ubuntu Demo $ gst-launch-1.0 v4l2src name=cam_src ! videoscale ! # “cam_src”에서 영상 받아서 scale video/x-raw,width=640,height=640,format=RGB ! # 3x640x480의 RGB Stream tee name_t_raw # Data Stream 분기 t_raw. ! queue ! videoscale ! video/x-raw,width=224,height=224 ! # 224x224 RGB 로 전환 tensor_converter ! # “tensor” 포맷으로 전환 tensor_filter framework=tensorflow-lite model=mobilenetssd.tflite ! # tflite 모델 부름 tensor_decoder mode=labeling option1=labels.txt ! txt. # 결과값 해석 방법 지정 ➔ txt t_raw. ! queue ! textoverlay name=txt ! # txt로 들어온 문자열을 합성 videoconvert ! ximagesink # 합성결과를 화면에 출력 Demonstration videoscale tee queue queue videoscale tensor_converter tensor_filter tflite model tensor_decoder textoverlay videoconvert ximagesink
  • 86. 86 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 How nnstreamer is developed How you can contribute CI / CD & How to Contribute
  • 87. 87 https://github.com/nnsuite/nnstreamer SOSCON 2018 Continuous Integration (CI) CI system을 통해 모든 개별 Commit은 자동으로 검수 • Regression 방지 – Build & Unit Test • Coding Style/Rule 강제 • Integration 확인 – Tizen/Ubuntu Packaging & UI App Test • G. Lim, M. Ham, J. Moon, W. Song, S. Woo, S. Oh, “TAOS-CI: Lightweight & Modular Continuous Integration System for Edge Computing”, ICCE, 2019 (Accepted) nnstreamer CI: TAOS-CI
  • 88. 88 https://github.com/nnsuite/nnstreamer SOSCON 2018 Continuous Deployment (CD) CD system을 통해 설치용 Package 상시 릴리즈 • Ubuntu: launchpad PPA • Tizen: OBS • 향후 지속 추가 nnstreamer CD
  • 89. 89 https://github.com/nnsuite/nnstreamer SOSCON 2018 You are welcomed to contribute! Github (github.com/nnsuite/nnstreamer) 에서 개발 진행 • Issue 를 통해 개발할 기능, 해결할 버그를 등록. • Pull Request를 통해 해당 Issue를 해결하는 Code를 등록. – Coding Style/Rule 및 모든 Build/Unit/Integration Test를 통과해야 함. • Submit 전에 미리 빌드/테스트 해주세요! – 신규 기능은 해당 기능을 위한 Unit Test를 포함하는 Commit도 추가해야 함. – Bug Fix는 해당 Bug를 확인하는 Unit Test를 추가해야 함. – Maintainer/Reviewer와의 적극적인 소통 권장 How to Contribute?
  • 90. 90 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 Future of nnstreamer Work In Progress / Plans
  • 91. 91 https://github.com/nnsuite/nnstreamer SOSCON 2018 OS Integration • 2018 – Tizen: the standard target. Tested: arm/x64 / Built (no test): arm64/x86-32 – Ubuntu: release via PPA. Tested: x64 • 2019 – Tizen: full SW platform integration & release – Android: secondary standard target. Tested: arm or arm64 – Windows/macOS: built tested only: x64 – Other Linux Distro: release via openSUSE OBS. Work-In-Progress & Plans
  • 92. 92 https://github.com/nnsuite/nnstreamer SOSCON 2018 Features • 2018 – Tensor_filter: tensorflow – Tensor_ros_sink: send ROS topics (pub) – Tensor_decoder: bounding boxes, object labeling – Tensor_merge: more options required • 2019 – Tensor_filter: caffe/caffe2, LSTM (recurrent net) support – Tensor_transform: SIMD support. Multi-op support – Tensor_source: IIO sensors, LIDAR/RADAR support – Tensor_ros_source: receive ROS topics (sub): “FULLY DISTRIBUTED GST PIPELINE!” – Tensor_decoder: more incoming! – Tensor_save/load – Try to become gst-plugins-good! • 2020 – Support training phases – Multi-computer/board support Work-In-Progress & Plans
  • 93. 93 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 nnstreamer Conclusion
  • 94. 94 https://github.com/nnsuite/nnstreamer SOSCON 2018 혹시 이런 것을 만드신다면… • Cloud/Server가 아닌 Device에서 직접 신경망 처리 • 실시간으로 생성되는 Audio/Video Stream애 신경망 처리 • 한 Device 혹은 한 Stream Pipeline 내에 여러 신경망을 혼합 사용 • 기존 Audio/Video Media Filter들의 재사용 • Stream Topology가 복잡하거나 동적임 • 고성능 Data Stream 처리 필요 • … 물론, 그 모든 것을 다 잘 직접 구현해서 쓰실 수 있으시면 상관 없습니다. ^^ 그런데… “Don’t Invent the Wheel!” Recommended Applications
  • 95. 95 https://github.com/nnsuite/nnstreamer SOSCON 2018 그 플러긴들 어디다 어떻게 쓰지요?? https://github.com/nnsuite/nnstreamer /wiki/AD%3A-Overall-Design nnstreamer github 내 Wiki page 참조 nnstreamer Cheat Sheet
  • 96. 96 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 THANK YOU
  • 97. 97 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 Appendix
  • 99. 99 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 소제목 나눔고딕 EB 20pt 삼성 오픈소스 컨퍼런스 제목 나눔고딕 EB 32pt 소속 | 부서 | 작성자 날짜, 나눔고딕 EB 14pt
  • 100. 100 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 소제목 나눔고딕 R 16pt 소제목 나눔고딕 R 16pt 소제목 나눔고딕 R 16pt 소제목 나눔고딕 R 16pt 소제목 나눔고딕 R 16pt 소제목 나눔고딕 R 16pt 소제목 나눔고딕 R 16pt 01 02 03 04 05 06 07 제목 나눔고딕 EB 22pt
  • 101. 101 https://github.com/nnsuite/nnstreamer SOSCON 2018 소제목 나눔고딕 R 18pt 내용 나눔고딕 R 16pt • 글머리기호 나눔고딕 R 16pt – 서브 글머리 기호, 14 pt • 1슬라이드에 글머리기호 최대 8개 사용 제목 나눔고딕 EB 22pt
  • 102. 102 https://github.com/nnsuite/nnstreamer SOSCON 2018 소제목 나눔고딕 R 18pt 내용 나눔고딕 R 16pt • 글머리기호 나눔고딕 R 16pt – 서브 글머리 기호, 14 pt • 1슬라이드에 글머리기호 최대 8개 사용 제목 나눔고딕 EB 22pt
  • 103. 103 https://github.com/nnsuite/nnstreamer SOSCON 2018 <?php if( have_rows('repeater_field_name') ): ?> <ul> <?php while( have_rows('repeater_field_name') ): the_row(); ?> <li>sub_field_1 = <?php the_sub_field('sub_field_1'); ?>, sub_field_2 = <?php the_sub_field('sub_fi eld_2'); ?>, etc</li> <?php $sub_field_3 = get_sub_field('sub_field_3'); // do something with $sub_field_3 ?> <?php endwhile; ?> </ul> <?php endif; ?> 소스코드제목 나눔고딕 EB 22pt 소제목 나눔고딕 R 18pt
  • 104. 104 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 소제목 나눔고딕 EB 22pt Section Divider 나눔고딕 EB 36pt
  • 105. 105 https://github.com/nnsuite/nnstreamer SOSCON 2018 SAMSUNG OPEN SOURCE CONFERENCE 2018 THANK YOU