HrSegNet 23年裂缝检测新文章基于PaddelPaddle和Paddleseg的复现

本文章是对2023年发表在Automation in Construction上论文

Real-time High-Resolution Neural Network with Semantic Guidance for Crack Segmentation

的复现。

我参考了作者上传至github的代码,并得到了作者的帮助。
https://github.com/CHDyshli/HrSegNet4CrackSegmentation

环境安装

安装Paddle

首先我在Linux服务器上安装了Paddle,可以参考Paddle官方的安装文档,非常的详细。
开始使用_飞桨-源于产业实践的开源深度学习平台
通过参考官方文档中的描述可以确认目前的python版本,pip版本,选择适合自己的Paddle版本即可,因为使用的3090显卡,CUDA版本是12.0,我安装的Paddle版本是2.5.0。具体安装过程参考官网,更加详细。

安装Paddleseg

Paddleseg应该是可以通过pip直接安装,不过我选择了使用原代码编译的方式,安装过程也很简单,通过git clone将github上的Paddleseg库下载到服务器上,然后按照步骤一步一步来就可以了。测试的方法官方给的也很清楚。我安装的Paddleseg版本是2.9.0。测试通过后就可以使用了。
https://github.com/PaddlePaddle/PaddleSeg

使用Paddleseg训练模型

使用Paddleseg训练模型比我想想的简单得多,我先按照官方的教程 “20分钟快速上手PaddleSeg”进行操作,发现非常的顺利,成功的实现了示例,大家可以参照官方的指引。
https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.9/docs/whole_process_cn.md

复现HrSegNet

配置文件和模型文件

我首先将HrSegNet Github上公开的代码clone了下来
GitHub - CHDyshli/HrSegNet4CrackSegmentation: Real-time High-Resolution Neural Network with Semantic Guidance for Crack Segmentation

之后将相应的文件放入相应的目录,主要是将configs文件夹中的文件copy到了./PaddleSeg/configs,将要models里面的模型文件copy到./PaddleSeg/paddleseg/models,并在./PaddleSeg/paddleseg/models/__init__.py中添加了所需模型的引用。如下示例,需要哪些就引入哪些。

from .hrsegnet_b16 import HrSegNetB16
from .hrsegnet_b48 import HrSegNetB48

准备数据集

文中用到了

  •  CrackSeg9k
  •  Asphalt3k
  •  Concrete3k

CrackSeg9k大家可以去官网下载。但我从官网先下载了CrackSeg9k version3.0 和 CrackSeg9K version 2.0数据集,发现本文是在2.0的基础上进行了一些删减,于是在Github上发起了提问,结果当天就得到了作者的解答,作者提供了本文使用的数据文件,这省去了我很多时间(本来准备自己准备这些数据)。

https://github.com/CHDyshli/HrSegNet4CrackSegmentation/issues/7

Asphalt3k 和 Concrete3k作者也将其划分出了Train Val Test,并上传到了OneDrive,我么可以直接下载。

进行训练

参考Paddleseg上的训练方法来训练HrSegNet即可,我在Paddleseg下运行了下面的代码,训练hrsegnetb48网络。

export CUDA_VISIBLE_DEVICES=0 # 设置1张可用的卡
python tools/train.py \--config configs/hrsegnetb48.yml \--save_interval 500 \--do_eval \--use_vdl \--save_dir output_hrsegnetb48_c9

我们也可以使用多卡训练,我进行了测试,发现多卡和单卡一个iter用的时间是一样的,因此该程序使用一张卡训练即可。

export CUDA_VISIBLE_DEVICES=0,1,2,3 # 设置4张可用的卡
python -m paddle.distributed.launch tools/train.py \--config configs/hrsegnetb48.yml \--do_eval \--use_vdl \--save_interval 500 \--save_dir output_hrsegnetb48_c9

进行验证

在训练过程中,我们设置了验证,因此没500个iter会进行验证,并记录最优结果。若想单独验证模型,使用以下代码即可(使用的是验证集 val set)

python tools/val.py \--config configs/hrsegnetb48.yml \--model_path output_hrsegnetb48_c9/best_model/model.pdparams

进行测试

测试和验证使用的代码是相同的,我们只需将yml配置文件中的验证集路径换为测试集路径。即将val_dataset中,val_path 从data/crackseg9k/val.txt 换为 data/crackseg9k/test.txt即可,然后重复执行上面验证的指令即可看到模型在测试集上的表现。

val_dataset:type: Datasetdataset_root: data/crackseg9kval_path: data/crackseg9k/val.txt

可视化

