如何设置tf.extract_image_patches的参数

时间:2017-04-07 04:52:44

标签: image tensorflow extract patch stride

我想在张量流模型中从输入图像中提取图像块。 假设输入图像为var go = function go(initialValue) { var allDone = $.Deferred(); var doIt = function doIt(value, data) { var p = void 0; if (value !== initialValue) { var deferred = $.Deferred(); var started = 0; function process(ms) { started = started || ms; var elapsed = ms - started; var done = elapsed >= 3000; if (done) { return deferred.resolve(); } // do stuff with data requestAnimationFrame(process); } process(0); p = deferred.promise(); } else { p = $.when(); } if (value > 0) { $.ajax("bunch/of/data.php", { param: value }) .then(function (data) { return p.then(function () { return doIt(value - 50000, data); }); }); } else { allDone.resolve(); } }; doIt(initialValue); return allDone.promise(); }; go(123593) .then(function() { console.log('all done'); }); ,我想输出[batch, in_width, in_height, channels][no_patches, patch_width, patch_height, channels]是可以从no_patches中提取的补丁总数。

我发现input_image可以完成这项工作。 但是,我不理解参数tf.extract_image_patchesstrides的区别。

有人可以解释如何使用上述功能来完成工作吗?

1 个答案:

答案 0 :(得分:1)

strides是关于窗口在数据上的移动。

rates是关于如何“展开”窗口的。

例如,如果您使用strides = [1,5,5,1],您的窗口会在第1和第2维中跳跃5个像素。如果您使用rates = [1,1,1,1],则窗口为“紧凑”,这意味着所有像素都是连续的。如果您使用rates = [1,1,2,1],那么您的窗口会在第二维展开,并且每2行占一个像素。

ksizes = [1,3,2,1]示例(暂时忽略步幅):我们在左侧使用rates = [1,1,1,1],在我们使用rates = [1,1,2,1]的中间,右侧我们使用rates = [1,2,2,1]

*  *  3  4  5          *  2  *  4  5          *  2  *  4  5 
*  *  8  9  10         *  7  *  9  10         6  7  8  9  10
*  *  13 14 15         *  12 *  14 15         *  12 *  14 15
16 17 18 19 20         16 17 18 19 20         16 17 18 19 20
21 22 23 24 25         21 22 23 24 25         *  22 *  24 25