#python #python-3.x #keras #image-segmentation
Вопрос:
Поэтому я обучил нейронную сеть, используя следующие инструкции:
from keras_segmentation.models.unet import vgg_unet
model = vgg_unet(n_classes=8)
model.train(
train_images = "dataset1/train/",
train_annotations = "dataset1/annot/",
checkpoints_path = "checkpoint/vggunet/vgg_unet.ckpt" , epochs=1
)
в результате в контрольной точке/vggunet появляются следующие файлы (вывод ls checkpoint/vggunet
)
checkpoint
vgg_unet.ckpt.0.data-00000-of-00001
checkpoint/vggunet/vgg_unet.ckpt.0.index
checkpoint/vggunet/vgg_unet.ckpt_config.json
Теперь я хотел бы использовать эту модель для некоторых прогнозов
from keras_segmentation.predict import predict_multiple
from keras_segmentation.models.unet import vgg_unet
import keras
checkpoint="checkpoint/vggunet/vgg_unet.ckpt"
def get_model(checkpoint):
model = vgg_unet(n_classes=8)
model.load_weights(checkpoint)
return model
get_model(checkpoint)
Однако это приводит к ошибке
Traceback (most recent call last):
File "pred.py", line 13, in <module>
get_model(checkpoint)
File "pred.py", line 9, in get_model
model.load_weights(checkpoint)
File "/home/bst/.local/lib/python2.7/site-packages/keras/engine/saving.py", line 492, in load_wrapper
return load_function(*args, **kwargs)
File "/home/bst/.local/lib/python2.7/site-packages/keras/engine/network.py", line 1221, in load_weights
with h5py.File(filepath, mode='r') as f:
File "/home/bst/.local/lib/python2.7/site-packages/h5py/_hl/files.py", line 408, in __init__
swmr=swmr)
File "/home/bst/.local/lib/python2.7/site-packages/h5py/_hl/files.py", line 173, in make_fid
fid = h5f.open(name, flags, fapl=fapl)
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py/h5f.pyx", line 88, in h5py.h5f.open
IOError: Unable to open file (unable to open file: name = 'checkpoint/vggunet/vgg_unet.ckpt', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)
Я уже перепробовал кучу различных вариантов настройки контрольной точки (указывая на каждый конкретный файл и т.д.), Но ни один из них не сработал. Если я это сделаю, я получу такую ошибку, как
Traceback (most recent call last):
File "pred.py", line 13, in <module>
get_model(checkpoint)
File "pred.py", line 9, in get_model
model.load_weights(checkpoint)
File "/home/bst/.local/lib/python2.7/site-packages/keras/engine/saving.py", line 492, in load_wrapper
return load_function(*args, **kwargs)
File "/home/bst/.local/lib/python2.7/site-packages/keras/engine/network.py", line 1221, in load_weights
with h5py.File(filepath, mode='r') as f:
File "/home/bst/.local/lib/python2.7/site-packages/h5py/_hl/files.py", line 408, in __init__
swmr=swmr)
File "/home/bst/.local/lib/python2.7/site-packages/h5py/_hl/files.py", line 173, in make_fid
fid = h5f.open(name, flags, fapl=fapl)
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py/h5f.pyx", line 88, in h5py.h5f.open
IOError: Unable to open file (file signature not found
when using checkpoint="checkpoint/vggunet/vgg_unet.ckpt.0.data-00000-of-00001"
Я подозреваю, что большая проблема заключается в том, что веса не были сохранены в формате h5py, поэтому желательно, чтобы я узнал, как загружать этот формат, хотя изменение моего кода заключается в том, что он правильно сохраняется как .h5 также приемлемо.
Кто-нибудь знает, как заставить его загружать веса с контрольной точки/vggunet/vgg_unet.ckpt.0.data-00000-of-00001?