news 2026/4/18 10:07:33

航拍无人机灾后洪水房屋检测数据集 如何构建基于深度学习灾后无人机YOLOV8房屋检测系统 自然灾害

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
航拍无人机灾后洪水房屋检测数据集 如何构建基于深度学习灾后无人机YOLOV8房屋检测系统 自然灾害

无人机图像航拍灾后洪水房屋检测数据集

训练集6462张,验证集318张,测试集325张~

train: …/train/images
val: …/valid/images
test: …/test/images

nc: 3
names: [‘Flooded’, ‘Not-Flooded’, ‘Partially-Flooded’]

无人机航拍灾后洪水房屋检测数据集


📊 数据集总体概览

项目内容
总图像数量7,105 张
图像来源无人机航拍(灾后场景,含城市/乡村区域)
图像分辨率多尺寸(典型为 1920×1080 或 1080×1920,取决于飞行姿态)
类别数量3 类
标注格式YOLO 格式(每张图像对应一个.txt标注文件,含归一化边界框与类别 ID)
任务类型目标检测(每栋房屋作为一个检测目标,标注其洪水状态)

🗂️ 数据划分详情

数据集图像数量占比路径
训练集6,462~91.0%../train/images
验证集318~4.5%../valid/images
测试集325~4.6%../test/images
总计7,105100%

✅ 对应的标签路径通常为:

  • ../train/labels
  • ../valid/labels
  • ../test/labels

🏠 类别定义与语义说明

类别 ID类别名称(英文)类别名称(中文)语义说明
0Flooded完全淹没房屋主体被洪水完全覆盖或水位高于门窗,无法正常居住
1Not-Flooded未被淹没房屋周围无积水或仅有轻微地面积水,结构完好
2Partially-Flooded部分淹没房屋部分区域(如底层、庭院)被淹,但上层仍可见

📄 YOLO 配置文件(dataset.yaml示例)

# dataset.yamltrain:../train/imagesval:../valid/imagestest:../test/imagesnc:3names:['Flooded','Not-Flooded','Partially-Flooded']

✅ 典型应用场景

  • 灾情快速评估:通过无人机自动识别受灾房屋比例
  • 应急资源调度:优先救援“完全淹没”区域居民
  • 保险理赔支持:提供客观房屋损毁状态证据
  • 重建规划辅助:统计不同淹没程度房屋分布

基于 YOLOv8 的无人机航拍灾后洪水房屋检测智能灾害响应系统的完整代码方案,涵盖:

✅ 数据配置
✅ 模型训练(含类别不平衡优化)
✅ 图像/视频/实时流推理
✅ 可视化与灾情统计
✅ 部署建议


📁 一、项目结构

flood_house_detection/ ├── data/ │ ├── train/ │ │ ├── images/# 6462 张│ │ └── labels/# YOLO .txt│ ├── valid/ │ │ ├── images/ │ │ └── labels/ │ ├── test/ │ │ ├── images/ │ │ └── labels/ │ └── dataset.yaml ├── models/# 训练输出├── outputs/# 推理结果├── weights/# 预训练模型(可选)├── train.py# 训练脚本├── detect.py# 推理核心├── report.py# 灾情统计报告├── utils/ │ └── visualize.py# 标注可视化└── requirements.txt

