2013年1月30日水曜日

拡張現実用 Windows8 高性能タブレット 比較

高度な計算ができる拡張現実感(AR)用途の端末に必要な機能に焦点を絞ってWindows 8タブレットを比較してみた。 CPU Intel Core i7は必須とし、オプションは可能な限りハイスペックなものを選ぶ。 (2013/1/30)

  • OS
  • CPU
  • GPU
  • メモリ
  • 外側カメラ
  • 内側カメラ
  • 姿勢センサ
  • 重さ
  • サイズ(幅×高さ×厚さ)

Sony VAIO Duo 11

  • OS: Windows 8 Pro 64
  • CPU: Intel Core i7-3687U (max 3.30GHz, コア2, スレッド4)
  • GPU: Intel HD Graphics 4000
  • メモリ: 8GB
  • 外側カメラ: Full HDウェブカメラ
  • 内側カメラ: Full HDウェブカメラ
  • 姿勢センサ:加速度センサー,ジャイロ,地磁気センサー
  • 重さ: 1.665 kg
  • サイズ: 319.9mm×199mm×17.85mm

DELL XPS 12 Ultrabook

  • OS: Windows 8 Pro 64
  • CPU: Intel Core i7-3537U (max 3.10GHz, コア2, スレッド4)
  • GPU: Intel HD Graphics 4000
  • メモリ: 8GB
  • 外側カメラ: -
  • 内側カメラ: 1.3 MP Webカメラ、1,280 x 1,024ピクセル
  • 重さ: 1.52kg
  • サイズ: 317mm×215mm×20mm

Panasonic Let's note AX2

  • OS: Windows 8 Pro 64
  • CPU: Intel Core i7-3517U (max 3.00 GHz, コア2, スレッド4)
  • GPU: Intel HD Graphics 4000
  • メモリ: 4GB
  • 外側カメラ: -
  • 内側カメラ: 720Pウェブカメラ
  • 姿勢センサ:地磁気センサー, ジャイロセンサー, 加速度センサー,照度センサー
  • 重さ: 1.14kg
  • サイズ: 288mm×194mm×19mm

Lenovo IdeaPad Yoga 13

  • OS: Windows 8 64bit
  • CPU: Intel Core i7-3517U (max 3.0GHz, コア2, スレッド4)
  • GPU: Intel HD Graphics 4000
  • メモリ: 8GB
  • 外側カメラ: -
  • 内側カメラ: HD 720p
  • 重さ: 1.5kg
  • サイズ: 333.4mm×224.8mm×16.9mm

2013年1月17日木曜日

CSDPのVisual Studio2010でのコンパイル方法

CSDPは半正定値計画問題(Semidefinite Programming)を取り扱うC言語ライブラリ。 内部ではLPACKが使用されており予めインストールされている必要がある。 ここでは、CLAPACKをソースコードからコンパイルして準備する方法も含めて書き留めておく。

動作環境

  • Visual Studio 2010 SP1
  • Windows 7 Pro SP1

CLAPACKをインストール

/MTオプションでコンパイルされたものや、Intel Compilersが必要なものしか見つからなかったので、ソースコードからコンパイルすることにした。Visual Studio用のパックが準備されているが、そのままではコンパイルが通らない。プロジェクトの設定を変更してもすべてのエラーを取り除くことはできないが、ここではCSDPに使うことのみを考え、blas, clapack, libf2cの3つのプロジェクトのみコンパイルする。

  1. CLAPACK-3.1.1-VisualStudio.zipをダウンロード。
    http://www.netlib.org/clapack/
  2. clapack.slnを開いてVisual Studio 2010形式に変換する。
  3. BLAS/SRC内の以下のファイルをblas.vcxprojに追加する。
    • csrot.c
    • drotm.c
    • drotmg.c
    • dsdot.c
    • sdsdot.c
    • srotm.c
    • srotmg.c
    • zdrot.c
  4. ビルドモードをRelease without wrapにする。
  5. blas, clapack, libf2cのプロジェクトプロパティ/コード生成/ランタイムライブラリでマルチスレッド(/MT)をマルチスレッドDLL(/MD)に変更する。
  6. libf2cプロジェクトのfio.hの111行目をコメントアウトする。
    //extern int isatty(int);
    
  7. blas, clapack, libf2cプロジェクトのみビルド。

CSDPをインストール

  1. CSDPのページにアクセスし、 「​compressed tar archive」からCsdp-6.1.1.tgzをダウンロードして解凍。
  2. ここから Csdp-6.1.1_vcproj.zipをダウンロード。
  3. 解凍するとlibsとvcbuildというフォルダができるのでこの二つをCsdp-6.1.1フォルダ直下にコピー。
  4. vcbuild内のvcbuild.slnを開いてビルドする。

