Hey sorry to bother you again and I can make this a new post if need be but I had further issues with difficult in validation set, then realised I need to put that into the val code.
However when I put keep_difficult into validation prep it throws an error. So I removed keep difficult (thought I would just edit the xml files since val set is not huge!) but even after removing keep difficult from it I am now still getting the error!
It was working fine before, doh!
I cannot for the life of me figure out what broke?? I even copied back the original train_ssd.py from the github to ensure code was the same and still the error happens! Baffled.
I am testing on smaller controlled training set for now so I can iron out any errors before the proper training can begin!
Output:
2021-04-22 15:02:01 - Prepare Validation datasets.
Traceback (most recent call last):
File "train_ssd.py", line 244, in <module>
target_transform=target_transform, is_test=True)
File "F:\Work\Highlight\TF\jetson_dev\jetson-inference-master\python\training\detection\vision\datasets\voc_dataset.py", line 24, in __init__
self.ids = self._read_image_ids(image_sets_file)
File "F:\Work\Highlight\TF\jetson_dev\jetson-inference-master\python\training\detection\vision\datasets\voc_dataset.py", line 99, in _read_image_ids
if self._get_num_annotations(image_id) > 0:
File "F:\Work\Highlight\TF\jetson_dev\jetson-inference-master\python\training\detection\vision\datasets\voc_dataset.py", line 108, in _get_num_annotations
objects = ET.parse(annotation_file).findall("object")
File "c:\users\muayt\appdata\local\programs\python\python37\lib\xml\etree\ElementTree.py", line 1197, in parse
tree.parse(source, parser)
File "c:\users\muayt\appdata\local\programs\python\python37\lib\xml\etree\ElementTree.py", line 598, in parse
self._root = parser._parse_whole(source)
xml.etree.ElementTree.ParseError: mismatched tag: line 20, column 13
code:
# load datasets (could be multiple)
logging.info("Prepare training datasets.")
datasets = []
for dataset_path in args.datasets:
if args.dataset_type == 'voc':
dataset = VOCDataset(dataset_path, keep_difficult=True, transform=train_transform,
target_transform=target_transform)
label_file = os.path.join(args.checkpoint_folder, "labels.txt")
store_labels(label_file, dataset.class_names)
num_classes = len(dataset.class_names)
elif args.dataset_type == 'open_images':
dataset = OpenImagesDataset(dataset_path,
transform=train_transform, target_transform=target_transform,
dataset_type="train", balance_data=args.balance_data)
label_file = os.path.join(args.checkpoint_folder, "labels.txt")
store_labels(label_file, dataset.class_names)
logging.info(dataset)
num_classes = len(dataset.class_names)
else:
raise ValueError(f"Dataset type {args.dataset_type} is not supported.")
datasets.append(dataset)
# create training dataset
logging.info(f"Stored labels into file {label_file}.")
train_dataset = ConcatDataset(datasets)
logging.info("Train dataset size: {}".format(len(train_dataset)))
train_loader = DataLoader(train_dataset, args.batch_size,
num_workers=args.num_workers,
shuffle=True)
# create validation dataset
logging.info("Prepare Validation datasets.")
if args.dataset_type == "voc":
val_dataset = VOCDataset(dataset_path, transform=test_transform,
target_transform=target_transform, is_test=True)
elif args.dataset_type == 'open_images':
val_dataset = OpenImagesDataset(dataset_path,
transform=test_transform, target_transform=target_transform,
dataset_type="test")
logging.info(val_dataset)
logging.info("Validation dataset size: {}".format(len(val_dataset)))
val_loader = DataLoader(val_dataset, args.batch_size,
num_workers=args.num_workers,
shuffle=False)
EDIT: Never mind it was a corrupt data in xml file issue. Fixed it :D It appears to be training now fingers crossed it goes the distance!