规范化Tensorflow对象检测API的输入

2024-09-18 14:31:21 发布

您现在位置:Python中文网/ 问答频道 /正文

Tensorflow对象检测API是否默认进行预处理,如输入规范化

我找不到任何关于它的文件。在DataAugmentations中有一个名为“NormalizeImage”的选项。在动物园里所有模型的配置文件中,我从来没有看到它被使用过。我对ssd_mobilenet_v3_small_coco_2020_01_14进行了培训,以便在不使用它的情况下将学习转移到我的自定义类,并且一切正常。 我知道有一个类似的问题here,但几年内没有答案,网络也不同

使用以下代码(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()

而使用here规范化。在我的例子中使用规范化会产生错误的结果,边界框比它应该的要大得多。我猜输入规范化是由tensorflow在引擎盖下执行的


Tags: 对象boxnetheretensorflow规范化framecv