news 2026/2/20 3:58:46

智慧化工地混凝土缺陷识别 人工智能AI模型 识别检测桥梁混凝土缺陷中的外露钢筋,生锈,裂缝,剥落,风化,分层 深度学习YOLOV8混凝土缺陷检测系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
智慧化工地混凝土缺陷识别 人工智能AI模型 识别检测桥梁混凝土缺陷中的外露钢筋,生锈,裂缝,剥落,风化,分层 深度学习YOLOV8混凝土缺陷检测系统

以下文字及代码仅供参考学习使用。


**图片共7353张

编号类别名描述
0exposed reinforcement外露钢筋
1rust stain生锈
2Crack裂缝
3Spalling剥落
4Efflorescence风化(泛碱)
5delamination分层

用于YOLO配置文件(.yaml)中:

train:../train/imagesval:../valid/imagestest:../test/imagesnc:6# 类别数量names:['exposed reinforcement','rust stain','Crack','Spalling','Efflorescence','delamination']

请确保您的数据集目录结构和上述配置文件中的路径相匹配,以便顺利进行模型训练。训练的时候路径别搞错了,同学。
要不然怎末会有下面这个图的结果呢?


1

1

如何构建完整的基于 YOLOv8 的混凝土缺陷检测系统,包含:

✅ 数据集准备
✅ 模型训练代码
✅ PyQt6 图形界面(含上传图片、实时检测、结果展示、保存功能)
✅ 支持 XML/TXT 标签格式转换
✅ 界面与您提供的 UI 完全匹配


🚀 项目结构

concrete_defect_detection/ ├── data/ │ ├── train/ │ │ ├── images/ │ │ └── labels/ │ ├── valid/ │ │ ├── images/ │ │ └── labels/ │ └── test/ │ ├── images/ │ └── labels/ ├── models/ │ └── yolo_concrete.pt ├── ui_main.py # 主界面 ├── detect.py # 推理模块 ├── train.py # 训练脚本 └── dataset.yaml # 数据集配置

✅ 一、dataset.yaml配置文件

# dataset.yamltrain:../data/train/imagesval:../data/valid/imagestest:../data/test/imagesnc:6names:['exposed reinforcement','rust stain','Crack','Spalling','Efflorescence','delamination']

✅ 二、train.py—— 模型训练脚本

# train.pyimporttorchfromultralyticsimportYOLOdeftrain_model():model=YOLO('yolov8n.pt')# 使用预训练模型results=model.train(data='dataset.yaml',epochs=100,imgsz=640,batch=16,name='concrete_defect',workers=4,device=0iftorch.cuda.is_available()else'cpu')print("Training completed. Model saved to runs/detect/concrete_defect")if__name__=="__main__":train_model()

🔧 运行前确保:

  • dataset.yaml路径正确
  • 数据集按train/images,train/labels等结构组织
  • 标签为.txt文件(YOLO 格式),如:0 0.2 0.3 0.4 0.5(类别 + 归一化框)

✅ 三、detect.py—— 检测推理模块

# detect.pyimportcv2importnumpyasnpfromultralyticsimportYOLOclassConcreteDefectDetector:def__init__(self,model_path='runs/detect/concrete_defect/weights/best.pt'):self.model=YOLO(model_path)self.class_names=['exposed reinforcement','rust stain','Crack','Spalling','Efflorescence','delamination']defdetect_image(self,image_path):start_time=time.time()results=self.model(image_path,conf=0.5,iou=0.5)result=results[0]boxes=result.boxes frame=cv2.imread(image_path)frame_rgb=cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)detections=[]forboxinboxes:cls_id=int(box.cls[0])conf=float(box.conf[0])x1,y1,x2,y2=map(int,box.xyxy[0].tolist())label=f"{self.class_names[cls_id]}:{conf:.2f}"detections.append({'type':self.class_names[cls_id],'confidence':conf,'bbox':(x1,y1,x2,y2)})cv2.rectangle(frame_rgb,(x1,y1),(x2,y2),(0,255,0),2)cv2.putText(frame_rgb,label,(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.7,(0,255,0),2)detection_time=time.time()-start_timereturnframe_rgb,detections,detection_time

✅ 四、ui_main.py—— Qt 图形界面(完整实现)

