ROS Python中深度学习前向传播速度变慢

本文主要探讨了ROS环境下YOLO检测算法前向传播速度变慢的问题,原因是前向传播在订阅回调函数中运行导致的进程问题。通过在主线程外新开进程来处理前向传播,成功解决了速度慢的问题。解决方案包括使用线程启动独立的`rosspin`运行,并在订阅函数中保存全局图像以供后续处理。
摘要由CSDN通过智能技术生成

问题描述:

yolo检测算法,在非ROS环境下前向传播时间0.019s左右,放在ros环境下就1.3s了。慢的难以忍受

 

分析原因:

因为前向传播在订阅的回调函数中实现,出现了进程问题,所以变慢了。需要重开进程

 

解决:

订阅函数保存全局图像,新开进程进行前向传播

关键语句:

(1)

import thread


def call_rosspin():
  print ('running rosspin...')
  rospy.spin()

thread.start_new_thread(call_rosspin, ())

(2)订阅函数写为保存全局图像

def img_L_sub(imgmsg):
  global img_L
  global flag_img_L
  bridge = CvBridge()
  img_L = bridge.imgmsg_to_cv2(imgmsg, "bgr8")
  flag_img_L = True
  print 'img_L recieved'

 

(3)实例程序

#!/usr/bin/env python
import numpy as np
import cv2
import os, sys

import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
import thread
from datetime import datetime
from yolo_ros.msg import TargetsInfo

#sys.path.insert(0, '../../python/')
caffe_root = '/home/alvin/Desktop/caffe-yolo/' 
sys.path.insert(0, caffe_root + 'python')
import caffe
caffe.set_device(0)
caffe.set_mode_gpu()

mean = np.require([104, 117, 123], dtype=np.float32)[:, np.newaxis, np.newaxis] ##??[104, 117, 123] [ r g b]???

img_L = cv2.imread('Null')
flag_img_L = False

pb = 0.3  

def img_L_sub(imgmsg):
  global img_L
  global flag_img_L
  bridge = CvBridge()
  img_L = br

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值