+ All Categories
Home > Documents > MATLAB CoderTMと - MathWorks...講演内容(15:30-16:20) ビジョン処理と高速化...

MATLAB CoderTMと - MathWorks...講演内容(15:30-16:20) ビジョン処理と高速化...

Date post: 24-Apr-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
30
ビジョン処理で使いこなす MATLAB ® Coder TM System object TM 新潟大学 自然科学系(工学部) 電気電子工学科 准教授 村松 正吾
Transcript

ビジョン処理で使いこなす

MATLAB® CoderTMと

System objectTM

新潟大学 自然科学系(工学部) 電気電子工学科

准教授 村松 正吾

自己紹介

(むらまつ しょうご) 所属

新潟大学 自然科学系(工学部) 電気電子工学科

画像・映像信号処理の教育研究に従事 学部:「プログラミング」,「画像情報工学」 修士:「画像処理特論」,博士:「多次元信号処理論」 学会:IEEE、電子情報通信学会、映像情報メディア学会

著書など 「マルチメディア技術の基礎DCT入門」 (CQ出版社, 1997年)

「MATLABによる画像&映像信号処理 」 (CQ出版社, 2007年)

2012/10/30 MATLAB EXPO 2012 | JAPAN 2

講演内容(15:30-16:20)

ビジョン処理と高速化 プロファイル処理、並列化、MEX化

金属加工検証システム開発事例 (総務省助成事業、研究協力者) DLL/EXE生成とOpenCVとの連携

指向性画像変換研究・開発事例 (科研費助成事業、研究代表者) Simulink®からBeagleBoardへの実装

2012/10/30 MATLAB EXPO 2012 | JAPAN 3

ビジョン処理の背景

センサネットワーク、クラウド、ビッグデータ (サイバー・フィジカル・システム)

遠隔・協調化、劣悪なセンシング、リアルタイム性

画像応用への高品質化・高機能化の要求

圧縮、復元、特徴抽出、認識等の発展に期待大

2012/10/30 MATLAB EXPO 2012 | JAPAN 4

ビジョン処理の特徴

「百聞は一見にしかず」映像データ量は膨大

地デジ・ハイビジョン放送: 最大16.8Mbps

音声:144kbps(1ch)~384kbps(5.1ch)

映像:平均約14Mbps

多様かつ高度な要求

電力、速度、サイズ、価格などの制約

2012/10/30 MATLAB EXPO 2012 | JAPAN 5

膨大なデータに対し、シビアなトレードオフの探求が必須

音声に比べ

30~100倍のレート

ビジョン処理とMATLAB/Simulink

システム設計 アルゴリズム開発

実験・実装・検証

本講演の使用オプション

Image Processing

ToolboxTM

Image Acquisition

ToolboxTM

Computer Vision System

ToolboxTM

Parallel Computing

ToolboxTM

MATLAB Coder

MATLAB EXPO 2012 | JAPAN 6 2012/10/30

MATLAB

Simulink

R2012b

高速化の手段

ビジョン処理の課題

膨大なデータの高速実現/リアルタイム処理

MATLABにおける高速化の手段を紹介

実行時間解析

並列化

MEX化

2012/10/30 MATLAB EXPO 2012 | JAPAN 7

私の研究開発ツール(第53回) “MATLABによる映像処理システム開発”

映像情報メディア学会誌

Vol.65, No.11, pp.1571~1574 (2011)

http://www.ite.or.jp/data/journal/passed_issues/tool1111/

【例】画像の変換と逆変換

非分離ウェーブレット変換

変換

逆変換

A. Adachi, S. Muramatsu, H. Kikuchi, Constraints of Second-Order Vanishing Moments on Lattice Structures for

Non-separable Orthogonal Symmetric Wavelets, IEICE Trans. Fundamentals, Vol. E92-A, No. 3, pp.788-797, Mar. 2009

2012/10/30 MATLAB EXPO 2012 | JAPAN 8

実行時間解析

プロファイラ―

メニューから利用する方法

「エディター」→「実行および時間の計測」

コマンドウィンドウ(スクリプト)から利用する方法

» profile on % 解析開始

» profile off % 解析終了

» profile viewer % 解析結果表示

2012/10/30 MATLAB EXPO 2012 | JAPAN 9

main_ex_prf.m

高速化の戦略を立てる

並列化

Parallel Computing Toolbox

有効性の確認

「Parallel」→「Manage Cluster Profiles…」 →「Validate」

パラレルFORループを利用する方法

» matlabpool % MATLABプール開始

» parfor … % パラレルFORループ開始

» end % パラレルFORループ終了

» matlabpool close % MATLABプール終了

2012/10/30 MATLAB EXPO 2012 | JAPAN 10

main_ex_par.m

測定開始id = tic;

測定終了

toc(id)

MEX化(GUI)

MATLAB Coder C/C++経由で実行形式へ 準備

» mex –setup % C/C++コンパイラの設定

