之前在写retinal vessel和object detection的程序时,没有总结调试过程的问题。
先开始归纳总结过程中遇到的问题,防止以后遇到再次耗费大量时间
1. Keras保存与加载模型(JSON+HDF5)
这符合retinal vessel程序中,基于tensorflow backend 的keras的框架。在程序的最开始定义了g和d,因此只需要使用g.load_weights(‘model.json.h5’)装载训练完后的network parameters。然后就可以继续训练或者是做prediction。(checkpoint的步骤类似于此,可自定义选择标准,做判断然后选择是否存储)。
2.1 Opencv-Python:图像尺寸、图像的读取、显示、保存与复制
2.2 OpenCV–图像上采样和降采样
在retinal vessel处理高resolution images的时候,考虑到计算力限制。经过试验,880×880的image batchsize只能取1。而HRF的分辨率在3500×2500左右,因此需要预先下采样,根据以往论文设置,将training dataset中images和labels,以及test dataset中的images全都下采样4倍,然后考虑到U-net结构计算值下采样16倍,因此需要padding成16倍的整数,最后取成880×592(这几乎是batchsize取2的极限尺寸,和720×720类似)。
其中使用到了:
img = cv2.imread(dirfile)
size = img.shape
cv2.imwrite(F:/images’,image,[int(cv2.IMWRITE_JPEG_QUALITY),5])三个参数分别对应保存的路径及文件名、图像矩阵、指定格式(对于JPEG,其表示的是图像的质量)
void pyrDown(InputArray src, OutputArray dst, const Size& dstsize=Size(), int borderType)