Tensorflow 对象检测 API 是否默认进行输入规范化之类的预处理?
我在任何地方都找不到任何文档。DataAugmentations 中有一个名为“NormalizeImage”的选项。在动物园模型的所有配置文件中,我从未见过它被使用过。我ssd_mobilenet_v3_small_coco_2020_01_14
在不使用它的情况下接受了将学习转移到我的自定义课程的培训,并且一切正常。我知道这里有一个类似的问题,但几年后没有答案,而且网络不同。
使用以下代码(OpenCV 4.3.0 DNN 模块)进行测试会产生正确的结果:
import cv2 as cv
net = cv.dnn_DetectionModel('model/graph/frozen_inference_graph.pb', 'cvgraph.pbtxt')
net.setInputSize(300, 300)
#net.setInputScale(1.0 / 127.5)
#net.setInputMean((127.5, 127.5, 127.5))
net.setInputSwapRB(True)
frame = cv.imread('test/2_329_985_165605-561561.jpg')
classes, confidences, boxes = net.detect(frame, confThreshold=0.7)
for classId, confidence, box in zip(classes.flatten(), confidences.flatten(), boxes):
print(classId, confidence)
cv.rectangle(frame, box, color=(0, 255, 0))
cv.imshow('out', frame)
cv.waitKey()
虽然这里使用了归一化。在我的情况下使用归一化会产生错误的结果,边界框比它应该的大得多。我猜输入归一化是由 tensorflow 在幕后执行的?