メニュー

技術ブログ

Denso IT Lab.社員による技術情報の紹介

Denso IT Laboratory researcher's blog sites

数式

RSS

ページトップへ

MIRU2016で会いましょう

MIRU2016では,弊社の安倍,近藤,佐藤,吉田の四人が発表します.

安倍・・・”整数基底分解によるDeep Neural Networkの時間・空間計算量削減”

近藤・・・”組み込み向けDNNライブラリの実装と演算性能評価”
     デモアプリケーション Demitasse – Image Recognition Cam

佐藤・・・”APAC: Augmented PAttern Classification with Neural Networks”

吉田・・・”二重特徴表現を使った特定物体認識”

研究や技術のことはもちろん,デンソーアイティーラボラトリに興味のある方は,ぜひ,各社員にお声掛けください!

demitasse

このエントリーをはてなブックマークに追加

How to build matcaffe on OSX10.11.5 and MATLAB2016a

I guess that many engineers have some troubles when they try to build matcaffe on OSX.

1. Link error – google::protobuf
2. Link error – mex functions – not found _mxArrayToString
3. Link error – dyld: Library not loaded: @rpath/libmkl_intel_lp64.dylib

I found a way to avoid these troubles, so I will write down about it.

At first, my system is

– Mac Pro (Late 2013)
– OSX 10.11.5
– MATLAB 2016a
– Intel Math Kernel Library(or OpenBLAS via homebrew)
– without Python interface
– without CUDA

1. Install some packages according to “OSX Installation”.

http://caffe.berkeleyvision.org/install_osx.html

2. Install Intel Math Kernel Library.

https://software.intel.com/en-us/intel-mkl/try-buy

Or, you can use OpenBLAS or Accelerate.framework.

3. Edit Makefile.config.

You have to edit Makefile.config very carefully.

Make it use only CPU.

# CPU-only switch (uncomment to build without GPU support).
CPU_ONLY := 1

Specify compiler.

# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
CUSTOM_CXX := /usr/bin/clang++

Set BLAS path according to your library.
This sample is for Intel Math Kernel Library.

# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := mkl
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
BLAS_INCLUDE := /opt/intel/compilers_and_libraries_2016.3.170/mac/mkl/include
BLAS_LIB := /opt/intel/compilers_and_libraries_2016.3.170/mac/mkl/lib

Set MATLAB path to build matcaffe.

# This is required only if you will compile the matlab interface.
# MATLAB directory should contain the mex binary in /bin.
# MATLAB_DIR := /usr/local
MATLAB_DIR := /Applications/MATLAB_R2016a.app

This is the most important point.
Remove paths for python and keep the under order of LIBRARY_DIRS’s elements in order to avoid link error.

# Whatever else you find you need goes here.
INCLUDE_DIRS := /usr/local/include
LIBRARY_DIRS := /usr/local/lib $(MATLAB_DIR)/bin/maci64 /usr/lib

Next, build caffe.

4. Build caffe and matcaffe

If you want to use Intel Math Kernel Library, you have to execute this command before it.
I recommend you should copy this command into .bash_profile.

# build caffe
source /opt/intel/compilers_and_libraries/mac/mkl/bin/mklvars.sh intel64 ilp64

cd caffe
make all
make all test
make runtest
make all matcaffe

If failed to build caffe, check Makefile.config again.

5. How to use matcaffe.

You have to run MATLAB from terminal.app because MATLAB does not load environment variables when it runs via Finder.app……

cd caffe
# You have set this environment variable
# in order to avoid caffe load MATLAB's tiff library....
export DYLD_INSERT_LIBRARIES=/usr/local/opt/libtiff/lib/libtiff.5.dylib
/Applications/MATLAB_R2016a.app/bin/matlab &

You can use matcaffe in MATLAB console.

cd caffe
addpath('./matlab');
caffe.set_mode_cpu();

That’s all! Have fun!

このエントリーをはてなブックマークに追加

WWDC2016レポート

吉田悠一です.
甲子園ではないですが,3年ぶり,5回目WWDC2016に行ってきました.

気になったところをまとめてみたいと思います.

WWDC2016_IMG_1784 WWDC2016_IMG_1840

プラットフォームが4つになり,すべてはフラットに

OSXが頂点に立ち,iOS, tvOS, watchOSがそれに続くイメージだった各プラットフォームの関係を,アップルが今回のKeynoteでフラットであるように,あるいは,もうそうではないと印象付けようとしているように感じました.OSXは,macOSとリネームされ,4つのプラットフォームの名前の印象が統一されることになりました.

macOSの新機能は,iOSからの移植されるものが増え,iOSやwatchOSとの連携を歌うものが目立ちました.State of Unionでも,トリの発表はiOSであり,分量も多く,アップルが,iOSに注力していることは明確です.例えば,iOSで紹介された機能が,その発表の最後で「実はmacOSでも使えるよ」といった説明の仕方も散見されます.もはや,iOSはもモバイルで動くmacOSのサブセットという位置づけではなくなったということなのでしょう.

Swift3

