4

私は Mask-RCNN を使用しており、いくつかのカテゴリで独自のココ スタイルのデータセットをトレーニングしたいと考えています。まず、クラスは 2 つしかありません (バックグラウンドを除く)。

Mask-RCNN にはサンプル データセットが付属していますが、それらにはクラスが 1 つしか含まれていないか、データ自体が生成されるため、注釈付きの画像を読み込んでトレーニングを開始する方法を理解できません。私はPython関数に多くの時間を費やしてきましたが、次のようなエラーが発生し続けました:

TypeError: list indices must be integers or slices, not str

それは私をほとんど無知にしました。

私が持っている現在のローダー(私のココスタイルのデータセットをロードするため)は次のとおりです(Mask R-CNNリポジトリのココローダーから)

 def load_components(self, dataset_dir, subset, year=DEFAULT_DATASET_YEAR):

    coco = COCO("{}/annotations/instances_{}{}.json".format(dataset_dir, subset, year))
    if subset == "minival" or subset == "valminusminival":
        subset = "val"
    image_dir = "{}/{}{}".format(dataset_dir, subset, year)

    # Load all classes or a subset?
    class_ids = sorted(coco.getCatIds())

    # All images or a subset?
    image_ids = list(coco.imgs.keys())

    # Add classes
    for i in class_ids:
        self.add_class("coco", i, coco.loadCats(i)[0]["name"])

    # Add images
    for i in image_ids:
        self.add_image(
            "coco", image_id=i,
            path=os.path.join(image_dir, coco.imgs[i]['file_name']),
            width=coco.imgs[i]["width"],
            height=coco.imgs[i]["height"],
            annotations=coco.loadAnns(coco.getAnnIds(
                imgIds=[i], catIds=class_ids, iscrowd=None)))

当然、何もロードしません。

クラス番号に関係なく、あらゆる種類のココスタイルのデータセットで使用できるローダー関数を書くのを手伝ってくれる人はいますか?

ココスタイルの私のデータセット構造は次のとおりです。

components
│
└───train
│   │ 
│   └───annotations
│   │    │ <image_id>_<object_class_name>_<annotation_id>.png
│   │    │ ...
│   │   
│   └───<subset><year>
│   │    │   <image_id>.jpeg
│   │    │   ...  
│   └───  instances_components_train2018.json
└───val
    │ 
    └───annotations
    │    │ <image_id>_<object_class_name>_<annotation_id>.png
    │    │ ...
    │   
    └───<subset><year>
    │    │   <image_id>.jpeg
    │    │   ...
    │    │  
    └───  instances_components_val2018.json

編集: 完全なトレースバック:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-5f1fb6581c25> in <module>()
      1 # Load dataset
      2 dataset = components.ComponentsDataset()
----> 3 dataset.load_components(DATASET_DIR, subset="train")
      4 
      5 # Must call before using the dataset

~/workspace/Mask_RCNN/samples/components/components.py in load_components(self, dataset_dir, subset)
     72         # Load all classes or a subset?
     73         class_ids = sorted(coco.getCatIds())
---> 74 
     75         # All images or a subset?
     76         image_ids = list(coco.imgs.keys())

~/workspace/Mask_RCNN/samples/components/components.py in <listcomp>(.0)
     72         # Load all classes or a subset?
     73         class_ids = sorted(coco.getCatIds())
---> 74 
     75         # All images or a subset?
     76         image_ids = list(coco.imgs.keys())

TypeError: list indices must be integers or slices, not str
4

1 に答える 1