YOLOv3验证数据集时出现 段错误 (核心已转储)

在训练YOLOv3模型时遇到段错误,作者检查了my_voc.data的配置,确保路径正确,同时调整了yolov3-tiny.cfg的参数。注意到训练和测试的cfg文件参数需一致,并且在验证时确认权重文件路径无误。最后,通过重新训练权重文件解决了问题。
部署运行你感兴趣的模型镜像

 在YOLOv3训练自己的数据集,最后一步验证时,出现段错误(核心已转储),要么就是不报错但是没有标签,被这个问题卡了几天,终于解决了,激动地写下第一篇优快云作为纪念。

首先检查配置文件 my_voc.data,检查路径是否正确,可以把backup文件夹与images,xmls,labels放在同一级,如下。backup存放权重文件,尤其注意。

注意这里并没有使用验证集,因此 valid 的值和train一样。

然后检查yolov3-tiny.cfg的参数设置。因为是yolov3-tiny,只有两个yolo层,在这里两个[yolo]层和上方的[convolutional]层,均按自己的数据集情况修改。

 random=1表示开启多尺度训练。

训练文件cfg和验证文件cfg应保持一致性,即除了batch和subdivisions不一样,其他的参数(如classes,filters,random)均一致。

还有注意是Training(训练)还是Testing(验证)模式。现在修改的训练文件cfg。“#”后面的内容表示被注释掉了。训练的命令如下,注意my_voc.data和yolov3-tiny.conv.15的路径是否符合自己的数据集。

./darknet detector train data/star/my_voc.data data/star/yolov3-tiny.cfg data/star/yolov3-tiny.conv.15

最后检查输入验证的命令是否正确。(本人在这里出错过,写错了yolov3-tiny_final.weights的路径)

./darknet detector test data/star/my_voc.data data/star/yolov3-tiny_test.cfg data/star/backup/yolov3-tiny_final.weights

把这一条指令看成三段,注意三部分直接不要打换行。

./darknet detector test

data/star/my_voc.data data/star/yolov3-tiny_test.cfg

data/star/backup/yolov3-tiny_final.weights

第一部分表示现在是test模式,第二部分和第三部分表示这两个文件相对darknet文件夹的路径。

其实改到这里,本人的问题还是没有解决,仍然出现段错误 (核心已转储)。受yolov3---报"段错误"的可能原因及解决方法 - 码上快乐 (codeprj.com)启发,又重新训练一次权重文件(不要怕麻烦!),终于成功了。

 (忽略为什么要给一个star打上rope标签这件事)

也感谢以下网址的启发。

YOLOV3----训练已放弃(核心已转储)_NcepuKZH的博客-优快云博客

您可能感兴趣的与本文相关的镜像

Yolo-v8.3

Yolo-v8.3

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

### ORB-SLAM3 段错误核心已转)解决方案 在处理 ORB-SLAM3 出现的段错误问题,可以从以下几个方面入手分析并解决问题: #### 1. **编译配置** 确保 OpenCV 和其他依赖项正确安装。如果未正确构建 OpenCV 或者其版本不兼容,可能会导致程序崩溃。建议按照以下方式重新构建 OpenCV[^2]: ```bash cmake -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_INSTALL_PREFIX=/usr/local \ .. sudo make -j8 sudo make install ``` 确认 OpenCV 版本与 ORB-SLAM3 要求一致,并验证是否启用了必要的模块。 --- #### 2. **Settings.cc 文件中的逻辑错误** 根据已有经验,`Settings.cc` 中可能存在逻辑错误,特别是在加载 `Rectified` 类型的数据。具体表现为:当相机类型为立体 (`stereo`) 并且校正后的图像被使用,程序试图访问未定义的变量 `"originalCalib2_"`[^3]。 ##### 修改方法: 打开 `Settings.cc` 文件,找到相关部分代码,将其修改为如下形式: ```cpp if (cameraType_ == Camera::STEREO && cameraDistortion_[0] != 0) { std::cout << "Camera Type: Stereo, Distorted" << std::endl; } else if (cameraType_ == Camera::RECTIFIED) { // 防止访问 undefined variable originalCalib2_ std::cout << "Camera Type: Rectified" << std::endl; } ``` 此更改可以有效避免因访问未初始化变量而导致的段错误。 --- #### 3. **第三方库的优化标志** 某些情况下,编译器的优化选项可能导致不稳定行为。例如 `-march=native` 可能引发硬件特定指令集的问题[^1]。可以通过调整以下设置来规避此类风险: - 删除 `Thirdparty/DBOW2/CMakeLists.txt` 和 `Thirdparty/g2o/CMakeLists.txt` 中的 `-march=native` 参数。 - 清理之前的编译缓存并重新编译项目: ```bash cd ORB_SLAM3/ rm -rf build/ mkdir build && cd build cmake .. make -j$(nproc) ``` --- #### 4. **内存泄漏或越界访问** 段错误也可能由内存管理不当引起。以下是常见的排查方向: - 使用工具如 Valgrind 检测潜在的内存问题: ```bash valgrind --leak-check=yes ./ORB_SLAM3 Vocabulary/xxx_voc.bin examples/stereo_kitti.yaml /path/to/kitti/dataset ``` - 如果发现有数组越界或其他非法操作,则需定位到对应源码位置修复。 --- #### 5. **多次运行缓解问题** 有即使解决了上述大部分原因,仍可能出现偶发性的段错误现象。此可尝试增加稳定性措施,比如将布尔值默认状态改为安全初始值: ```cpp // pointcloudmapping.h bool loopBusy = false; // 初始化为false而非true ``` 经过这些改动后再次执行程序,通常能够显著提升成功率。 --- ### 总结 综合以上几点可以看出,解决 ORB-SLAM3段错误需要从多个角度出发,包括但不限于环境搭建、代码修正以及性能调优等方面逐一排除隐患。最终目标是让整个流程更加健壮可靠。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值