我已按照this教程按照所述使用Tensorflow GPU重新训练MobileNet SSD V1,并在使用GPU (以下有关配置的更多信息)进行训练后得到了0.5的损失,得到了{{1} }。
这是我用于训练的命令:
model.ckpt
这是冻结命令(生成pb文件):
python ../models/research/object_detection/legacy/train.py --logtostderr --train_dir=./data/ --pipeline_config_path=./ssd_mobilenet_v1_pets.config
这是我使用冻结的python ../models/research/object_detection/export_inference_graph.py --input_type image_tensor --pipeline_config_path ./ssd_mobilenet_v1_pets.config --trained_checkpoint_prefix ./data/model.ckpt-1407 --output_directory ./data/
和pb
时遇到的错误:
pbtxt
这是我使用的Traceback (most recent call last):
File "Object_detection_image.py", line 29, in <module>
cvOut = cvNet.forward()
cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv\modules\dnn\src\dnn.cpp:565: error: (-215:Assertion failed) inputs.size() == requiredOutputs in function 'cv::dnn::experimental_dnn_34_v7::DataLayer::getMemoryShapes'
文件:
Object_detection_image.py
这是import cv2 as cv
import os
import time
import logging
logger = logging.getLogger()
fh = logging.FileHandler('xyz.log')
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
cvNet = cv.dnn.readNetFromTensorflow('frozen_inference_graph.pb', 'object_detection.pbtxt')
dir_x = "C:\\Users\\Omen\\Desktop\\LP_dataset\\anno"
for filename in os.listdir(dir_x):
print(filename)
if not (filename.endswith(".png") or filename.endswith(".jpg")):
continue
print('daz')
img = cv.imread(os.path.join(dir_x,filename))
img = cv.resize(img, (300,300))
#cv.imshow('i',img)
#cv.waitKey(0)
img = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
img = cv.cvtColor(img,cv.COLOR_GRAY2RGB)
rows = img.shape[0]
cols = img.shape[1]
#cvNet.setInput(cv.dnn.blobFromImage(img, size=(cols,rows), swapRB=True, crop=False))
cvNet.setInput(cv.dnn.blobFromImage(img, size=(300, 300), crop=False))
t0 = time.time()
cvOut = cvNet.forward()
print(time.time() - t0)
for detection in cvOut[0,0,:,:]:
score = float(detection[2])
#print(score)
if score > 0.80:
left = detection[3] * cols
top = detection[4] * rows
right = detection[5] * cols
bottom = detection[6] * rows
cv.rectangle(img, (int(left), int(top)), (int(right), int(bottom)), (23, 230, 210), thickness=2)
cv.imshow('img', img)
cv.waitKey(0)
文件(我也尝试了导出的pbtxt并从pb生成了pbtxt但没有用):
pbtxt
配置:
您正在使用的模型的顶级目录是什么:object_detetion
我是否已编写自定义代码:否
OS平台和发行版:win10
TensorFlow安装于:二进制
TensorFlow GPU版本:1.13.0
CUDA / cuDNN版本:10
GPU型号:1050 GTX
我可以提供您要求的任何文件,请帮助我。 在tensorflow的github中,他们告诉我在Stackoverflow中问...
更新:
我的问题得到了解决,这是cvOut的内容:
item {
id: 1
name: 'licenseplate'
}
答案 0 :(得分:2)
该错误是由于传递给函数2
的错误输入.pbtxt
文件引起的,因为tf_text_graph_ssd.py
必须按照描述here生成readNetFromTensorflow
:
.pbtxt
对于其他模型,例如faster r-cnn和mask r-cnn,也有相应的脚本。
PS:我刚刚发现有一个非常好的官方教程here.