山东某客户希望我们能够利用深度学习技术进行遥感影像的大气排污烟囱检测,快速发现生态环境问题,以便给相关主管部门提供决策依据。考虑到客户对数据时效性的要求,我们决定采用高分2号卫星0.8米分辨率影像进行烟囱检测。
这次先写个总体介绍,分享下整体的技术路线,后续会很快将各步骤的细节完善出来,敬请期待!
我们选择了YOLOv8算法,它是Ultralytics公司继YOLOv5之后推出的新一代目标检测算法。算法继承了YOLO系列一贯的速度快、精度高的特点,并在此基础上进行了多项改进和优化。不仅支持图像分类、物体检测和实例分割任务,还引入了新的功能和改进,以进一步提升性能和灵活性。
官方也给出了YOLOv8不同参数量大小的模型在COCO数据集上训练后的Benchmark:
Model | size(pixels) | mAPval50-95 | SpeedCPU ONNX(ms) | SpeedA100 TensorRT(ms) | params(M) | FLOPs(B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
丰富的API和工具:Ultralytics框架提供了大量的API和工具,使得我们能够快速搭建和训练模型。这极大地降低了我们的工作量,并提高了开发效率。
易于使用和扩展:Ultralytics框架具有简洁明了的接口和文档,使得我们能够轻松上手并进行二次开发。同时,该框架还支持多种硬件平台和操作系统,使得我们能够在不同的环境下进行模型训练和部署。
强大的社区支持:Ultralytics框架拥有庞大的用户社区和开发者社区。这些社区成员经常分享他们的经验和技巧,为我们提供了宝贵的帮助和支持。
Ultralytics官方文档:Home - Ultralytics YOLO Docs
Ultralytics源码库:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite
总体技术路线如下:
使用ArcMap软件对遥感影像中的烟囱进行标注。这一步是为了给算法提供样本,让模型能够识别出影像中的烟囱。
为了将标注数据转换为模型训练所需的格式,我们编写了脚本进行滑窗切片,生成了PascalVOC格式的样本集。这样将遥感影像大图切分成了很多小图,便于模型进行训练。
接着将PascalVOC样本集转换为YOLOv8所要求的样本格式,确保模型能够正确读取和解析样本数据。
准备好样本数据后,开始进行模型训练!Ultralytics做了非常到位的封装,简单几行代码就可以启动训练,还能利用DDP(Distributed Data Parallel)进行分布式数据并行训练,提升训练速度。训练过程中可以利用Tensorboard查看各项指标。
训练完成后,我们用模型对大幅遥感影像进行预测。通过滑窗将整个影像划分为多个小区域,并使用训练好的模型对每个小区域进行预测。最后把所有小区域的预测结果合并起来,得到整个影像的烟囱检测结果。
为了评估模型的检测精度,我们选取了部分已知烟囱位置的影像进行验证。这里与传统样本集的验证方式稍有不同,输入的是预测结果shp和真值shp,计算整张影像下召回率、精确率指标。
以上就是我们利用YOLOv8进行遥感影像大气排污烟囱检测的总体介绍,希望能够给大家带来一些启发和帮助。如果你有任何问题或建议,欢迎随时在评论区留言交流。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。