体验账户
username: demo
password: demo
在线体验地址
用户登录: 用户登录
用户注册: 用户注册
图片上传: 支持用户上传自己的数据图片, 格式为.png, .jpg
等图片格式。
图片下载: 支持用户下载自己的结果图片
图片查看: 支持用户查看自己的所有图片
图片查询: 支持通过经纬度等信息搜索对应地区遥感地图(数据来源高德地图), 并且可以将感兴趣区域添加到数据集。
目标检测的训练数据集为DOTA1.5, DOTA-v1.5数据集一共有16个类别,包含40万个带注释的对象实例。我们使用PaddleDetection框架下的轻量级系列模型PP-PicoDet
模型训练了50轮, 最终在验证集上的mAP达到了0.6483。
其网络结构图如下:
目标提取的训练数据集为 DeepGlobe Road Dataset。 在CVPR2018上, DeepGlobe Road Extraction Challenge提出了从卫星图像中自动提取道路和街道网络的挑战。我们使用了PaddleSeg的PP-LiteSeg
网络,使用的训练项目为AIStudio项目PP-LiteSeg模型应用案例——遥感道路分割, 能在测试集达到83.08%的mIOU。
此外还额外支持了建筑提取, 水体提取等多种目标提取任务。
其网络图如下:
变化检测的训练数据集为LEVIR-CD, LEVIR-CD是一种新型的大规模遥感建筑物变化检测数据集。由637个超高分辨率(VHR,0.5m/像素)谷歌地球(GE)图像补丁对组成,大小为1024×1024像素。我们使用了PaddleSeg下的hrnet18
进行了训练, 最终在验证集上达到了F1 = 0.8975
。
目标提取的训练数据集为WHDLD数据集,数据集中包含4940张遥感影像及对应地物分类标记样本,影像大小为256x256像素,影像以jpg格式存储,标签数据格式为单通道的png图像,数据覆盖包括6类地貌:裸地、建筑物、人行道、道路、植被、水域。我们同样使用了PaddleSeg的PP-LiteSeg
网络最终在验证集上达到了68.10%的mIOU。
前端使用Vue
框架, 在UI组件库方面使用了ElementUI以及Vuetify。地图显示以及项目之中图像显示部分使用了openlayers。前后端通信方面使用http
和websocket
。
收到前端的请求之后, nginx
, 根据请求的内容转发给不同进程处理。
后端的服务端框架使用了Django
, 基于rest-framework
作为框架进行开发, 同时使用了MySQL
做为数据库。
当收到前端对于图片分析的请求之后, 通过Celery
以Redis
作为消息队列进行异步处理任务。
当任务处理完毕之后使用websocket
与前端进行通信告知任务完成。
为了方便部署, 后端部分均使用docker
。
模型部署方面使用了PaddleInference, 在Celery
启动时将模型直接加载入内存之中, 节约了每次调用都重新加载模型的时间。
同时由于变化检测模型推理速度较为慢, 可以使用PaddleSlim将模型进行了int8
量化, 推理花费的时间将减少了1/3
(但是实际效果变差)。
如何在自己的主机运行该项目?
-
使用
npm run build
编译好前端文件为dist
-
在后端仓库的
deployment
文件夹下运行
docker-compose build
docker-compose up
并且将前面编译的dist
文件夹放置在deployment/compose/nginx
目录下即可。
如果出现前端无法连接到后端的情况, 请修改前端vue.config.js
之中的devServer
配置项, 将host
配置为自己主机的即可。
如果出现后端无法连接redis
的情况, 请修改backend/settings.py
之中的REDIS_HOST
配置项, 将host
配置为自己主机的即可。
具体可以参照doc
目录下面的部署文档
模型文件
模型文件在后端仓库的params
文件夹下面。 在实际运行之中需要将其复制到backend/params
目录(默认该目录不存在)下即可。
-
感谢百度AIStudio提供的V100算力以及PaddlePaddle支持
-
感谢用户13006307475开源项目提供的预训练模型。