📦 二、环境依赖(requirements.txt

ultralytics==8.2.0 opencv-python==4.8.0 numpy==1.24.3 matplotlib pandas tqdm scikit-learn

安装:

pipinstall-r requirements.txt

📄 三、数据配置文件dataset.yaml

# data/dataset.yamltrain:../train/imagesval:../valid/imagestest:../test/imagesnc:3names:['Flooded','Not-Flooded','Partially-Flooded']

✅ 确保labels/文件夹与images/同级,且.txt文件名一致。


🚀 四、模型训练(train.py)— 针对类别不平衡优化

# train.pyfromultralyticsimportYOLOdeftrain_flood_detector():# 使用 yolov8s(平衡精度与速度)model=YOLO("yolov8s.pt")results=model.train(data="data/dataset.yaml",imgsz=640,epochs=100,batch=32,device=0,# GPU ID;无 GPU 改为 "cpu"name="flood_house_yolov8s",project="models",patience=30,save=True,augment=True,# 增强策略:提升小目标 & 鲁棒性hsv_h=0.015,hsv_s=0.7,hsv_v=0.4,degrees=10.0,translate=0.1,scale=0.5,fliplr=0.5,mosaic=1.0,mixup=0.1,# 关键:启用类别平衡(Ultralytics 内部自动处理样本权重)# 注:YOLOv8 默认在损失函数中使用 class weights(基于标签频率))print(f"✅ 训练完成!最佳模型路径:{results.save_dir}/weights/best.pt")if__name__=="__main__":train_flood_detector()

💡说明:YOLOv8 在训练时会自动根据各类标注数量计算类别权重(class weights),缓解“Flooded”样本少的问题。


🔍 五、推理检测(detect.py

# detect.pyimportcv2importosfromultralyticsimportYOLOimportnumpyasnpclassFloodHouseDetector:def__init__(self,model_path="models/flood_house_yolov8s/weights/best.pt"):self.model=YOLO(model_path)self.class_names=["Flooded","Not-Flooded","Partially-Flooded"]self.colors=[(0,0,255),(0,255,0),(255,165,0)]# BGR: Red, Green, Orangedefdetect_image(self,image_path,conf=0.3,save_dir="outputs"):image=cv2.imread(image_path)results=self.model(image,conf=conf)annotated=results[0].plot()# 自动使用内置颜色os.makedirs(save_dir,exist_ok=True)out_path=os.path.join(save_dir,os.path.basename(image_path))cv2.imwrite(out_path,annotated)# 统计结果boxes=results[0].boxes counts={name:0fornameinself.class_names}forclsinboxes.cls:counts[self.class_names[int(cls)]]+=1print(f"📊 检测结果:{counts}")returnannotated,countsdefdetect_video(self,video_path,conf=0.3):cap=cv2.VideoCapture(video_path)fps=int(cap.get(cv2.CAP_PROP_FPS))w=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))h=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))out_path="outputs/detected_"+os.path.basename(video_path)out=cv2.VideoWriter(out_path,cv2.VideoWriter_fourcc(*'mp4v'),fps,(w,h))total_counts={name:0fornameinself.class_names}frame_id=0whilecap.isOpened():ret,frame=cap.read()ifnotret:breakresults=self.model(frame,conf=conf)[0]out.write(results.plot())# 累计每帧检测数(可选:仅关键帧统计)ifframe_id%30==0:# 每秒统计一次(假设30fps)forclsinresults.boxes.cls:total_counts[self.class_names[int(cls)]]+=1frame_id+=1cap.release()out.release()print(f"✅ 视频检测完成 →{out_path}")print(f"📈 累计检测:{total_counts}")returntotal_counts

📊 六、灾情统计报告(report.py

# report.pyimportosfromdetectimportFloodHouseDetectorimportpandasaspddefgenerate_disaster_report(test_dir="data/test/images",output_csv="outputs/disaster_report.csv"):detector=FloodHouseDetector()report_data=[]forimg_nameinos.listdir(test_dir):ifimg_name.lower().endswith(('.jpg','.png','.jpeg')):img_path=os.path.join(test_dir,img_name)_,counts=detector.detect_image(img_path,conf=0.3,save_dir="outputs/test_results")row={"image":img_name,**counts}report_data.append(row)df=pd.DataFrame(report_data)df.to_csv(output_csv,index=False)print(f"✅ 灾情报告已保存至:{output_csv}")# 打印汇总total=df.sum(numeric_only=True)print("\n🌍 灾情总览:")forcls,numintotal.items():print(f" -{cls}:{int(num)}栋")if__name__=="__main__":generate_disaster_report()

▶️ 七、使用示例

1. 训练模型

python train.py

2. 检测单张图像

fromdetectimportFloodHouseDetector detector=FloodHouseDetector()img,stats=detector.detect_image("test_images/flood_area.jpg")

3. 生成灾情报告

python report.py

4. 检测视频(用于无人机回传视频流)

detector=FloodHouseDetector()detector.detect_video("drone_footage.mp4")

🛠️ 八、部署与工程化建议

场景方案
应急指挥中心部署 Web 系统:前端上传图像 → 后端 YOLOv8 推理 → 返回热力图+统计
无人机端侧导出 TensorRT 引擎:
yolo export model=best.pt format=engine
批量灾评使用report.py对整个测试集生成 CSV,导入 GIS 系统
低资源设备使用yolov8n+imgsz=480加速推理


防汛抗旱指挥部、应急管理局、保险公司、测绘单位等场景,实现“空天地一体化”智能灾评

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

3、深入理解Unix系统:从基础命令到安全与文件系统

深入理解Unix系统:从基础命令到安全与文件系统 1. 强大的Unix Shell Unix的Shell就像是Windows的命令提示符,但它更强大、更灵活。在Windows中,基本只有 cmd.exe 这一种命令行环境,除非你特意安装了替代方案(如Cygwin)。然而,在Unix系统里,有多种预安装的Shell可供…

作者头像 李华
网站建设 2026/4/18 8:43:09

基于django电信资费管理系统设计开发实现

电信资费管理系统的背景电信行业作为现代信息社会的基础设施,其资费管理直接关系到运营商的服务质量和用户满意度。传统资费管理多依赖手工操作或分散系统,存在效率低、易出错、难以实时更新等问题。随着电信业务复杂度提升(如5G套餐、国际漫…

作者头像 李华
网站建设 2026/4/18 8:41:54

Kotaemon与Elasticsearch集成实现混合检索实战

Kotaemon与Elasticsearch集成实现混合检索实战 在企业级智能问答系统的开发中,一个反复出现的挑战是:如何让大模型既“懂行话”又不“胡说八道”。我们见过太多这样的场景——用户问“年假怎么申请”,系统却推荐起海南旅游攻略;或…

作者头像 李华
网站建设 2026/4/18 8:01:13

GSE宏编译器完全指南:从入门到精通魔兽世界技能编排

GSE宏编译器完全指南:从入门到精通魔兽世界技能编排 【免费下载链接】GSE-Advanced-Macro-Compiler GSE is an alternative advanced macro editor and engine for World of Warcraft. It uses Travis for UnitTests, Coveralls to report on test coverage and the…

作者头像 李华
网站建设 2026/4/18 8:44:26

终极Illustrator自动化脚本:35个高效工具完全指南

终极Illustrator自动化脚本:35个高效工具完全指南 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为重复的设计操作而烦恼吗?🤔 这个专为设计…

作者头像 李华
网站建设 2026/4/17 19:55:26

终极指南:用Apple Music-like Lyrics打造专业级歌词体验

终极指南:用Apple Music-like Lyrics打造专业级歌词体验 【免费下载链接】applemusic-like-lyrics 一个基于 Web 技术制作的类 Apple Music 歌词显示组件库,同时支持 DOM 原生、React 和 Vue 绑定。 项目地址: https://gitcode.com/gh_mirrors/ap/appl…

作者头像 李华