运行环境说明:
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上下载源码
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