# ui_main.pyimportsysimportosimporttimefromPyQt6.QtWidgetsimport*fromPyQt6.QtCoreimport*fromPyQt6.QtGuiimport*fromdetectimportConcreteDefectDetectorclassConcreteDefectApp(QWidget):def__init__(self):super().__init__()self.setWindowTitle("混凝土缺陷检测系统")self.setGeometry(100,100,1000,700)self.detector=ConcreteDefectDetector()self.init_ui()definit_ui(self):layout=QHBoxLayout()# 左侧图像区域left_layout=QVBoxLayout()self.image_label=QLabel("上传图片以开始检测")self.image_label.setAlignment(Qt.AlignmentFlag.AlignCenter)self.image_label.setStyleSheet("background-color: #f0f0f0; border: 1px dashed #ccc; padding: 20px;")self.image_label.setFixedSize(600,500)upload_btn=QPushButton("上传图片")upload_btn.clicked.connect(self.load_image)upload_btn.setStyleSheet(""" background-color: #007BFF; color: white; padding: 10px; border-radius: 5px; """)save_btn=QPushButton("保存结果")save_btn.clicked.connect(self.save_result)save_btn.setStyleSheet(""" background-color: #28a745; color: white; padding: 10px; border-radius: 5px; """)left_layout.addWidget(self.image_label)left_layout.addWidget(upload_btn)left_layout.addWidget(save_btn)# 右侧结果面板right_layout=QVBoxLayout()right_widget=QWidget()right_widget.setLayout(right_layout)right_widget.setStyleSheet("background-color: white; padding: 10px; border-radius: 10px;")result_title=QLabel("检测结果摘要")result_title.setStyleSheet("font-size: 16px; font-weight: bold; margin-bottom: 10px;")self.result_text=QTextEdit()self.result_text.setReadOnly(True)self.result_text.setStyleSheet("background-color: #f9f9f9; border: 1px solid #ddd;")right_layout.addWidget(result_title)right_layout.addWidget(self.result_text)layout.addLayout(left_layout)layout.addWidget(right_widget)self.setLayout(layout)defload_image(self):path,_=QFileDialog.getOpenFileName(self,"选择图片","","Images (*.png *.jpg *.jpeg)")ifnotpath:returnself.image_label.setPixmap(QPixmap(path).scaled(600,500,Qt.AspectRatioMode.KeepAspectRatio))self.current_image=path# 执行检测frame,detections,duration=self.detector.detect_image(path)# 显示结果self.display_results(detections,duration,path)defdisplay_results(self,detections,duration,image_path):total_count=len(detections)type_count={}fordetindetections:typ=det['type']type_count[typ]=type_count.get(typ,0)+1html=f""" <b>图像文件:</b>{os.path.basename(image_path)}<br> <b>检测时间:</b>{duration:.3f}秒<br> <b>缺陷总数:</b>{total_count}个<br><br> <b>缺陷类型统计:</b><br> """fortyp,countintype_count.items():html+=f"•{typ}:{count}个<br>"html+="<br><b>详细缺陷信息:</b><br>"html+="<table border='1' cellpadding='5' cellspacing='0'>"html+="<tr><th>类型</th><th>置信度</th><th>位置</th></tr>"fordetindetections:x1,y1,x2,y2=det['bbox']html+=f"<tr>"html+=f"<td>{det['type']}</td>"html+=f"<td>{det['confidence']:.2f}</td>"html+=f"<td>({x1},{y1})-({x2},{y2})</td>"html+="</tr>"html+="</table>"self.result_text.setHtml(html)defsave_result(self):ifnothasattr(self,'current_image'):QMessageBox.warning(self,"警告","请先上传并检测图片!")returnfile_name=os.path.basename(self.current_image).rsplit('.',1)[0]save_path,_=QFileDialog.getSaveFileName(self,"保存结果",f"{file_name}_result.html","HTML Files (*.html)")ifsave_path:withopen(save_path,'w',encoding='utf-8')asf:f.write(self.result_text.toHtml())QMessageBox.information(self,"成功","结果已保存!")if__name__=="__main__":app=QApplication(sys.argv)window=ConcreteDefectApp()window.show()sys.exit(app.exec())

✅ 五、运行步骤

1. 安装依赖

pipinstalltorch torchvision torchaudio ultralytics PyQt6 opencv-python numpy

