投稿

2019の投稿を表示しています

半正定値計画問題(Semidefinite Programming)を解くためのライブラリCSDP

イメージ
CまたはC++で半正定値計画問題を取り扱うことのできるライブラリを探していたところ以下のライブラリが見つかった。 ・CSDP https://github.com/coin-or/Csdp WindowsのVisual Studioで利用するためには少し作業が必要だったので軽くメモをしておく。基本的には、以下のサイトを見ながらライブラリを生成した。ただ、バージョンの違いなのか、いくつか修正する点があった。 ・CSDPのVisual Studio2010でのコンパイル方法 http://buaiso.blogspot.com/2013/01/csdpvisual-studio2010.html CLAPACKの準備 上記サイトに書かれているように内部でLAPACKが使用されているため、まずはCLAPACKを準備する。上記サイトとは異なり、CMake版をダウンロードして用いた。 http://www.netlib.org/clapack/ よりclapack-3.2.1-CMAKE.tgzをダウンロードし解凍する。 CMakeを使ってVisual Studioのプロジェクトを生成する。ただし、今回はx64環境でライブラリを使いたいのでx64でプロジェクトを生成する。(ConfigureするといくつかWarningが出るが無視) 出来上がったプロジェクトを開きビルドする。 Debug, Release各々でlapack.lib, blas.lib, libf2c.libが生成されていればOK。 CSDPのビルド GitHubからCSDPのコードをCloneする。 https://github.com/coin-or/Csdp ここ から Csdp-6.1.1_vcproj.zipをダウンロードして解凍する。(誰がアップしているんだろう。。。) 解凍するとvcbuildというフォルダができるので、これをCSDP直下にコピーする。※参考にしたウェブではlibsというフォルダができるとあるが私の環境では生成されませんでした。 CSDP直下にlibsフォルダを作成する。 vcbuild内にあるvcbuild.slnを開く。Visual Studioのバージョンによってはアップグレードのダイアログが出てくるので、とりあえずOK

Visual Positioning Service (VPS)

最近、スマートフォンなどのカメラ画像を使った位置推定技術であるVisual Positioning Service (VPS)が少し話題になっている。 https://ai.googleblog.com/2019/02/using-global-localization-to-improve.html 基本的には、事前構築された3Dのマップとカメラ映像を対応付けて世界座標上での位置を推定する技術で、3Dのマップとの対応付けから推定された位置でSLAM(Simultaneous Localization and Mapping)などの初期化を行うことで、事前に世界座標系を基準に配置されたコンテンツをARのアプリで見ることを可能にすることができる。 このコンセプト自体は10年ほど前からあると思うけれど、実際のサービスとして展開されるのは今までなかったかもしれない。とにかく、Googleをはじめ様々な企業がVPSの技術に取り組んでいるよう。 Scape Technologies:  https://scape.io/ Huawei Cyberverse:  https://www.youtube.com/watch?v=KNKtkRMb0yw

ETH3D Benchmark

イメージ
Multi-view StereoやSLAMのアルゴリズムを評価するためのベンチマークで、一昔前のMiddlebury Stereo Benchmarkの新しい版みたいな感じ。 ETH3D Benchmark:  https://www.eth3d.net/ Middlebury Stereo Benchmark:  http://vision.middlebury.edu/stereo/ 例えば、High-resolution multi-view benchmarkのページを開いてみると、以下のようなランキングを見ることができる。 各手法をクリックすると利用された計算機の情報や使用されたプログラミング言語の情報を見ることができる。また、ソースコードを入手可能なものに関しては、そのURLが記載されている。 現状、対応点探索などの部分でDeep Learningを利用している手法はあるようだけれど、ReconstructionそのものにDeep Learningのフレームワークを利用しているものは無いように思う。この分野では、まだまだ、幾何制約をちゃんと利用した方法の方が優位だということかな。

Visual Studio 2017でpThreadを利用する

pThreadを利用しているコードをVC++で利用したかったので、その時の方法のメモ。 今回、pThreadを利用するために、以下のコードを利用した。 https://github.com/BrianGladman/pthreads 基本的には、build.vc15の中にあるソリューションファイルを開いて、ビルドしてあげるとpthreads.libやpthreads.dllなど必要なファイルが生成される。後は、これらのファイルをリンクしてあげるとOK。 ただ、自分の環境ではwindows SDKのバージョンが8.1ではエラーが生じていたため、各プロジェクトのプロパティを開いて、Windows SDKバージョンの変更を行う必要があった。

企業と大学はどちらが良いか?

