cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

トラ技2018年10月号で紹介されている無限スプライン関数の計算アルゴリズムを試してみる

データストリームに対してリアルタイムで逐次に3次スプライン補間を計算できるアルゴリズムだそうです。

トランジスタ技術 2018年 10 月号

トランジスタ技術 2018年 10 月号

SSDAC特設サイト

#include <iostream>
#include <math.h>
#include <vector>
#include <iterator>
#include <algorithm>

#include <omp.h>

double calc_coefficient_b(double *d, int n)
{
  static const double alpha = -2. + sqrt(3.);
  static const double a = -3. * (sqrt(3.) - 1.);
  static const double b = 3. * (2. * sqrt(3.) - 3.);
  double e(0.), f(0.);
  for(int i=n; i>0; i--){
    f = d[n+i] + alpha * f;
    e = d[n-i] + alpha * e;
  }
  return a * d[n] + b * (f + e);
}

int main() {
  static const int n = 9;
  static const int multiples = 64;
  std::vector<double> output;
  output.clear();

  // input-data preparation
  double samples[] = {0., 2., 3., 5., 0., -1., 2., -3., -4., -3., 0., 3., 3., 6., 0., 9., 1.};
  std::vector<double> data(samples, std::end(samples));
  int n_samples = data.size();
  data.insert(data.begin(), n, 0.);
  data.insert(data.end(), n, 0.);

  // calc-preparation
  std::vector<double> x3, x2, x1;
  x3.clear();
  x2.clear();
  x1.clear();
  for(int i = 0; i < multiples; i++){
    double x = static_cast<double>(i) / static_cast<double>(multiples);
    x1.push_back(x);
    x2.push_back(pow(x, 2));
    x3.push_back(pow(x, 3));
  }
  std::vector<double> interpolated;
  interpolated.resize(multiples);
  
  int start_idx = 0;
  double bj, bj_1, dj, dj_1;
  bj = calc_coefficient_b(&data[start_idx], n);
  dj = data[start_idx];
  for(int j = start_idx; j < n_samples; j++){
    // calc coefficients
    bj_1 = calc_coefficient_b(&data[j + 1], n);
    dj_1 = data[j + n + 1];
    double aj = (bj_1 - bj) / 3.;
    double cj = dj_1 - dj - 2. * bj / 3. - bj_1 / 3.;

    // calc oversampling
#pragma omp parallel for
    for(int i = 0; i < multiples; i++){
      interpolated[i] = aj * x3[i] + bj * x2[i] + cj * x1[i] + dj;
    }
    std::copy(interpolated.begin(), interpolated.end(), std::back_inserter(output));
    
    bj = bj_1;
    dj = dj_1;
  }

  // outputs
  std::cout << "samples:" << std::endl;
  for(int i = start_idx; i < n_samples; i++){
    std::cout << samples[i] << std::endl;
    for(int j = 0; j < multiples - 1; j++){
      std::cout << 0. << std::endl;
    }
  }
  std::cout << "output:" << std::endl;
  for(int i=0; i<output.size(); i++){
    std::cout << output[i] << std::endl;
  }

  return 0;
}

適当な入力データに対する計算結果はこんな感じ。

b:
2.1531

  • 2.03546

2.98887

  • 6.91988

3.69088
4.1564

  • 8.31614

5.10831

  • 0.117074

1.35999
0.677115

  • 4.06843

6.59671

  • 13.3183

19.6765

  • 20.3877

10.8744

  • 2.10998

f:id:cvl-robot:20180910174733p:plain

きれいにスプライン補間できていそうですね。
あまりにもアルゴリズムが簡単すぎて、これが本当に新しくて凄いものなのかピンと来ていません。

[1] https://www.tezukuri-amp.org/bunkakai/dac/cgi-bin/img-box/img20170804205124.pdf

GitHub - kritzikratzi/ofxAvCodec: openFrameworks wrapper for FFmpeg/libavcodec
GitHub - roymacdonald/ofxSoundObjects: openFrameworks addon implementation for the ofSoundObject implementaion developed at the YCAM '13 ofDevCon, yet never released

自分用読むべき論文メモ 2018年09月版

github.com
[1711.07566] Neural 3D Mesh Renderer
カテゴリが既知の物体について、単眼画像からの3次元形状推定を行う話。メッシュが少しなめらか。

