我使用SSD进行CNN培训,并使用VOC2007和VOC2012数据集进行了测试。 我不太了解VOC2007数据集中的标准化边界框。 当我们查看Annotations / 000002.xml文件时,请说明VOC2007数据集。它有
的边界框include/uapi
可以在下面显示的图像上绘制一个边界框。
但是当我查看标签/ 000002.txt文件中的规范化数据时。
include/uapi
答案 0 :(得分:0)
过去我有类似的问题,我的解决方法是:
考虑一下(从Pascal VOC XML文件-Annotations / 000002.xml中):
$("#Save").on("click", function(e){
$("#errorRow").css("visibility", "hidden");
$("#errorRow").css("display", "none");
//Validate
if($("#form").val() == "")
{
$("#errorRow").css("visibility", "visible");
$("#errorRow").css("display", "contents");
return;
}
});
要标准化边界框坐标,可以执行以下操作:
width = 335
height = 500
xmin = 139
xmax = 207
ymin = 200
ymax = 301
输出为:
def norm_box(width, height, xmin, xmax, ymin, ymax):
x = (xmin + xmax)/2. * 1./width
w = (xmax - xmin) * 1./width
y = (ymin + ymax)/2. * 1./height
h = (ymax - ymin) * 1./height
return (x,y,w,h)
box_norm = norm_box(width, height, xmin, xmax, ymin, ymax)
print(box_norm)
与标签/000002.txt文件中的规范化数据匹配的。
(0.5164179104477612, 0.501, 0.20298507462686566, 0.202)
要对其进行非规范化,可以执行以下操作:
18 0.516417910448 0.501 0.202985074627 0.202
输出为:
def denorm_box(width, height, x, y, w, h):
xmax = int((x*width) + (w * width)/2.0)
xmin = int((x*width) - (w * width)/2.0)
ymax = int((y*height) + (h * height)/2.0)
ymin = int((y*height) - (h * height)/2.0)
return (xmin, xmax, ymin, ymax)
(x,y,w,h) = box_norm
box = denorm_box(width, height, x, y, w, h)
print(box)
您可以在此处查看演示: https://notebooks.azure.com/andrewssobral/libraries/utils/html/bbnorm.ipynb
希望对您有帮助