GUIを利用する方法 » coder % MATLAB Coder GUI の起動

2012/10/30 MATLAB EXPO 2012 | JAPAN 11

function y = fun(x) %#codegen

% FUN

y = …

ターゲット関数には、

忘れずに記載

MEX化(スクリプト)

MATLAB Coder

C/C++経由で実行形式へ

コマンドウィンドウ(スクリプト)から利用する方法(例) » cfg = coder.config(‘mex’); % MEXに設定

» cfg.DynamicMemoryAllocation = ‘off’;

» x = coder.typesof(double(0), [8 1], [1 0]); % 型設定

» codegen –config cfg fun –arg { x } % コード生成

2012/10/30 MATLAB EXPO 2012 | JAPAN 12

型 サイズ

可変/固定

ビルド・スクリプトを作成すれば管理がし易く便利

function y = fun(x) %#codegen

% FUN

y = …

ターゲット関数には、

忘れずに記載

もしくは‘AllVariableSizeArrays’

MEX関数

呼び出しの例

デフォルトでは “_mex”が関数名の末尾に付く

2012/10/30 MATLAB EXPO 2012 | JAPAN 13

ftype = exist(‘fun_mex’,‘file’); % ファイルの確認

if ftype == 3

y = fun_mex(x); % MEX関数の呼び出し

else

y = fun(x); % M関数の呼び出し

end

パス上にMEX/DLLがあれば

値 ‘3’ を返す

拡張子は実行環境毎に異なる

(例、Win32⇒’mexw32’)

main_ex_mex.m

main_ex_pmx.m

応用事例紹介

金属加工検証システムの実装

レンズ歪補正デモ(MATLAB)

レンズ歪推定デモ(MATLAB)

指向性画像変換の組込み実装

画像修復デモ(MATLAB)

画像解析デモ(Simulink)

2012/10/30 MATLAB EXPO 2012 | JAPAN 14

MATLAB Coder と System object の活用事例を紹介

main_udst_cui.m

main_dest_cui.m

main_imrstrip.m

sowavedec2embd.slx

【応用事例1】 金属加工検証システム開発事例 総務省戦略的情報通信研究開発推進制度(SCOPE) 「クロスネットワークを機軸とした地域間データ共有機能を有する金属加工形状検証システムの研究開発」 (研究代表者:新潟大学 教授 鈴木孝昌)

高精度レンズ歪推定・補正実現にMATLABを利用

2012/10/30 MATLAB EXPO 2012 | JAPAN 15

アルゴリズム検証 スタンドアローン

アプリケーション

DLL/EXE DLL M

EX

金属加工検証システムの概要

板金加工工程の効率化

検査データの共有

再受注の迅速化

納期短縮

2012/10/30 MATLAB EXPO 2012 | JAPAN 16

工場(検査端末)

工場(検査端末) 発注元

検査データ

受注確認

検査データ

発注

検査データ 受注確認

ホストサーバー

地域・企業間ネットワーク

(燕三条地域)

検査端末の開発を担当

高精度レンズ歪推定・補正の概要

レンズ歪推定 レンズ歪補正

MATLAB EXPO 2012 | JAPAN 17 2012/10/30

局所射影変換

デジカメ

FPD

位相限定相関

レンズ歪補正へ 形状照合へ

半径方向歪モデルと併用 (Camera Calibration Toolbox)

試作機(板金:戸塚金属工業㈱製)

スタンドアローン化の要求

形状照合・管理ソフト(テクノケア社)との連携のため

コード生成に対応した高機能なSystem objectを利用

利用したクラス(Computer Vision System Toolbox)

vision.FFT, vision.IFFT,

vision.ImageFilter, vision.BlobAnalysis,

vision.MorphologicalClose,

vision.ShapeInserter, vision.Maximum,

vision.GeometricTransformEstimator,

vision.GeometricTransformer

コード生成対応

System object の活用

MATLAB EXPO 2012 | JAPAN 18 2012/10/30

http://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.html

コード生成対応のSystem object 一覧

関数定義の例

コード生成対応

System object の利用法

MATLAB EXPO 2012 | JAPAN 19

function y = fun(x) %#codegen

% FUN

persistent h;

if isempty(h)

h = vision.Xxx(…);

end

y = step(h,…);

2012/10/30

持続変数の宣言

プロパティの設定

System object生成

処理の実行

入力

http://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.html

コード生成対応のSystem object 利用法

main_udst_cui.m

main_dest_cui.m

LIB/DLL生成

2012/10/30 MATLAB EXPO 2012 | JAPAN 20

もしくは‘dll’

もしくは‘AllVariableSizeArrays’

複数の関数を列挙

もしくは‘C’

Visual C++等で利用できる

EXE生成

main関数を定義しEXE生成へ

型、初期化/終了、メモリ割当/解放等に約束事あり

OpenCVと連携可能(imread,imwrite,XML操作等)

2012/10/30 MATLAB EXPO 2012 | JAPAN 21

XML <opencv_strage>