参考

2013年1月12日土曜日

PWP3Dの動かし方

画像から三次元物体の位置姿勢を6自由度で推定するPWP3Dのソースコードが公開されている。1つの物体用と複数の物体用の2種類のコードが公開されているが、そのうちPerseusLib_beta2のRelease Win32をコンパイルして動作確認する。これもgSLICと同様にプロジェクトファイルの問題がありすぐには動作しなかったので対処法を書き残す。ここではCUDAはインストール済みとする。

動作環境

  • Visual Studio 2010 SP1
  • Windows 7 Pro SP1
  • Nvidia Quadro 4000 for Mac
  • NVIDIA CUDA Toolkit v4.2(インストール済み)

PWP3Dのコンパイル

  1. ここからPWP3D [beta 2 (multiple objects, multiple (independent) views) - source - VS2010 64bit](perseuslib_beta2.zip)をダウンロードする。
  2. PerseusLib.slnをVisual Studio 2010に変換する。
  3. gSLICの動かし方」と同様にPerseusLib.vcprojの設定の問題でコンバートできないことを確認する。
  4. PerseusLib.vcxprojの45行目と257行目、Perseus.vcxprojの45行目と195行目にある「CUDA 4.0.props」を「CUDA 4.2.props」に修正する。
    修正前
      <ImportGroup Label="ExtensionSettings">
        <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 4.0.props" />
      </ImportGroup>
    
    修正後
      <ImportGroup Label="ExtensionSettings">
        <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 4.2.props" />
      </ImportGroup>
    
  5. Perseus.slnを起動するとPerseusとPerseusLibプロジェクトが正しくロードされるので、Perseusプロジェクトの追加のインクルードディレクトリに書かれているライブラリの場所を消す。これは消さなくても問題ないが、全く必要なくややこしいので消すことにする。
    C:\CUDA\v3.2\include;
    C:\SDK\FreeImage\include;
    C:\SDK\Qt\4.7.4\include;
    C:\SDK\CLEyeMulticam\include;
    C:\SDK\VideoInput;
    
  6. FreeImage version 3154 Win32をインストール。ライブラリを正しく設定。
  7. PerseusLibプロジェクトのOther/Header Files/PerseusLibDefines.hの3~7行目をコメントアウト。
    #ifdef NDEBUG
    #pragma comment( lib, "C:\\SDK\\FreeImage\\x64\\lib\\FreeImage.lib" )
    #else
    #pragma comment( lib, "C:\\SDK\\FreeImage\\x64\\lib\\FreeImage.lib" )
    #endif
    
  8. PerseusLibプロジェクトの CUDA/Header Files/CUDADefines.hの3、4行目をコメントアウト。
    #pragma comment( lib, "C:\\CUDA\\v4.0\\lib\\x64\\cuda.lib" )
    #pragma comment( lib, "C:\\CUDA\\v4.0\\lib\\x64\\cudart.lib" )
    
  9. PerseusLibプロジェクトのプロパティからCUDA C/C++ / Device / Code Generationの以下の値を変える。
    修正前
    compute_10,sm_10
    
    修正後
    compute_20,sm_20
    
  10. Perseusプロジェクトの追加のライブラリにを追加。
    cudart.lib;cuda.lib;FreeImage.lib;
    
  11. PerseusおよびPerseusLibプロジェクトのプリプロセッサに_ITERATOR_DEBUG_LEVEL=0を追加。

参考

2013年1月4日金曜日

gSLICの動かし方

リアルタイムで画像を小さな領域(superpixel)に領域分割する手法gSLICのコードをテストしてみた。ソリューションファイル(*.sln)をロードする段階でプロジェクトファイル(*.vcxproj)が正常に読み込まれなかった。CUDAのインストールやプロジェクトの設定で追加しなければならなかったオプションなどを記録しておく。(2013/01/04)

動作環境

  • Visual Studio 2010 SP1
  • Windows 7 Pro SP1
  • Nvidia Quadro 4000 for Mac
  • NVIDIA CUDA Toolkit v4.2

CUDA4.2をインストール