少し前に、画像の認識・理解シンポジウムという学会の特別企画で「企業と大学、両方を経験した研究者が語る真実!ほんとにオススメなのは・・」というセッションがあった。 MIRU2019特別企画「企業と大学、両方を経験した研究者が語る真実!ほんとにオススメなのは・・」 パネリストは企業と大学の両方を経験している人たちで、以下のような感じになっていた。(現職は学会ページにあるものなのであっているとは思うけれど、前職は間違っているかも) 牛久 祥孝(東大 → オムロンサイニックエックス) 山口 光太(東北大 → サイバーエージェント) 松下 康之(Microsoft Research Asia → 阪大) 牧 淳人(東芝 → KTH) 前田 英作(NTT → 東京電機大) 鷲見 和彦(三菱電機 → 青山学院大) 村瀬 洋(NTT → 名大) 何度か転職されている方もいる。例えば、牛久さんはNTT  →  東大 → オムロンサイニックエックスだったと思う。皆さん優秀な方ばかりなので、引く手数多の方々なところは留意したい。 体感では、ここ1‐2年で大学から企業へと移る研究者が増えているように感じる。最近だと、 Acadexit とか言うらしい。観測できている範囲では、そろそろ准教授のポストが狙えるんじゃないかなという感じの助教の先生方が企業へと移っている印象がある。実際に、登壇されている牛久さんや山口さんは大学に残っていれば今頃は准教授になっていると思う。 このセッションでは、まず、各パネリストのポジショントークがあったけれど、基本的にはどの方も、「企業と大学、どちらが良いとは言えない」というようなことを仰っていた。どちらも良いところもあれば悪いところもあるというような感じ。まぁ、そうだろうなという感じだけれど、年代にもよるのかなという気がする。少なくともNTTの研究所は定年が早いこと(55歳?)もあり、その後、大学教授になる人が多いように思う。また、大学助教から企業研究者となった人と話していると、事務作業が多くなってきて研究時間の確保が難しくなってきた、という話をちらほら耳にする。結果、まだ、プレイヤーとして活動したい人達は、企業研究所にその場を求めているような印象がある。 どちらが良いかは分からないけれど、現状、パネリストの構

AR、MR、VRの違いについて

