欢迎光临企业网站推广全程服务

企业网站推广

10年网站推广经验,之前与我们合作的企业代理商已经推广网站推广开始赚钱了,超越同行不是梦

深度学习中保持图片长宽比的resize方法

作者:jcmp      发布时间:2021-03-23      浏览量:0
最近用深度学习用tensorflow k

最近用深度学习用tensorflow keras框架出现一个问题,就是图片resize无法保持长宽比例,会发生形变。tensorflow下面可以用tf.image.resize_image_with_pad(x,input_size,input_size)方法,但是这个方法很慢而且并不兼容keras ImageGenerator,也可以将ImageGenerator 输出的numpy 经过K.eval(tf.image.resize_image_with_pad(x,input_size,input_size))处理,我试过是可以兼容keras ImageGenrator,但是速度非常慢,而且耗显存。于是考虑在keras 源码下面改动。方法如下:

找到keras源码下的ImageGenerator 的源码,找到load_img函数的最后resize部分替换为新的pad的方法:

pad方法源于pillow的PIL.ImageOps.pad https://pillow.readthedocs.io/en/stable/reference/ImageOps.html 。函数源码可以找到:

这样可以将图片保留长宽比resize,并将空白部分用你想要的color填充,也可以通过centering参数控制图片居中还是靠边。

最后把keras源码的ImageGenerator 复制,并且修改上述代码,把import头换一下,就可以import 保留长宽比的ImageGenerator。