発展課題アイデア案 - takgto/utokyo-chipathon2023 GitHub Wiki
ここに書いてあるのはあくまでもアイデアの案です。これをきっかけにオリジナルな実装をやってみましょう。 講義はハッカソンなのでYOLOv3を行うのはあくまでも一例です。自由に考えましょう。 目安として難易度を:star:で書いておきます。
1. yolov3-tinyを実装する ⭐
yolov3にはパラメタ数の少ないyolov3-tinyが存在します。これを実装すれば精度は下がりますが、FPSは向上が望めるかも?
Windowsの/Users/x-nics-kuroda/Downloads/work_best_weightsフォルダにyolov3-tiny-***_final.weightsという名前のファイルがあります。モデル変換の手順4以降でyolov3-416となっている場所をyolov3-tiny-***と読み替えて手順を行うと、スクリプトが自動的にtiny用の手順を実行します。Tinyはモデルの出力データ数が少ないので、同じソースコードは使えない場合があります。動画推論の時は、yolov3_video_subject1_tiny.cppというソースコードを使ってください。コンパイルする時、実行ファイルyolov3が上書きされるので、もし前のファイルも残しておきたい時はmv yolov3 yolov3_normalコマンドで名前を変更するとよいでしょう。
2. パイプライン化マルチスレッド化 ⭐⭐⭐
yolov3_video_subject1.cppはシーケンシャルな処理ですが、パイプライン化マルチスレッド化をうまく行うことが出来れば高速に処理出来ることがわかっています。講義資料にヒントが書いてあります。
~/Vitis-AI/examples/VART/yolov3にあるyolov3_video_study.cppはマルチスレッドの参考ソースコードです。メイクして動かしてみてください。単純にスレッド化しているだけなので、更に速度改善の余地があります。
3. yolo networkの入力画像サイズを変えてみる ⭐
darknet(yoloの学習フレームワーク)による再学習が必要です。入力画像のサイズを小さくすると、精度が下がりますが、処理が早くなります。逆に入力画像のサイズを大きくすると、精度が上がりますが、処理が遅くなります。darknetを使うにはwikiにあるようにGoogle colabに入る必要があります。しかし、学習時間が長くなる(1時間以上)と強制的に接続が切られてしまいますので、この対策についてはTAに相談ください。
4. AI Edge Contest入賞者の行っていたことを真似する ⭐⭐⭐
入賞者の手法が公開されています。上記にもある方法がほとんどですが、より具体的に説明されているので真似しやすいかも?ただし、コンテストの期間が数ヶ月に対して、こちらは4日間なので気をつけて…