tensorboardではまった話

最近久しぶりにtensorboarを使ったらはまったので顛末をメモ 動作環境はWindows10 + Anacondaでtensorflow1.9です。

現象

tensorboard --logdir LOG_FILE_PATH

(LOG_FILE_PATHは絶対パス)
でtensorboadは以下のメッセージが表示され問題なく動いているように見えます。

TensorBoard 1.10.0 at http://MachineName:6006 (Press CTRL+C to quit)

(MachineNameは動作させているPCの名前)   chromehttp://MachineName:6006 に接続するとなぜか接続できないです。
http://MachineName:6006の代わりにhttp://localhost:6006でもつながらないです。

解決策

起動する際に明示的にホストアドレスを以下のように指定しました。

tensorboard --logdir LOG_FILE_PATH --host=127.0.0.1

これで、http://127.0.0.1:6006 に接続すると以下のように動作しました。

f:id:wshinya:20181004112633p:plain
動作結果

ちなみに、LOG_FILE_PATHは ./hoge のように相対パスでも動きました。
ブラウザーChrome以外にもFirefoxでも問題なく動作しました。

tensorboardの詳しい解説は以下にあります
https://github.com/tensorflow/tensorboard

論文: "CNN-PS: CNN-based Photometric Stereo for General Non-Convex Surfaces"

"CNN-PS: CNN-based Photometric Stereo for General Non-Convex Surfaces"
https://arxiv.org/abs/1808.10093
ECCV2018 Accept論文
実装コード:
github.com
Photometric stereoで法線を取得する話。
複雑な光源環境でオブジェクトのphotometric stereo 画像からsurface normalをCNNを使って予想する方法の研究.
学習データはsyntheticに作成。

GitHubやBitBucketを使った一人プロジェクトの作業方法

一人でコードの開発をするときにも、バージョン管理とバックアップも兼ねてのリモートリポジトリの利用は便利だなと思います。
そのために必要なコマンドのメモ集です。

作成したリポートリポジトリをローカルにリポジトリに複製する方法

> git clone https://someuser@bitbucket.org/someuser/test.git

そして作成されたディレクトリにファイルを置きます。

ステータスの確認には以下のコマンドを使用

> git status
すると追加したファイルの状態が表示されます。

追加したファイルのリポジトリに登録するには

> git add -A

  • A オプションはすべてのファイルをステージにセットすることを意味します。

まだステージにセットされただけでコミットはされていません。
git status で状態を確認できます。

実際にコミットを行うには

git commit -m"this is a message for this commit"
と -m の後にコミットのメッセージを入れておきます。

以上でコミットは終わり、ローカルで作業します。

作業後の差分を確認するには、

>git diff
で最後にコミットされているファイルと現在のファイルの比較がされ、差分が表示されます。

何度もコミットした後はコミットの履歴が見たくなります。

そんな時は、
> git log --stat
で履歴を確認できます。

ここまでの作業はあくまでもローカルでのファイルの操作でリモートリポジトリに変更は反映されていません。

バックアップも兼ねて、リモートリポジトリにコミット履歴を送信するには、

>git push origin master
originはgit clone した元のリモートリポジトリのデフォルトのニックネームです。
master はブランチ名です。
これでローカルリポジトリのmasterがリモートのmasterに同期されます。

(ここまでをまとめると)

Gitサーバー上でプロジェクトを作成.すると,内容が空のリポジトリができる(GUI 操作)
Gitサーバーからリポジトリを複製して,手元に作業ツリーを作成 (git clone).空の作業ツリーができる.
作業ツリーにソースコードを追加し, フォルダをGitに追加 (git add)
変更をコミットする (git commit)
コミットした変更をGitサーバに送り込む (git push)
他のメンバーもGit上のリポジトリを複製 (git clone) すると, ソースコード一式が既に入った作業ツリーが取得できる

ブランチの切り方

> git branch devbranch
devbranchという名前でブランチを切ります。
> git branch
とやると
devbranch
master
の両方が表示され、*がついているほうが現在の作業対象です。
作業対象を切り替えるには
> git checkout devbranch
とやります。
ブランチの状況の確認には、
>git log --all --graph --pretty=oneline
です。
分岐したブランチの作業が終了して二つのブランチを統合するときには、
> git merge devbranch
とやれば、masterにマージされます。
同じファイルをmasterブランチで書き換えていればconflictが起きますので気を付けましょう。

過去の状態に戻す方法:

>git branch devbranch2
>comitID

ブランチの強制削除は:

> git branch -D devbranch2

最新のマスターブランチをとってきて自分のローカルブランチに上書きする

>git checkout master
>git pull

論文: "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にかかる計算時間、逆射影やそのヤコビアンなどが示されている。