YOLOって知ってますか?
私は知りませんでした。台湾のインターンシップで初めて使うから環境を整えろって言われて、なんのこっちゃぁって感じでした。
簡単に言うと、画像認識用のディープラーニングのネットワークだそうです。フレームレートが早いのが売りらしい。
画像を読み込ませて画像検出させると70近いフレームレートが出るみたいです。
脳科学を勉強しているのでついつい人間の脳と比べてしまうと、70FPSって人間の脳の通常の処理系統より早いですよね。
ついでに、検出可能な物体は9000種類を超えるんだとか。学習後のネットワークが作成者のホームページに載っているので簡単にダウンロードして使うことができます。
唯一の難点はLinuxでしか使えないことでしょうか。OSの入っていないPCにUbuntuをインストールするところから始めましたが、Ubuntuなんてめったにつかわないのでてこずりました。
YOLOを使うにはDarknetという作者が作った中二病みたいな名前のフレームワークを使わなきゃならないのですが、それをCUDAと一緒に導入するのがたいへんだったので備忘録として残します。
Darknetをmakeすると何かが見つからないというエラーが・・・。
ptxas /tmp/tmpxft_00001c51_00000000-15_convolutional_kernels.compute_30.ptx, line 115; error : Call has wrong number of parameters ptxas /tmp/tmpxft_00001c51_00000000-
というメッセージが何回か出て、最後に
fatal : Ptx assembly aborted due to errors Makefile:91: recipe for target ‘obj/convolutional_kernels.o’ failed make: *** [obj/convolutional_kernels.o] Error 255
と出てきました。
ネットで検索してみると同じようなエラーがたくさん出てきて。
ただ、あんまり日本語での説明はなかったです。
結局、ここを見て解決しました。
darknet/makefilrってファイルの
NVCC=nvcc
ってこところを
NVCC=/usr/local/cuda/bin/nvcc
に(パス扱いのPCのcudaのパスに合わせてください)
CODAを複数のバージョンで入れてる人はインストール時にパスが通らないので、/usr/local/cudaのところを使うバージョンに合わせて変えなくちゃいけないみたいですね。自分で使うバージョンのnvccのパスを通せばいいんですが、Linuxに不慣れでここもてこずりました。
この後もエラーが続出して、最終的に使用しているYOLOv2はCUDA9.2には対応してなくてCUDAとcuDNNを入れ直すはめに・・・。
この後に、libippicv.aってファイルがないってエラーも出ました。
このファイル自体を検索で探し出したら、
/usr/local/lib/にsudo権限でコピーすればいいみたいです。
こういうことは慣れてないのでしょうがないんですけど、YOLOを動かすだけで一日つぶれるありさま笑。はじめは速攻で終わると思ったのですが。
うーん。バージョンをちゃんと調べないでインストールするなんてミスですね。言い訳すると、使っているのが一つ古いYOLOだって知らなくて、最新のYOLOのインストールのレファレンスを見てたら間違いました。
普段、研究室では機械学習のライブラリー(TensorFlowとか)を使うのは禁忌なので、バージョンを気にすることがあん余りなかったんですけどこれからは気にしたいと思います。まぁ、日本に帰ったらCuPyを使わなくちゃならなくなると思うので、CUDAに少し慣れることができてよかったです。
働くって大変ですね。まぁ研究室でもそんなもんですけど。
それでは。