Predator's Vision

画像処理、3D点群処理、DeepLearning等の備忘録

PyTorchの実行速度 CUDA on Windows10 vs WSL2

Windows10 Insider Program ではWSL2からCUDAが使えるとのことで、下記を参考にインストールしました。qiita.comその上で、WindowsからCUDAを叩くのと、WSL2から叩くのとでどれぐらい実行時間に差があるのか試しました。 環境 Windows10 Pro Insider Preview…

Raspberry Pi 4B の GPU で OpenCL (VC4CL)

RaspberryPiの映像出力用のGPUをOpenCLから利用できると知ったので、興味本位でトライ。 結果から言うと、行列演算サンプルを実行したところ、GPU処理よりCPU処理の方が若干早かった…。 目次 目次 材料 参考サイト ビルド&インストール 確認 CPU vs GPU 速…

Google Colab 上で Keras 入門(SegNet-Basic を実装・学習・推論)

4年前ぐらいに Deep Learning 入門をしてからしばらく触っていなかったが、コロナ外出自粛で時間が余っていることもあって久しぶりにトライ。 Google Colab でやる手順をメモ。試したのはSegNetの軽量版のSegNet-Basic。 SegNet: 画像セグメンテーションニュ…

マウスカーソルを見失ったときに所定の場所に強制移動させる

マルチディスプレイしているとマウスカーソルを見失うことも多いが、そのたびにマウスをバタバタと左右に動かして画面のどこにあるか探す時間が勿体ない。そこで、マウスカーソルが画面上の所定の位置に来るようなbatを作成した。これをpathが通るところにお…

cv::cornerSubPix (サブピクセル推定) アルゴリズムの詳細

OpenCVにはcv::cornerSubPixという関数があるが、これの原理に関する説明が非常に簡素でわかりづらい。特徴検出 — opencv 2.2 documentation 上記ページに書いてある3つの式の意味についてまとめる。 式1について 上記OpenCVの説明ページで「各点に向かう画…

