bisenetv1とbisenetv2の実装。
Cityscapes ValセットのMiousとFPS:
| なし | ss | SSC | MSF | MSCF | fps(fp32/fp16/int8) | リンク |
|---|---|---|---|---|---|---|
| bisenetv1 | 75.44 | 76.94 | 77.45 | 78.86 | 112/239/435 | ダウンロード |
| bisenetv2 | 74.95 | 75.58 | 76.53 | 77.08 | 103/161/198 | ダウンロード |
Cocostuff val2017セットでMious:
| なし | ss | SSC | MSF | MSCF | リンク |
|---|---|---|---|---|---|
| bisenetv1 | 31.49 | 31.42 | 32.46 | 32.55 | ダウンロード |
| bisenetv2 | 30.49 | 30.55 | 31.81 | 31.73 | ダウンロード |
ADE20K valセットでMious:
| なし | ss | SSC | MSF | MSCF | リンク |
|---|---|---|---|---|---|
| bisenetv1 | 36.15 | 36.04 | 37.27 | 36.58 | ダウンロード |
| bisenetv2 | 32.53 | 32.43 | 33.23 | 31.72 | ダウンロード |
ヒント:
SSは単一スケールの評価を意味し、 SSCは単一スケールの作物評価を意味し、 MSFはフリップ増加によるマルチスケール評価を意味し、 MSCFはフリップ評価でマルチスケールの作物評価を意味します。マルチスケール評価の評価スケールと作物サイズは、構成にあります。
FPSは、論文とは異なる方法でテストされています。詳細については、こちらをご覧ください。
bisenetv2の著者は、cocostuff-10kを使用しましたが、ココスタフ-123kを使用しました(同じ118k列車と5k Val画像の発言と5k Val画像をオブジェクト検出とは知らない)。したがって、結果は紙とは異なる可能性があります。
著者はADE20Kの結果を報告しなかったため、公式のトレーニング設定はありません。ここでは、単に「機能させる」結果を提供します。 ADE20Kの結果は、より良い設定でブーストできるかもしれません。
このモデルには大きなばらつきがあります。つまり、トレーニングの結果は何度も比較的大きなマージン内で異なります。たとえば、Cityscapesでbisenetv2を何度も訓練すると、bisenetv2のSS評価の結果が73.1-75.1の間で変化することがわかります。
Tensort
詳細については、Tensorrtにアクセスできます。
ncnn
詳細については、NCNNにアクセスできます。
OpenVino
詳細については、OpenVinoにアクセスできます。
tis
Triton Inference Server(TIS)は、展開のサービスソリューションを提供します。詳細については、TISにアクセスできます。
私のプラットフォームはこのようなものです:
前提条件では、次のような単一の画像で推論を実行できます。
$ python tools/demo.py --config configs/bisenetv2_city.py --weight-path /path/to/your/weights.pth --img-path ./example.png
これにより、画像に推論が実行され、結果画像が./res.jpgに保存されます。
または、次のようなビデオで推論を実行できます。
$ python tools/demo_video.py --config configs/bisenetv2_coco.py --weight-path res/model_final.pth --input ./video.mp4 --output res.mp4
これにより、 res.mp4としてセグメンテーションファイルが生成されます。カメラから読みたい場合は、 input ./video.mp4ではなく、 --input camera_idを設定できます。
1.シティスケープ
公式Webサイトからデータセットを登録してダウンロードします。次に、それらをdatasets/cityscapesディレクトリに減圧します。
$ mv /path/to/leftImg8bit_trainvaltest.zip datasets/cityscapes
$ mv /path/to/gtFine_trainvaltest.zip datasets/cityscapes
$ cd datasets/cityscapes
$ unzip leftImg8bit_trainvaltest.zip
$ unzip gtFine_trainvaltest.zip
2.ココスタフ
train2017.zip 、 val2017.zipおよびstuffthingmaps_trainval2017.zipを公式ウェブサイトからダウンロードします。次に、次のようにします。
$ unzip train2017.zip
$ unzip val2017.zip
$ mv train2017/ /path/to/BiSeNet/datasets/coco/images
$ mv val2017/ /path/to/BiSeNet/datasets/coco/images
$ unzip stuffthingmaps_trainval2017.zip
$ mv train2017/ /path/to/BiSeNet/datasets/coco/labels
$ mv val2017/ /path/to/BiSeNet/datasets/coco/labels
$ cd /path/to/BiSeNet
$ python tools/gen_dataset_annos.py --dataset coco
3.ade20k
このWebサイトからADEChallengeData2016.zipをダウンロードして、それを解凍します。次に、非圧縮フォルダーをdatasets/ade20kに移動し、準備したスクリプトでTXTファイルを生成できます。
$ unzip ADEChallengeData2016.zip
$ mv ADEChallengeData2016/images /path/to/BiSeNet/datasets/ade20k/
$ mv ADEChallengeData2016/annotations /path/to/BiSeNet/datasets/ade20k/
$ python tools/gen_dataset_annos.py --dataset ade20k
4. Custom Dataset
独自のデータセットでトレーニングしたい場合は、このような形式で最初に注釈ファイルを生成する必要があります。
munster_000002_000019_leftImg8bit.png,munster_000002_000019_gtFine_labelIds.png
frankfurt_000001_079206_leftImg8bit.png,frankfurt_000001_079206_gtFine_labelIds.png
...
各ラインは、単一のコンマで区切られたトレーニングサンプルとグラウンドトゥルースイメージパスです,
スクリプトでデータセットの情報を確認することをお勧めします。
$ python tools/check_dataset_info.py --im_root /path/to/your/data_root --im_anns /path/to/your/anno_file
これにより、データセットの情報の一部が印刷されます。
次に、構成ファイルのim_rootとtrain/val_im_annsのフィールドを変更する必要があります。 bisenet_customer.pyという名前のデモ構成ファイルを準備しました。このConigファイルから開始できます。
モデルのトレーニングに使用したトレーニングコマンドは、こちらにあります。
注記:
bisenetv2フロップは少なくなりますが、より多くのトレーニングの反復が必要です。 bisenetv1のトレーニング時間は短いです。このように、訓練されたモデルの重みと微調整をロードすることもできます。
$ export CUDA_VISIBLE_DEVICES=0,1
$ torchrun --nproc_per_node=2 tools/train_amp.py --finetune-from ./res/model_final.pth --config ./configs/bisenetv2_city.py # or bisenetv1
このような訓練されたモデルを評価することもできます。
$ python tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
または、マルチGPUを使用できます。
$ torchrun --nproc_per_node=2 tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
oldディレクトリに移動できますが、必要はないと思います。