sites.google.com
カテゴリが既知の物体について、単眼画像からの3次元形状推定を行う話。ボクセルで復元。

https://vision.in.tum.de/research/vslam/stereo-dso
とても精度が良いステレオ画像入力のSLAMライブラリ

ai.googleblog.com
GraspGAN

SSDAC特設サイト
プリエコーの出ないディジタルフィルタレスDAC。トラ技2018年10月号。

pc.watch.impress.co.jp
ヤマハ発動機機械学習

www.tensorflow.org
Tensorflow Hub. 学習済みモデルを簡単に配布、利用するための仕組み。

www.jstage.jst.go.jp
カルマンフィルタ資料


[1801.08757] Safe Exploration in Continuous Action Spaces

イメージヤコビアンを用いないビジャルサーボによる位置決め
○徳田冬樹(東北大学) 荒井翔悟(東北大学) 小菅一弘(東北大学)

Previewed Reality 情報構造化空間における近未来可視化システム ー透過型ディスプレイHoloLensを用いたシステム構築と実験ー
○江頭 飛鳥 堀川 雄太 河村 晃宏 倉爪 亮(九州大学)
RSJ2018

http://vigir.missouri.edu/~gdesouza/Research/Conference_CDs/IEEE_IROS_2013/media/files/0778.pdf
NDT-D2D

自分用読むべき論文メモ 2018年08月版

[1808.00769] Sparse and Dense Data with CNNs: Depth Completion and Semantic Segmentation
疎なデプスデータをそのままネットワークに突っ込んでも綺麗なデータは得られる


https://scienceandtechnology.jpl.nasa.gov/build-your-own-rover
GitHub - nasa-jpl/open-source-rover: A build-it-yourself, 6-wheel rover based on the rovers on Mars!
NASA/JPLローバーDIYマニュアル。いろいろ参考にできそう。

GOSELO
DNNを使ったナビゲーション

www.slideshare.net
www.youtube.com
各種Depthカメラの仕組み

toyokeizai.net

cpp-learning.com
興味深いが読みづらい。

MIRU 2018 - チュートリアル
MIRU2018チュートリアル

www.slideshare.net
MIRU MIRU わかる GAN

[1804.09627] Actor and Observer: Joint Modeling of First and Third-Person Videos

qiita.com
タイトルが気になる、

www.slideshare.net
時間でなく空間で考える

gengo.ai
機械学習に使えそうなデータセットまとめ。同じ趣旨の情報が乱立しているので、そろそろ、まとめのまとめが必要ですね。

qiita.com

https://people.eecs.berkeley.edu/~sgupta/pdf/rcnn-depth.pdf
GitHub - s-gupta/rcnn-depth: Learning Rich Features from RGB-D Images for Object Detection and Segmentation

https://kanezaki.github.io/media/RobotSeminar20180531_AsakoKanezaki.pdf

楢ノ木技研 - 低価格・高機能マルチチャンネル分光器 ezSpectra
安価なマルチスペクトルメータ。

miso-engine.hatenablog.com
ofxOscはUDPなんだよなー

github.com
Google謹製TensorFlowベースの強化学習フレームワーク

今日の山靴

日本人の足の形によく合う日本メーカーのトレッキングシューズ。

安価なIMU(AHRS)センサのBosch BNO055USBStickを試す(その3)

前回、BNO055USBStickのデータを自前のプログラムで取得することはできるようになりました。でも、数値だけを見ていても正しいかどうか判断できませんので、いつものようにopenFrameworksで可視化していきたいと思います。

ofxBNO055USBStick

外部addonとしてofxGui.hを使っていますので、ProjectGeneratorで追加してください。

ofApp.h

#pragma once

#include "bno055_usb_stick/bno055_usb_stick.hpp"
#include "bno055_usb_stick/decoder.hpp"
#include "bno055_usb_stick_msgs/Output.h"

#include <boost/asio/io_service.hpp>
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>

#include "ofMain.h"
#include "ofThread.h"
#include "ofEasyCam.h"
#include "ofxGui.h" 

