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の公式ドキュメンテーションを確認して、より詳細な設定を行ってください。また、データのパス、設定のパラメータ等はあなたの環境に合わせて適宜修正してください。