mmdetection-虚拟环境的搭建与代码调试

2024-01-20 20:18

本文主要是介绍mmdetection-虚拟环境的搭建与代码调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、mmdetection---虚拟环境配置

官方要求:

初始环境:

  • python==3.6.8
  • CUDA==9.0
  • Pytorch==1.0.0
  • GCC==4.8.4
  • mmcv>=0.2.6

遇到的问题:

①、Segmentation fault(core dumped)-段错误

使用‘‘gdb’’追踪错误:

错误原因:gcc和系统版本太低,需要升级系统和gcc版本;

参考网址:https://github.com/open-mmlab/mmdetection/issues/24

②、Cuda版本与RTX2080有冲突:THCudaCheck FAIL:

 

错误原因:显卡使用RTX 2080Ti的时候,CUDA就要装10以上。还没有验证......

③、AttributeError: model 'torch.nn' has no attribute 'SyncBatchNorm';

解决方法:升级Pytorch版本至Pytorch==1.1.0。

(有关Pytorch安装较慢的问题解决,可参考:https://blog.csdn.net/songchunxiao1991/article/details/95192063)

最后,实现的实践环境:

 

  • python==3.6.8
  • CUDA==9.0+
  • Pytorch==1.1.0(如果是Pytorch==1.0.0,会报错:SyncBatchNorm)
  • GCC==5.4.0
  • mmcv>=0.2.6

 

2、mmdetection---代码调试

调试的数据格式是采用VOC的格式进行的。

①、输入数据的修改:./mmdet/datasets:-voc.py(图片文件默认是*.jpg,如若不是,对应源码进行修改)

Note:CLASSES修改为:自己检测的LabelName

②、配置文件的修改:./configs/cascade_rcnn_r50_fpn_x1.py

Note:num_classes修改为目标检测LabelNum+1

Note:batch_size/epochs/model_save/shape都在config配置文件中进行修改

Note:当gpu数量为8时,lr=0.02;当gpu数量为4时,lr=0.01;只要一个gpu,所以设置lr=0.0025

③、评估阶段的修改:./mmdet/core/evaluation/class_names.py

Note:修改cov_classes为自己的检测LabelNames(与第一步操作的LabelName一致)

3、训练与验证的代码操作

①、训练代码操作:

python tools/train.py configs/cascade_rcnn_r50_fpn_1x.py

Note:前提:训练、验证、测试数据已经提前写在模型的配置文件中(见2.2的配置文件的修改环节

 

②、测试代码操作

  • 首先,VOC格式数据需要先生成对应的结果*.pkl
python tools/test.py configs/cascade_rcnn_r50_fpn_1x.py work_dirs/cascade_rcnn_r50_fpn_1x/epoch_50.pth --out Result_file/Res_test.pkl
  • 然后,使用voc_eval.py评估指标
python tools/voc_eval.py Result_file/Res_test.pkl configs/TB_cascade_rcnn_r50_fpn_1x.py

结果展示:

因为项目需要关注真阳和假阳的指标,因此在源码的基础上添加了tp和fp的指标:

 

 

 

 

 

 

 

这篇关于mmdetection-虚拟环境的搭建与代码调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/627201

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码