【3D】PoseCNN姿态检测网络复现过程记录
【注】:本文地址:【3D】姿态检测网络PoseCNN复现过程记录.时光清浅,岁月嫣然
若转载请于明显处标明出处。
最近在研究室内6D姿态检测相关问题,计划在PoseCNN网络基础上进行改进实现。但是在第一步的复现过程中踩了无数的坑,最终成功运行了demo,目前网络训练完毕,test结果照原文要差一点。
有问题欢迎一起交流进步!
本文重点讲解网络代码复现过程,对于原文的讲解可以阅读这篇文章,满满干货!《论文笔记——PoseCNN》
本人系统环境:
- Ubuntu 16.04
- Tensorflow 1.8(from source)
- Python 2.7
- Cuda 10.0 & cuddn 7.3.1
1.搭建虚拟环境
第一步,创建专属于PoseCNN的虚拟环境,之后install的包都在此虚拟环境中。
虚拟环境的好处不用多说了吧,反正对Ubuntu系统的折腾越少越好!!!
我用 conda 创建的环境:
conda create -n posecnn python=2.7
激活环境:conda activate posecnn
如果不用这个环境,记得deactivate:conda deactivate posecnn
2.pip install
pip install opencv-python
如果不行试一下: sudo apt-get install libopencv-dev
pip install mock enum34pip install matplotlib numpy keras Cython Pillow easydict transforms3dpip install OpenEXRsudo apt-get install libsuitesparse-dev libopenexr-dev metis libmetis-dev
3.TensorFlow
注意一定要从源码安装,虽然很繁琐,但是经过实践证明,pip install安装出来的TensorFlow不好用。。
此外,使用gcc 4.8和g++ 4.8对后续的依赖包进行编译。
sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 30
sudo update-alternatives --config gcc输入选择 1
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 30
sudo update-alternatives --config g++输入选择 1测试一下gcc和g++的版本,显示4.8就更换完毕了:
gcc --version
g++ --version
接下来安装bazel,并选择0.10.0版本,本文选择下载sh文件进行安装,
下载地址:https://github.com/bazelbuild/bazel/releases/download/0.10.0/bazel-0.10.0-installer-linux-x86_64.sh
下载好之后,安装:
chmod +x bazel-0.10.0-installer-linux-x86_64.sh修改文件权限./bazel-0.10.0-installer-linux-x86_64.sh --user进行安装
接着添加环境变量:gedit ~/.bashrcexport PATH="\(PATH:\)HOME/bin"
下面下载安装TensorFlow:
git clone https://github.com/tensorflow/tensorflow.gitcd tensorflowgit checkout r1.8./configure
这一步,配置文件会问很多问题,对应回答y/n即可:注意 Python 及其sitepackage的路径要与你之后环境路径相对应
比如我在posecnn虚拟环境中运行的话,我的python路径就是 .../.conda/env/posecnn/bin/python
大部分都选择n,但是询问cuda时,要根据你的电脑实际选择然后编译源文件:
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
生成安装包:bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/software/tensorflow
最后安装:pip install /tmp/tensorflow_pkg/tensorflow-1.8.0-cp27-cp27mu-linux_x86_64.whl
至此,TensorFlow的源码安装大功告成,可以import测试一下。
4.Eigen
wget https://bitbucket.org/eigen/eigen/get/3.3.0.zip
# 提取解压压缩包
# 重命名文件夹为eigen
cd eigen
mkdir build && cd build
cmake ..
make
sudo make install
5.Nanoflann
wget https://github.com/jlblancoc/nanoflann/archive/ad7547f4e6beb1cdb3e360912fd2e352ef959465.zip
# 提取解压压缩包
# 重命名文件夹为nanoflann
sudo apt-get install build-essential cmake libgtest-dev
cd nanoflann
mkdir build && cd build && cmake ..
make && make test
sudo make install
6.Pangolin
wget https://github.com/stevenlovegrove/Pangolin/archive/1ec721d59ff6b799b9c24b8817f3b7ad2c929b83.zip
# 提取解压压缩包
# 重命名文件夹为Pangolin
cd Pangolin
# Add folowing line to the CMakeLists.txt:
# add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
mkdir build
cd build
cmake ..
cmake --build .
7.Boost
wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.bz2
# 提取解压压缩包
# 重命名文件夹为boost
cd boost
./bootstrap.sh
sudo ./b2
sudo ./b2 install
8.Sophus
wget https://github.com/strasdat/Sophus/archive/ceb6380a1584b300e687feeeea8799353d48859f.zip
# 提取解压压缩包
# 重命名文件夹为Sophus
cd Sophus
mkdir build && cd build
cmake ..
make
sudo make install
9.NLOPT
wget https://github.com/stevengj/nlopt/archive/74e647b667f7c4500cdb4f37653e59c29deb9ee2.zip
# 提取解压压缩包
# 重命名文件夹为nlopt
cd nlopt
mkdir build
cd build
cmake ..
make
sudo make install
至此,所有依赖包配置完毕,下面针对源代码进行编译运行。
10.Compile lib/kinect_fusion
先注释掉/usr/local/cuda/include/crt/common_functions.h的第75行
#define __CUDACC_VER__ "__CUDACC_VER__ is no longer supported. Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER_BUILD__ instead."
因为这个issue
要是只读权限无法修改,就用sudo chmod 777 /usr/local/cuda/include/crt/common_functions.h修改一下权限。
cd kinect_fusion
mkdir build
cd build
cmake ..
make
编译完记得取消注释刚刚的common_functions.h第75行
11.Compile lib/synthesize
cd ..
cd ..
cd synthesize
mkdir build
cd build
cmake ..
make
至此,环境配置完毕。更多可以看下面的参考链接,很详细。
参考:
- PoseCNN RSE-Lab,RSE-Lab
- PoseCNN GitHub代码,yuxng
- YCB-Video数据集下载,提取码52xx,wangg12
- PoseCNN代码实现大纲,Kaju-Bubanja
- PoseCNN代码实现详细,Luedeke
- 《论文笔记——PoseCNN》,XJTU_Bugdragon
【3D】PoseCNN姿态检测网络复现过程记录的更多相关文章
- 升级Windows 10 正式版过程记录与经验
升级Windows 10 正式版过程记录与经验 [多图预警]共50张,约4.6MB 系统概要: 预装Windows 8.1中文版 64位 C盘Users 文件夹已经挪动到D盘,并在原处建立了符号链接. ...
- iOS开发——网络篇——数据安全(MD5),HTTPS,检测网络状态
一.数据安全 1.提交用户的隐私数据一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 ...
- 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...
- 目标检测网络之 YOLOv3
本文逐步介绍YOLO v1~v3的设计历程. YOLOv1基本思想 YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这 ...
- android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...
- 第44章 MPU6050传感器—姿态检测—零死角玩转STM32-F429系列
第44章 MPU6050传感器—姿态检测 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...
- 3D车道线检测:Gen-LaneNet
3D车道线检测:Gen-LaneNet Gen-LaneNet: A Generalized and Scalable Approach for 3D Lane Detection 论文链接:http ...
- iOS开发网络篇—Reachability检测网络状态
前言:当应用程序需要访问网络的时候,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理.最好能监听设备的网络状态的改变,当设备网络状态连接.断开时,程序也 ...
- 升级到 ExtJS 5的过程记录
升级到 ExtJS 5的过程记录 最近为公司的一个项目创建了一个 ExtJS 5 的分支,顺便记录一下升级到 ExtJS 5 所遇到的问题以及填掉的坑.由于 Sencha Cmd 的 sencha ...
随机推荐
- python数据分析工具 | pandas
pandas是python下强大的数据分析和探索工具,是的python在处理数据时非常快速.简单.它是构建在numpy之上的,包含丰富的数据处理函数,支持时间序列分析功能,支持灵活处理缺失数据. pa ...
- 从解决Cocos2dx-2.x arm64 Crash 来看C的奇技淫巧
最近把以前做的老游戏拿出来,重新编到手机上来玩玩,然后就有了以下的经历. 那时的引擎还是Cocos2dx-2.x,iPhone5还是高档机型.现在的机器是这样的,iPhone6S Plus我自用,今年 ...
- 最简单易懂的实现CRC16校验
public String getCRC16(byte[] bytes) { //CRC寄存器全为1 int CRC = 0x0000ffff; //多项式校验值 int POLYNOMIAL = 0 ...
- 在Deepin系统上装Python 3.8遇到的那些坑
- 作为一天时间在Deepin上都没装好Python的代表,我感觉有必要记录一下我自己的解决方法 坑1-- SSL/TLS 字样错误 "pip is configured wih locat ...
- Jenkins构建项目帮助文档
Jenkins构建项目帮助文档 主要步骤 一.配置jdk 1.1. 下载jdk,安装到自己电脑磁盘的Java目录下(比如:D:\Java\jdk). 1.2. Jdk环境变量的配置: 1. 鼠 ...
- 第一个爬虫经历----豆瓣电影top250(经典案例)
因为要学习数据分析,需要从网上爬取数据,所以开始学习爬虫,使用python进行爬虫,有好几种模拟发送请求的方法,最基础的是使用urllib.request模块(python自带,无需再下载),第二是r ...
- SSL/TLS 协议运行机制概述(二)
SSL/TLS 协议运行机制概述(二) 在SSL/TLS 协议运行机制概述(一)中介绍了TLS 1.2 的运行机制,现在我们来看年 TLS 1.3 的运行机制.会涉及到SSL/TLS 协议运行机制概述 ...
- scrapy的扩展件extensions
extensions.py文件 # -*- coding: utf-8 -*- # 该扩展会在以下事件时记录一条日志: # spider被打开 # spider被关闭 # 爬取了特定数量的条目(ite ...
- vue-router需要注意的点
1.在编程式导航中,如果提供了path,params会被忽略:需要提供name,或手写完整的带有参数的path;以下写法可取: const userId = '123'; 1.this.$route ...
- 基于 HTML5 WebGL 的发动机 3D 可视化系统
前言 工业机械产品大多体积庞大.运输成本高,在参加行业展会或向海外客户销售时,如果没有实物展示,仅凭静态.简单的图片说明书介绍,无法让客户全面了解产品,不仅工作人员制作麻烦,客户看得也费力.如 ...