イメージ
最近、AR(拡張現実感)、MR(複合現実感)、VR(仮想現実)の違いについて解説している以下のような記事を見かける。 ・ VR・AR・MR・SRの違いとは?それぞれの活用方法を紹介 ・ VRやARとどこが違う? MR(複合現実)の仕組みと代表例『Microsoft HoloLens』を解説 ・ 総務省 ICTスキル総合習得プログラム (位置情報の活用とxR) これらの記事や資料の中では、「ARは基本的にスマホを使い、MRはHMDを利用する」といった説明や「ARはユーザの動きに合わせて合成されるCGなどの仮想情報を動的に提示できないが、MRはユーザの動きに合わせてCGなどの仮想情報を動的に提示できる」といったような説明がなされている。基本的には、これらの説明を受け入れるAR、MR、VRの(本物の)専門家はいないと思う。ただ、HoloLensを売っている某巨大企業の エバンジェリストとかいう人が講演 で上記のような定義を堂々としているのもあって、間違った定義が広がってしまったんじゃないかと個人的には思っている。 技術の進歩と共に、元々の定義には収まらないケースが出てくるので、基本的には拡大解釈してそれぞれの言葉を使うのは問題ないと思っているけれど、元々の定義を無かったことにして全く異なる定義を上塗りしてしまうようなことはあまり良いことでは無いと思う。 昔ながらのARの定義では、そもそも現状存在しているスマホを使ったARと呼ばれているもののほとんどはARでは無いと思う。というのも、スマホの画面とその外側はシームレスにつながっていることは無く、現実世界と仮想世界の間に断絶が起こっているからだ。こういった問題を解決しようとする研究も存在している。 Approximated User-Perspective Rendering in Tablet-Based Augmented Reality じゃあ、そもそもAR、MR、VRの違いは何なのかという話については、Milgramが提案した Reality-Virtuality Continuum が何だかんだでしっくりくるし、少なくとも学術業界では受け入れられていると思う。Reality-Virtuality Continuumのコンセプトではそれぞれの関係は以下のようになっている。 Real(現実

カメラの性能評価~DxOMark~

イメージ
DxOMark はスマフォなどのカメラの性能(露出、色、オートフォーカスなど)について評価しているウェブサイトで、DxOMarkのスコアはカメラ業界では性能をアピールするための重要な指標となっているようです。実際に、新しいスマフォの発表などで「DxOMarkで1位を獲得!」のような表現を見かけます。 DxOMark:  https://www.dxomark.com/ 最近は、新しいスマフォを購入する際はカメラの画質を最も重視しているので、ここで各端末のスコアを確認するようにしています。実際に、ウェブページを開いてみると以下のような感じでランキング(2019年8月24日現在)を見ることができます。 現状は、Samsung Galaxy Note 10+ 5Gがトップのよう。これは今月発表された端末ですね。ランキングを見るとSamsung、Huawei、Oppoあたりがカメラ性能でしのぎを削っているのが分かります。日本企業の端末だとSonyのXperia XZ Premiumが最上位のようですね。ただ、Mobileのスコアは83となっており上位陣とはかなり差をつけられているのが分かります。ちょっと悲しいですね。。。 また、DxOMarkのスコアにはMobileとSelfieという2つの項目でスコアが出ているのが分かります。これは、外向きのカメラと内向きのカメラそれぞれのスコアを示しています。なので、風景などを外向きカメラを使って撮影することが多い場合はMobileのスコアを、内向きカメラで自撮りすることが多い場合はSelfieのスコアを見て購入を検討すると良いと思います。 DxOMarkのページの Smartphones の項目を開くとベンチマークされている端末の一覧を見ることができます。ここで、各端末を選択するとより詳細な情報(どういった特徴を持ったカメラが搭載されているのか、実際に撮影した画像、露出や色などの項目ごとの評価、など)を見ることができます。ここでは、以下のような画像の比較も載っているので、自分好みの色合いが撮れるカメラを検討することもできます。 また、動画撮影の性能についてもスコアが載っているので、動画を取ることが多い人はこのスコアについてもチェックすると良いかと思います。 最近のスマフォはカメラの性能がかなり上がっている

Photogrammetry

イメージ
夏休みに暇だったのでPhotogrammetryをやってみた。 RealityCaptureが有名だけれど有料なので、今回使ったのはMeshroomというフリーのソフトウェア。 Meshroom:  https://alicevision.org/#meshroom Meshroomは3D reconstruction関連のオープンソースフレームワークであるAliceVisionを利用して作られており、特徴点抽出、マッチング、Structure from Motion、Multi-view stereo、三次元メッシュの作成、テクスチャリングの一連の処理をボタン一つで出来るようになっている。ウェブページを見ている感じだとチェコ工科大学の Tomas Pajdla のチームが公開していたCMPMVSが元になっているように思う。(Tomas PajdlaのページにAliceVisionのリンクがある) 使い方は簡単で、Meshroomを起動すると以下のようなウィンドウが開くので、左端のImagesの部分に復元したい物体の複数視点の画像をドラッグアンドドロップしてあげて上部にあるStartボタンを押すだけ。 ウィンドウの下部にはPhotogrammetryに利用されている各モジュールが表示されている。各モジュールをダブルクリックすると右側に各種パラメータが表示されるので、うまくいかない場合は、以下のページを読みながら調整すると良いかもしれない。 https://github.com/alicevision/meshroom/wiki/Reconstruction-parameters また、他にもデフォルトでは利用されていないモジュールも用意されているので、それらを試してみるのも良いかもしれない。 試しにぬいぐるみを撮影した画像約60枚を入力として復元した結果は以下の通り。カメラパラメータや三次元点群が推定されていることが確認できる。 最終的に出力されたテクスチャ付きの三次元モデルは以下のようになった。 今回は約30分でテクスチャ付きのモデルが出来上がった。

SMPL Model

イメージ
かなり久しぶりの更新。 人体のパラメトリックモデルが欲しいなと思って少し調べてみると、Max Planck Instituteの研究グループが公開しているSMPL Modelというのが有名なのか色々な論文で利用されている。 SMPL Model http://smpl.is.tue.mpg.de/ SMPL Modelでは、体形をコントロールするためのパラメータが10個と24個の関節に対してそれぞれの関節角3パラメータが設定できるようになっている。 オフィシャルに公開されているコードはPythonのみのようだけれど、github上にはc++の実装もいくつか存在しているよう。 https://github.com/soulslicer/smpl_cpp https://github.com/YeeCY/SMPLpp SMPL Modelは表情や指の動きなどを表現できないけれど、Total Capture (CVPR2018)だとその辺も表現できるようなモデルが提案されている。ただし、コードは公開されていない。 http://www.cs.cmu.edu/~hanbyulj/totalcapture/ また、CVPR2019ではMonocular Total Captureとかいう論文が発表される予定のよう。 https://qiita.com/masataka46/items/58813bd1dbb67305fa99 CVPR2019ではSMPL Modelの発展版も発表されるようで、これはコードが公開される予定っぽい。 https://smpl-x.is.tue.mpg.de/