CUDAを利用したgSLICのプログラムをコンパイルするためには、CUDA Toolkit、CUDA Driver、GPU Computing SDKが必要なのでこれらを順にインストールする。

  1. CUDA 4.2 Toolkit 32bitをダウンロード。64bitマシンでも32bitコンパイルするなら32bitをダウンロードする。
    https://developer.nvidia.com/cuda-toolkit-42-archive
  2. ダウンロードされたcudatoolkit_4.2.9_win_32.msiを実行してインストール。Typicalを選択する以外特殊な操作はない。
  3. CUDA 4.2 Driver 64bit()をダウンロード&インストール。32bitコンパイルする場合でも、64bitマシンならドライバ64bitを選ぶ。
    https://developer.nvidia.com/cuda-toolkit-42-archive
  4. ダウンロードされたdevdriver_4.2_winvista-win7_32_301.32_general.exeを実行してファイルを解凍。 「NVIDIA\DisplayDriver\275.89\WinVista_Win7_64\International」に解凍されたsetup.exeを実行してインストール開始。既存のドライバの設定を残すオプション「高速」を選択。
  5. GPU Computing SDK4.2.9をダウンロード。
    https://developer.nvidia.com/cuda-toolkit-42-archive
  6. ダウンロードされたgpucomputingsdk_4.2.9_win_32.exeを実行してインストール。

ルールファイルをコピー

  1. C:\Program Files (x86)\NVIDIA GPU Computing Toolkit\CUDA\v4.2\extras\visual_studio_integration\rulesを開く。
  2. C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\VCProjectDefaultsも開く。
  3. NvCudaDriverApi.v4.2.rulesとNvCudaRuntimeApi.v4.2.rulesを最初のフォルダから次のフォルダにコピーする。

gSLICのコンパイル

何よりもはじめにgSLIC自身をダウンロードして来なければならないが、2013/01/04現在GoogleでgSLICと検索すると古いページがトップに出てくる。こちらはVisual Studio 2008のバージョンだがこれは古いので扱わない。新しいページからダウンロードしてVisual Studio 2010のバージョンを用いる。gSLICのデモプログラムにはCUDA以外にOpenCVも使用されている。予めOpenCVが正しくインストールされているとする。これ以外に必要な設定は以下のとおり。

  1. 新しいページからgSLIC_vs2010.zipをダウンロードする。
  2. Visual Studioを起動するとエラーがでることを確認する。
    1. ダウンロード・解凍して生成されるフォルダ内のgSLIC.slnからVisual Studioを起動すると「Microsoft Visual Studio: ソリューション内の1つ以上のプロジェクトが正しく読み込まれていません。詳細については、出力ウィンドウを確認してください。」というエラーウィンドウが表示される。
    2. 出力ウィンドウに「gSLIC\gSLIC\gSLIC.vcxproj : error : インポートされたプロジェクト "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 4.0.props" が見つかりませんでした。 宣言のパスが正しいかどうか、およびファイルがディスクに存在しているかどうかを確認してください。 gSLIC\gSLIC\gSLIC.vcxproj」の類のエラーが出てることを確認する。
  3. gSLIC.vcxprojファイルのCUDA関連項目を直接テキストエディタで修正する。修正箇所は4箇所。(絶対パス出ない方がよいがとりあえず・・・)
    1. 25行目。CUDAのバージョンとNVIDIA GPU Computingインストール先のパスを修正。
      修正前
      <CudaToolkitCustomDir>
          ..\..\..\..\..\..\..\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0
      </CudaToolkitCustomDir>
      
      修正後
      <CudaToolkitCustomDir>$(CUDA_INC_PATH)</CudaToolkitCustomDir>
      
    2. 53行目。CUDAのバージョン修正。
      修正前
      <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 4.0.props" />
      
      修正後
      <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 4.2.props" />
      
    3. 90行目。同じ。
      修正前
      <AdditionalLibraryDirectories>
          C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\lib\Win32;
          %(AdditionalLibraryDirectories)
      </AdditionalLibraryDirectories>
      
      修正後
      <AdditionalLibraryDirectories>
          $(CUDA_LIB_PATH);%(AdditionalLibraryDirectories)
      </AdditionalLibraryDirectories>
      
    4. 172行目。同じ。
      修正前
      <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 4.0.targets" />
      修正後
      <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 4.2.targets" />
      
  4. OpenCV関連の修正。ビルドするとCUDAのビルドは正常終了するがOpenCVのライブラリの場所に問題がある旨のエラーがでるかもしれない。OpenCVのライブラリが絶対パスなどで設定されているのが原因。
    1. 追加のインクルードディレクトリに「C:\OpenCV2.1\include\opencv」が設定されているので、これを削除または正しいディレクトリを設定する。
    2. 上と同様に追加のライブラリディレクトリに設定されたC:\OpenCV2.1\libを削除する。(これは消さなくても問題ない)
    3. main.cppのインクルードを正しく修正。
      修正前
      #include "cv.h"
      #include "highgui.h"
      
      修正後
      #include <opencv/cv.h>
      #include <opencv/highgui.h>
      
    4. リンカー/入力/追加の依存ファイルにcxcore210d.lib;cv210d.lib;highgui210d.libが設定されているのでこれを削除。
    5. OpenCV ver.2 超々々入門(C++)」の方法でOpenCVのlibファイルを指定する。

参考