転移学習-cityscapes, cityscapesscripts, Mask R-CNN, Detectron2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*Detectron2での転移学習 with カスタムデータ(自作データ)...
In deep learning tasks, it's essential to define three ke...
**0. 学習や推論方法など:** [#ycc91643]
----
''設定ファイル'':[[Detectron2:https://github.com/faceboo...
----
''訓練'':train_net.py(学習データの登録(--dataset_rootで...
python tools/train_net.py --config-file configs/COCO-Det...
''評価'':学習済みモデル(重みとバイアス)を指定して性能...
python tools/train_net.py --config-file configs/COCO-Det...
''推論'':なお,学習後の重みによる推論は,demo/demo.pyを...
python demo/demo.py --config-file configs/COCO-Detection...
または,ディレクトリ内の画像を一気に処理するには,(でも...
python demo/demo.py \
--config-file configs/COCO-Detection/faster_rcnn_X_101_...
--input datasets/val/JPEGImages/*.jpg \
--output datasets/result \
--opts MODEL.WEIGHTS output/model_0244999.pth
%%なお,学習データの登録は,[[こちら:https://github.com/y...
学習の評価は~
tensorboard --logdir=/home/survey/Desktop/detectron2_wkk...
なお,これは,
tensorboard --logdir=/path/to/old_output_dir --port=6007
このようにして指定してもいい.
&ref(log_tensorboard2.jpg);~
**1. カスタム(自作)データの設定:** [#h7651a24]
扱うデータのセットの方法(書式,ディレクトリ構成など)に...
なお,[[Detectron2:https://github.com/facebookresearch/det...
それ用のpythonスクリプト([[ここ:https://github.com/yoshiy...
その前に&color(blue){labelme};(他のアプリでもいいが,わ...
&ref(trainvaltest2.png);~
学習させるデータセットが重そうならば,[[こちら:https://gi...
***入力用にCOCOフォーマットへの変換*** [#x6bf2b31]
上のような構成において,それぞれのディレクトリ(暗に,tra...
コマンドは以下のような感じ.labelmeのディレクトリにおいて...
python examples/instance_segmentation/labelme2coco.py /m...
なお,labels.txtは,下のような表記.上2つ(__ignore__,_ba...
__ignore__
_background_
Hakusenn
下のように処理されていく~
&ref(lm_pr.png);~
最終的に下のようになり,目的とするannotaions.jsonができる...
&ref(fin_lm.png);~
なお,datasetsというディレクトリはDetectron2にはない(dete...
&ref(tree2.jpg);
***Cityscapes*** [#naee02bb]
%%Cityscapesのfineレベルのデータから、poleとbuildingのク...
&color(red){cityscapesscripts};のjson2instanceImg.pyでい...
ただし,helpers/labels.pyで&color(red){hasInstance};でイ...
(車や道路などはdefaultでインスタンス化されてます.poleやb...
Terminalにおいて~
PYTHONPATHの設定(export PYTHONPATH="${PYTHONPATH}:/my/new...
)後に~
python json2instanceImg.py /mnt/c/Users/survey/Desktop/CI...
#!/bin/bash
# Root directory where your json files are stored
root_dir="/mnt/c/Users/survey/Desktop/CITYSCAPES_DATASET...
# Iterate over train, val and test directories
for data_split in train val test
do
# Iterate over each city directory in the data split
for city in $(ls $root_dir/$data_split)
do
# Get the city directory path
city_dir="$root_dir/$data_split/$city"
# Iterate over each json file in the city directory
for json_file in $city_dir/*_polygons.json
do
# Construct the png filename from the json filename
png_file="${json_file%_polygons.json}_instanceIds.png"
# If png file already exists, delete it
if [ -f "$png_file" ]; then
rm $png_file
fi
# Run the python script
python json2instanceImg.py $json_file $png_file
done
done
done
このスクリプトはCityscapesデータセットの全部の画像(という...
どうやら,labelTrainIds.pngは,自分で作成する必要があるよ...
%%CITYSCAPES_DATASET=/path/to/abovementioned/cityscapes p...
CITYSCAPES_DATASET=datasets/CITYSCAPES_DATASET_pole_build...
***Custom data*** [#cbc5f9e2]
Cocoフォーマットにしておく。~
[[labelme:https://github.com/wkentaro/labelme]]なら[[labe...
python ./labelme2coco.py data_annotated data_dataset_coc...
ただし,デフォルトだとclass idが0になってしまうので,ソー...
COCOフォーマットのデータセットを登録する際には、アノテー...
**2. 転移学習:** [#d0f9c168]
***Mask R-CNN+Cityscapes*** [#t6eab983]
まずは,[[ここ:https://detectron2.readthedocs.io/en/lates...
次に、Detectron2のMask R-CNNを使用して転移学習を行います...
%%./train_net.py \%%
%%--config-file ../configs/COCO-InstanceSegmentation/mask...
%%--num-gpus 1 SOLVER.IMS_PER_BATCH 2 SOLVER.BASE_LR 0.00...
[[Getting Started with Detectron2:https://detectron2.read...
configs/Cityscapes/mask_rcnn_R_50_FPN.yamlを適用するので...
そして,yamlファイルに&color(white,black){OUTPUT_DIR: "ch...
export CUDA_VISIBLE_DEVICES=0,1
python train_net.py --config-file ../configs/Cityscapes/...
この下は転移学習の方法の一例で,実行はしてないです.~
from detectron2.data.datasets import register_coco_insta...
from detectron2.engine import DefaultTrainer
from detectron2.config import get_cfg
from detectron2 import model_zoo
# 教師データセットの登録
register_coco_instances("my_dataset_train", {}, "path_to...
# 設定の準備
cfg = get_cfg()
# Mask R-CNNの設定
cfg.merge_from_file(model_zoo.get_config_file("COCO-Inst...
# Cityscapesの学習済みモデルを使用
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-I...
# 新たな教師データセットの指定
cfg.DATASETS.TRAIN = ("my_dataset_train",)
# 学習の開始
trainer = DefaultTrainer(cfg)
trainer.resume_or_load(resume=False)
trainer.train()
ここでの主なポイントは、設定(cfg)においてCityscapesの学習...
このパイプラインは非常に基本的なものであり、多くの設定や...
***Faster R-CNN+Custom Data*** [#qd456fc7]
Detectron2のFaster R-CNNを利用.~
だから,ひとまずは[[model zoo:https://github.com/facebook...
config file:configs/COCO-Detection/faster_rcnn_X_101_32x8...
weights:model_weights/model_final_68b088.pkl~
ここはまだ編集中です.~
export CUDA_VISIBLE_DEVICES=0,1
python train_net.py --config-file ../configs/COCO-Detect...
***panoptic*** [#ja18414d]
ここはまだ編集中です.~
export CUDA_VISIBLE_DEVICES=0,1
python train_net.py --config-file ../configs/Misc/panopt...
**3. データ拡張:** [#lbf4913e]
どうやら,detectron2の訓練での初期設定は,detectron2/data...
[[Cityscapes]]
終了行:
*Detectron2での転移学習 with カスタムデータ(自作データ)...
In deep learning tasks, it's essential to define three ke...
**0. 学習や推論方法など:** [#ycc91643]
----
''設定ファイル'':[[Detectron2:https://github.com/faceboo...
----
''訓練'':train_net.py(学習データの登録(--dataset_rootで...
python tools/train_net.py --config-file configs/COCO-Det...
''評価'':学習済みモデル(重みとバイアス)を指定して性能...
python tools/train_net.py --config-file configs/COCO-Det...
''推論'':なお,学習後の重みによる推論は,demo/demo.pyを...
python demo/demo.py --config-file configs/COCO-Detection...
または,ディレクトリ内の画像を一気に処理するには,(でも...
python demo/demo.py \
--config-file configs/COCO-Detection/faster_rcnn_X_101_...
--input datasets/val/JPEGImages/*.jpg \
--output datasets/result \
--opts MODEL.WEIGHTS output/model_0244999.pth
%%なお,学習データの登録は,[[こちら:https://github.com/y...
学習の評価は~
tensorboard --logdir=/home/survey/Desktop/detectron2_wkk...
なお,これは,
tensorboard --logdir=/path/to/old_output_dir --port=6007
このようにして指定してもいい.
&ref(log_tensorboard2.jpg);~
**1. カスタム(自作)データの設定:** [#h7651a24]
扱うデータのセットの方法(書式,ディレクトリ構成など)に...
なお,[[Detectron2:https://github.com/facebookresearch/det...
それ用のpythonスクリプト([[ここ:https://github.com/yoshiy...
その前に&color(blue){labelme};(他のアプリでもいいが,わ...
&ref(trainvaltest2.png);~
学習させるデータセットが重そうならば,[[こちら:https://gi...
***入力用にCOCOフォーマットへの変換*** [#x6bf2b31]
上のような構成において,それぞれのディレクトリ(暗に,tra...
コマンドは以下のような感じ.labelmeのディレクトリにおいて...
python examples/instance_segmentation/labelme2coco.py /m...
なお,labels.txtは,下のような表記.上2つ(__ignore__,_ba...
__ignore__
_background_
Hakusenn
下のように処理されていく~
&ref(lm_pr.png);~
最終的に下のようになり,目的とするannotaions.jsonができる...
&ref(fin_lm.png);~
なお,datasetsというディレクトリはDetectron2にはない(dete...
&ref(tree2.jpg);
***Cityscapes*** [#naee02bb]
%%Cityscapesのfineレベルのデータから、poleとbuildingのク...
&color(red){cityscapesscripts};のjson2instanceImg.pyでい...
ただし,helpers/labels.pyで&color(red){hasInstance};でイ...
(車や道路などはdefaultでインスタンス化されてます.poleやb...
Terminalにおいて~
PYTHONPATHの設定(export PYTHONPATH="${PYTHONPATH}:/my/new...
)後に~
python json2instanceImg.py /mnt/c/Users/survey/Desktop/CI...
#!/bin/bash
# Root directory where your json files are stored
root_dir="/mnt/c/Users/survey/Desktop/CITYSCAPES_DATASET...
# Iterate over train, val and test directories
for data_split in train val test
do
# Iterate over each city directory in the data split
for city in $(ls $root_dir/$data_split)
do
# Get the city directory path
city_dir="$root_dir/$data_split/$city"
# Iterate over each json file in the city directory
for json_file in $city_dir/*_polygons.json
do
# Construct the png filename from the json filename
png_file="${json_file%_polygons.json}_instanceIds.png"
# If png file already exists, delete it
if [ -f "$png_file" ]; then
rm $png_file
fi
# Run the python script
python json2instanceImg.py $json_file $png_file
done
done
done
このスクリプトはCityscapesデータセットの全部の画像(という...
どうやら,labelTrainIds.pngは,自分で作成する必要があるよ...
%%CITYSCAPES_DATASET=/path/to/abovementioned/cityscapes p...
CITYSCAPES_DATASET=datasets/CITYSCAPES_DATASET_pole_build...
***Custom data*** [#cbc5f9e2]
Cocoフォーマットにしておく。~
[[labelme:https://github.com/wkentaro/labelme]]なら[[labe...
python ./labelme2coco.py data_annotated data_dataset_coc...
ただし,デフォルトだとclass idが0になってしまうので,ソー...
COCOフォーマットのデータセットを登録する際には、アノテー...
**2. 転移学習:** [#d0f9c168]
***Mask R-CNN+Cityscapes*** [#t6eab983]
まずは,[[ここ:https://detectron2.readthedocs.io/en/lates...
次に、Detectron2のMask R-CNNを使用して転移学習を行います...
%%./train_net.py \%%
%%--config-file ../configs/COCO-InstanceSegmentation/mask...
%%--num-gpus 1 SOLVER.IMS_PER_BATCH 2 SOLVER.BASE_LR 0.00...
[[Getting Started with Detectron2:https://detectron2.read...
configs/Cityscapes/mask_rcnn_R_50_FPN.yamlを適用するので...
そして,yamlファイルに&color(white,black){OUTPUT_DIR: "ch...
export CUDA_VISIBLE_DEVICES=0,1
python train_net.py --config-file ../configs/Cityscapes/...
この下は転移学習の方法の一例で,実行はしてないです.~
from detectron2.data.datasets import register_coco_insta...
from detectron2.engine import DefaultTrainer
from detectron2.config import get_cfg
from detectron2 import model_zoo
# 教師データセットの登録
register_coco_instances("my_dataset_train", {}, "path_to...
# 設定の準備
cfg = get_cfg()
# Mask R-CNNの設定
cfg.merge_from_file(model_zoo.get_config_file("COCO-Inst...
# Cityscapesの学習済みモデルを使用
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-I...
# 新たな教師データセットの指定
cfg.DATASETS.TRAIN = ("my_dataset_train",)
# 学習の開始
trainer = DefaultTrainer(cfg)
trainer.resume_or_load(resume=False)
trainer.train()
ここでの主なポイントは、設定(cfg)においてCityscapesの学習...
このパイプラインは非常に基本的なものであり、多くの設定や...
***Faster R-CNN+Custom Data*** [#qd456fc7]
Detectron2のFaster R-CNNを利用.~
だから,ひとまずは[[model zoo:https://github.com/facebook...
config file:configs/COCO-Detection/faster_rcnn_X_101_32x8...
weights:model_weights/model_final_68b088.pkl~
ここはまだ編集中です.~
export CUDA_VISIBLE_DEVICES=0,1
python train_net.py --config-file ../configs/COCO-Detect...
***panoptic*** [#ja18414d]
ここはまだ編集中です.~
export CUDA_VISIBLE_DEVICES=0,1
python train_net.py --config-file ../configs/Misc/panopt...
**3. データ拡張:** [#lbf4913e]
どうやら,detectron2の訓練での初期設定は,detectron2/data...
[[Cityscapes]]
ページ名: