Я создал свой собственный узел подписчика ROS для выполнения CNN на изображениях из Gazebo. Я использую cv_bridge для преобразования изображений в изображения OpenCV, затем я пытаюсь обнаружить объекты, используя мою модель, которая была обучена ранее, проблема заключается в том, что всякий раз, когда я запускаю узел с помощью команды rosrun, изображения отправляются для обнаружения функции в обнаруживать объекты, но Tensorflow выдает мне ошибку ниже каждый раз, когда вызывается функция обнаружения.
InvalidArgumentError: Tensor conv2d_1_input: 0, заданный либо в feed_devices, либо в fetch_devices, не был найден в Графике
И если я запускаю сценарий обнаружения объекта как отдельный, отправляя изображения из моей веб-камеры, Обнаружение работает так, как должно быть. Проблема с узлом ROS.
def color_callback(self, color_msg):
cv_image = depthBridge.imgmsg_to_cv2(color_msg, "passthrough")
if(self.status == True):
self.detect(cv_image)
cv2.imshow("Color", cv_image)
cv2.waitKey(1)
def detect(self, img):
img = np.asarray(img)
img = cv2.resize(img, (32, 32))
img = self.preprocessing(img)
img = img.reshape(1, 32, 32, 1)
# REDICT IMAGE
global sess
global graph
with graph.as_default():
set_session(sess)
predictions = model.predict(img)
classIndex = model.predict_classes(img)
probabilityValue = np.amax(predictions)
if probabilityValue > self.threshold:
# cv2.putText(imgOrignal,str(classIndex)+" "+str(getCalssName(classIndex)), (120, 35), font, 0.75, (0, 0, 255), 2, cv2.LINE_AA)
# cv2.putText(imgOrignal, str(round(probabilityValue*100,2) )+"%", (180, 75), font, 0.75, (0, 0, 255), 2, cv2.LINE_AA)
# print(str(self.getCalssName(classIndex)))