やりたいこと
YOLOv4(darknet版)を自作データセットで転移学習を行い、物体検出を行いたいです.
環境はGoogle Colabiratoryで行います.
また,検出を行うファイル形式は画像(.png)です.
やったこと・参考にしたサイト
基本的にこのサイトのYOLOv4の項目を参考にして進めました.このサイトはAlexeyAB氏のYOLOv4のgitページのHow to train (to detect your custom objects) の項目を参考に書かれています.
サイトの通りにしたこととしては,
- フォルダの構成
- yolov4-custom.cfgの書き換え
(クラス数などは自分のデータセットに合わせて書き換えた)
- Makefileの書き換え
以上です.
makefileを実行した際に600行ほどのwarning:が出ましたが,Errorが1つもなかったので無視しました.
以下は実際にColabo上で実行したコードになります.
セルごとに分けています.
python
1# Google ColabとGoogle Driveを連携 2from google.colab import drive 3drive.mount('/content/drive')
python
1%%bash 2# ディレクトリの移動 3cd /content/drive/MyDrive/signal_detection/ 4# gitのダウンロード 5git clone https://github.com/AlexeyAB/darknet.git
python
1# change makefile to have GPU and OPENCV enabled 2%cd /content/drive/MyDrive/signal_detection/darknet 3!sed -i 's/OPENCV=0/OPENCV=1/' Makefile 4!sed -i 's/GPU=0/GPU=1/' Makefile 5!sed -i 's/CUDNN=0/CUDNN=1/' Makefile 6!sed -i 's/CUDNN_HALF=0/CUDNN_HALF=1/' Makefile
python
1!make
python
1#初期重みのダウンロード 2%cd /content/drive/MyDrive/signal_detection/darknet 3!wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.conv.137
python
1学習の実行 2!./darknet detector train data/obj.data cfg/yolov4-custom.cfg yolov4.conv.137 -dont_show -map
発生した問題
YOLOv4の転移学習が終わり,学習済み重みが準備出来たので推論を行うことにしました.
推論したいのは画像ですので,上記で参考にしたgitのdarknetフォルダ内にあるdarknet_images.pyを用いて推論を行おうとすると
libdarknet.so: cannot open shared object file: No such file or directory
のエラーが発生しました.
以下エラー全文です.
Error
1/content/drive/MyDrive/signal_detection/darknet 2Traceback (most recent call last): 3 File "darknet_images.py", line 8, in <module> 4 import darknet 5 File "/content/drive/MyDrive/signal_detection/darknet/darknet.py", line 236, in <module> 6 lib = CDLL(cwd + "/libdarknet.so", RTLD_GLOBAL) 7 File "/usr/lib/python3.7/ctypes/__init__.py", line 364, in __init__ 8 self._handle = _dlopen(self._name, mode) 9OSError: /content/drive/MyDrive/signal_detection/darknet/libdarknet.so: cannot open shared object file: No such file or directory
困っていること
libdarknet.soへの絶対パスを通してあげると動くという旨の海外のstack over flowを見つけたので自身のドライブ上でlibdarknet.soの検索を行いましたが見つからなかったのでそもそもこのファイルが作成されていないことがわかりました.
YOLOv3で推論を行う際にlibdarknet.soがnot foundのエラーが出た方のQiitaにはMakeが上手くいっていればこの問題は起こらない旨のことが書かれていました.
そこで,はじめにmakeを実行したさいにものすごい量の警告がでていたことを思い出しました.
一応目を通してみたのですがいまいち原因がわかりません.
個人的にはmakeが正常に実行されていないせいで,libdarkne.soが作成されておらず,またmakeが正常に実行されていない原因はmakeを実行した際の大量の警告文にあると考えているのですが,正直警告文だけで600行もあるのでどうにもならない気がしています.
似たようなことになったことがある方,有識者の方,お助けいただけないでしょうか.
よろしくお願いいします.
回答1件
あなたの回答
tips
プレビュー