class ofxBNO055USBStick : public ofThread
{
public:
	void setup() {
		const std::string fixed_frame_id("fixed");
		device = std::make_shared<bno055_usb_stick::BNO055USBStick>(asio_service, boost::bind(&ofxBNO055USBStick::publish, this, _1, fixed_frame_id));
	}

	void threadedFunction() {
		while (1) {
			asio_service.run_one();
		}
	}

	void publish(const bno055_usb_stick_msgs::Output &output, const std::string &fixed_frame_id) {
		mutex.lock();
		current = output;
		mutex.unlock();
	}

	bno055_usb_stick_msgs::Output & getOutput() { return current;  }

protected:
	boost::asio::io_service asio_service;
	std::shared_ptr<bno055_usb_stick::BNO055USBStick> device;

	ofMutex mutex;
	bno055_usb_stick_msgs::Output current;
};

class ofApp : public ofBaseApp{

	public:
		void setup();
		void update();
		void draw();

		void keyPressed(int key);
		void keyReleased(int key);
		void mouseMoved(int x, int y );
		void mouseDragged(int x, int y, int button);
		void mousePressed(int x, int y, int button);
		void mouseReleased(int x, int y, int button);
		void mouseEntered(int x, int y);
		void mouseExited(int x, int y);
		void windowResized(int w, int h);
		void dragEvent(ofDragInfo dragInfo);
		void gotMessage(ofMessage msg);

		ofxBNO055USBStick bno055;
		bno055_usb_stick_msgs::Output output;

		ofEasyCam cam;
		ofLight light;
		ofBoxPrimitive box;
		ofCylinderPrimitive cylinder;

		ofxPanel gui;
		ofParameter<ofVec3f> acceleration;
		ofParameter<ofVec3f> magnetometer;
		ofParameter<ofVec3f> gyroscope;
		ofParameter<ofVec3f> euler_angles;
		ofParameter<ofQuaternion> quaternion;
		ofParameter<ofVec3f> linear_acceleration;
		ofParameter<ofVec3f> gravity_vector;
		ofParameter<double> temperature;
		ofParameter<ofVec4f> calibration_status;
};

ofApp.cpp

#include "ofApp.h"

//--------------------------------------------------------------
void ofApp::setup(){
	// sensor settings
	bno055.setup();
	bno055.startThread();

	// draw settings
	box.set(0.5f, 0.8f, 0.2f);
	cam.setTarget(box);
	cam.setNearClip(0.001f);
	cam.setFarClip(1000.f);
	cam.setDistance(1.f);
	light.setParent(cam);
	cylinder.set(0.1f, 0.7f);

	// gui settings
	gui.setup("bno055");
	gui.add(acceleration.set("acceleration", ofVec3f(), ofVec3f(-100.f), ofVec3f(100.f)));
	gui.add(magnetometer.set("magnetometer", ofVec3f(), ofVec3f(-1000.f), ofVec3f(1000.f)));
	gui.add(gyroscope.set("gyroscope", ofVec3f(), ofVec3f(-100.f), ofVec3f(100.f)));
	gui.add(euler_angles.set("euler_angles", ofVec3f(), ofVec3f(-10.f), ofVec3f(10.f)));
	gui.add(temperature.set("temperature", 0., -100., 100.));
	gui.add(calibration_status.set("calibration_status", ofVec4f(), ofVec4f(0), ofVec4f(3)));
}

//--------------------------------------------------------------
void ofApp::update(){
	output = bno055.getOutput();

	acceleration = output.acceleration;
	magnetometer = output.magnetometer;
	gyroscope = output.gyroscope;
	euler_angles = output.euler_angles;
	quaternion = output.quaternion;
	linear_acceleration = output.linear_acceleration;
	gravity_vector = output.gravity_vector;
	temperature = output.temperature;
	calibration_status = output.calibration_status;
}

//--------------------------------------------------------------
void ofApp::draw(){
	ofBackgroundGradient(ofColor::black, ofColor::grey);
	ofEnableLighting();
	ofEnableDepthTest();
	light.enable();

	cam.begin();
	ofPushMatrix();
	ofMatrix4x4 mat;
	mat.setRotate(output.quaternion);
	ofMultMatrix(mat);
	box.drawAxes(0.5f);
	ofPushStyle();
	ofSetColor(ofColor::white, 200);
	box.draw();
	ofPopStyle();
	ofPopMatrix();
	cam.end();

	ofDisableLighting();
	ofDisableDepthTest();

	gui.draw();
}

//--------------------------------------------------------------
void ofApp::keyPressed(int key){

}

//--------------------------------------------------------------
void ofApp::keyReleased(int key){

}

//--------------------------------------------------------------
void ofApp::mouseMoved(int x, int y ){

}

//--------------------------------------------------------------
void ofApp::mouseDragged(int x, int y, int button){

}

//--------------------------------------------------------------
void ofApp::mousePressed(int x, int y, int button){

}

//--------------------------------------------------------------
void ofApp::mouseReleased(int x, int y, int button){

}

//--------------------------------------------------------------
void ofApp::mouseEntered(int x, int y){

}

//--------------------------------------------------------------
void ofApp::mouseExited(int x, int y){

}

//--------------------------------------------------------------
void ofApp::windowResized(int w, int h){

}

//--------------------------------------------------------------
void ofApp::gotMessage(ofMessage msg){

}

//--------------------------------------------------------------
void ofApp::dragEvent(ofDragInfo dragInfo){ 

}

実行結果

サクサク、かなり高速に安定に動きます。60Hz程度の更新レートならば、4千円のBNO055USBStickで十分ですね。キャリブレーション状態が頻繁に変わるので、正しくキャリブレーションが動いているのかどうか分かりませんが、姿勢のずれは特に感じられません。
f:id:cvl-robot:20180806191733p:plain

Addon化

openFrameworksのAddonにしました。
github.com

今日の京都まんが

2人の主人公のそれぞれの視点を描いたチヒロのこととユキチのことと、の2シリーズが刊行されているかなり実験的な漫画。アクションコミックスとヤングチャンピオンと掲載誌も違ったため、コミックスの本屋の棚も違うので探そうとすると難易度高いことがある。

古都こと―チヒロのこと―(2) (アクションコミックス)

古都こと―チヒロのこと―(2) (アクションコミックス)

古都こと―チヒロのこと―(3) (アクションコミックス)

古都こと―チヒロのこと―(3) (アクションコミックス)

古都ことーユキチのことー 3 (ヤングチャンピオンコミックス)

古都ことーユキチのことー 3 (ヤングチャンピオンコミックス)

安価なIMU(AHRS)センサのBosch BNO055USBStickを試す(その2)

BNO055USBStickを自分のプログラムから使う方法が良く分からなくて途方に暮れていた時に、GitHub先生に聞いてみたら、yoshito-n-studentssさんのすごくきれいなソースコードのROS向けライブラリが見つかりました。MITライセンスとのことなので、ありがたく遠慮なく使わせてもらうことにして、不要なROSを外していきます。
GitHub - yoshito-n-students/bno055_usb_stick: A ROS driver of Bosch BNO055 USB Stick

ソースコード

フォークしたROS無し版ソースコードはこちらです。
github.com
github.com
Makeファイル、CMake等用意していませんので、適当に取り込んでください。外部ライブラリはBoostのみです。

実行結果

接続先はCOM3、通信速度115200bps決め打ちなので、適宜変更してください。特にデバイスマネージャでシリアルポートの速度を変更する必要があるかと思います。出力はCallback関数に渡されて、標準出力に数値が表示されます。

time: 585
Acc: 0.25 0.33 9.78
Mag: -29.1875 2.875 -34.6875
Gyr: 0.00109083 -0.00218166 -0.00109083
Eur: 2.06603 0.0294524 -0.0250891
Qua: -0.00653076 -0.0186768 -0.858826 0.511841
Lia: -0.04 0.07 -0.09
Grv: 0.29 0.24 9.79
Temp: 42
CalibStat: 3 0 3 3

動いていますが、正しいのかどうか分かりませんね。

BNO055の情報
[1] https://cdn-shop.adafruit.com/datasheets/BST_BNO055_DS000_12.pdf
93ページにUARTのプロトコルの説明があります。
[2] https://learn.adafruit.com/adafruit-bno055-absolute-orientation-sensor/overview
USB Stickとはちょっと異なるようです。
USB Stickのデータシートも見つからないのですが、どうやって通信仕様分かったんだろう・・・?

今日の京都漫画

