DirectML使ってみた

冬は寒いのでDNNの学習を回すのにぴったり!GPUの廃熱で暖房費節約だぜ!などと思ったけれど、メインマシンはメインOSはWindowsで運用していてビデオカードもAMDなのでDNNフレームワークを動かすのはしんどい。 調べたらDirectMLってのでWindows+AMDでもいけ…

venvのトップディレクトリにPyTorchの重みファイル(pth)を置いちゃダメって話

横着したらハマったので自戒を込めてメモ。 まとめ Pythonには「サイト固有の設定フック」という機能がある venv環境のトップディレクトリに入っている .pth ファイルを読み込んで処理する PyTorchの学習済み重みファイル(拡張子 .pth)を置いていると上記…

CUDA実装のONNXRuntimeカスタムオペレータを実装してみた

前回の続き。 前回の記事 ↓ maminus.hatenadiary.org 今回のソースコード ↓ github.com ありがたいことにGitHubのIssueでCUDA版のカスタムオペレータ実装方法について問い合わせをいただいたので時間ができた時に実装してみた。 ※ONNXRuntimeのカスタムオペ…

ONNXRuntimeのカスタムオペレータを実装してみた

ソースコードはここ↓ github.com 背景とか TensorRTを使おうとしてモデルの一部をONNXのカスタムオペレータにすることがある。(TensorRTのプラグインを使うケース) ただカスタムオペレータを含むモデルはそのままではONNXRuntimeで推論できない。というこ…

TensorRTビルド(とEfficientDet実行環境)のDockerfile作ってみた

AutoML版EfficientDetをTensorRT化しようとして色々あってTensorRTのビルド環境と一緒に環境作りたくなったのでDockerfileとscriptを作ってgitにpushしてみた。 github.com はまったことや注意点を列挙したい。 pycudaより前にnumpyのインストールが必要 set…

TensorRTでfloat型tensorをResizeやSliceの第二以降の引数に指定するモデルが内部エラーになるのでフォーラムに連絡してみた

とあるディープラーニングモデルをONNXに変換してTensorRTで動かそうとしたらInternal Errorが出るのでNVIDIAさんのフォーラムに凸ってみた。 該当スレッドはここ。 モデルに関する簡単な説明 まずはONNXのResizeオペレータとSliceオペレータについて。 Resi…

PyTorchモデルをONNX化する際にカスタムオペレータの実装が必要っぽい件

やりたかったこと PyTorchモデルをONNXファイルにexportしたい モデルにはカスタムオペレータを含む カスタムオペレータの実装は存在しない(該当部分は推論不能) カスタムオペレータはONNXでそれらしきop_typeを持つノードで出力してくれればOK やってみた…

Axial-Attentionについて調べたことのメモ

Axial-DeepLab (ECCV 2020, Spotlight、arXiv:2003.07853)の論文1を読んでいて、Axial-Attentionが具体的にどんなものなのかよく分からなかったので、色々調べたり著者実装2を自分で実行してみたりして「こんな感じかなぁ」という認識に至ったので内容をメモ…

ROCm3.5でPyTorchビルド

前回の続き?のような何か。 maminus.hatenadiary.org 今回やったこと ROCm3.5 Docker環境 PyTorchをmasterブランチでビルド torchvisionをmasterブランチでビルド 上記に伴い公式にバグ報告 前回同様PyTorch版EfficientDet1で動作確認 前回からの変化点を中…

cv::fisheye::initUndistortRectifyMapのPについて

