Cityscapesのfineレベルのデータから、poleとbuildingのクラスをインスタンス化するためには、cityscapesscriptsを使用します。以下は一般的な手順です。
from cityscapesscripts.helpers.labels import labels # cityscapesscriptsによるデータ処理 # ここでは、poleとbuildingのみを対象としています。 for label in labels: if label.name == 'pole' or label.name == 'building': label.trainId = label.id else: label.trainId = label.ignoreInEval
このスクリプトはCityscapesデータセットのラベルを変更します。poleとbuildingのインスタンスだけが訓練データとして扱われ、他のすべてのインスタンスは無視されます。
次に、Detectron2のMask R-CNNを使用して転移学習を行います。Cityscapesの学習済みモデルを使用し、上記で作成した教師データに対して学習します。
from detectron2.data.datasets import register_coco_instances
from detectron2.engine import DefaultTrainer
from detectron2.config import get_cfg
from detectron2 import model_zoo
# 教師データセットの登録
register_coco_instances("my_dataset_train", {}, "path_to_your_dataset.json", "path_to_your_images")
# 設定の準備
cfg = get_cfg()
# Mask R-CNNの設定
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
# Cityscapesの学習済みモデルを使用
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
# 新たな教師データセットの指定
cfg.DATASETS.TRAIN = ("my_dataset_train",)
# 学習の開始
trainer = DefaultTrainer(cfg)
trainer.resume_or_load(resume=False)
trainer.train()
ここでの主なポイントは、設定(cfg)においてCityscapesの学習済みモデルを指定し、新たに作成した教師データセットを訓練データとして指定することです。
このパイプラインは非常に基本的なものであり、多くの設定や詳細が省略されています。Detectron2とcityscapesscriptsの公式ドキュメンテーションを確認して、より詳細な設定を行ってください。また、データのパス、設定のパラメータ等はあなたの環境に合わせて適宜修正してください。