Tokyo MXでやってたドラマ版は残念でしたね。。。

はんなりギロリの頼子さん 2 (ゼノンコミックス)

はんなりギロリの頼子さん 2 (ゼノンコミックス)

安価なIMU(AHRS)センサのBosch BNO055USBStickを試す(その1)

今まで姿勢センサとして、SparkFunのRazor 9DOFシリーズを愛用してきましたが、廃版になってしまい代替品を探していました。欲しい仕様は、

  • 基板面積が小さいこと
  • 簡単にWindowsPCにつながること
  • 方位が取れる6自由度出力であること

です。

姿勢センサ探し

同社から後継の9DoF Razor IMU M0というのも出ているのですが、1.無駄なピンが配置されていて基板のフットプリントが大きい、2.AHRSとして使いたいときの良さげな既存のソフトウェアが見当たらない、等の問題があり単純に置き換えて使うのは躊躇していました。

世の中の安価なIMUセンサの流行りを調べてみると、TDKが買収したInvenSenseのもの(MPU-9250など)と、BoschのBNO055というのが人気を集めているようです。どちらも、3軸加速度、3軸ジャイロ、3軸コンパスを小さいICに内蔵しているのですが、BNO055の方は更に、センサの校正(キャリブレーション)とIMU, AHRS(電子コンパス)出力へのデータ処理まで内部でやってくれるそうです。データ出力速度はMPU-9250の方がずっと速いようですが、生データを受け取って自分でキャリブレーションしたうえでカルマンフィルタなりMadgwickフィルタなりを計算しなければならず、かなり面倒臭そうです。BNO055の出力速度は良くても100Hz未満です。
ここでは、お手軽な方が良いですからBNO055を試してみたいと思います。

BNO055搭載のお手軽そうな製品探し

BNO055は、インターフェースにI2CとUARTを持っており、多くの製品はI2Cでマイコンボードに接続して使うことを前提にしているようです。UARTを直接出力に使っている製品を探したところ、2つあり一つはとても値段が高く折り合わなかったのですが、灯台下暗しでBosch純正の評価ボードがとても良い感じの大きさ(USBメモリぐらい)と値段(3~4000円ぐらい)で見つかりました。
BNO055USBStick
www.digikey.jp
f:id:cvl-robot:20180806153728j:plain

BNO055USBStickのテスト

BNO055 USB Stickのアプリケーションノートは、ここにありますが、文書中のソフトウェアへのリンクが壊れています。
BoschのWEBページはとても分かりにくいのですが、よく探すと
www.bosch-sensortec.com
のDevelopment Desktop Software 2.0というのが、BNO055USBStickのテスト用プログラムとして見つかります。簡単な操作方法は以下の通りです。

1.適切なCOMポートにつなぐ
2.Operation ModeのConfig ModeをチェックしてNDoFを選び、Confi Modeのチェックを外す
3.左下のStart Streamingを押す
f:id:cvl-robot:20180806163307p:plain
f:id:cvl-robot:20180806163311p:plain

BNO055USBStickの更新用ファームウェアはたぶんまだ配られていない

アプリケーションノート中にはBNOinUSBStick.fwu3という名前のファイルがfirmwareなので他のファイルで更新するな!との注意書きがあります。BNO055用のファームウェアアップデータはありますが、ファイル名が違うのでUSBStick用では無いようです。注意。
追記 Development Desktop 2.0(DD2.0)用のhelp updaterを追加インストールすると、ファームウェアのアップデートの方法が分かります。DD2.0を使ってアップデートを行います。ver.1.4のファームウェアファイルがhelpファイルのpdfと同じところに置かれています。

ドライバソースコード探し

USB延長ケーブルに刺したセンサを振り回すとグラフが動くので、センサは動いているようです。でも、自分のC++プログラムからアクセスする方法が見つかりません。標準で用意されているBNO055の汎用ドライバーは、I2CのものでUARTの参考にはしづらいです。
github.com

次は、自前のプログラムでBNO055USBStickを使う方法を調べていきます。

