Я - новичок ie, изучающий ML, и пробую semanti c Сегментацию изображений в Google Colab с форматом данных COCO json и множеством изображений на Google Drive.
обновление
Я заимствовал этот код в качестве отправной точки. Так что мой код на colab очень похож на этот. https://github.com/akTwelve/tutorials/blob/master/mask_rcnn/MaskRCNN_TrainAndInference.ipynb
/ update
Я разбиваю экспортированный файл json на 2 jsons (обучаем / проверяем с соотношением 80/20) каждый раз, когда я получаю новый данные аннотации. Но это утомляет, так как у меня есть более 1000 аннотаций в файле, и я делаю это вручную с помощью функции замены кода VS.
Есть ли лучший способ сделать это программно на Google Colab?
Итак, мне нравится вращать данные аннотаций, не разбивая файл json вручную.
Скажем, у меня 1000 аннотаций в файле ONE json на моем диске Google, я хотел бы использовать 1-800 аннотаций для обучения и 801-1000 аннотаций для проверки для 1-го сеанса поезда, а затем для следующего сеанса поезда. Я хотел бы использовать 210-1000 аннотаций для обучения и 1-200 аннотаций для проверки. Как выбор части данных в json из кода на colab.
Или, если я могу повернуть данные во время одного сеанса поезда (перекрестная проверка K-Fold?), Это даже лучше, но я понятия не имею для этого.
Вот части моего кода на colab.
Загрузка json файлов
dataset_train = CocoLikeDataset()
dataset_train.load_data('PATH_TO_TRAIN_JSON', 'PATH_TO_IMAGES')
dataset_train.prepare()
dataset_val = CocoLikeDataset()
dataset_val.load_data('PATH_TO_VALIDATE_JSON', 'PATH_TO_IMAGES')
dataset_val.prepare()
Инициализация модели
model = modellib.MaskRCNN(mode="training", config=config, model_dir=MODEL_DIR)
init_with = "coco"
if init_with == "imagenet":
model.load_weights(model.get_imagenet_weights(), by_name=True)
elif init_with == "coco":
model.load_weights(COCO_MODEL_PATH, by_name=True,
exclude=["mrcnn_class_logits", "mrcnn_bbox_fc",
"mrcnn_bbox", "mrcnn_mask"])
elif init_with == "last":
model.load_weights(model.find_last(), by_name=True)
поезд
start_train = time.time()
model.train(dataset_train, dataset_val,
learning_rate=config.LEARNING_RATE,
epochs=30,
layers='heads')
end_train = time.time()
minutes = round((end_train - start_train) / 60, 2)
print(f'Training took {minutes} minutes')
проверка
start_train = time.time()
model.train(dataset_train, dataset_val,
learning_rate=config.LEARNING_RATE / 10,
epochs=10,
layers="all")
end_train = time.time()
minutes = round((end_train - start_train) / 60, 2)
print(f'Training took {minutes} minutes')
json
{
"info": {
"year": 2020,
"version": "1",
"description": "Exported using VGG Image Annotator (http://www.robots.ox.ac.uk/~vgg/software/via/)",
"contributor": "",
"url": "http://www.robots.ox.ac.uk/~vgg/software/via/",
"date_created": "Tue Jan 21 2020 16:18:14"
},
"images": [
{
"id": 0,
"width": 2880,
"height": 2160,
"file_name": "sample01.jpg",
"license": 1,
"flickr_url": "sample01.jpg",
"coco_url": "sample01.jpg",
"date_captured": ""
}
],
"annotations": [
{
"id": 0,
"image_id": "0",
"category_id": 1,
"segmentation": [
588,
783,
595,
844,
607,
687,
620,
703,
595,
722,
582,
761
],
"area": 108199,
"bbox": [
582,
687,
287,
377
],
"iscrowd": 0
}
],
"licenses": [
{
"id": 1,
"name": "Unknown",
"url": ""
}
],
"categories": [
{
"id": 1,
"name": "nail",
"supercategory": "type"
}
]
}
К вашему сведению, мой рабочий процесс похож на
Помечайте изображения с помощью инструмента аннотаций VIA
Экспорт комментариев в формате кокоса json
Измените json и сохраните на моем диске Google
Загрузите json на колаб и начните тренировку