自分用のメモ OpenCV公式のIssue1にある通り、cv::fisheye::initUndistortRectifyMap()の実装にバグがあるような気がする。x、yの値が0〜size.width、0〜size.heightになっているが、uvの計算式は-1.0〜+1.0?の範囲を想定しているように見える。 for( int i…

PyTorch版EfficientDetをROCm環境で実行してみた

PyTorch版EfficientDet1のカメラで撮影した画像に推論結果を重畳してくれるデモをROCm環境で動かしたので手順などをメモ。 環境 Radeon RX 580 Ubuntu 18.04.4 LTS(ホスト側) dockerイメージ Docker Hubでrocm/pytorchの中からそれっぽいのを選択。 Ubuntu…

pip installできるようにしました

前回作ったなんちゃってライブラリを改良?したので報告。 maminus.hatenadiary.org 前回はライブラリをpip install .すらできなかった。 こんなエラーになる。 $ pip install . Processing /home/maminus/python3.6/ommle ERROR: Command errored out with …

ONNXモデルの中間ノード出力を抽出するライブラリを作ってみた

先日記事にしたこれを実装してみた。 maminus.hatenadiary.org ソースコード GitHubに上げました。まともな?ライブラリを作るの初めてなので何か間違ってるかも・・・(特にPipenv自信なし。pip install も直接gitを指定できなかった。たぶんどこか間違って…

浮動小数点誤差の自分メモ

普段適当にfloat32やfloat16使ってるけど、適当すぎてたまに困るので勉強のために机上での考察とプログラムを動かして検証してみた。 オーバーフロー、アンダーフロー 指数部が表現可能な範囲外を超えるケース float32なら指数が+127を超えるとオーバーフロ…

ONNXモデルの中間層出力を取得するアイデア

忘れないように自分用のメモ。 やりたいこと ONNXモデルを使って推論をする時に最終出力ではなく中間ノードの出力がほしい アイデア 2フェーズに分けて処理する 第一フェーズでは中間ノードの出力にShapeノード+出力ノードを接続する make_node('Shape', i…

OpenCL/CUDAのスレッド間通信めも

CUDAとOpenCLでスレッド同士の通信でどうするんだっけ?と思って調べたことを自分用にメモ。 AMD(OpenCL)はshuffleがなさそう retval = sub_group_broadcast(value, thread_id)がある 特定の1つのthread_idからWavefront全体に値をわたせる 隣のスレッドと…

YUY2のRAW画像を保存してPythonでRGB化

やったこと YUY2出力可能なUSBカメラをLinuxに接続 ffmpegでRAW画像キャプチャしてファイル保存 Pythonからnumpyで読み込み+OpenCVでRGBへ変換 正確にはBGRにしてファイル保存 キャプチャ(コマンドライン) $ ffmpeg -f v4l2 -input_format yuyv422 -video…

KerasでLeakyReLUを使った

完全に自分用のメモ。KerasでLeakyReLUを使おうとしたら怒られたので正しい(?)書き方をメモしておく。 環境 Keras 2.2.2 plaidml 0.3.5 Python 3.6.4 Windows 10 Pro 警告を食らったコード import plaidml.keras plaidml.keras.install_backend() from kera…

XavierにTensorFlowをインストール。ついでにjupyter notebookも入れる

Jetson AGX XavierにTensorFlowとJupyter notebookをインストールしたのでメモ。 基本的に公式サイト*1とフォーラム*2に書いてある通り。 前提 JetPack-4.0インストール済みの状態から始める インストール # 熱くなるのでファン全開で冷やす ubuntu@jetson-0…

Jetson AGX Xavier買いました

Jetson AGX Xavier、早期注文が可能になったのでさっそく買ってみた。不在だった荷物の引き取りに手間取ったので今日受け取ったけど、9/11に到着したみたい。 [2018/09/15 02:15追記]なんかGTC Japan以降、名称に「AGX」がつくようになったらしい。JetPackの…

Fancy Indexingが使えるリストを実装してみた

自分用のメモ。Pythonでlistにデータを入れてnumpyみたいにインデックスをリストでわたして取り出したいと思ったので作ってみた。実装はこちら。 from collections import UserList #class FancyIndexingList(list): 2020/02/03修正。UserListを継承すべき c…

cv::gemm()のOpenCL実装が小さな行列に対応してなかった件

OpenCV 3.4.0での話。OpenCL有効化済みのOpenCVをAMD GPU環境で実行。OSはWin10。以下のソースコードで行列積を計算しようとしたら結果がぐちゃぐちゃになっていた。 ソースコード #include <opencv2/core.hpp> #include <iostream> int main(void) { constexpr int input_size = 4; // </iostream></opencv2/core.hpp>…

Win10のAnaconda環境にclpyをmingwビルドで入れた話

記事タイトル間違ってません clpy*1というcupyをベースに?バックエンドをOpenCLにしたライブラリが出ていたのでさっそくMinGWでビルドしてみた。 環境 前回と一緒 Windows10 pro 64bit Anaconda3 5.1.0 pip 9.0.1 MinGW w64 7.3.0 clpy 2.1.0a0 clpyはGitHu…

Win10のAnaconda環境にpyopenclをmingwビルドで入れた話

pyopenclをpip installしようとしたら、cl.exeを要求されてC++ Build Tools入れるのが面倒なので軽く絶望したけど、なんやかんやでMinGWでのビルドに成功したのでメモ。 環境 Windows10 pro 64bit Anaconda3 5.1.0 pip 9.0.1 pyopencl 2018.1.1 MinGW w64 7.…

JetsonTX2にCaffe2を入れる

JetPack3.2が正式リリースされたとのことなので、開発PCをUbuntu16.04、TX2をJetPack3.2に入れなおした。 Chainerはデータごと死んだ環境がまっさらに戻ったので、せっかくなので他のDLフレームワークでも入れて遊ぼうということでTensorFlowはJetsonだとイ…

JetsonTX2でOpenCVをビルド

発端 ChainerCVのチュートリアル*1をJetson TX2で試したところ、「OpenCVが入ってないから処理時間かかるよ」みたいなWarningが表示された。 「OpenCV4Tegra入ってるのでは?」と思って調べてみたところ、Python2からは呼び出せるがPython3からは呼べなかっ…

JetsonTX2にChainerCVを追加インストール

前回*1につづいて、さらにChainerCVを追加したのでメモ。 手順 ChainerCVをインストールしようとすると、JetsonはPillowをソースコードからビルドしようとするらしくlibjpegとかのヘッダファイルなどが入っていないとエラーになる。こちら*2を参考にして依存…

JetsonTX2にPython3を追加してJupyter notebookでChainer

前回*1は適当に環境構築したらPython2.xになってしまった。今回はTX2にPython3.xを入れてJupyter notebookから使う。もちろんPython3からもChainer、CuPyを使えるようにする。 Python3.x追加 いつの間にかpython3がインストール済みだったので足りないパッケ…

ビルドしたOpenCVを動かしてみた

ビルドしたOpenCVでOpenCLが使えるようになったはずなので、実際に試してみた。 ビルド構成 import cv2 print(cv2.getBuildInformation()) 上のコードで出力したビルド構成がこちら。Qtを使っているとモジュールのimportに失敗するのでQtを外している。 Gene…

MinGWでOpenCVをビルドしてみた

公式で配布されているOpenCVはOpenCLに対応していないconfigって噂を聞いたので、せっかくだからビルドしてみた。しにそうになったので記録として残す。 Qtがなくても一部機能制限されるだけで動くからQtのビルドにチャレンジするのはやめよう(戒め) 環境、…