UBUNTU16.04使用CornerNet_Lite进行目标识别并嵌入到ROS中

运行环境说明:

1)Python 3.7

2)PyTorch 1.0.0

3)CUDA 10

4)GCC 4.9.2 or above

本机测试环境说明:

torch1.4+10.0+Python3.7(虚拟环境中)

系统环境UBUNTU16.04+Python3.5和python2.7(默认)

详细步骤如下:

1.github上下载源码

CornerNet_ite github网址

git clone https://github.com/princeton-vl/CornerNet-Lite.git

2环境配置

(1)创建虚拟环境

cd <CornerNet-Lite dir>
conda create --name CornerNet_Lite --file conda_packagelist.txt --channel pytorch

创建CornerNet_Lite环境的过程需要下载一个1.0版本的pytorch有600多M,一次不一定能成功,失败了重新再运行下。

(2)激活环境

conda activate CornerNet_Lite

此时终端最前面个会多一个(CornerNet_LIte)的标志,表示已经进入到该虚拟空间。

退出虚拟空间:conda deactivate

(3)编译Corner PoolingLayers

cd <CornerNet-Lite dir>/core/models/py_utils/_cpools/
python setup.py install --user

(4)编译NMS

cd <CornerNet-Lite dir>/core/external
make

(5)下载模型文件

CornerNet

CornerNet-Squeeze(检测速度快)

CornerNet-Saccade(检测准确率高)

链接:https://pan.baidu.com/s/1lyy-Pe_uH3p7oIqfasXOqw 。提取码:0kb7 。复制这段内容后打开百度网盘手机App,操作更方便哦

三个模型一共1G多,下载完成后,Put the CornerNet-Saccade model under <CornerNet-Lite dir>/cache/nnet/CornerNet_Saccade/, CornerNet-Squeeze model under <CornerNet-Lite dir>/cache/nnet/CornerNet_Squeeze/ and CornerNet model under <CornerNet-Lite dir>/cache/nnet/CornerNet/
(6)测试

python demo.py

这里容易有个Python版本冲突的问题,装了ROS后2.7的版本容易与3版本冲突,两种解决办法:
1.在demo.py开头加上:
 

#解决ros中cv2的冲突
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')

如果单纯测试demo,这种方法没有问题,如果后续要嵌入到ros中,这种方法不行。

2.强制给CV2.so重命名

cd /opt/ros/kinetic/lib/python2.7/dist-packages/
sudo mv cv2.so cv2_ros.so
#!/usr/bin/env python  ->   #!/usr/bin/env python3

结果会在CornerNet_Lite目录下保存一张名为demo_out.jpg的图片

3.嵌入到ROS工程中

思路:相机节点发布图像话题,test_ros.py订阅图像话题,然后调用CornerNet——Lite检测。

(1)重命名cv2.so

cd /opt/ros/kinetic/lib/python2.7/dist-packages/
sudo mv cv2.so cv2_ros.so

之前解决cv2.so冲突的问题只能采用这种方法来解决。

(2)解决Python3和cv_bridge的问题

ROS默认使用python2.7,这时我们需要从源码编译cv_bridge,并在编译前设置好Python版本为Python3

1.新建ros工作空间,用于测试

mkdir py3_ws
cd py3_ws
mkdir src

2.将前面测试通过的CornerNet-Lite目录全部拷贝到 src/目录下

现在,目录结构大概是这样的 py3_ws/src/CornerNet-Lite

3.使用conda激活CornerNet-Lite环境

cd src/CornerNet-Lite/
conda activate CornerNet_Lite

因为后续需要在该环境下调用ROS,所以得先切换到该环境下,安装rospkg等包。

4.使用pip在CornerNet_Lite环境下安装rospkg、catkin_pkg等,这样才能在该环境下调用ROS

pip install catkin_pkg pyyaml empy rospkg numpy

5.这里更改以下opencv-python的版本,我的之前是4.5的,导致Python中用的cv2的一些东西就会报错不兼容。

这里降级一下:

pip uninstall opencv-python
pip install opencv-python==4.1.2.30

6.源码编译cv_bridge

依赖安装:

sudo apt-get update
sudo apt-get install python-catkin-tool
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值