Ult*_*let 3 object-detection tensorflow object-detection-api
我正在尝试检测不同形状的图像(不是正方形)中的物体。我使用了faster_rcnn_inception_v2模型,并且可以使用图像缩放器来保持图像的纵横比,并且输出令人满意。
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 100
max_dimension: 600
}
}
Run Code Online (Sandbox Code Playgroud)
现在,为了提高性能,我想使用ssd_inception_v2或ssd_inception_v2模型进行训练。的示例配置的用途固定形状调整大小如下,
image_resizer {
fixed_shape_resizer {
height: 300
width: 300
}
}
Run Code Online (Sandbox Code Playgroud)
但是问题是由于固定的调整大小,我得到的检测结果很差。我尝试将它更改为keep_aspect_ratio_resizer,如先前在fast_rcnn_inception_v2中所述。我收到以下错误,
InvalidArgumentError(请参见上面的回溯):ConcatOp:输入的尺寸应匹配:shape [0] = [1,100,500,3] vs. shape 1 = [1,100,439,3]
如何在SSD模型中进行配置,以调整图像大小并保持宽高比?
SSD和速度更快的R-CNN彼此之间的工作方式大不相同,因此,即使F-RCNN没有这种限制,对于SSD,您也需要始终具有相同大小的输入图像(实际上,您需要功能图始终具有相同的大小) ,但最好的方法是始终使用相同的输入大小)。这是因为它以完全连接的图层结束,您需要了解其要素地图的大小。而对于F-RCNN,只有卷积(在任何输入大小上都有效)到ROI合并层(它不需要固定图像大小)。
因此,您需要为SSD使用固定形状调整大小。在最佳情况下,您的数据始终具有相同的width/height
比率。在这种情况下,只需使用fixed_shape_resizer
相同比率的即可。否则,您将不得不(w, h)
自己或多或少地任意选择图像大小(某种平均数据即可)。从那时起,您有几种选择:
只需让TF (w, h)
使用调整大小器来调整输入的形状,而无需进行预处理。问题是图像会变形,这可能是(或不是,取决于您的数据和要检测的对象)问题。
将所有图像裁切为具有与相同的宽高比的子图像(w, h)
。问题:您将丢失部分图像,或者必须对每个图像进行更多推断。
填充所有图像(带有黑色像素或随机的白噪声)以获得与相同的宽高比的图像(w, h)
。您必须在输出边界框上执行一些坐标平移(您将获得的坐标将在增强图像中,您必须将它们乘以两个轴上的old_size / new_size来转换为初始坐标)。问题在于,某些对象将比其他对象减小尺寸(相对于完整图像尺寸)更大,这可能会或可能不会成问题,具体取决于您的数据和要检测的内容。
归档时间: |
|
查看次数: |
4875 次 |
最近记录: |