オープンソースになってから,Swift3の方向性について,ある程度オープンに議論されてきましたが,ついにXcodeに組み込まれてベータテストされることになりました.Swift3は,NSプレフィックスがなくなったり,命名規則が大幅に変更されたので,そのあたりをフォローするだけでも,開発者にとってはかなり大変です(私が趣味で開発しているSwiftで書いたreddit API wrapperのコンパイルできるようになるのは,かなり先になりそうです).Swift3から4へは,コードの書き換えなしで移行できるようにすると,Chris Lattnerは言ってましたが・・・・・

Extensionがすべて

純正地図アプリ,メッセージアプリ,SiriKitなど,iOS8から実装されたextensionの仕組みを使った新しいAPIが追加されました.これにより,いくつかの純正アプリにサードパーティから機能を追加できるようになりました.例えば,地図アプリにレストラン検索アプリの検索結果を表示したりすることができるようになるようです.iOS3の頃のアップルの態度を考えると,考えられないオープン戦略ですが,ユーザや開発者にとってはよいことだと思います.しかしながら,ここまで先延ばしにしたのは,セキュリティを確保する開発に手間取ったのか,戦略の転換なのか・・・・どちらなのでしょう・・・.

そして,Deepとプライバシー,Accelerate.framework

昨今,学会発表でDeepというワードが出てこないことは稀ですが,WWDCもその例外ではありませんでした.なぜ,学会でない会議でもそのワードを聞かないといけないのか,”Deep”が食傷気味の私は憂鬱でしたが.Keynoteの発表によれば,アップルも写真アプリにシーン推定とオブジェクト推定機能をiOS10から導入し,その推定は,エッジで,つまりiOSデバイス上で実行されるそうです.今回の発表ではこれらの機械学習を使った機能追加に続けて,アップルは,Googleなどの他社のアプローチとは異なり,ユーザの情報をクラウドの集めて使うようなプライバシーを侵害することはしないと宣言しました.近年,とにかくユーザデータを集めて,それを使って機械学習し,サービスを作ったり,向上させるアプローチが,データセンターとユーザをもつサービサーにとってのメインストリームになってきていますが,アップルはそうではないと立場の違いを強調しました.

また,アップルは,Accelerate.frameworkにニューラルネットワークを高速に計算するためのAPIを追加しました.Accelerate.frameworkは,iOS10, macOSに含まれるSIMD命令を使って算術計算を高速化するフレームワークです.このAPIセットはinferenceのみで学習するためのAPIは提供されません.このAPIでは,畳み込みレイヤーと線形レイヤー等を組み合わせることができ,それぞれに適応する活性化関数も,いくつかのあらかじめ用意されたものか選ぶことができます.どのみち学習は別のコードを使って行うのに,このAPIのためだけにネットワーク構造をコードで書き,各パラメータを設定して・・・・・・TensorFlowもiOS対応をうたい始めた今,このAPIの必要性がどれくらいあるのかちょっと不明ですが,これで,この世界にいったいいくつDNNに関するライブラリがリリースされたことになるのでしょうか・・・・.

Swift Playgrounds

Keynoteでは,アップルがSwift Playgroundsが教育アプリであることに重点を置いて発表したため,開発者たちのテンションはくらだらねーという雰囲気でした.しかしながら,State of Unionやいくつかのセッションで,そうではなく,Swift Playgroundsが単純にコーディング環境として使えることや,Bluetoothやカメラ,ビューにアクセスすることもできることがわかってきました.PlaygroundsがiPad上のかなり汎用的なコーディング環境であるということに気付いた開発者コミュニティは,にわかに盛り上がってきています.

しかし,これは,ついにiOSでクリエイティビティを発揮するアプリケーションが主流になってくるということの兆候かもしれません.今まで,私はmacOSで創作,iOSはビューアや消費の道具というイメージを強く持っていましたが,そうではないときが少しずつ近づいているのかもしれません.そう考えると,macOSのフルスクリーン機能も,クリエイターをiOSの世界に引き吊り込むための戦略だった・・・と考えるのは信者っぽいのでやめにしますが,今後,iOSを取り巻くSDKは,コンテンツを消費するのではなく,創作する方向に強化されていくのでしょうか・・・・.

WWDC2016_IMG_1840 WWDC2016_IMG_1849

まとめ

今回は3年前と比較し,セッションの発表数も減り,その内容もコードベースのガリガリ技術的なセッションが減ったという風に私は感じました.反面,ラボなどのアップルのエンジニア等と対面で情報をやりとりできるラボが増強されているようでした.セッションの内容は,全世界にリアルタイムで公開できるようになった昨今,もはや一方通行に話を聞くだけのセッションはWWDCのメインコンテンツではなく,エンジニア同士の交流やアップルとのエンジニアとの直のやりとりの方がメインコンテンツであるという風に,アップル自身がシフトしているように思いました.
ラボがメインコンテンツになっていくと,WWDCに参加する価値が揺らいでくる考えもありますが,1週間それだけしか考えない時間を作るというのは,エンジニアにとって重要だと考えています.

以上,ダラダラとまとめてきたWWDC2016ですが,なかなかおもしろいものでした.来年は,VRとかその辺の新しいソフトウェアフレームワークを出してくれないかなぁと夢想しつつ,しばらくはSwift Playgroundsで遊ぶことにします.

このエントリーをはてなブックマークに追加