Вы можете попробовать с gapcv
.Это основа для предварительной обработки данных для ОД.Вот как это работает:
установка gapcv
:
pip install gapcv
импорт Images
из vision
:
from gapcv.vision import Images
небольшое исправление в вашем файле json, так как gapcv читал json как:
см. документацию :
[
{'label': 'cat', 'image': 'http://example.com/c1.jpg'},
{'label': 'dog', 'image': 'http://example.com/d1.jpg'},
...
]
запустите эту команду, чтобы создать new_label
введите и извлеките имя метки во вложенный dict
for image in json_file:
for key in list(image):
if key == 'Label':
image['new_label'] = list(image['Label'].keys())[0]
, вы получите что-то вроде:
'new_label': 'dorsaalinen kallistuskulma'
сохраните новый файл json_file
import json
with open('data.json', 'w') as outfile:
json.dump(json_file, outfile)
теперь мы можем использовать gapcv
для загрузки и предварительной обработки ваших изображений с URL:
images = Images('my_new_file', 'data.json', config=['image_key=Labeled Data', 'label_key=new_label', 'store', 'resize=(224,224)'])
. Это создаст my_new_file.h5
файл, готовый для вашей модели:)
youможно использовать также получить генератор и использовать его для керас:
# this will stream the data from the `my_new_file.h5` file so you don't overload your memory
images = Images(config=['stream'], augment=['flip=both', 'edge', 'zoom=0.3', 'denoise']) # augment if it's needed if not use just Images(config=['stream']), norm 1.0/255.0 by default.
images.load('my_new_file')
#Metadata
print('images train')
print('Time to load data set:', images.elapsed)
print('Number of images in data set:', images.count)
print('classes:', images.classes)
генератор:
images.split = 0.2
images.minibatch = 32
gap_generator = images.minibatch
X_test, Y_test = images.test
Fit keras
модель:
model.fit_generator(generator=gap_generator,
validation_data=(X_test, Y_test),
epochs=epochs,
steps_per_epoch=steps_per_epoch)
зачем использовать gapcv?ну, это в два раза быстрее подходит для модели, чем ImageDataGenerator()
:)
пример в colab