しんさんのブログ

科学や技術のこと読書のことなど

論文: "UNet++: A Nested U-Net Architecture for Medical Image Segmentation"

"UNet++: A Nested U-Net Architecture for Medical Image Segmentation"
https://arxiv.org/abs/1807.10165
医療画像のセグメンテーションや領域切り出しでよく使われているU-Netを変形してUNet++という新しいネットワークを
提案した論文。

Unetはencoder-decoderタイプの深層学習アーキテクチャだが、Unet++も同様の構造をしている。
ただし、encoderの出力がskip connectionにより同じサイズのdecoderにマージされるところが、異なり、Unetの場合には単純にdecode側にくっつけるだけだったが、
Unet++ではskip connectionのところをCNN(nested dense skip pathways.)にしてencoderとdecoderの持っているセマンティックに対する非対称性を緩和できるようにする。
目的は領域のセグメンテーションの精度を上げるため。

論文: "Loosely-Coupled Semi-Direct Monocular SLAM"

"Loosely-Coupled Semi-Direct Monocular SLAM"
https://arxiv.org/abs/1807.10073
https://www.youtube.com/watch?v=j7WnU7ZpZ8c&feature=youtu.be

Visual SLAMの話です。
ピクセルの情報を直接使うDirectな方法と画像の特徴量を使うFeature-baseな方法を合体させてそれぞれのいいとこどりをしましたという論文。
DSOとORB-SLAMのパイプラインを合体させた構造で、単眼SLAMでは正確性やロバストネスの点で二つのベンチマークのテストでSOTAだと言っています。

はてなブログで数式をきれいに書く方法

はてなブログtexを使って数式を書くときに、思い通りにきれいな式が出ないことがあります。
はてなブログ特有の方法があるようなのですが、以下のサイトにわかりやすくまとめてありました。
7shi.hateblo.jp
私のブログでも、下付きの添え字や上付きの添え字がおかしくなってる場所を直せそうです。

論文:"The Double Sphere Camera Model"

論文:"The Double Sphere Camera Model"
https://arxiv.org/abs/1807.08957

自動運転やロボットARやドローンなどカメラ画像ベースで周辺のオブジェクトの3D構造を取得したり、自己位置を推定したいという要求はたくさんあります。
そんなとき、なるべく少ないカメラで広い範囲の画像を撮ろうとしますが、そうすると超広角レンズやいわゆる魚眼レンズのようなFOVの広いレンズで撮影することになります。
FOVが広いのはいいのですが、取得した画像が歪んでしまっています。
この論文は、そいういう超広角レンズの画像の扱いに関しての最近の研究のレビューです。
projection、unprojection関数が紹介されていたり、Double Sphere Camera modelというモデルが紹介されています。
キャリブレーションデータを使っていくつかのレンズに対して、各モデルの評価も行い、reprojection errorやprojectionにかかる計算時間、逆射影やそのヤコビアンなどが示されている。

論文: "Deep Clustering for Unsupervised Learning of Visual Features"

"Deep Clustering for Unsupervised Learning of Visual Features"
https://arxiv.org/abs/1807.05520

教師なし学習の話。
クラスター分類をCNNで行うのだが、k-meansでクラスタ分類した結果を使用してCNNを学習することで高い性能が出たという話。
ImageNetでもデータとしては偏っていて、数も少ない。もっとたくさんの幅広いカテゴリのデータで学習しないといけないが、そんな学習データセットはない。
ConvNetのところはAlexNetでも、VGGでもなんでもいいよ。k-meansもほかの方法でもいい。
普通に考えると、一つのクラスタに収束してしまいそうだが、そうはならないよという話は言及あり。
Fig. 1にこの論文で紹介する手法のすべてが書いてある。

論文: "A Framework for Evaluating 6-DOF Object Trackers"

[1803.10075] A Framework for Evaluating 6-DOF Object Trackers

日々論文をタイトルだけ見たり、眺めるだけだったり、流し読みしたり、熟読したりしています。
その記録を簡単に書いていきます。

今日は表題の論文についてです。

[概要]
6DOFのオブジェクトトラッキングアルゴリズム開発用のデータセットを作りましたという論文。
既存のデータセットは、シンセティックものは現実とは結構違っているし、実写のデータセットは大きなマーカーが
映っていたりする。
Kinect V2を使って、real objectからground truthを取得する一連の手法を開発した。
これを使って人間が手に持った状態でのオブジェクトのトラッキングをやってみた。

Processingで超お手軽に物体認識をやってみる

Pythonでtensorflowはたくさん記事があり、お手軽に使えますが、Processingでも推論だけでしたら非常にお手軽に試すことができます。
私の実行環境は、以下のとおりです。
Windows10 64bit
Processing 3.3.7

この記事はつぎのブログを参考にしました。
Tensorflow in Processing with the LabelImage example – Magic & Love Interactive

まずは、この記事にリンクが張ってある以下のGitHubからProcessingのコードをcloneします。
github.com

基本的にreadmeを読んでその通りにファイルを用意すればOKです。

環境構築と実行手順:
1.Tensorflow for Javaをダウンロードする
 Tensorflowのオフィシャルサイトから、Windows版のjava用のバイナリをダウンロードします。
 https://www.tensorflow.org/install/install_java#install_on_windows
 ダウンロードするファイルは、
  libtensorflow-1.8.0.jar
  tensorflow_jni.dll
 の二つです。

2. 上記二つのファイルをcodeというフォルダーを作ってそこにコピーします。
 codeというフォルダーはml20180615a.pdeがあるフォルダーに作ります。

3. 以下のサイトからInceptionのモデルと学習済みデータをダウンロードします。
 https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip
 解凍すると以下の二つのファイルが生成されます。
  tensorflow_inception_graph.pb
  imagenet_comp_graph_label_strings.txt
 それぞれ、モデル及び学習済みデータと1000クラスに分類されたオブジェクトのラベル名のリストとなります。
 これら二つのファイルは、dataフォルダーにコピーしておきます。

ちなみに、Inception-v3とはGoogleによって開発されILSVRCという大規模画像データセットを使った画像識別タスク用に1,000クラスの画像分類を行うよう学習されたモデルです。 開発当時、非常に高い精度の画像識別を達成していることで注目されました。
以上で準備ができました。

ml20180615a.pdeを起動して実行すると、data/BearBear.jpgを読み込み、"teddy bear 45.89%"と表示されます。
簡単ですね~。
あとは、ソースコードを見ていろんな改造ができそうです。

私はwebcamから入力した動画を識別するようにさせてみました。
カメラの前に座る自分の映像は、
 "BEST MATCH: barbershop (22.31% likely)"
のように、理髪店で髪を切っている状態と認識されたようです・・・。
PCやマウスなどは比較的正確に認識されました。