YOLOV3----训练已放弃(核心已转储)

本文解决了YOLOV3训练中出现的“训练已放弃(核心已转储)”问题,涉及权限、标签、配置文件调整及显卡性能等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于时间原因,简单写一下YOLOV3遇到的一个问题----训练已放弃(核心已转储)

这个问题很让人头疼,因为真的是多方面的原因,可能就是一个小的细节,导致了训练过程突然终止。由于这个开源代码很容易理解、编译,效果也非常好,有很多博客都写的很清楚,所以不再过多介绍

YOLOV3(Ubuntu)------训练已放弃(核心已转储)

1、权限问题
由于在进行训练时,应该是调用了一些编译生成的文件,没有权限去读取,所以在“./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74”命令之前加上sudo。
2、标签问题
检测的标签在data/voc.names,将中文修改为英文
3、训练时候
打开cfg/yolov3-voc.cfg配置文件修改,将文件最上边的batch=64,subdivision=16调小,改为batch=32,subdivision=16或者batch=16,subdivision=16;batch/subdivision数值最好都是2的指数。如果发生显存不足,通过增加subdivisions,降低每此放入gpu中的数据。
在这里插入图片描述
4、测试时
很大的可能是忘记把配置文件cfg//yolov3-voc.cfg的训练配置改到测试配置上。
在这里插入图片描述

针对问题3我重要说一下:(出现这个问题的原因是内存炸了。)
我的机器配置是1080的8G显卡,在设置64/16的时候一直报错,由于第一次接触yolov3,要检测的目标也非常小,训练过程经历了一直nan、修改random=0关闭多尺度之后也不能解决、来回查看自己修改的voc.names等配置文件、来回make,make clean,最后还是被别人发现是显卡性能问题(主要对自己的显卡一点儿不了解)。

	batch=16每batch个样本更新一次参数
	subdivisions=16 如果内存不够大,将batch分割为subdivisions个子batch,每个子batch的大小
	                
	**batch/subdivisions 作为一次性送入训练器的样本数量。**

迭代10000次的效果
在这里插入图片描述

### ORB-SLAM3 段错误 (核心已转) 的解决方案 段错误通常是由程序试图访问未分配给它的内存区域引起的。对于 ORB-SLAM3 运行时出现的段错误问题,可以从以下几个方面入手排查并解决问题。 #### 1. **编译选项调整** 某些硬件架构可能不支持特定优化标志 `-march=native`,这可能导致段错误。可以尝试移除此标志以避免潜在冲突。具体操作如下: - 找到 `CMakeLists.txt` 文件,在其中查找 `-march=native` 并将其删除。 - 清理之前的构建缓存: ```bash rm -rf build/ mkdir build && cd build ``` 重新配置和编译项目: ```bash cmake .. make -j$(nproc) ``` 如果仍然存在段错误,则可能是其他依赖项存在问题[^1]。 --- #### 2. **OpenCV 版本兼容性** ORB-SLAM3 对 OpenCV 的版本有严格要求。建议使用官方推荐的 OpenCV 版本(通常是 3.x 或者指定的 4.x),并通过源码手动安装以确保最佳兼容性。 以下是构建 OpenCV 的命令示例: ```bash git clone https://github.com/opencv/opencv.git cd opencv mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D BUILD_TIFF=ON \ -D WITH_CUDA=OFF \ -D ENABLE_AVX=OFF \ -D WITH_OPENGL=ON \ -D WITH_OPENCL=OFF \ -D WITH_IPP=OFF \ -D WITH_TBB=ON \ -D WITH_EIGEN=ON \ -D WITH_V4L=ON \ -D WITH_PNG=ON \ -D WITH_JPEG=ON \ -D BUILD_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D BUILD_EXAMPLES=OFF .. sudo make -j$(nproc) sudo make install ``` 完成上述步骤后,确认环境变量设置正确,并验证 OpenCV 是否正常加载[^2]。 --- #### 3. **第三方库检查** ORB-SLAM3 使用了许多第三方库(如 DBoW2 和 g2o)。这些库可能存在编译或链接问题,从而引发段错误。可以通过以下方式逐一排查: - 删除 `Thirdparty/DBoW2/CMakeLists.txt` 中的 `-march=native` 标志。 - 如果仍出现问题,可考虑替换为预编译好的二进制包或者升级至最新稳定版。 此外,还需注意 Eigen 库的版本是否满足最低需求。Eigen 是 SLAM 系统的核心线性代数工具之一,其性能直接影响系统的稳定性。 --- #### 4. **调试技巧** 为了更精准定位问题所在,可以启用 GDB 调试器分析崩溃原因: ```bash gdb ./ORB_SLAM3 run Vocabulary/ORBvoc.bin Examples/Monocular/TUM1.yaml ../TUM_dataset/rgbd_dataset_freiburg1_room/ bt full ``` 通过查看回溯堆栈 (`bt`) 输出,能够快速锁定异常发生的函数调用链路以及对应代码位置。 另一种方法是利用 Valgrind 工具检测非法内存访问行为: ```bash valgrind --leak-check=yes ./ORB_SLAM3 Vocabulary/ORBvoc.bin Examples/Monocular/TUM1.yaml ../TUM_dataset/rgbd_dataset_freiburg1_room/ ``` Valgrind 将报告所有潜在的内存泄漏及越界读写等问题。 --- #### 5. **数据集校验** 有时输入的数据集本身也可能含有缺陷,比如图像分辨率不符、时间戳错乱等都会触发内部逻辑判断失败而导致崩溃。因此务必仔细核对所使用的测试序列是否符合预期规格说明文档的要求。 --- ### 总结 综上所述,解决 ORB-SLAM3 段错误的关键在于逐步排除各层次上的隐患因素——从基础软件环境搭建直至高层算法实现细节均需给予充分关注。按照以上指导方针执行相应修正措施之后再多次运行实验观察效果变化即可有效缓解此类状况的发生概率。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值