问题描述
这与cv2.findContours和cv2.boundingRect具有相同的功能,我尝试使用谷歌搜索并查看tf.image。*,但似乎未实现。有什么建议吗?我喜欢分批处理二值化图像并输出形状为(batch_num,n_Boxes,4)的边界矩形,最后一个暗角对应于这些框的(x1,y1,x2,y2)。目前,我可以使用cv2.findContours(...)和cv2.boundingRect(...),并使用for循环(如果我有一批图像)来完成此操作。我的目标是在纯tf中完成此操作(图形?),使其可以成为训练或推理工作流的一部分。如果我不能将其集成到TF中,则性能会太慢。
解决方法
Tensorflow的目的是构建表示一系列操作的计算图,以便最终得出损失函数。我们对这个损失函数进行反向支持,因此我们可以最小化权重。 cv2.findContours
和cv2.boundingRect
是由于算法本身的性质而无法在GPU上并行化的操作。 tf.image
中的任何内容都可以轻松地表示为计算图。无法以这种方式在图像中查找轮廓,因此自然无法使用此功能。您别无选择,只能使用for
循环,但是由于这是完全在CPU上完成的,因此您可以使用多处理或线程对每个图像并行执行。