conda activate mv3d2
file path : ~/work/object_deteciton/didi/
然后对raw进行数据摆放
这里要注意按照readme文件,对路径进行修正。
但是这里我也碰到一个问题,
怎么实现 Change numpy array to be loaded into ‘raw’ to LidarTopPreprocess.so in ExampleUsage_Top.py line 126.
我尝试raw=np.load(“LidarTopPreprocess.so”,allow_pickle=True),但是这会报错动态库文件没法当picklefiel打开。
如果有朋友会,私信我,感谢。
这里要注意的是
运行data.py文件以后,在data文件中产生6个文件夹,如下图:
gt_boxes3d 储存154个npy文件,每个文件对应一帧点云数据中所有boxes的8个坐标信息
gt_boxes_plot 储存了154和png文件,是将2Dbox画在img上的png文件(并不是所有额obj都被画了出来,根据tracklet.xml文件可知,点云数据中还有cycilst和行人等目标,但是在data阶段没有画出来)
gt_labels 文件夹里边包含154个npy文件,储存对应点云中boxes目标框的标签,比如[1,1].代表这帧点云中有两个boxes框,且种类标签都为1
rgb 154个png文件,代表归一化后的原始image;不要诧异图片是黑色的,黑色的原因是因为原始图片的rgb范围是[0,255].黑色的图片rgb范围是[0,1];
top npy.npz文件,mv3d的top视图,将点云平均分为M个切片,为每一个切片计算高度图,得到M个高度图;代码中的M计算得15;
首先将点云分为很对个3维格子,设置格子的长宽高分辨率;然后根据点的三维坐标确定位于的格子;取每个格子内所有点的最大高度为切片对应得2D 格子的高度值;源码里边将每个点云切片分为500*300的分辨率;每个npy.npz文件可以得到一个shape为[500,300,15]的数组
这个时候要用到tensorflow,因此需要不断调试。
tensorflow版本太高了,需要降低到1
pip install tensorflow-gpu1.1.0
卸载干净
python版本太高,降低到python3.6
conda install python3.6
但是降低版本太麻烦,不如重新创建一个环境
conda create --name mv3d2 python=3.6
conda install tensorflow-gpu==1.4.1
conda install cudatoolkit=8
conda install cudnn=6
然后缺啥补啥。
Test your Tensorflow-GPU is running by"
After Tensorflow-GPU could work If you are not using Nvidia K520 GPU, you need to change “arch=sm_30” to other value in src/net/lib/setup.py and src/lib/make.sh in order to compiler *.so file right. Here is short list for arch values for different architecture.
碰到新问题卡住了
ImportError: /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0: undefined symbol: FT_Get_Var_Blend_Coordinates
搞定又有新问题,我都无语了
ImportError: /home/siat/Downloads/ENTER/envs/mv3d2/bin/…/lib/libgio-2.0.so.0: undefined symbol: g_spawn_async_with_fds
第一种可能glib的版本跟系统版本不同
查看后果然版本不同
mv3d 是2.58.2
ubuntu core18是2.56.4
ubunu core20是2.64.6
core22 是2.72.1
降低glib版本,注意不要再vscode的终端进行,要在ubuntu终端进行
conda install -c anaconda glib==2.56.1
成功解决该问题
但是版本降低又会出现新的问题。。。无语
ImportError: /usr/lib/x86_64-linux-gnu/libcairo.so.2: undefined symbol: FT_Get_Var_Design_Coordinates
那么我再查看是否版本问题
当前cairo 版本是1.12.18
ubuntu是1.15.0
将两者版本调为一致试试
调整失败
谷歌说pixman版本要和cari版本匹配,但是匹配关系没找到
pixman 版本为0.32.6
当前cairo 版本是1.12.18
然后第二种法说法是freetyle的版本有那个 FT_Get_Var_Design_Coordinates,所以需要在freetyle下面做文章
先看看libcairo.so.2跟哪些东西链接
ldd /usr/lib/x86_64-linux-gnu/libcairo.so.2
nm -s -D /usr/lib/x86_64-linux-gnu/libfreetype.so.6 | grep FT_Get_Var_Design_Coordinates
谷歌发现 libcairo.so.2 报错主要是freetype版本问题
查找libfreetype.so文件
可以看出我的mv3d2环境的freetype.so是查不到那个 FT_Get_Var_Design_Coordinates
所以
但是问题来了,/usr/lib/x86_64-linux-gnu/libcairo.so.2的freetype是链接/usr/lib/x86_64-linux-gnu/libfreetype.so.6,那这应该是没问题的呀。
有一个新的想法,升级mv3d2的cario版本
既然我们已经知道1.12.18是不行,那么就升级到最新版本1.16.0 干!
20221028 问题解决了,十分奇葩
因为我之前用pip安装的opencv,它是有问题的,因为版本太高,是4。3+。
我卸载pip的opencv-python,卸载conda的opencv,然后成功安装conda的opencv,他的版本使3.4+ ,然后就成功了。
新问题:psroi_pooling_op_gpu.cu.cc not compiling
https://github.com/bostondiditeam/MV3D/issues/49
https://github.com/bostondiditeam/MV3D MV3D源代码
https://itcn.blog/p/254887482.html#datapy_7