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在某个地方执行的?