我发现paddleseg自带了可视化预测的指令,我进行了尝试,附上分割出来裂缝的效果(随便找了一张图,没有使用最优模型),官方的代码会在路径下生成两个文件夹,分别存放加在原图上的效果和只有颜色的效果。后续需要遍历测试集进行可视化的话可能还需要稍微修改下代码或者写一个批处理,如果后续我写了的话会将其放出。

python tools/predict.py \--config configs/quick_start/pp_liteseg_optic_disc_512x512_1k.yml \--model_path output/best_model/model.pdparams \--image_path data/optic_disc_seg/JPEGImages/H0002.jpg \--save_dir output/result

 

总结

这是我第一次使用PaddlePaddle和Paddleseg,比我预想到的要顺利很多,我依照官方提供的文档进行安装和使用,没有遇到什么问题,在复现HrSegNet的过程中也很顺利,在处理数据集时提了issue得到了论文作者的回复,整体使用下来很顺利。 

接下来我将对论文中的结果进行复现,并考虑在其基础上进行下一步的研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/293206.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过生成表征的自条件图像生成

文章目录 摘要1、简介2、相关工作3、方法4、结果4.1、设置4.2、无条件类别的生成4.3、无分类器指导4.4、消融实验4.5、计算成本4.6、定性结果 5、讨论 摘要 https://arxiv.org/pdf/2312.03701.pdf 本文提出了表示条件图像生成(Representation-Conditioned Image Ge…

【Linux/gcc】C/C++——编译过程

前提:WSL2(Ubuntu)、gcc编译器。gcc安装命令: sudo apt-get install gcc 查看gcc版本: 目录 1、编译过程 1.1、预处理 1.2、编译与汇编 1.3、链接 2、gcc实验 2.1、预处理 2.2、编译 2.3、汇编 2.4、链接 1、…

前端学习——vuex的入门

学习一门技术最快捷的方式就是先了解其概念和使用场景,毕竟任何技术的出现都是为了解决某一个场景下的通用解决方案,并且使用最合理的方式去解决问题。 那么什么是vuex? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 库。它采用集中…

【3d】designdoll 人偶 --- 修复手部

示例图: 打开人偶软件 设置手部细节 制作一个手型 方法一:krita live 修手(推荐) 将手型导入krita live生图,用框选工具框选手部 如果效果不好,请使用种子数。 方法二:PS SD修手(不…

Multi-value PBS

参考文献: [CIM19] Carpov S, Izabachne M, Mollimard V. New techniques for multi-value input homomorphic evaluation and applications[C]//Topics in Cryptology–CT-RSA 2019: The Cryptographers’ Track at the RSA Conference 2019, San Francisco, CA, …

java easyexcel上传和下载数据

安装依赖 easyexcel官方文档 <!--通过注解的方式导出excel--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.1</version></dependency>注意踩坑&#xff1a;easyexcel会…

【华为数据之道学习笔记】6-5数据地图的核心价值

数据供应者与消费者之间往往存在一种矛盾&#xff1a;供应者做了大量的数据治理工作、提供了大量的数据&#xff0c;但数据消费者却仍然不满意&#xff0c;他们始终认为在使用数据之前存在两个重大困难。 1&#xff09;找数难 企业的数据分散存储在上千个数据库、上百万张物理表…

【计算机视觉中的多视图几何系列】深入浅出理解针孔相机模型

温故而知新&#xff0c;可以为师矣&#xff01; 一、参考资料 《计算机视觉中的多视图几何-第五章》-Richard Hartley, Andrew Zisserman. 二、针孔模型相关介绍 1. 重要概念 1.1 投影中心/摄像机中心/光心 投影中心称为摄像机中心&#xff0c;也称为光心。投影中心位于一…

基于SpringBoot简洁优雅的个人博客系统

源代码下载地址&#xff1a; 点击这里下载 项目备注 1、该资源内项目代码都经过测试运行成功&#xff0c;功能ok的情况下才上传的&#xff0c;请放心下载使用&#xff01; 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或…

深入理解 JavaScript 函数:提升编程技能的必备知识(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

EasyExcel 导出文件的格式化

阿里开源的这个库&#xff0c;让 Excel 导出不再复杂&#xff08;既要能写&#xff0c;还要写的好看&#xff09; 之前聊了 EasyExcel 的内容导出&#xff0c;本文主要说一下导出文件的格式化&#xff0c;格式化包括工作表/单元格样式和内容格式化。毕竟&#xff0c;有时候还是…

软件渗透测试有哪些测试流程?权威安全测试报告的重要性

软件渗透测试也是安全测试的一种&#xff0c;是通过模拟恶意黑客的攻击方法&#xff0c;来评估计算机网络系统安全的一种评估方法。作为网络安全防范的一种新技术&#xff0c;对于网络安全组织具有实际应用价值。 一、软件渗透测试的过程   软件渗透测试的过程通常包括四个主…