本記事はGoogle Colab上でYOLOの学習をした際に解決に時間がかかったエラーをまとめたものです。
初歩的なものが多いですが大目に見ていただけると幸いです。
改行コード周り
./src/utils.c:256: error: Assertion `0' failed
色々原因があるようですが、私の場合.dataファイルの改行コードがCRLFになっていることが原因でした。
テキストエディタ等でLFに変更すれば治りました。
手元のWindows環境で動かす分にはエラーが出なかったので特定に時間がかかりました。
STB Reason: can't fopen
Cannot load image "data/images/xxx.jpg
原因はtrain.txtやtest.txtの改行コードがCRLFになっていることでした。
私はこちらのprocss.pyを用いて学習・テストデータの振り分けをしていたのですが、Windows上で実行した場合勝手にCRLFになってしまうようで、少し改造する必要がありました。
参考にあるように、ファイルを開く際に改行コードをnewlineで指定してやると良いようです。
file_train = open(path_data + 'train.txt', 'w',newline="\n")
file_test = open(path_data + 'test.txt', 'w',newline="\n")
参考:Windows上で実行したPythonの出力ファイルの改行コードが変わる
メモリ不足によるエラー
/bin/bash: line 1: 761 Killed
数字は時によって変わります。解決法からの類推ですが、Out of memoryエラーのことと思われます。
YOLOは.cfgで指定したbatch/subdivisionの枚数を一度に(ここ正確性に欠けます)処理するので、例えば batch 64 subdivision 16の場合は一度に4枚処理します。しかし、GPUの性能等の事情でメモリが足りずエラーが出るので、この場合はsubdivisonの値を順次増やしていけばよいです。
私は最終的にbatch 64 subdivison 64 で動かすとエラーを出さなくなりました。
処理速度とのトレードオフになってくるので、値をどの程度にするかはデータセットによって適宜調整する必要があります。