aling119119 发表于 2023-9-11 15:28:16

人工智能可以识别施工图内容吗?

请问目前的人工智能可以识别出建筑施工图中的墙体、构建、管道、文字及设备吗?
如下图:



菲菲猪 发表于 2023-9-11 15:28:37

是可以的,基于CAD等矢量图的识别,大多是提取软件里面的图层和坐标数据。
如果是基于图片等位图识别的话看看你要做到什么深度,要想识别效果好要做多模态融合,如果简单的识别,做目标检测和ORC字符识别,然后进行融合。我最近自己做了一个相关课题,效果也还行,提取图纸参数计算工程量的,准确率也基本满足要求的。

不活 发表于 2023-9-11 15:28:52

CAD施工图,是表示通过AutoCAD软件将工程项目总体布局,建筑物的外部形状、内部布置、结构构造、内外装修、材料作法以及设备、施工等制作的图样。CAD施工图具有图纸齐全、表达准确、要求具体的特点,是进行工程施工、编制施工图预算和施工组织设计的依据,也是进行技术管理的重要技术文件。一套完整的CAD施工图一般包括建筑施工图、结构施工图、给排水、采暖通风施工图及电气施工图等专业图纸。

在建筑AI智能设计云平台AlphaDraw「筑绘通」上进行AI自动出图时,需要先对图纸进行识别,识别过程中会建立诸多任务项,那么不可避免的就会面临任务过多导致排队超时,引起任务长时间无响应的状况,worker弹性伸缩和pod优雅退出就能很好的解决这些问题。今天的AI论技就来和大家聊聊如何利用弹性伸缩AI算法运行容器使识图服务性能更加优化?


识图服务架构


识图服务中flask后端采用pika库作为与rabbitmq进行交互的客户端,再由队列给worker发任务。这个合作关系就类似于工厂,worker就是流水线,任务就是流水线上的货物。





△识图服务架构

例如worker数预先设置为3,就如同工厂中三个工人进行作业,任务数量均衡增加时,三个工人的作业效率是足以支撑工厂正常运作的。



但是任务数巨增时,例如双十一期间,快递数量将倍增,这个增值可能还是指数级别的增加,那么三个工人则是远远不够的,甚至于造成工人崩溃,工厂瘫痪。

那么如何解决这个问题呢?弹性伸缩及优雅退出就可以很好的解决这一状况。


什么是弹性伸缩和优雅退出?



worker弹性伸缩的目标正是在于处理worker数量固定时会产生大量任务排队耗时长等问题,pod优雅退出则是在于处理伴随worker数骤减时任务状态丢失问题。


弹性伸缩是将工人转化为机械手臂,由于需要考虑到资源配置,需要预设好最大的worker数及最小worker数,也就是一个工厂资源最多容纳多少机械手臂同时工作,以及任务量少的时候至少需要几个机械手臂进行工作,以防漏检任务。


工作量变多时,所有机械手臂将同时进行工作;工作量变少时,将慢慢减少工作的机械手臂,优雅退出就是当一个机械手臂被下达停止工作指令后,他将不会再收到任何任务,同时他还会继续工作10分钟(预设的一个完整任务需要的时间),将他手上正在工作的任务完成,这是为了避免突然断电导致这个任务做了一半没做完的情况。






如何实现?



弹性伸缩可基于什么特性?弹性伸缩可基于系统负载指标、CPU、内存使用率、磁盘读写速度;业务日志指标,通过日志进行服务即时压力监控;资源请求,如服务在某段时间内需要的资源数超出当前pod资源量,则需实现垂直扩缩容;依据事件,如指标时间内的请求数,当前消费队列的消息数等。

如图是一个rabbitmq的队列信息:




说明:

· recog3队列是识图任务主队列,所有的识图任务都会进入到这个队列

· recog3@retry是重试队列,是recog3队列的死信队列,如果recog3中的任务有未被捕获的异常(如识图子进程被系统kill掉),则这个任务会被推到这个队列再次执行

· Ready 准备被消费的任务数

· Unacked 执行中的任务数

· Total 队列里的总任务数

基于事件进行弹性伸缩,按时段监控消费队列ready message的任务数,任务数大于预设值,则进行worker增加,增加幅度将依据预设上限值进行计算,需注意同时段worker增加应在服务器承压范围内。反之无任务时将进行worker缩减。

下图中因ready任务数为0,rabbitmq的消费者数缩减到预设最小值1:



现在新建任务之后,ready任务数变为1:



经过预设监控时间30s后可以看到consumers数量增加为2,ready任务变为0:



由于worker直接缩减将导致worker内正在跑的任务丢失,pod优雅退出则可解决进程被强制杀死后导致的任务丢失问题,kubernetes有一个最后宽限时间参数,在pod被关闭时,kubernetes将会向pod发出SIGTERM信号,然后宽限默认30s后发SIGKILL信号强制杀死,将宽限时间设置为一个任务完成上限时间,并在收到SIGTERM信号时候取消监听,保障最后一个任务完成后再进行完全关闭,若有任务未完成也会被强行kill,重新进入队列,这将避免任务丢失。

worker弹性伸缩主要是识图的一个性能优化,通过worker弹性伸缩可以解决识图过程中任务过多时面临任务排队超时等问题,也可以对无任务时空闲资源进行释放,避免资源占用。

AI识图的目的是为了更优更好的输出建筑施工图所需图纸,保证水、电、暖、建筑、结构各专业的出图成功。利用弹性伸缩AI算法运行容器可以使识图服务性能更加优化,助力建筑AI智能设计云平台AlphaDraw「筑绘通」出图更加快速、精准,实现效率质量双提升。
页: [1]
查看完整版本: 人工智能可以识别施工图内容吗?