我不确定如何为我的问题加上标题。我只知道broadcasting
和element wise
这两个术语。如果不正确,请更正我的标题。
背景:
以前我从事文本检测。但是,检测到的图片要小一些,我无法从cropped image
获取全部信息。我了解我正在使用基于英语的分类器进行单词检测。
因此,对于重叠的泰语句子,我必须微调裁剪的坐标。这是裁切区域较小的示例。您会看到标点符号和音调符号已部分丢失
我有3个正方形,称为pts
ipdb> pts
array([[[ 436, 3085],
[2968, 3081],
[2968, 3227],
[ 436, 3232]],
[[1222, 397],
[1833, 400],
[1833, 498],
[1221, 496]],
[[ 86, 3275],
[2968, 3268],
[2968, 3421],
[ 87, 3427]]], dtype=int32)
ipdb> pts.shape
(3, 4, 2)
后来我进行了计算以找到它们的中心
np.sum(pts, axis=1) / 4.0
。我把它放到center_pts
ipdb> center_pts
array([[1702. , 3156.25],
[1527.25, 447.75],
[1527.25, 3347.75]])
ipdb> center_pts.shape
(3, 2)
最终目标:
我想覆盖丢失的标点符号和语气符号
尝试:
我正在尝试进行减法运算,以从正方形的中心指向每个角进行矢量参考。并以较小的倍数覆盖裁切图像的丢失部分。
我的第一个想法是牺牲一个for循环,并明智地使用element来利用像这样的广播。
pts[0] - center_pts[0]
array([[-1266. , -71.25],
[ 1266. , -75.25],
[ 1266. , 70.75],
[-1266. , 75.75]])
问题:
1.不使用for-loop
就能做到吗?
2.他们在扩大我的面积方面是否更有生产力?
答案 0 :(得分:0)
这可以在broadcasting
的帮助下完成:
pts - center_pts[:,None]
array([[[-1266. , -71.25],
[ 1266. , -75.25],
[ 1266. , 70.75],
[-1266. , 75.75]],
[[ -305.25, -50.75],
[ 305.75, -47.75],
[ 305.75, 50.25],
[ -306.25, 48.25]],
[[-1441.25, -72.75],
[ 1440.75, -79.75],
[ 1440.75, 73.25],
[-1440.25, 79.25]]])