从SSD随机读。我写picpac就是专门为了对付这种情况。
我现在正在大改版,主要是用C++重写imgaug那套东西。你要不要试试?
config = {"db": "train.spoly.db", #事先导入到存在SSD上的db文件。
"loop": True,
"shuffle": True,
"annotate": True,
"channels": 1,
"dtype": "float32",
"transforms": [
{"type": "augment.flip", "horizontal": True, "vertical":
True},
{"type": "augment.rotate", "min":-180, "max":180},
{"type": "augment.scale", "min":0.7, "max":1.2},
{"type": "clip", "round": 4},
#{"type": "colorspace", "code": "BGR2HSV", "mul0": 1.0/255
},
{"type": "augment.add", "range":20},
#{"type": "colorspace", "code": "HSV2BGR", "mul1": 255.0},
{"type": "rasterize"}, # annotation是polygons
# 这个操作把polygons变成masks
# 我正在写做mask-RCNN的anchor和minimask操作。
# transforms是可以嵌套的,imgaug的sometimes和someof
# 都可以实现。
]
}
tr_stream = picpac.ImageStream(config)
for _, images, masks in tr_stream:
mm, _ = sess.run([metrics, train_op], feed_dict={X: images, Y:
masks})
Keras也很容易。tr_stream本身就是个generator,fit_generator应该就行。
pytorch也是这个套路。
在 silentwolf (沉默的狼) 的大作中提到: 】