C, V, H キーが打てない問題の解消法 (When C, V, H keys don't work...)

TL;DR (English) It might depend on each environment, but in my case, "Right Windows" key is regarded as pressed down. Of course my keyboard doesn't have such a key... So I can't press it. To solve this problem, simulate "R Win" key (VK_RWI…

Direct Sparse Odometry (DSO) の要点まとめ

過去のエントリではWindowsへのインストール方法をまとめたが、今回は論文から理解したことをまとめる。 数学的な細かな話は最小限に抑え、私なりに要点だけまとめる。 # 間違ってるところがあるかもしれないので随時修正していくつもり。 論文 [1607.02565]…

画像間の特徴点対応付け~マッチング方式とオプティカルフロー方式~

最終出力として2画像間の特徴点の対応関係を求めたいという場合、その方式には大きく2種類がある。 この観点からまとめられている記事をあまり見た事がないので投稿。 マッチング方式 「特徴点 対応付け」や「特徴点 マッチング」と検索すると引っかかるのは…

Direct Sparse Odometry (DSO) を Win10, VS2017 でビルド

SLAM手法の1つである Direct Sparse Odometry (DSO) をWindows上でTUMのデータセットを使って動かしたくトライ。 ※DSOの要点まとめはこちらのエントリを参照: predator.hateblo.jp 環境 Windows 10 Home x64 Visual Studio Community 2017 CMake 3.10.2 ス…

Android Studio でデバッグ実行してもブレークポイントで止まらない場合の対処

タイトルの件でちょっとハマったのでメモ。 Android Studio でデバッグ実行してもブレークポイントで止まらない場合、考えられる理由は私の知っている範囲では次の3つ。まだまだ事例は他にもあるかもしれないですが。 私がハマったのは3番目の奴です。 1. As…

OpenCVを使いたいときのcmakeの書き方

次のように書けばよい。かなりシンプル。link_directoriesの指定は不要。 なぜならば、${OpenCV_LIBS}でライブラリへの絶対パスが指定されるためOpenCVが見つかった場合のみプロジェクトを作成したければif(DEFINED ${OpenCV_VERSION})でadd_executableやtar…

一発でわかる Iterative Closest Point のコンセプト図解

2つの点群を重ね合わせる手法にICP (Iterative Closest Point) というものがあります。 1992年に発表されてから、現在に至るまであらゆる派生手法が提案されています。ベーシックなICPの仕組みは一言で言うと「近傍点との距離の最小化を繰り返す」です。これ…

Visual Studio 2013 でソリューションを開こうとするとビジーになる場合の対処

Visual Studio 2013 でソリューションを開こうとするとビジーになる場合が前からちょくちょくあったが、 今日は全く開けなくなった。何回再起動したり.suoファイルを削除したりしても治らない。 Visual Studio 2013 hangs when opening a solution - Stack O…

OpenCV3では視差画像が作れない?

OpenCVで視差画像を作ろうと思って調べたところ下記のサイトを発見。ちなみに2008年の情報。 Momma's Wiki: OpenCV/距離計測 - ステレオマッチング(二眼カメラ)による距離計測 ※CvCalibFilte...これに従って、最新であるOpenCV3を使って試してみたら、cvFind…

PTAMをVS2013でWebカメラ使用版に改造してビルド

C++

PTAMビルド手順はいろんなサイトに載ってますが、100%その通りにやればビルドできたというわけではないので、そのメモ。 ビルド手順 参考サイト Win7(64bit)で初めてのPTAM コンパイル編│黒い森から来た少年 Goodbye, World! 【PTAM(1/3)】 PTAMコンパイル 2…

指定桁数&指数表記なしで整数・小数を適切に表示する方法

電卓等、数字の表示可能な桁数が限られる中で、適切に数字を表示したい場合の方法。 DecimalFormat decimalFormat1_ = new DecimalFormat("0.0000000E0"); DecimalFormat decimalFormat2_ = new DecimalFormat("0.#######"); String numberStr = decimalForm…

GridViewがsetEmptyViewで消えてくれない/出てきてくれない(未解決)

ListViewやGridViewでは、中身が空の時に表示するビューを設定できるらしい。ListView で表示リスト項目の無い場合のビューを指定する方法 - Android 開発入門そこで、GridViewにも適用してみたのだが、うまく動かなかったというメモ。(解決していない)

PCL の Verbosity Level

PCLのAPIが処理途中に出力するログはどれぐらい出力するか設定を変えられる。 全モードを試してみるコードのメモ。 #include <iostream> #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/io/pcd_io.h> #include <pcl/console/print.h> void doSomething() { pcl::PointCloud<pcl::PointXYZ> cloud; pcl::io::loadPCDFile("not_exist.pcd",</pcl::pointxyz></pcl/console/print.h></pcl/io/pcd_io.h></pcl/point_cloud.h></pcl/point_types.h></iostream>…

BGRとRGBを間違えて静止画/動画を保存してしまったときの変換

個人的に赤と青が逆の状態で保存してしまったー!ということがよくあります。 ちょっと検索した感じ、BGR→RGB変換のソフトウェアは公開されていないようだったので、OpenCVを使って自作。以下、C++のコード。

続・PCDファイルの保存読込速度・サイズ比較

1つ前の記事で、点群データ(pcl::PointXYZ)に関して保存読込速度とサイズ比較をした。PCDファイルの保存速度・サイズ比較 - ぷろぐ((>ω<))最後のまとめで、特徴量記述子については違う結果になるかもと予想したが、せっかくなので今回実際に比較してみた。

PCDファイルの保存読込速度・サイズ比較

ポイントクラウドの保存関数(PCD形式)は下記の3通りがある。 pcl::io::savePCDFileASCII 全部テキスト形式で保存 pcl::io::savePCDFileBinary ヘッダはテキスト形式で、データ部分はバイナリ形式で保存 pcl::io::savePCDFileBinaryCompressed ヘッダはテキス…

PCL1.7.2で一部のライブラリがエラーLNK1189でビルドできない問題の対処

PCLのビルド中にpcl_featureについては下記のようなエラーメッセージが出て使えなくなってしまった。 fatal error LNK1189: オブジェクトまたはメンバーの数がライブラリの最大許容数 65535 を超えています。 調べたところ下記のページが見つかった。被害者…

pcl::PointCloudやEigenを含むvectorをresizeするとエラーが発生する場合の対処

C++行列演算ライブラリ「Eigen」を含む構造体などのstd::vectorは、下記のページで説明されているような工夫が必要となる。Eigen: Using STL Containers with Eigen例えばこんなコードが書ける。 #include <vector> #include <Eigen/Core> #include <Eigen/StdVector> struct Hoge { Eigen::Vector</eigen/stdvector></eigen/core></vector>…

VeloViewで出力した点群データ(CSV)をPCLで読み込む

Velodyne社のLIDAR「HDL-32e」や「HDL-64e」用のViewerにVeloViewというものがあります。VeloViewでは点群データをCSV形式でエクスポートできます。そのCSVデータをpcl::PointCloudとして読み込むコードのメモ。CSVデータの1行目は、カラム名が出力されてい…

PCLVisualizerでポイントクラウドの透明度を反映させて描画する方法

pcl::PointXYZRGBAというタイプのポイントクラウドを作り、アルファ値(a)を0にしてもPCLVisualizerで透明にならないなぁと思っていたのですが、カラーハンドラーを設定すればちゃんと透明度に合わせて描画されることに気づきました。以下、サンプル #include <pcl/point_types.h></pcl/point_types.h>…

【PCL入門】 Point Cloud Library のインストール

今回はPCLを使えるようにするまでを紹介します。

【PCL入門】 Point Cloud Library について

PCLはまだまだ英語の文献の方が多いと思うので、個人的に学んだことを何回かに分けて投稿しようと思います。次のような読者を想定しています。 PCLをよく知らない そもそもC/C++もあまり慣れていない というかプログラミングにあまり慣れていない ですので、…

Windows 8 で HSP3 アプリを終了時にランタイムエラーが発生する場合の対処

昔 Windows Vista / 7 向けに作ったHSP3製アプリケーションを Windows 8 で動かすと、終了時に "Microsoft Visual C++ Runtime Library Runtime Error" が出る場合があることに気づきました。同じ症状で困っている人もいるみたい。 Microsoft Visual C++ Run…

VS2013 で FLANN 1.8.4 をビルド

VS2013 での FLANN 1.8.4 のビルドのメモ。あるヘッダファイルを修正しないとうまくビルドできなかった。 環境 Windows 7 Professional x64 Microsoft Visual Studio Premium 2013 エラー内容 ここと全く同じ FLANN errors on 64bit MSVC2010 (debug) · Issu…

VS2013 で Boost 1.55.0 をビルド

VS2013 での Boost 1.55.0 のビルドのメモ。あるヘッダーファイルに修正を加えてからでないとビルドが成功しなかった。 環境 Windows 7 Professional x64 Visual Studio Premium 2013 エラー内容 c:\Boost\boost_1_55_0\boost/archive/iterators/transform_w…