检测旋转的车辆图像
Detect rotated vehicle images
我想将我的车辆图像(90、180 或 270 度)旋转到正确的位置。
我使用了一个假设:将图像旋转 4 个角度(0、90、180、270)并将每个角度都交给对象检测神经网络,给出最大汽车对象置信度分数的角度将是我必须的角度用于旋转我的图像。
问题是:一些旋转 180 度的图像比原始图像得分更高,因为神经网络错误地将有 2 个轮子的道路检测为汽车。例如:
The original image
The rotated image but get better score
我怎样才能防止这种情况发生?
我的模型:ssd_resnet_50_fpn_coco 来自 model zoo
这是其他一些失败案例:
1 2 enter image description here
在图片中搜索轮子并确定它们的中心是在车箱上方还是下方。
我找到了一个有点棘手的解决方案。
首先,我创建了一个模型(例如 SSD),它将检测图像的旋转角度 4 类,即:class1 - 0 度,class2 - 90 度等。
然后,该模型将从 4 个中正确找到 2 个标签:0 和 180。如果标签 运行 变为 90 或 270(有时会被识别为另一个),我将再次将它们旋转 90 度并让模型预测它们的标签在 0 到 180 之间。之后,我将用 90 度减去度数以获得正确的标签。
我想将我的车辆图像(90、180 或 270 度)旋转到正确的位置。
我使用了一个假设:将图像旋转 4 个角度(0、90、180、270)并将每个角度都交给对象检测神经网络,给出最大汽车对象置信度分数的角度将是我必须的角度用于旋转我的图像。
问题是:一些旋转 180 度的图像比原始图像得分更高,因为神经网络错误地将有 2 个轮子的道路检测为汽车。例如:
The original image
The rotated image but get better score
我怎样才能防止这种情况发生?
我的模型:ssd_resnet_50_fpn_coco 来自 model zoo
这是其他一些失败案例:
1 2 enter image description here
在图片中搜索轮子并确定它们的中心是在车箱上方还是下方。
我找到了一个有点棘手的解决方案。
首先,我创建了一个模型(例如 SSD),它将检测图像的旋转角度 4 类,即:class1 - 0 度,class2 - 90 度等。
然后,该模型将从 4 个中正确找到 2 个标签:0 和 180。如果标签 运行 变为 90 或 270(有时会被识别为另一个),我将再次将它们旋转 90 度并让模型预测它们的标签在 0 到 180 之间。之后,我将用 90 度减去度数以获得正确的标签。