[1] GitHub - yoshito-n-students/bno055_usb_stick: A ROS driver of Bosch BNO055 USB Stick
[2] GitHub - yoshito-n-students/bno055_usb_stick_msgs
[3] https://ae-bst.resource.bosch.com/media/_tech/media/application_notes/BST_BNO055_AN009_01.pdf
[4] https://www.bosch-sensortec.com/en/bst/support_tools/downloads/overview_downloads
SoftwareのDevelopment Desktop Softwareを参照のこと。

今日の京都まんが

京都の老舗の菓子屋の家族の話。それぞれ問題を色々抱えながらもあたたかい話。

であいもん (4) (角川コミックス・エース)

であいもん (4) (角川コミックス・エース)

であいもん (5) (角川コミックス・エース)

であいもん (5) (角川コミックス・エース)

せっかくインストールしたのでOpenVINOのサンプルを実行してみる

このページのサンプルを試してみます。
software.intel.com

画像分類

AlexNetモデルの変換

OpenCV-extraのAlexNetのモデルをOpenVINO向けに変換して使います。
モデル変換用コードは、C:\Intel\computer_vision_sdk_2018.2.304\deployment_tools\model_optimizerフォルダにあります。

mo_caffe.py --input_model e:\opencv_extra\testdata\dnn\bvlc_alexnet.caffemodel --input_proto e:\opencv_extra\testdata\dnn\bvlc_alexnet.prototxt

bvlc_alexnet.bin, bvlc_alexnet.mapping, bvlc_alexnet.xmlの3つのファイルが出力されます。これを、clasification_sample.exeから見える場所に置きます。手っ取り早くは、同じ場所にコピーします。

実行テスト

classification_sample.exe -i e:\opencv_extra\testdata\dnn\dog416.png -m bvlc_alexnet.xml

[ INFO ] InferenceEngine:
API version ............ 1.1
Build .................. 11653
[ INFO ] Parsing input parameters
[ INFO ] Loading plugin

API version ............ 1.1
Build .................. win_20180511
Description ....... MKLDNNPlugin
[ INFO ] Loading network files:
bvlc_alexnet.xml
bvlc_alexnet.bin
[ INFO ] Preparing input blobs
[ WARNING ] Image is resized from (416, 416) to (227, 227)
[ INFO ] Batch size is 1
[ INFO ] Preparing output blobs
[ INFO ] Loading model to the plugin
[ INFO ] Starting inference (1 iterations)
[ INFO ] Average running time of one iteration: 24.5096 ms
[ INFO ] Processing output blobs

Top 10 results:

Image e:\opencv_extra\testdata\dnn\dog416.png

250 0.1841287 label #250
249 0.1796786 label #249
248 0.0701520 label #248
537 0.0376270 label #537
174 0.0250397 label #174
257 0.0247385 label #257
254 0.0223720 label #254
245 0.0205516 label #245
151 0.0167213 label #151
171 0.0140692 label #171

[ INFO ] Execution successful

動いてはいるようですが、合っているかどうか分かりませんね。

同じようにGoogleNetの変換とテスト

mo_caffe.py --input_model e:\opencv_extra\testdata\dnn\bvlc_googlenet.caffemodel --input_proto e:\opencv_extra\testdata\dnn\bvlc_googlenet.prototxt

> classification_sample.exe -i e:\opencv_extra\testdata\dnn\dog416.png -m bvlc_googlenet.xml

[ INFO ] InferenceEngine:
API version ............ 1.1
Build .................. 11653
[ INFO ] Parsing input parameters
[ INFO ] Loading plugin

API version ............ 1.1
Build .................. win_20180511
Description ....... MKLDNNPlugin
[ INFO ] Loading network files:
bvlc_googlenet.xml
bvlc_googlenet.bin
[ INFO ] Preparing input blobs
[ WARNING ] Image is resized from (416, 416) to (224, 224)
[ INFO ] Batch size is 1
[ INFO ] Preparing output blobs
[ INFO ] Loading model to the plugin
[ INFO ] Starting inference (1 iterations)
[ INFO ] Average running time of one iteration: 24.9105 ms
[ INFO ] Processing output blobs

Top 10 results:

Image e:\opencv_extra\testdata\dnn\dog416.png

250 0.3507370 label #250
249 0.2820407 label #249
248 0.1186542 label #248
198 0.1117227 label #198
196 0.0621706 label #196
537 0.0218948 label #537
172 0.0084112 label #172
176 0.0068888 label #176
676 0.0056729 label #676
197 0.0039623 label #197

