- 博客(190)
- 资源 (25)
- 收藏
- 关注
原创 如何解决../rtSafe/safeRuntime.cpp (25) - Cuda Error in allocate: 2 (out of memory)
在onnx生成engine的代码执行过程中,用8G显存的GPU跑程序一启动就报错:../rtSafe/safeRuntime.cpp (25) - Cuda Error in allocate: 2 (out of memory),报这个错倒不一定是因为模型本身太大了,而是可能是workspace size值设置得太大了,把代码中。所需的workspace size变大,得需要把上面设置的值试着加大,当然此时GPU显存小了可能跑不了。但如果是设置了FP16量化模式。然后执行程序就不报错了。
2025-03-31 19:06:52
181
原创 Ubuntu非conda环境python3.8下安装labelme
执行 pip install labelme执行了多次每次都是卡死,后来先执行pip install pyqt发现也是卡死在同样的地方,发现原来是安装PyQt 5.15.11时有个提示要求输入yes来确认license,但是输入后回车没有任何反映,按CTRL+C报类似下面的错误: line = console_to_str(proc.stdout.readline()
2025-02-24 19:35:35
590
原创 Ubuntu下npm运行报错Error: Cannot find module ‘node:path‘
node -v获得的node版本是v10.19.0,使用6.14.0的npm是适配的,使用11.1.0版npm显然是高了,问题很清楚了,把/usr/local/bin/npm链接删掉,重新创建链接指向/usr/bin/npm,然后在新打开的终端里运行 npm run serve就可以了。执行了apt install npm安装了npm,然后又执行 npm install -g npm更新了一下,执行。
2025-02-06 17:46:10
1107
原创 如何解决Eigen和CUDA版本不匹配引起的错误math_functions.hpp: No such file or directory
搜索eigen3的头文件里确实定义有__CUDACC_VER__之类的定义,但是cuda说不支持了,这很显然是eigen3.3.4版本低了,和cuda11.8不匹配,一种解决办法是按网上说的,删掉eigen3.3.4,去网上下载更新版本的。(例如3.3.8或3.4)然后自己编译安装,但是考虑到部署需求,我们的环境不能随便动,最好能不动eigen就能解决这个问题。
2024-12-31 20:51:07
1124
原创 多核并发编译引起的编译错误
file failed to open for reading这种错误按理不应该出现,因为相关plugin的源码都有,编译时也都应该执行了,没有其他编译错误怎么会找不到呢,可能是哪里有时序问题,看了一下编译脚本里的命令,果然是有, make -j使用多核并行编译加快了速度但是可能会造成这种依赖上的问题,改成make后编译就顺利完成了
2024-12-19 19:52:50
266
原创 [caskBuilderUtils.cpp::trtSmToCaskCCV::548] Error Code 1: Internal Error (Unsupported SM: 0x809)
如果有C++版本的onnx转tensorrt engine文件的程序,则可直接用高版本的tensorrt repo程序安装tensorrt版后再执行C++版的转换程序即可,tensorrt的python包则可根据需要选择是否安装。如果整个环境不需要支持兼容其他模型或程序,可以考虑把cuda和pytorch之类的都先升级再回头安装此程序,如果考虑到兼容,可以从NVIDIA网站上。解压后,设置LD_LIBRARY_PATH指向此tar包解压出来的目录里的so文件所在的lib子目录。
2024-12-19 19:32:08
983
原创 使用cuda12编译时报错block_merge_sort.cuh(169): error: expected a “,“ or “>“
开始有点束手无策,后来突然想到是不是NUM_THREADS有多个地方定义冲突了,导致编译时替换模板参数为具体的值时对不上而造成语法格式错误,但定义冲突不可能出现在cuda这样的成熟工具软件的内部,那么肯定是在我们自己的程序里了,查查我们自己的代码,果然也有NUM_THREADS的宏定义,把其名字和相关使用的地方都改名,然后再编译错误就消失了。感觉NVIDIA在定义宏时也有点随便了,他们的宏定义起码应该都加上 _NV_ 才是啊,这样避免和应用程序冲突。
2024-12-17 14:33:16
436
原创 error: more than one conversion function from “__half“ to a built-in type applies
粗看似乎加上-D__CUDA_NO_HALF_CONVERSIONS__可以解决这个问题,有程序确实是这么干的,但是想想似乎不妥,为何以前编译含cuda API调用的程序没有这样的问题呢?后再编译,就没错了。
2024-12-17 13:55:57
523
原创 解决在训练完的基于mmcv框架的模型基础上继续训练时初始lr不正确的问题
假设基于mmcv框架的模型按照设置的max_iteration或max_epoch训练完了,然后我想在它的权重基础上做resume训练, 设置更大的max_iteration或max_epoch后启动训练你会发现训练可以跑起来,但是初始的lr还是从0开始训练时设置的比较大的值,而不是上次训练完时的lr值,这会导致新启动的训练的Loss经常总是在那里震荡下不去做训练多了N轮都基本是无用功,这可以理解,loss已经不大了,还使用比较大的lr就容易发生震荡。那怎么解决再次启动训练时初始lr值不正确的问题呢?
2024-12-02 19:59:14
549
原创 PIL Image resize()可导致模型训练和推理效果有一定差异
这些差异导致检测效果有差异,有时没注意这些细节可能一下想不到原因,由其是同一种算法C++的实现和PIL库的实现有差异时。然后对C++里改算法的实现需要和PIL的实现仔细核确保按位置计算得到的缩放结果值和PIL计算出来的值是非常接近的,像BICUBIC算法的实现,经常有差异。
2024-12-02 18:31:05
329
原创 Ubuntu20.04下安装向日葵
下载Ununtu版的图形版本的安装deb包SunloginClient_15.2.0.63064_amd64.deb。倘若这里报错,可以执行一下 sudo apt --fix-broken install。
2024-11-22 16:21:23
1361
原创 Expected all tensors to be on the same device, but found at least two devices错误的一种隐蔽的原因
pos[...,0,None]的维度和dim_t的维度不等,于是需要进行隐式广播,从错误表现看来,隐式广播应该是始终放在cpu上而不是gpu上计算的,我没有查找到相关说明,但是想想也能理解,因为维度的广播并不都适合在gpu上并行计算。
2024-11-19 19:48:44
667
原创 Apollo里频繁发生Eigen库相关的崩溃的解决办法
为何Structure在加了EIGEN_MAKE_ALIGNED_OPERATOR_NEW声明后仍然崩溃?但是运行我自己写的component时总是崩溃在CameraFrame的构造函数里:apollo::perception::onboard::CameraFrame::CameraFrame()因此,只需用Eigen::Transform替代掉Eigen::Afine3d即可。从上面的出错可以看出。
2024-11-19 19:27:17
396
原创 nuScenes数据集使用的相机的外参和内参
把nuScense的3d标注在图像上做可视化发现nuScenes的标注也做得不好 好些目标漏标了!只是目前没有更好的公开数据集出现,没银子自己采集和标注数据集的尤其是做学校研究发论文的就只能继续在nuScenes这样的数据集上干活了,尽管现在的车载激光雷达已经比nuScenes数据集采用的32线雷达好了几代了,还是不得不死磕nuScenes 32线雷达的稀疏点云用sweep帧对齐和叠加来模拟现在雷达的稠密点云。
2024-10-18 15:29:34
1336
11
原创 如何将LiDAR坐标系下的3D点投影到相机2D图像上
对于有畸变的平面相机,则不能使用内参和外参矩阵连乘,而是需要先左乘以外参矩阵把点云3D坐标转到相机坐标系下的坐标(Xc,Yc,Zc)后,把Zc小于等于0的坐标过滤掉,然后需要把Xc和Yc除以Zc,得到未校正的相机坐标系下的2D坐标(Xc/Zc,Yc/Zc),然后根据相机厂家给出的计算公式使用相机的畸变系数对此2D坐标做校正得出校正后的坐标(X,Y),再将此坐标扩展为奇次坐标后转置再左乘以相机的3x3原始内参矩阵,得出像素坐标(u,v),可以参考。很多文章里列出连乘公式都漏了这个重要的。
2024-10-17 20:43:04
2688
原创 报错invalid argument cudaErrorInvalidValue时真的是报错处调用的CUDA函数的出入参数有问题吗?
这里的错误导致分配CUDA内存的大小不对,导致后面给这块CUDA内存拷贝赋值时发生了越界访问从而把CUDA内存搞脏了,然后错误就发生在前面那个核函数调用的地方。CUDA内存弄脏后再访问CUDA内存会出错,但是报的错一般是让你根本无法看出准确原因的,出现莫名其妙的错误时,可能需要整个排查而不是只盯着出错处查,否则可能折腾很久浪费时间还是不知道原因在哪里。有时忘了这个经验浪费不少时间,记录一下备忘。
2024-10-15 17:44:09
721
原创 解决低版本pytorch和onnx组合时torch.atan2()不被onnx支持的问题
但是因为你的模型或cuda环境等约束,不能安装这么高的版本的pytorch和onnx组合时(例如我的环境是pytorch1.12,onnxruntime=1.19.2,即使onnxruntime版本比较高但是Pytorch的版本底也照样报这个错: tan2 to ONNX opset version 16 is not supported),那就只能考虑自己基于torch.atan()实现torch.atan2()的功能了。测试验证发现是准确的。
2024-10-14 19:22:19
1048
2
原创 带模板的函数在链接时找不到定义部分报undefined reference错误的原因
对于带模板的函数的声明和定义代码不在一个文件里且调用此函数的代码也与函数的定义不在同一个文件里的情况,编译器除了查找调用此函数的代码所在的文件和声明此函数的代码所在的文件里查找外,并不会去其他文件里查找此函数的定义,因而无法根据模板参数展开此带模板函数的定义代码并编译出对应版本的目标代码,到了链接阶段,链接器为调用此函数的代码查找此函数的定义代码编译出来的目标代码时自然找不到而报错。对于普通函数,在源码文件(以.cpp为例)里的定义在编译阶段是会被编译器编译成完整的目标代码;
2024-10-12 17:21:45
357
原创 nuScenes里的目标物体的速度是如何获取的
而我们自己的数据集一般都是在激光雷达坐标系或相机坐标系或者自车坐标系下标注的,所以需要先借助自车的定位数据把bbox的translation转换到全局坐标系去,然后求差再除以时间差获得速度,直接拿局部坐标系下的标注数据的translation值相减除以时间差显然是不对的,因为这只适合自车是静止的情况。
2024-10-10 16:27:26
496
原创 用Apollo dreamview可视化自行采集的点云和检测结果
但是点云始终显示不出来,在dreamview的窗口里选择点云channel的下拉列表里也看不到自采集数据的点云topic名字,重启dreamview都不官用,只好去看dreamview的源码,在。dreamview主页面里选择点云的下拉列表里就可以看到自采集数据包里的点云topic了,选择topic后先关闭pointcloud再打开就可以看到点云的可视化效果了。
2024-05-03 11:45:37
636
原创 编译Apollo时报错Could not find any cuda.h matching version ‘‘ in any subdirectory
编译Apollo时报错Could not find any cuda.h matching version '' in any subdirectory。
2024-05-03 10:53:28
511
原创 如何配置和使用Apollo的component里的plugin
总是报错说找不到libbackground_filter.so和libroi_boundary_filter.so,而这些so文件在编译后是已经在路径bazel-bin/modules/perception/lidar_detection_filter/object_filter_bank下是有了的。两个plugin就正常加载了!
2024-05-02 23:04:32
522
原创 from numba.np.ufunc import _internal initialization of _internal failed without raising an exception
然后create_data_bevdet.py就可以成功执行了!看来 numba0.53需要和numpy1.23.5组合才能使用。修改这个文件设置numpy==1.23.5,防止下次重新安装环境后再处理nuScenes数据集时出错。只好把自动安装的numpy1.24.4卸载掉,然后再安装网上有人推荐的numpy 1.23.5。
2024-05-02 18:07:01
1130
1
原创 Apollo 编译时报错 ERROR: Config value ‘gpu‘ is not defined in any .rc file
Apollo官网上下载的代码编译是没这个问题的,我用的这个是某个beta版,可能新旧版本代码和编译环境里的bazel版本之间兼容没做好。用Apollo的某个版本的源码,执行。创建容器并进入容器后执行。
2024-05-01 20:29:00
621
2
原创 sign_and_send_pubkey signing failed for RSA“/home/g/.ssh/id_rsa“ from agent: agent refused operation
使用的id_rsa和id_rsa.pub本来是可以用来正常访问github的,在github上个人的账号里也设置了对应的key,怎么在新机器环境下就不行了呢?查看网上别人说的解决办法,出这种错误后,一般人都是重新创建公私钥配置了一遍,这不是我想要的解决办法,但又不知道为何不让访问,感觉上面的Permission denied错误提示说的不明不白的。原来是文件的权限太多了,执行一下chmod 100 /home/g/.ssh/id_rsa只授予read权限,然后再执行。fatal: 无法读取远程仓库。
2024-05-01 19:01:30
747
1
原创 TensorRT转换onnx的Transpose算子遇到的奇怪问题
从pytorch导出onnx和onnx化简全过程中网络结构上的变化,发现上面有一个检测头和有多个检测头时的网络的onnx图,发现,只有一个检测头时,像上面提到,因为torch.cat()没有实质操作,pytorch导出onnx时虽然在onnx生成了Concat算子节点,但是后面用onnx simplifier化简时,它会把这个Concat算子节点删掉,Transpose算子的输出就直接作为网络的hm_preds输出了,而有多个检测头时,torch.cat()会有实质拼接操作,Concat算子自然被
2024-02-17 23:17:24
1526
原创 PCL的fromROSMsg()和toROSMsg()不能正确处理xyz之外其他field的数据长度
使用PCL的PCL的fromROSMsg()函数将ROS的sensor_msgs::PointCloud2类型数据转换为PCL的pcl::PointCloud类型数据时,假如T只是PointXYZ没问题,假如是PointXYZI,intensity这个field的数据类型是float,但是数据长度就是不对的,数据占8个字节而不是float的4个字节!
2024-02-17 22:09:57
1461
原创 NuScenes Dataset的坐标系及OpenPCDet里针对NuScenes Dataset格式的输入输出数据的坐标系转换
另外,由于NuScenes数据集采集数据时是使用的32线扫描式激光雷达,这种雷达的点数实在是有限,和现在市场上自驾使用的128线扫描式激光雷达或固态激光雷达的密集点云比,成像效果真是太差了!因为采集数据的自车是运动的,Sweep帧采集时的激光雷达坐标原点和朝向和关键帧采集时的激光雷达坐标的原点和朝向是不一样的,所以点云合并时必须要考虑运动补偿做坐标转换!装载数据时,self.infos里的bbox已经在前面生成pkl文件时从全局坐标系转换到了对应的关键帧所在的激光雷达坐标系下,所以剩下的重点就是。
2023-12-31 00:12:02
2751
原创 optimizer.load_state_dict()报错parameter group不匹配的问题的原因
optimizer.load_state_dict()报错parameter group不匹配的问题的原因ValueError: loaded state dict contains a parameter group that doesn't match the size of optimizer's group
2023-12-30 23:28:12
3829
原创 ROS2 galactic生成的bag包里的MarkerArray在humble下播放不正常
近期发现ROS2 galactic下生成的bag包在humble下回放时使用rviz可视化,bag里的点云可以正常看到,但是使用Marker和MarkerArray画的box却死活看不到,感觉很纳闷,看网上有人报告说foxy下生成的bag包在galactic下播放会报SQL错误,推断ROS2不同版本之间关于bag的实现可能有一些差异导致不兼容。考虑道ROS2生成的bag包实际上是个sqlitedb文件,于是下载sqlite3的可执行文件和给VS code安装Sqlite3 Editor插件
2023-12-04 16:40:56
650
原创 OpenGL的几种空间和坐标系统及变换
(Window or Screen Coordinates)是不同于视口坐标系的,是真实屏幕上的坐标,以屏幕左上方顶点为原点,x轴以向右方为正,y轴以向下方为正,一般UI软件涉及到的窗口(Window)的位置和鼠标相关事件都是屏幕坐标系下的,通过鼠标事件获取到的鼠标当前的位置坐标需要转换成视口坐标后才能逆向计算出鼠标在屏幕上的当前像素位置对应的实际空间中的世界坐标系下的位置。注意视口坐标系和屏幕坐标系是由区别的,经常有人搞混,把屏幕空间的视口坐标系叫屏幕空间的屏幕坐标系,实际上,
2023-12-04 15:43:23
1395
原创 解决执行find_package(PCL, ...时遇到CMakeFindDependencyMacro.cmake里find_dependency(Qt5WebKit 5.212.0 EXACT报错
find_package(PCL 1.8 REQUIRED COMPONENTS common io visualization) but it set Qt5WebKit_FOUND to FALSE so package "Qt5WebKit" is considered to be NOT FOUND. Reason given by package: Qt5WebKit could not be found because dependency is required to have
2023-12-01 20:28:39
2188
4
原创 rviz是如何获取图像里选择的点云的3D坐标的
以前以为rviz是用OpenGL渲染绘图,那么获取图像里像素点对应的真实3D坐标是采用的OpenGL里提供的API实现的,结果一看代码还真不是这样,rviz也就渲染用了OpenGL,其他都是自己实现的,图像界面的实现完全是遵循MVC设计模式自己实现的透视投影和坐标转换等所有相关类。世界3D坐标是用的射线法计算出来。SelectionManager::get3DPoint()被rviz里多个地方调用,凡是UI界面上需要查看点的坐标地方都是调用它。
2023-11-17 19:36:44
1549
原创 openMMLab的mmcv和mmdet、mmdet3d、mmseg版本对应关系
但是需要不借助MIM安装时,这里怎么确定要安装什么版本的mmcv和mmdet、mmdet3d、mmseg,在openmmlab网站主页上没有一个容易能找到的完整表格页面来详细记录他们之间的版本对应关系,好不容易找到个Faq页面,里面却只记录了最新的mmcv2.x和其它组件之间的版本,对历史1.x版居然都不记录!找到了最基础的mmcv该安装什么版本后,再查找其它框架包该安装什么对应的版本,mmdetection从。点击左下方的Read the Docs 的右边点击可以切换版本,选择v1.7.0,
2023-11-10 11:29:54
19577
11
原创 解决UniAD在高版本CUDA、pytorch下运行遇到的问题
官网上的安装说明是按作者使用的较低版本的CUDA11.1.1和pytorch1.9.1来的,对应的mmcv也是较低版本的1.4版,我们工作服务器上的nvidia ngc docker环境里使用的这些支持工具软件早已是较高版本的,于是想在我们自己的环境里把UniAD跑起来,安装过程中遇到一些坑,最终都一一解决了,也实测过了,UniAD完全可以正常跑在CUDA11.6+pytorch1.12.0+mmcv1.6+mmseg0.24.0+mmdet2.24+mmdet3d1.0.0rc4组成的环境下。
2023-11-09 18:14:30
2518
15
原创 如何定位TypeError: cannot pickle dict_keys object错误原因及解决NuScenes数据集在多进程并发训练或测试时出现的这个错误
UniAD的NuScenesE2EDataset继承自NuScenesDataset,其实例里面的eval_detection_configs数据就是这么来的,里面的class_names的值默认是通过dict.keys()获得的,没有转换成Pickler支持的类型,这才导致了TypeError: cannot pickle 'dict_keys' object
2023-11-08 20:42:05
3861
20
原创 编译环境里存在yaml-cpp的多个版本时可能引起的问题
环境里有多个不同版本的支持库,运行时可能加载了不同版本的库引起程序莫名其妙地coredump,这种情况倒是多见,例如opencv里自带了Qt的某些库,程序运行需要Qt库支持的程序时,可能会莫名地崩溃,原因就是系统里也安装了Qt,opencv里也自带了Qt库,这时可以卸载掉系统里的Qt或者通过设置LD_LIBRARY_PATH来避免加载系统环境里的Qt库,就不会发生崩溃了,某次在docker内使用Labelme时就遇到了这样的问题。
2023-10-30 17:04:13
443
原创 如何使用nuScenes数据集格式的单帧数据推理(以DETR3D为例)
无论是mmdetection3D还是OpenPCDet都只有使用数据集(使用哪个数据集由配置文件里指定)训练和测试的代码,没有使用某种数据集格式的单帧数据进行推理的代码(也就是一些2D目标检测框里里提供的推理demo代码),而OpenPCDet尤其是mmdetection里面为了支持多种不同的数据集和多种不同模型的训练和测试,把很多实现步骤高度配置化,这是好事也是坏事,如果你只是使用这些框架(尤其是使用它们已支持的公开数据集)进行训练和测试,那么相对简单,如果是要使用这些框架对单帧数据
2023-10-03 00:33:53
1408
2
原创 Labelme启动崩溃或报错qtpy.QtBindingsNotFoundError: No Qt bindings could be found的原因
Labelme启动崩溃或报错qtpy.QtBindingsNotFoundError: No Qt bindings could be found 按着网上别人说的一些办法反复实验卸载和安装一些包,还是没能解决,非常困惑,以前安装过程和启动非常顺利,为何这docker容器内里就不行呢?这应该是环境里已安装的numpy版本2.24不符合Labelme的要求,卸载掉,安装之前别的环境下Labelme可以跑的numpy 1.18.5,然后Labelme就可以正常启动了!
2023-10-01 23:32:00
4019
原创 相机有俯仰角时如何将像素坐标正确转换到其他坐标系
如果对精度要求不高,且有相机坐标系或雷达坐标系下的可视化效果看转换后的效果,可以直接调节图像坐标系下的坐标值,因为当相机有俯仰角时,物体在图像上的成像像素点和相机水平时的对应成像像素点比发生了向上或向下的偏移,在转换为图像坐标系之前试着对物体的每个成像像素点减去或加上这些偏移量,可以看到,图像上的物体点投到到雷达坐标系下后能比较准确地和物体在3D空间中的位置贴合。相机坐标系(Xc,Yc,Zc)原点在相机的光心上,Z轴与相机光轴平行,即相机的镜头拍摄方向。上述转换方法对相机坐标系转雷达坐标系同样适用。
2023-09-24 00:08:18
1312
efficientnet-b6-c76e70fd.rar
2020-03-12
ctdet_coco_hg.pth.part4.rar
2020-03-10
ctdet_coco_hg.pth.part3.rar
2020-03-10
ctdet_coco_hg.pth.part2.rar
2020-03-10
ctdet_coco_hg.pth.part1.rar
2020-03-10
VGG_imagenet.part3.rar
2020-01-19
VGG_imagenet.part2.rar
2020-01-19
VGG_imagenet.part1.rar
2020-01-19
faster_rcnn_models.part4.rar
2019-10-03
faster_rcnn_models.part3.rar
2019-10-03
faster_rcnn_models.part2.rar
2019-10-03
faster_rcnn_models.part1.rar
2019-10-03
roslibjs_ros3djs_ros2djs_jquey等相关js和css文件
2019-02-09
ippicv_2017u3_lnx_intel64_general_20170822
2018-07-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人