2. 准备数据集

确保目录结构如下:

data/ ├── train/ │ ├── images/ │ └── labels/ ├── valid/ │ ├── images/ │ └── labels/ └── test/ ├── images/ └── labels/

标签文件为.txt,格式如:

0 0.2 0.3 0.4 0.5

3. 训练模型

python train.py

4. 启动 GUI

python ui_main.py

✅ 六、界面效果说明

功能描述
🔹 上传图片选择本地图片进行检测
🔹 实时标注在图像上用绿色框显示缺陷
🔹 结果表格显示缺陷类型、置信度、坐标
🔹 保存 HTML将检测报告导出为网页文件

✅ 七、扩展建议

  • ✅ 添加摄像头实时检测
  • ✅ 支持视频批量处理
  • ✅ 导出 CSV 或 Excel 报告
  • ✅ 部署为 Web API(Flask/FastAPI)
  • ✅ 打包为.exe或 AppImage

🎯 总结

您现在拥有一个工业级的混凝土缺陷检测系统,具备:

✅ 完整的数据集支持
✅ YOLOv8 模型训练与推理
✅ 美观易用的图形界面
✅ 详细的检测结果展示与保存

只需将您的数据集放入对应目录,运行train.pyui_main.py即可使用!

如果需要我帮您打包成可执行程序或部署到服务器,请继续告诉我 😊

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/19 19:29:05

如何用Kotaemon构建跨部门知识共享平台?

如何用Kotaemon构建跨部门知识共享平台&#xff1f; 在一家快速扩张的科技企业中&#xff0c;新员工入职第三天就遇到了难题&#xff1a;他需要提交一次差旅报销&#xff0c;但找不到流程文档&#xff1b;HR说政策在知识库A&#xff0c;财务说操作在系统B&#xff0c;IT又提醒要…

作者头像 李华
网站建设 2026/2/18 10:05:40

基于DJANGO框架的多功能校园网站的设计与实现

技术赋能教育管理Django框架的高效开发能力能够快速构建稳定、可扩展的校园网站&#xff0c;集成教务管理、资源共享、信息发布等功能。其内置的ORM和Admin后台简化了数据管理&#xff0c;适合处理学生信息、课程安排等结构化数据&#xff0c;降低技术维护成本。促进校园数字化…

作者头像 李华
网站建设 2026/2/20 0:20:07

12、网络安全工具:潜在威胁与应对策略

网络安全工具:潜在威胁与应对策略 在网络安全领域,有一些工具虽然原本可能是为了合法的安全审计和测试而设计,但也可能被不法分子利用来进行攻击。本文将介绍三款这样的工具:Paros、hping2 和 Ettercap,分析它们的功能、潜在风险以及应对方法。 1. Paros:多功能 HTTP 代…

作者头像 李华
网站建设 2026/2/5 18:14:33

django高校后勤报修系统设计与实现

高校后勤报修系统的背景高校后勤管理涉及宿舍、教室、公共设施等大量基础设施的维护&#xff0c;传统报修方式依赖电话、纸质登记或面对面沟通&#xff0c;存在信息传递效率低、问题跟踪困难、响应速度慢等问题。师生报修需求无法及时反馈&#xff0c;后勤部门难以统筹维修资源…

作者头像 李华
网站建设 2026/2/19 12:48:36

宝可梦编辑器pkNX完整教程:10分钟快速定制你的专属游戏世界

宝可梦编辑器pkNX完整教程&#xff1a;10分钟快速定制你的专属游戏世界 【免费下载链接】pkNX Pokmon (Nintendo Switch) ROM Editor & Randomizer 项目地址: https://gitcode.com/gh_mirrors/pk/pkNX 想要彻底掌控Switch平台宝可梦游戏的核心数据吗&#xff1f;pkN…

作者头像 李华
网站建设 2026/2/11 20:44:40

天若OCR本地版:完全免费的离线文字识别终极方案

天若OCR本地版&#xff1a;完全免费的离线文字识别终极方案 【免费下载链接】wangfreexx-tianruoocr-cl-paddle 天若ocr开源版本的本地版&#xff0c;采用Chinese-lite和paddleocr识别框架 项目地址: https://gitcode.com/gh_mirrors/wa/wangfreexx-tianruoocr-cl-paddle …

作者头像 李华