[ INFO ] Execution successful

画像分類非同期

classification_sample_async.exe e:\opencv_extra\testdata\dnn\dog416.png -m bvlc_googlenet.xml -i e:\opencv_extra\testdata\dnn\dog416.png
[ INFO ] InferenceEngine:
API version ............ 1.1
Build .................. 11653
[ INFO ] Parsing input parameters
[ INFO ] Parsing input parameters
[ INFO ] Loading plugin

API version ............ 1.1
Build .................. win_20180511
Description ....... MKLDNNPlugin
[ INFO ] Loading network files
[ INFO ] Preparing input blobs
[ WARNING ] Image is resized from (416, 416) to (224, 224)
[ INFO ] Batch size is 1
[ INFO ] Preparing output blobs
[ INFO ] Loading model to the plugin
[ INFO ] Start inference (1 iterations)
total: 39.2591

Throughput: 25.4718 FPS

[ INFO ] Processing output blobs

Top 10 results:

Image e:\opencv_extra\testdata\dnn\dog416.png

250 0.3507370 label #250
249 0.2820407 label #249
248 0.1186542 label #248
198 0.1117227 label #198
196 0.0621706 label #196
537 0.0218948 label #537
172 0.0084112 label #172
176 0.0068888 label #176
676 0.0056729 label #676
197 0.0039623 label #197

[ INFO ] Execution successful

セキュリティバリアカメラ

security_barrier_camera_sample.exe -m C:\Intel\computer_vision_sdk_2018.2.304\deployment_tools\intel_models\vehicle-license-plate-detection-barrier-0007\FP32\vehicle-license-plate-detection-barrier-0007.xml -m_va C:\Intel\computer_vision_sdk_2018.2.304\deployment_tools\intel_models\vehicle-attributes-recognition-barrier-0039\FP32\vehicle-attributes-recognition-barrier-0039.xml -m_lpr C:\Intel\computer_vision_sdk_2018.2.304\deployment_tools\intel_models\license-plate-recognition-barrier-0001\FP32\license-plate-recognition-barrier-0001.xml

InferenceEngine:
API version ............ 1.1
Build .................. 11653
[ INFO ] Parsing input parameters
[ INFO ] Reading input
[ INFO ] Loading plugin CPU

API version ............ 1.1
Build .................. win_20180511
Description ....... MKLDNNPlugin
[ INFO ] Loading network files for VehicleDetection
[ INFO ] Batch size is forced to 1
[ INFO ] Checking Vehicle Detection inputs
[ INFO ] Checking Vehicle Detection outputs
[ INFO ] Loading Vehicle Detection model to the CPU plugin
[ INFO ] Loading network files for VehicleAttribs
[ INFO ] Batch size is forced to 1 for Vehicle Attribs
[ INFO ] Checking VehicleAttribs inputs
[ INFO ] Checking Vehicle Attribs outputs
[ INFO ] Loading Vehicle Attribs model to the CPU plugin
[ INFO ] Loading network files for Licence Plate Recognition (LPR)
[ INFO ] Batch size is forced to 1 for LPR Network
[ INFO ] Checking LPR Network inputs
[ INFO ] Checking LPR Network outputs
[ INFO ] Loading LPR model to the CPU plugin
[ INFO ] Start inference

f:id:cvl-robot:20180725211106p:plain

mo_caffe.py --input_model e:\opencv_extra\testdata\dnn\bvlc_googlenet.caffemodel --input_proto e:\opencv_extra\testdata\dnn\bvlc_googlenet.prototxt

object_detection_sample.exe -i e:\opencv_extra\testdata\dnn\dog416.png -m VGG16_faster_rcnn_final.xml

f:id:cvl-robot:20180725214907j:plain

**

object_detection_sample.exe -m C:\Intel\computer_vision_sdk_2018.2.304\deployment_tools\intel_models\person-detection-retail-0001\FP32\person-detection-retail-0001.xml --bbox_name detector/bbox/ave_pred -i e:\opencv_extra\testdata\dnn\googlenet_0.png

f:id:cvl-robot:20180725215603j:plain

あっさり簡単に動きます。
まだ途中ですが、面倒くさくなってしまったので今日はここまで。