main_udst_cui.m main_dest_cui.m

main_udst_cui.cpp main_dest_cui.cpp

XML <opencv_strage>

レンズ歪推定 レンズ歪補正

EXE生成

2012/10/30 MATLAB EXPO 2012 | JAPAN 22

スタンドアローン実行可能

【応用事例2】 指向性画像変換研究・開発事例 科学研究費助成事業(基盤研究(C)) 「高機能画像表現のための傾斜平面分離性能を有する二次元直交変換の設計と実時間実現」 (研究代表者:新潟大学 准教授 村松正吾)

System object定義からBeagleBoard実装まで

2012/10/30 MATLAB EXPO 2012 | JAPAN 23

アルゴリズム検証 BeagleBoard-xM

PIL/EXE

MATLAB

Coder

不要

指向性画像変換の概要

斜めエッジ・テクスチャに強い変換

MATLAB Central>File Exchange

>DirLOT Toolbox にて公開中

2012/10/30 MATLAB EXPO 2012 | JAPAN 24

“Directional Lapped Orthogonal Transform: Theory and Design,”

IEEE Trans. on Image Process., Vol.21, No.5, pp.2434-2448 (2012)

原画像 4x4 DCT 2-Lv. 9/7DWT

提案法

8.0bpp 0.5bpp 0.5bpp 0.5bpp

提案法の特徴

重複・直交・非分離

ブロック処理が可能

重い…

2012/10/30 MATLAB EXPO 2012 | JAPAN 25

垂直

変換

水平

変換

水平

変換

水平

変換

水平

変換

水平

逆変換

水平

逆変換

水平

逆変換

水平

逆変換

垂直

逆変換

帯域形状

水平

垂直

変換

水平

垂直

逆変換

帯域形状

可分離変換

非分離変換

“Boundary Operation of 2-D

Nonseparable Linear-Phase

Paraunitary Filter Banks,”

IEEE Trans. on Image

Process., Vol.21, No.4,

pp.2314-2318 (2012)

コード生成対応

System object の定義

組込実装したい

matlab.System

子クラスを定義

2012/10/30 MATLAB EXPO 2012 | JAPAN 26

classdef MyClass < matlab.System %#codegen

properties

end

methods

function obj = MyClass(varargin)

end

end

methods (Access = protected)

function value = stepImpl(obj,x)

end

end

end

継承してクラスを定義

コンストラクタ フィールド

step処理の実装

SimulinkからBeagleBoardへ

BeagleBoard実装準備

» targetinstaller

Simulink モデルの作成

System object MATLAB Function ブロック

2012/10/30 MATLAB EXPO 2012 | JAPAN 27

http://www.mathworks.co.jp/jp/help/simulink/beagleboard.html?lang=en

sowavedec2embd.slx BeagleBoard関連情報

まとめ

ビジョン処理の背景を紹介 シビアなトレードオフの探究

実行時間解析と並列処理、MEXによる高速化 profileコマンドの紹介

matlabpool コマンドと parforループの紹介

codegen コマンドの紹介

既存System objectの利活用 MEX/LIB/DLL生成の事例紹介

OpenCVとの連携、EXE生成の事例紹介

自作System objectの定義 Simulinkモデル→BeagleBoard実装の事例紹介

2012/10/30 MATLAB EXPO 2012 | JAPAN 28

謝辞

本講演で紹介した成果の一部は、総務省戦略的情報通信研究開発推進制度(SCOPE)「クロスネットワークを機軸とした地域間データ共有機能を有する金属加工形状検証システムの研究開発(102304003)」、科研費「高機能画像表現のための傾斜平面分離性能を有する二次元直交変換の設計と実時間実現(23560443)」の助成による。

本講演資料の作成にご協力をいただいた新潟大学大学院自然科学研究科博士前期課程の寺澤憲久氏、原伸太郎氏に謝意を表す。

2012/10/30 MATLAB EXPO 2012 | JAPAN 29

主な参考資料

インターフェース2011年12月号特集 “手を動かし実践する!MATLABプログラミング”,CQ出版社,2012年12月

Camera Calibration Toolbox for MATLAB, (URL) http://www.vision.caltech.edu/bouguetj/calib_doc/

OpenCV2プログラミングブック製作チーム:“OpenCV2プログラミングブック”,マイナビ,2011年12月

村松正吾:“MATLABによる映像処理システム開発”,映像情報メディア学会誌Vol.65, No.11, pp.1571~1574 (2011)

鈴木孝昌,村松正吾,追立俊朗,村田光由:“クロスネットワークを機軸とした地域間データ共有機能を有する金属加工形状検証システムの研究開発”,ICTイノベーションフォーラム2012,2012年10月

原伸太郎,古屋幸祐,村松正吾:“DirLOTのツリー構成と組込み実装”,第27回信号処理シンポジウム,2012年11月(発表予定)

2012/10/30 MATLAB EXPO 2012 | JAPAN 30


Recommended