使用Node.js在深度学习中做图片预处理的方法(3)

调节色相的方法在此场景下是最有用的方法,产生的训练集最多,率先来看下色相相邻为 10 的图片之间的差距吧(提示:每张图片的左上角标识出了该图片的色相):

几乎每个图片都能作为新的训练集,由于色相调节范围只能在 0 - 200 之间,所以从色相为 0 的图片开始,每增加 10 色相就选出来加入训练集,直到色相为 190 的图片,其中色相为 100 的图片不算。 这样就能够产生 20 张图片作为训练集。

至于调节色相的代码则和亮度、饱和度一样,只是改变了第三个参数:

/** * 调整色相 * @param inputPath 输入的图像文件路径 * @param outputPath 输出的图像文件路径 * @param hue 图像色相的值,基准值是 100,比 100 高则是增加色相,比 100 低则是减少色相 * @param callback 处理后的回调函数 */ function adjustHue(inputPath, outputPath, hue, callback) { gm(inputPath) .modulate(100, 100, hue) .write(outputPath, callback); }

调节色相并不是万能的,只是适用于这个场景,当然,我们团队的需求都是类似这个场景的。但是,如果你要训练识别梨的人工智能,告诉它有个蓝色的梨显然是不合适的。

调节对比度

调整对比度用到了 gm 的 .contrast 方法:

/** * 调整对比度 * @param inputPath 输入的图像文件路径 * @param outputPath 输出的图像文件路径 * @param multiplier 调节对比度的因子,默认是 0,可以为负值,n 表示增加 n 次对比度,-n 表示降低 n 次对比度 * @param callback 处理后的回调函数 */ function adjustContrast(inputPath, outputPath, multiplier, callback) { gm(inputPath) .contrast(multiplier) .write(outputPath, callback); }

下面是对比度因子从 -10 到 10 之间的图像,可以看到图片质量较好的区间是 [-5, 2],其他都会丢失一些细节。另外相邻对比度因子的图片之间的差异也比较明显,所以每张图片都可作为训练集,这样又多出 7 张图片。

总结

通过上述 5 种方法,可以在一张图片的基础上额外获得 40 张图片,即训练集是原来的 40 倍。这还是在没有多种方法混合使用的情况下,如果混合使用,恐怕几百倍都不止。

gm 还支持对图片进行其他处理方式,你可以自己去发掘,每种方式在特定场景下都有自己的局限性,需要你去甄选。希望大家都有一个自己满意的训练集。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/8805164650ab1ec949893b5b3b92c357.html