You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First of all, the notebook has a few mistakes that should be corrected. For example, in this line:
dataset = SegmentsDataset(release, labelset='ground-truth', filter_by='labeled'), filter_by='labeled' should be removed; otherwise the resulting dataset will be empty. Obviously, the data should not be filtered by 'labeled', before it's labeled.
I fixed this myself, but when I run the cell that has this code snippet:
from utils import train_model
model = train_model(dataset)
I get the error message below. How could I resolve this?
Exporting dataset. This may take a while...
100%|██████████| 96/96 [00:00<00:00, 3081.17it/s]Exported to ./export_coco-instance_payman21_tomatoes_v0.1.json. Images in segments/payman21_tomatoes/v0.1
Dataset was already registered
[02/25 00:41:02 d2.data.datasets.coco]: Loaded 0 images in COCO format from ./export_coco-instance_payman21_tomatoes_v0.1.json
Metadata(evaluator_type='coco', image_root='segments/payman21_tomatoes/v0.1', json_file='./export_coco-instance_payman21_tomatoes_v0.1.json', name='my_dataset', thing_classes=['object'], thing_dataset_id_to_contiguous_id={1: 0})
AssertionError Traceback (most recent call last) in
1 # Train an instance segmentation model on the dataset
2 from utils import train_model
----> 3 model = train_model(dataset)
6 frames /content/fast-labeling-workflow/utils.py in train_model(dataset)
77 # Start the training
78 os.makedirs(cfg.OUTPUT_DIR, exist_ok=True)
---> 79 trainer = DefaultTrainer(cfg)
80 trainer.resume_or_load(resume=False)
81 trainer.train()
/usr/local/lib/python3.8/dist-packages/detectron2/engine/defaults.py in init(self, cfg)
376 model = self.build_model(cfg)
377 optimizer = self.build_optimizer(cfg, model)
--> 378 data_loader = self.build_train_loader(cfg)
379
380 model = create_ddp_model(model, broadcast_buffers=False)
/usr/local/lib/python3.8/dist-packages/detectron2/config/config.py in _get_args_from_config(from_config_func, *args, **kwargs)
243 if name not in supported_arg_names:
244 extra_kwargs[name] = kwargs.pop(name)
--> 245 ret = from_config_func(*args, **kwargs)
246 # forward the other arguments to init
247 ret.update(extra_kwargs)
/usr/local/lib/python3.8/dist-packages/detectron2/data/build.py in _train_loader_from_config(cfg, mapper, dataset, sampler)
342 def _train_loader_from_config(cfg, mapper=None, *, dataset=None, sampler=None):
343 if dataset is None:
--> 344 dataset = get_detection_dataset_dicts(
345 cfg.DATASETS.TRAIN,
346 filter_empty=cfg.DATALOADER.FILTER_EMPTY_ANNOTATIONS,
/usr/local/lib/python3.8/dist-packages/detectron2/data/build.py in get_detection_dataset_dicts(names, filter_empty, min_keypoints, proposal_files, check_consistency)
250
251 for dataset_name, dicts in zip(names, dataset_dicts):
--> 252 assert len(dicts), "Dataset '{}' is empty!".format(dataset_name)
253
254 if proposal_files is not None:
AssertionError: Dataset 'my_dataset' is empty!
The text was updated successfully, but these errors were encountered:
I've been trying to run this notebook in colab: https://github.com/segments-ai/fast-labeling-workflow/blob/master/demo.ipynb
First of all, the notebook has a few mistakes that should be corrected. For example, in this line:
dataset = SegmentsDataset(release, labelset='ground-truth', filter_by='labeled'),
filter_by='labeled'
should be removed; otherwise the resulting dataset will be empty. Obviously, the data should not be filtered by 'labeled', before it's labeled.I fixed this myself, but when I run the cell that has this code snippet:
I get the error message below. How could I resolve this?
Exporting dataset. This may take a while...
100%|██████████| 96/96 [00:00<00:00, 3081.17it/s]Exported to ./export_coco-instance_payman21_tomatoes_v0.1.json. Images in segments/payman21_tomatoes/v0.1
Dataset was already registered
[02/25 00:41:02 d2.data.datasets.coco]: Loaded 0 images in COCO format from ./export_coco-instance_payman21_tomatoes_v0.1.json
Metadata(evaluator_type='coco', image_root='segments/payman21_tomatoes/v0.1', json_file='./export_coco-instance_payman21_tomatoes_v0.1.json', name='my_dataset', thing_classes=['object'], thing_dataset_id_to_contiguous_id={1: 0})
GeneralizedRCNN(
(backbone): FPN(
(fpn_lateral2): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1))
(fpn_output2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(fpn_lateral3): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1))
(fpn_output3): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(fpn_lateral4): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
(fpn_output4): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(fpn_lateral5): Conv2d(2048, 256, kernel_size=(1, 1), stride=(1, 1))
(fpn_output5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(top_block): LastLevelMaxPool()
(bottom_up): ResNet(
(stem): BasicStem(
(conv1): Conv2d(
3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False
(norm): FrozenBatchNorm2d(num_features=64, eps=1e-05)
)
)
(res2): Sequential(
(0): BottleneckBlock(
(shortcut): Conv2d(
64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv1): Conv2d(
64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=64, eps=1e-05)
)
(conv2): Conv2d(
64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=64, eps=1e-05)
)
(conv3): Conv2d(
64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
)
(1): BottleneckBlock(
(conv1): Conv2d(
256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=64, eps=1e-05)
)
(conv2): Conv2d(
64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=64, eps=1e-05)
)
(conv3): Conv2d(
64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
)
(2): BottleneckBlock(
(conv1): Conv2d(
256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=64, eps=1e-05)
)
(conv2): Conv2d(
64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=64, eps=1e-05)
)
(conv3): Conv2d(
64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
)
)
(res3): Sequential(
(0): BottleneckBlock(
(shortcut): Conv2d(
256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False
(norm): FrozenBatchNorm2d(num_features=512, eps=1e-05)
)
(conv1): Conv2d(
256, 128, kernel_size=(1, 1), stride=(2, 2), bias=False
(norm): FrozenBatchNorm2d(num_features=128, eps=1e-05)
)
(conv2): Conv2d(
128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=128, eps=1e-05)
)
(conv3): Conv2d(
128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=512, eps=1e-05)
)
)
(1): BottleneckBlock(
(conv1): Conv2d(
512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=128, eps=1e-05)
)
(conv2): Conv2d(
128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=128, eps=1e-05)
)
(conv3): Conv2d(
128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=512, eps=1e-05)
)
)
(2): BottleneckBlock(
(conv1): Conv2d(
512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=128, eps=1e-05)
)
(conv2): Conv2d(
128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=128, eps=1e-05)
)
(conv3): Conv2d(
128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=512, eps=1e-05)
)
)
(3): BottleneckBlock(
(conv1): Conv2d(
512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=128, eps=1e-05)
)
(conv2): Conv2d(
128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=128, eps=1e-05)
)
(conv3): Conv2d(
128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=512, eps=1e-05)
)
)
)
(res4): Sequential(
(0): BottleneckBlock(
(shortcut): Conv2d(
512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False
(norm): FrozenBatchNorm2d(num_features=1024, eps=1e-05)
)
(conv1): Conv2d(
512, 256, kernel_size=(1, 1), stride=(2, 2), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv2): Conv2d(
256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv3): Conv2d(
256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=1024, eps=1e-05)
)
)
(1): BottleneckBlock(
(conv1): Conv2d(
1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv2): Conv2d(
256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv3): Conv2d(
256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=1024, eps=1e-05)
)
)
(2): BottleneckBlock(
(conv1): Conv2d(
1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv2): Conv2d(
256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv3): Conv2d(
256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=1024, eps=1e-05)
)
)
(3): BottleneckBlock(
(conv1): Conv2d(
1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv2): Conv2d(
256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv3): Conv2d(
256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=1024, eps=1e-05)
)
)
(4): BottleneckBlock(
(conv1): Conv2d(
1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv2): Conv2d(
256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv3): Conv2d(
256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=1024, eps=1e-05)
)
)
(5): BottleneckBlock(
(conv1): Conv2d(
1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv2): Conv2d(
256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=256, eps=1e-05)
)
(conv3): Conv2d(
256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=1024, eps=1e-05)
)
)
)
(res5): Sequential(
(0): BottleneckBlock(
(shortcut): Conv2d(
1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False
(norm): FrozenBatchNorm2d(num_features=2048, eps=1e-05)
)
(conv1): Conv2d(
1024, 512, kernel_size=(1, 1), stride=(2, 2), bias=False
(norm): FrozenBatchNorm2d(num_features=512, eps=1e-05)
)
(conv2): Conv2d(
512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=512, eps=1e-05)
)
(conv3): Conv2d(
512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=2048, eps=1e-05)
)
)
(1): BottleneckBlock(
(conv1): Conv2d(
2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=512, eps=1e-05)
)
(conv2): Conv2d(
512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=512, eps=1e-05)
)
(conv3): Conv2d(
512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=2048, eps=1e-05)
)
)
(2): BottleneckBlock(
(conv1): Conv2d(
2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=512, eps=1e-05)
)
(conv2): Conv2d(
512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=512, eps=1e-05)
)
(conv3): Conv2d(
512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False
(norm): FrozenBatchNorm2d(num_features=2048, eps=1e-05)
)
)
)
)
)
(proposal_generator): RPN(
(rpn_head): StandardRPNHead(
(conv): Conv2d(
256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)
(activation): ReLU()
)
(objectness_logits): Conv2d(256, 3, kernel_size=(1, 1), stride=(1, 1))
(anchor_deltas): Conv2d(256, 12, kernel_size=(1, 1), stride=(1, 1))
)
(anchor_generator): DefaultAnchorGenerator(
(cell_anchors): BufferList()
)
)
(roi_heads): StandardROIHeads(
(box_pooler): ROIPooler(
(level_poolers): ModuleList(
(0): ROIAlign(output_size=(7, 7), spatial_scale=0.25, sampling_ratio=0, aligned=True)
(1): ROIAlign(output_size=(7, 7), spatial_scale=0.125, sampling_ratio=0, aligned=True)
(2): ROIAlign(output_size=(7, 7), spatial_scale=0.0625, sampling_ratio=0, aligned=True)
(3): ROIAlign(output_size=(7, 7), spatial_scale=0.03125, sampling_ratio=0, aligned=True)
)
)
(box_head): FastRCNNConvFCHead(
(flatten): Flatten(start_dim=1, end_dim=-1)
(fc1): Linear(in_features=12544, out_features=1024, bias=True)
(fc_relu1): ReLU()
(fc2): Linear(in_features=1024, out_features=1024, bias=True)
(fc_relu2): ReLU()
)
(box_predictor): FastRCNNOutputLayers(
(cls_score): Linear(in_features=1024, out_features=2, bias=True)
(bbox_pred): Linear(in_features=1024, out_features=4, bias=True)
)
(mask_pooler): ROIPooler(
(level_poolers): ModuleList(
(0): ROIAlign(output_size=(14, 14), spatial_scale=0.25, sampling_ratio=0, aligned=True)
(1): ROIAlign(output_size=(14, 14), spatial_scale=0.125, sampling_ratio=0, aligned=True)
(2): ROIAlign(output_size=(14, 14), spatial_scale=0.0625, sampling_ratio=0, aligned=True)
(3): ROIAlign(output_size=(14, 14), spatial_scale=0.03125, sampling_ratio=0, aligned=True)
)
)
(mask_head): MaskRCNNConvUpsampleHead(
(mask_fcn1): Conv2d(
256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)
(activation): ReLU()
)
(mask_fcn2): Conv2d(
256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)
(activation): ReLU()
)
(mask_fcn3): Conv2d(
256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)
(activation): ReLU()
)
(mask_fcn4): Conv2d(
256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)
(activation): ReLU()
)
(deconv): ConvTranspose2d(256, 256, kernel_size=(2, 2), stride=(2, 2))
(deconv_relu): ReLU()
(predictor): Conv2d(256, 1, kernel_size=(1, 1), stride=(1, 1))
)
)
)
[02/25 00:41:03 d2.data.datasets.coco]: Loaded 0 images in COCO format from ./export_coco-instance_payman21_tomatoes_v0.1.json
AssertionError Traceback (most recent call last)
in
1 # Train an instance segmentation model on the dataset
2 from utils import train_model
----> 3 model = train_model(dataset)
6 frames
/content/fast-labeling-workflow/utils.py in train_model(dataset)
77 # Start the training
78 os.makedirs(cfg.OUTPUT_DIR, exist_ok=True)
---> 79 trainer = DefaultTrainer(cfg)
80 trainer.resume_or_load(resume=False)
81 trainer.train()
/usr/local/lib/python3.8/dist-packages/detectron2/engine/defaults.py in init(self, cfg)
376 model = self.build_model(cfg)
377 optimizer = self.build_optimizer(cfg, model)
--> 378 data_loader = self.build_train_loader(cfg)
379
380 model = create_ddp_model(model, broadcast_buffers=False)
/usr/local/lib/python3.8/dist-packages/detectron2/engine/defaults.py in build_train_loader(cls, cfg)
545 Overwrite it if you'd like a different data loader.
546 """
--> 547 return build_detection_train_loader(cfg)
548
549 @classmethod
/usr/local/lib/python3.8/dist-packages/detectron2/config/config.py in wrapped(*args, **kwargs)
205 def wrapped(*args, **kwargs):
206 if _called_with_cfg(*args, **kwargs):
--> 207 explicit_args = _get_args_from_config(from_config, *args, **kwargs)
208 return orig_func(**explicit_args)
209 else:
/usr/local/lib/python3.8/dist-packages/detectron2/config/config.py in _get_args_from_config(from_config_func, *args, **kwargs)
243 if name not in supported_arg_names:
244 extra_kwargs[name] = kwargs.pop(name)
--> 245 ret = from_config_func(*args, **kwargs)
246 # forward the other arguments to init
247 ret.update(extra_kwargs)
/usr/local/lib/python3.8/dist-packages/detectron2/data/build.py in _train_loader_from_config(cfg, mapper, dataset, sampler)
342 def _train_loader_from_config(cfg, mapper=None, *, dataset=None, sampler=None):
343 if dataset is None:
--> 344 dataset = get_detection_dataset_dicts(
345 cfg.DATASETS.TRAIN,
346 filter_empty=cfg.DATALOADER.FILTER_EMPTY_ANNOTATIONS,
/usr/local/lib/python3.8/dist-packages/detectron2/data/build.py in get_detection_dataset_dicts(names, filter_empty, min_keypoints, proposal_files, check_consistency)
250
251 for dataset_name, dicts in zip(names, dataset_dicts):
--> 252 assert len(dicts), "Dataset '{}' is empty!".format(dataset_name)
253
254 if proposal_files is not None:
AssertionError: Dataset 'my_dataset' is empty!
The text was updated successfully, but these errors were encountered: