AI外墙缺陷检测模型实现详解
引言 本篇文章是《城市建筑外立面缺陷检测系统》的AI部分延伸,介绍从数据标注、掩膜生成、模型训练、推理可视化的完整实现过程。 1.数据准备与标注 针对四类缺陷类型,分别从场景中收集30张图片,一共120张图片,尺寸均为512*512。用Labelme工具,对每张图片手动进行多边形绘制圈住缺陷区域,并且分配给一个对应的label(crack / spall / efflorescence / defacement)。 标注的结果会以json数据保存,之后需要将这些json转换为灰度掩膜图(mask)。可以通过程序批量完成转换。 1234567891011121314import os, json, cv2, numpy as npLABEL2ID = {'background': 0, 'crack': 64, 'spall': 128, 'efflorescence': 192, 'defacement': 255}def json_to_mask(json_...
城市建筑外立面缺陷检测系统 —— 三维GIS建模 + 无人机飞行模拟 + AI缺陷检测
引言 建筑外立面的安全与完好性直接关系到城市运行安全与居住环境质量。传统的外墙巡检方式往往依赖人工高空作业,不仅效率低、成本高,还存在安全隐患。 本项目《城市建筑外立面缺陷检测与维护系统》以“虚拟无人机巡检”为核心概念,通过三维GIS建模 + 无人机飞行模拟 + AI图像识别构建了一个完整的检测流程,实现了从视角漫游、目标识别到AI检测的全流程闭环。 本项目利用 GeoScene CityEngine 的建模能力,将社区建筑物 ShapeFile 数据导入场景,并通过 CGA 规则文件自动完成立体化贴图建模。在此过程中,借助 report() 机制将 building_id 等关键属性一并导出,实现了建筑物“业务数据+三维可视化”的有机结合,使模型不仅具备较好的视觉表现力,同时保留了后续分析所需的数据支撑。 在社区环境建模中,还绘制了道路、绿植等要素,形成了较高仿真度的社区场景。随后将场景导出为 Scene Layer Package (SLPK),并上传至 GeoScene Server 或 GeoScene Online 发布为服务,从而在 Web 端实现直接加...
Naive UI Modal 在手机端的返回键优化
移动端返回键的正确姿势:先关闭模态框,而不是退出页面 在移动端 Hybrid 或 H5 应用里,用户习惯了“点返回键 → 关闭弹出的模态框”,而不是直接退出页面。但在 Web 开发里,如果我们不处理,物理返回键/滑动返回往往会直接导致页面返回甚至退出,这就带来了糟糕的用户体验。 例如这个场景:用户打开了一个“审批表单”的 modal,但还没填完就顺手一滑触发了浏览器或系统的返回操作,结果往往是整个页面直接退出,表单内容丢失。这对用户来说非常反直觉。 理想的交互应该是:当 modal 打开时,先往浏览器历史栈压入一条记录;当用户点击返回键时,如果此时 modal 仍然打开,就优先关闭它,而只有在 modal 已经关闭的情况下,返回键才真正让页面后退。 history.pushState 方式 以 Naive UI 中 n-modal 为例 1234567<n-modal v-model:show="showAgreeModal" @after-enter="onModalShow" @af...
Flask-Admin + Flask-Login + SQLAlchemy:快速搭建一个后台管理系统
通过 Flask 的轻量生态 —— Flask-Admin + Flask-Login + SQLAlchemy 。在短短几百行代码内快速构建一个可登录、可视化、可管理的数据后台。 案例项目:《行迹管理平台》 引言:为什么选择 Flask-Admin 架构? 在传统的后台开发方式中,我们往往要自行编写数据管理的前端页面,实现分页、搜索、表单验证,再做一套登录权限系统,最后才能看到一点可视化结果。 对于中小型项目、原型验证或内部工具来说,这样的投入显然过重。而 Flask 的生态非常“轻”,它的核心是只用需要的部分。它不像 Django 那样自带一整套庞大的后台系统, 而是通过高度模块化的扩展机制,让你按需组合。于是,就诞生了这样的“后台三件套”的组合: 模块名称 功能描述 Flask-Admin 零前端代码生成后台页面,支持模型可视化编辑 Flask-Login 轻量的用户登录与会话管理 SQLAlchemy 主流 ORM 框架,查询简洁可扩展 项目结构设计 数据库使用 PostgreSQL,模板引擎为 Jinja2,图表由 ECharts 驱动。...
全国一等奖 —— 第十三届全国大学生GIS技能大赛纪实
第一次拿到国奖 前两天刚结束了 第十三届全国大学生GIS应用技能大赛,没想到我们拿下了一等奖。11月24号上午直播颁奖典礼,看到二等奖没有我们时,以为没有奖了,结果下一秒就是惊喜! 非常感谢组长和组员,没有大家的默契配合,我也不可能拿到奖。 从省赛的遗憾开始 早在一个多月前,我们四人组就参加了省GIS技能大赛,比赛那天,我们的发挥堪称完美,直到最后一步——提交结果。当时,我们并不知道打包工程文件时出现了疏忽(ppkx导出出错)。直到颁奖典礼结束,我们获得了三等奖。但赛后老师告诉我们,原本我们是一等奖,但因为数据导出出了问题,评委无法打开工程文件,导致被扣了分。 当时心里多少有些失落,但后面还有更重要的国赛,我们吸取教训,好好准备,坚信下次一定可以做得更好。 准备国赛 省赛之后的一个月里,只要没课,没考试,我们几乎每周都会抽出3-4天聚在实验室,限时模拟往届国赛的试题。每次练完,都会一起总结,讨论哪里还能提速,哪里容易出错。 但今年比赛的题量还是非常大 。上午题涉及的数据质检、入库、关联、统计到特征制图相比前几年算比较常规,下午的老年人口模拟、绿地服务价值评估、医疗设施可达性分...
基于坡度的登山路线难度规划与可视化
基于坡度的登山路线难度规划与可视化 在上一篇文章里,我实现了一个基于建筑阴影的路线规划算法,能够在夏季推荐更凉爽的路线。这一次,我想把思路延伸到登山场景:当我们规划一条登山路径时,除了距离以外,坡度才是决定难度的关键因素。于是我选取了一个景区内的路网数据(shp 格式)和一份小范围的坡度栅格数据(tif 格式),做了一个 Demo,目标是让用户可以在前端页面选择不同的难度等级,系统自动给出对应的登山路线,同时在地图上渲染出来,并配合图表展示坡度、长度和地形变化情况。 交互效果上,地图部分使用 Mapbox 进行三维可视化,支持卫星底图、倾斜视角和路径渲染;图表部分用 ECharts 绘制折线图、柱状图等,展示沿途坡度变化、不同难度线路的总长度对比、地形起伏分布和阴影覆盖率等指标。这样一来,用户不仅能看到最终推荐的线路,还能直观地了解这条线路“有多陡”“要走多久”,交互体验更加完整。 技术思路 整体上我还是采用“后端计算 + 前端展示”的架构: 后端(Python):负责数据准备和路线规划,具体包括 shp 矢量数据的加载、坡度栅格的读取、路段坡度计算、加权图构建和最短路径搜索。...





