日々精進

新しく学んだことを書き留めていきます

2018-01-01から1ヶ月間の記事一覧

Windowsで複数のアプリから同時にカメラを使う方法

IT

Windowsで複数のアプリから同時にカメラを使えない理由: ・パフォーマンス上の問題が発生しやすい ・動画を同時にキャプチャするアプリ間で動画のフォーマットを合わせる必要がある stackoverflow.com ・ドライバが同時に1つのアプリしか動画をキャプチャす…

windowsで仮想カメラを作る方法

IT

windowsでsnap cameraのようにカメラ画像を加工するなど処理をした上で他のアプリに加工後の映像を流したり、同時に複数のアプリからカメラ画像を利用するためには 仮想カメラを作る必要がある。 その方法を調査した結果が以下。 Media Foundationは動画のキ…

conda env create -f environment.yamlを実行してもpipのパッケージがインストールされない

AI

condaのパッケージはインストールされるのに、なぜ。。 ログは以下のような感じ。 Ran pip subprocess with arguments: ['C:\\Users\\name\\AppData\\Local\\Continuum\\miniconda3\\envs\\myenv\\python.exe', '-m', 'pip', 'install', '-U', '-r', 'C:\\my…

pip installでPermission Errorが出た場合は--userを付ける

AI

Permission Errorが出る原因は権限の無いところにパッケージを保存しようとしているからなので、 --userを付けてログインしているユーザの領域に保存するようにすればいい。 参考: pyteyon.hatenablog.com

良いモデルの探し方

AI

物体検出など特定のタスクを実行するモデルの探し方。 普通は「精度」「速度・メモリ使用量」がトレードオフになっているのでそのバランスが要件に近いものを探す。 基本方針は「自分で網羅的にモデルを探すのは難しいので、網羅的に調べている人の調査結果…

TensorFlowが使うCPUコアの数を制限する

AI

ユーザのPC上で推論する場合、CPUを使いすぎるとPC全体が重くなって ユーザビリティが下がるので、CPU使用率を制限したい。 CPU使用率の上限を指定することはできないが、TensorFlowが使う CPUコア数は指定出来るのでこれでPC全体が重くなることは避けられる…

CPU版のTensorRTはOpenVINO

AI

TensorRTを使って推論を高速化しようとしたところ、CPUでは使えないという情報が。。 forums.developer.nvidia.com www.reddit.com NVIDIAが作ってるからそりゃそうか。。 類似ソリューションを探したところ、OpenVINOというものをINTELが作っているらしい。…

軽い顔検出・顔認証モデルならMobileFaceNetとUltraLightFastGenericFaceDetectorがよさそう

AI

顔検出をUltraLightFastGenericFaceDetectorでやり、顔認証をMobileFaceNetでやるという流れ。 公式実装は以下にある。 github.com github.com これらを使って顔検出・顔認証をした実装が以下にあるのでこれをパクればお手軽に顔検出・顔認証ができる。便利…

pip install onnxを実行すると「ERROR: Command errored out with exit status 1 」エラー

AI

原因はonnxがPython3.8に対応していないことだった。Pythonを3.7にダウングレードしたら直った。 参考: github.com

物体検出モデルを取ってきて動かす時のサンプルコード

AI

model zooから取ってきたモデルを動かすコードを探していたところ、以下が見付かった。 これを参考にSSD MobileNetを動かしたらサクッと動いたので良かった。 github.com

pip install dlibを実行すると「cmake must be installed to build the following extensions _dlib_pybind11 windows」エラー

AI

原因はcmakeがインストールされていないこと。 pip install cmake を実行してから再度pip install dlibを実行すると直った。 参考: stackoverflow.com

import insightfaceを実行すると「ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'」エラー

AI

原因は pip install insightface を実行するとpip版のnumpyがインストールされるが、それではだめでconda版のnumpyを使わないといけないため。 以下を実行すると直った。 pip uninstall numpy conda install numpy 参考: github.com

SecureRandomのSeedがLinux環境で固定できない

IT

以下の現象が起きた。 Windows環境ではSecureRandomのコンストラクタにSeed値を渡すとSeedを固定できる(=同じ文字列を何度も暗号化すると毎回同じ値が出力される) Linux環境では同じコードでもSeedを固定できない docs.oracle.com ↑のHPに以下の記載があ…

SSD MobileNetV3のpretrained modelはmodel zooにある

AI

SSD MobileNetV3のpretrained modelを探していたが、意外と見付からなくて困った。 最終的には以下にあったものを使った。 github.com MobileNetV3という名前のモデルにはImageNetで学習したもの(=物体検出モデルではなく、画像分類モデル)もあり、混乱し…

json.loadsで文字列をdictに変換しようとしたら「json.decoder.JSONDecodeError」エラー

IT

jsonのKeyはダブルクォートで囲まれてないとだめっぽい。 Valueはシングルクォートはだめで、文字列はダブルクォートで囲まないとだめっぽい。 参考: ja.stackoverflow.com

クライアント証明書でWebアプリの認証をする方法

IT

クライアント証明書での認証のやり方を調べてみたところ以下でできるっぽい。(未検証ですが・・) Global Signなどでクライアント証明書を取得する クライアント証明書をクライアント端末とサーバの両方のルート証明書としてインストールする https通信する…

Jacksonはgetterもjsonに出力する

IT

Jacksonを使ってオブジェクトをjson形式にシリアライズしていたんだけど、 getString のようなメソッドを定義したらjsonの項目に"string"が追加された。。 メソッド名がgetXxxx(booleanの場合はisXxxx)の場合、自動的に出力対象になるらしい。 この仕様罠だ…

windows環境でimport mxnetを実行すると「OSError: [WinError 126] 指定されたモジュールが見つかりません。」エラー

AI

原因はMXNETのバグ。mxnet-mklの1.4.0には以下で報告されているバグがあり、このエラーが出ていた。 github.com pip install mxnet-mkl==1.5.0 を実行し、1.5.0をインストールすると直った。

PyTorchを使ったアプリを実行すると「RuntimeError: cuda runtime error (38) : no CUDA-capable device is detected at /tmp/pip-req-build-ocx5vxk7/aten/src/THC/THCGeneral.cpp:50」エラー

IT IT

原因ははっきりしないが、EC2のDeep Learning用AMIを使ってEC2インスタンスを作り直したら直った。 CUDA周りのライブラリがインストールされてなかったのかな。。

ブラウザの実験的な機能を使う方法

IT

現時点でのWebNFCのように、chromeでexperimentalな機能として実装されている機能を使いたい場合、以下でできる。 chrome://flags/#enable-experimental-web-platform-features をEnabledにする Origin Trialsに申し込む Origin Trialsは特定のドメインにア…

iOS,Androidアプリ間連携について

IT

iOSはUniversal LinksまたはURL Schemeを使って別のアプリを呼び出し、データを渡すことが出来る。 8vivid.net Androidの場合はIntentを使って同様のことが出来る。 stackoverflow.com 上記はWebアプリからも可能。 ただし、呼び出した別アプリから処理結果…

docker containerを起動すると「stderr: nvidia-container-cli: initialization error: cuda error: no cuda-capable device is detected」エラー

IT

原因はGPUのないマシンでruntime: nvidiaが入っているdocker compose yamlを使ってコンテナを起動しようとしたため。 GPUありのマシンで実行すると直った。 参考: github.com

突然EC2インスタンスにsshでログインできなくなったら「ステータスチェック」を確認する

IT

EC2のトラブルで接続出来なくなっている可能性があるのでAWSコンソールで「ステータスチェック」を確認した方が良い。手順は以下参照。 docs.aws.amazon.com

Docker操作を楽にするエイリアス

IT

以下の設定を使わせて頂いております。これでdockerコマンドの実行がすごい楽になった。 qiita.com ↓もよく使うのでaliasに追加しようかな。 docker commit $(docker ps --latest --quiet) debug && docker run -it debug /bin/bash

AIモデルを作る時に精度目標を求められたら楽観 / 悲観 / 中間の場合の目標を決める

IT

モデルの精度改善は非常に見積が難しく、ビジネス側からいつまでに精度何%を達成出来るのかと聞かれると答えに困ってしまう。。 下記の記事を見て楽観 / 悲観 / 中間の場合の目標をエイヤで決めて出すのが良さそうだと思った。 参考: f-bun.hatenablog.com

CentOSでsshdを自動起動する

IT

以下でできる。 systemctl enable sshd.service 参考: www.server-memo.net

CloudWatchのログを一括ダウンロードする方法

IT

awslogsを使うとできる。というか、AWS console画面からポチポチすればできるようになっててほしいんだが。。 pip install awslogsでインストール。 ログ取得するコマンドの例は以下。ログの開始時刻を-sで指定しないとエラーになるので注意。 awslogs get <log_group_name> <log_stream_name></log_stream_name></log_group_name>…

PyCharmのProfilerで時間を計測すると「<method 'acquire' of '_thread.lock' objects>」がほとんどのCPU timeを使っている

IT

原因は別スレッドでの処理はすべて「」と表示されるため。 なのでパフォーマンス計測をする場合はシングルスレッドで動かさないといけない。 参考: stackoverflow.com

pillowでresizeすると「SystemError: tile cannot extend outside image」エラー

IT

原因はresize後の画像サイズのwidthが0になっていたため。 参考: docs.aws.amazon.com

ALB経由で時間のかかるリクエストを送ると502 GATEWAY TIMEOUTが発生する

IT

EC2上にデプロイしているアプリのタイムアウト値は200秒などかなり長い時間になっているのに、それよりも短い70秒ぐらいのリクエストがタイムアウトになっていた。 原因はALBのアイドルタイムアウト値。アプリサーバがリクエストを受けてからレスポンスを返…