AI
condaのバージョンを上げると直った。以下を実行するとバージョンアップできる。 conda upgrade -n base conda 参考: stackoverflow.com
Config.PARAM = "1" のようにstaticな変数にパラメータを保持しているような場合、これを変更するテストコードがあると、そのテストコード以降に実行される別のテストコードがコケることがある。 他のテストに影響を与えないようにしたいので、fixtureを使っ…
C#からPythonに画像ファイルを渡すとチャネルの並びがBGRになるという現象がおきた。 BitmapDataのデータをByte配列に変換し、先頭の要素の値を確認すると、RGB画像の先頭のピクセルの色の並びと違っていた。つまり、BGRになっていた。 以下のような記事もあ…
str()でlistをシリアライズしようと思ったときのこと。 各クラスの文字列表現を変更したかったので strを各クラスで実装し、listに詰めてstr(lst)のようにstr()に渡したがstrが呼ばれない。。 調べてみると、str(lst)はlstの各要素のreprを呼ぶらしい。lstは…
文字コードを適切に指定していなかったため。 例えば以下のように指定すると直る。 with open(config, 'rt', encoding='utf8') as yml: config_obj = yaml.load(yml) 参考: github.com
get(cv2.CAP_PROP_FPS) や get(cv2.CAP_PROP_FRAME_COUNT) を実行すると1000とかデタラメな数字になる。 総フレーム数/FPSで動画の秒数になるかと思ったが、ならない。 これじゃあwmvをInputにして推論できないじゃん。。 3g2ファイルは大丈夫だった。 参考:…
調べた限り、出力先だけを修正することはできず、 logging.config.dictConfig(config)でログ周りの設定を一括で行い、 出力先も修正することになりそう。 例えば以下のような感じ config: dict = self._load_config() if "myFileHandler" in config["handler…
以下によると、get(cv2.CAP_PROP_FRAME_COUNT)は動画の大体の総フレーム数を返すらしい。 stackoverflow.com 正確な総フレーム数を計算するのって時間かかるのかな・・かなり謎な仕様だ。
aws s3 syncはバケットに入っているファイルが多いほど重くなる。 aws s3 cp --recursiveを使った方が良い。 aws configureでmax_concurrent_requestsの値を大きくすると速くなる。 参考: stackoverflow.com aws.amazon.com docs.aws.amazon.com
Browse the State-of-the-Art in Machine Learning | Papers With Codeでよく見るCOCO minivalとはなんぞやと思っていたが、 COCOのvalのうち5000件を取り出してvalidation setにしたものらしい。 物体検出ではこのデータセットを使うのが標準的らしい。なる…
arr[arr < 0] = 0 でいける。簡単にかけていいなぁ。 参考: www.relief.jp
cv2.cvtColorに渡すndarrayの型をunit8にしたら直った。 参考: qiita.com
OpenCVがマルチバイト文字に対応していないのが原因。 以下の記事にcv2.imwriteを使わずにファイルを書き出す方法があるのでこれで解決出来た。 qiita.com
ArcFaceはinputの形としてchannel firstを想定しているが、channel lastで渡すとこのエラーが出る。 エラーメッセージから原因が想像できない。。 channel firstに変換すると直る。 参考: github.com
原因はnumpyのバージョン1.16.3からload関数の仕様が変わったため。 np.load('/path/to/file.npy', allow_pickle=True)のようにallow_pickle=Trueを追加するか、 numpyのバージョンを下げる。ただし、np.loadで悪意のあるファイルを読み込むと任意のコードが…
以下にフォーマットとコードサンプルがあり参考になりました。COCO形式のAnnotationを生成するのは結構めんどい。。 qiita.com qiita.com
condaのパッケージはインストールされるのに、なぜ。。 ログは以下のような感じ。 Ran pip subprocess with arguments: ['C:\\Users\\name\\AppData\\Local\\Continuum\\miniconda3\\envs\\myenv\\python.exe', '-m', 'pip', 'install', '-U', '-r', 'C:\\my…
Permission Errorが出る原因は権限の無いところにパッケージを保存しようとしているからなので、 --userを付けてログインしているユーザの領域に保存するようにすればいい。 参考: pyteyon.hatenablog.com
物体検出など特定のタスクを実行するモデルの探し方。 普通は「精度」「速度・メモリ使用量」がトレードオフになっているのでそのバランスが要件に近いものを探す。 基本方針は「自分で網羅的にモデルを探すのは難しいので、網羅的に調べている人の調査結果…
ユーザのPC上で推論する場合、CPUを使いすぎるとPC全体が重くなって ユーザビリティが下がるので、CPU使用率を制限したい。 CPU使用率の上限を指定することはできないが、TensorFlowが使う CPUコア数は指定出来るのでこれでPC全体が重くなることは避けられる…
TensorRTを使って推論を高速化しようとしたところ、CPUでは使えないという情報が。。 forums.developer.nvidia.com www.reddit.com NVIDIAが作ってるからそりゃそうか。。 類似ソリューションを探したところ、OpenVINOというものをINTELが作っているらしい。…
顔検出をUltraLightFastGenericFaceDetectorでやり、顔認証をMobileFaceNetでやるという流れ。 公式実装は以下にある。 github.com github.com これらを使って顔検出・顔認証をした実装が以下にあるのでこれをパクればお手軽に顔検出・顔認証ができる。便利…
原因はonnxがPython3.8に対応していないことだった。Pythonを3.7にダウングレードしたら直った。 参考: github.com
model zooから取ってきたモデルを動かすコードを探していたところ、以下が見付かった。 これを参考にSSD MobileNetを動かしたらサクッと動いたので良かった。 github.com
原因はcmakeがインストールされていないこと。 pip install cmake を実行してから再度pip install dlibを実行すると直った。 参考: stackoverflow.com
原因は pip install insightface を実行するとpip版のnumpyがインストールされるが、それではだめでconda版のnumpyを使わないといけないため。 以下を実行すると直った。 pip uninstall numpy conda install numpy 参考: github.com
SSD MobileNetV3のpretrained modelを探していたが、意外と見付からなくて困った。 最終的には以下にあったものを使った。 github.com MobileNetV3という名前のモデルにはImageNetで学習したもの(=物体検出モデルではなく、画像分類モデル)もあり、混乱し…
原因はMXNETのバグ。mxnet-mklの1.4.0には以下で報告されているバグがあり、このエラーが出ていた。 github.com pip install mxnet-mkl==1.5.0 を実行し、1.5.0をインストールすると直った。
TensorRT周りは色々ややこしい。。 TensorFlowに組み込まれたTensorRTがあり、これをTF-TRTという。 TensorRT(TRT)はNVIDIAが開発している深層学習を高速に推論するためのライブラリ。 TF-TRTはTensorRTが対応している部分のみTensorRT化して推論する。 ここ…
以下で紹介されているコードを使って編集距離計算できました。ありがたい・・ stackoverflow.com