基于室内施工图制图标准的AI审图系统的设计与实现

2023-11-10 04:25黄成华
兰州职业技术学院学报 2023年5期
关键词:施工图制图图纸

黄成华

(兰州职业技术学院 艺术设计学院, 甘肃兰州730070)

“建筑制图与识图”是建筑室内设计专业的一门专业核心课程,旨在教授学生室内施工图规范标准、制图和识图方法,培养学生独立完成建筑制图和识图的能力。在授课期间,教师每节课都会布置相应的制图练习作业,并对学生提交的作业进行批阅,指出存在的错误,提出修改意见。然而,制图作业量大,教师批阅时更依赖于自身的制图水平和经验,而学生的学习能力和接受水平参差不齐,一份作业往往需要多次批阅和反复修改。同时,由于缺乏量化的评价标准,致使教师无法统一客观评价同级学生“建筑制图与识图”课程整体学习状况。鉴于此,笔者设计开发了基于室内施工图制图标准的AI审图系统,该系统基于深度学习框架TensorFlow的卷积神经网络(简称CNN)模型,构建全连接的神经网络模型。在深度学习的模型开发过程中,充足的数据集及精准的数据标注对最终模型效果来说至关重要。为了提高AI审图系统的性能和鲁棒性,系统以室内施工图制图国家标准等规范文件为基准,以课程作业和行业规范图纸为基础组建人工标注数据集,用于训练初始模型;利用训练好的模型对未标注的数据进行预测,通过优化算法和数据迭代方式实现对“建筑制图与识图”课程作业的审查,指出其错误,提出修改意见。学生使用AI审图系统可以实时检查、修改和完善作业,跳过等待教师批阅过程。教师使用AI审图系统可以量化数据分析,全面了解学生课程知识的掌握情况,有针对性地开展教学,提高教学质量。

一、室内施工图制图标准

室内施工图是应用于室内装饰项目的施工图纸,用于表现设计意图、配合报价、指导施工。使用规范的制图语言绘制的图纸,才能作为设计施工和报审的通用语言。具体要求为:目录体系合理且索引逻辑清晰,便于图纸的增减和设计变更;建筑装饰专业信息客观完整,与室内设计方案相匹配;图纸比例合理、排版美观,所用图线、字体、标注等符合行业规范[1]。

二、系统框架结构

为了使系统具备更好的通用性和灵活性,适应教学中不断出现的新场景,增强扩展性,本系统采用水平式系统框架结构。核心结构采用基于深度学习框架TensorFlow的CNN模型实现基于室内施工图制图标准的AI审图,TensorFlow具有分布式计算能力,能够并行训练模型,适用于后续开展更大量级的训练[2]。

(一)数据输入

接收用户上传的图纸文件,筛选文件格式,退回非PDF格式文件,记录图纸作者信息。

(二)结构化数据处理

对图纸文件信息进行区域划分、构件识别、强条审查等方面的数据处理:

1.对室内施工图图纸文件进行组件拆分和颜色分层;

2.使用神经网络模型对各层进行目标检测,确定各个组件的目标框;

3.组合各层各块目标框;

4.使用角度旋转、描边、遮挡和干扰等方式增强数据;

5.采用深度学习模型训练各组件,结合室内施工图中位置、上下文特征等信息判断绘图规范性。

(三)结果输出

CAD文件以PDF格式导入,以文本和图像形式输出,图1展示了该系统的数据结构。

图1 AI审图系统数据结构

三、系统设计

(一)数据集操作

1.数据集加载和预处理

系统采集与“建筑制图与识图”课程相关的多种类型的室内施工图纸作为数据集,包括课程标准作业图、学生作业图和企业样板施工图集等,目前已采集到2000余套。系统首先使用OpenCV库对采集数据集进行加载和预处理,预处理包括提高图像质量,减少噪声对模型训练的影响,并对数据集进行大小调整、裁剪和归一化等操作,确保图像在训练过程中的清晰度和准确性。

2.数据集划分

将数据集划分为训练集、测试集和验证集,以便在真实数据上对模型进行评估和泛化。

3.训练集权重调整

通过观测训练结果,调整数据结果权重,使其在现有数据训练条件下训练集权重参数更为合理。

4.测试集更迭

利用完成训练的模型对未标注数据开展预测,分析预测结果,提出优化方案,提高模型输出合理性。

5.验证集评估

使用验证集来评估模型训练的结果,为系统的准确性和稳定性提供修正依据。以下是使用Python语言编写代码,完成数据集加载和预处理的过程。

image_height =128

image_width =128

#图像大小调整和归一化

defpreprocess_image(image):

image = cv2.resize(image, (image_height, image_width))

image = image.astype('float32') / 255.0

return image

#预处理训练集图像

train_images = [preprocess_image(image)for image in train_images]

#预处理测试集图像

test_images = [preprocess_image(image)for image in test_images]

#预处理验证集图像

val_images = [preprocess_image(image)for image in val_images]

#对标签进行编码

fromsklearn.preprocessing import LabelEncoder

fromtensorflow.keras.utils import to_categorical

#对标签进行编码

label_encoder = LabelEncoder()

train_labels_encoded = label_encoder.fit_transform(train_labels)

test_labels_encoded = label_encoder.transform(test_labels)

val_labels_encoded = label_encoder.transform(val_labels)

#将标签转换为one-hot编码

num_classes =len(label_encoder.classes_)

train_labels_one_hot = to_categorical(train_labels_encoded, num_classes)

test_labels_one_hot = to_categorical(test_labels_encoded, num_classes)

val_labels_one_hot = to_categorical(val_labels_encoded, num_classes)

通过上述步骤完成数据的整理、划分和预处理,为后续的CNN模型训练做好准备。

(二)CNN模型训练

CNN是一种深度学习算法,广泛应用于图像处理和计算机视觉领域[3]。AI审图系统采用深度学习框架TensorFlow的CNN模型构建,CNN模型的架构包括卷积层、池化层、全连接层等,最终通过全连接层输出预测结果,具体架构见图2。

图2 AI审图系统的CNN网络架构

AI审图系统中的CNN模型训练通过多层的卷积和池化操作逐步提取图像的视觉特征。输入层接收经过规范化处理的图像,并使用局部感受野与权值共享的方式提取基本的视觉特征,如边缘和角点[4]。卷积层生成特征图,其中每个位置的单元来自不同特征图,保留了图像丰富的特征。池化层进行降采样操作,降低分辨率并增强平移和形变的鲁棒性。用交替分布的卷积层和池化层,实现“双金字塔结构”,增加特征图的数量并降低分辨率。

(三)深度学习框架TensorFlow

采用深度学习框架TensorFlow,构建、训练和部署CNN模型,学习和提取室内施工图的关键特征,实现人工智能审图。AI审图系统TensorFlow架构设计如图3:

图3 AI审图系统TensorFlow 架构

(四)模型训练

该系统模型训练阶段使用了训练函数(train())和测试函数(test())。这两个函数接收输入数据(input)和相应的标签(也称为目标值target)作为输入参数。特别是训练函数,它还接受一个损失阈值(loss_threshold)作为迭代终止条件。其正向传播和反向传播的算法的步骤是:

1.初始化模型参数,设置优化算法和超参数,执行下一项;

2.执行训练函数(train()),执行下一项;

3.执行向前算法(forward()),计算预测结果,执行下一项;

4.计算损失函数值,损失是否小于设定阈值(loss_threshold)。若大于设定阈值,则执行第5步骤;若小于设定阈值,则执行第2步骤;

5.计算损失函数对于模型参数的梯度,使用梯度下降法优化算法,执行第6步骤;

6.预测函数(predict()) 输入矩阵,读取样本和标签,调用完成训练模型的向前算法(forward()),得到输出层结果,执行下一项;

7.解析输出结果,提取到预测目标值,输出位置的y坐标,即模型对输入样本的预测结果,执行下一项;

8.输出训练得到的模型参数。

(五)封装和部署

将通过测试的系统进行封装,利用服务器环境部署到学校用于上课的机房电脑系统,以及网络课程的手机端,通过AI审图系统的审图和评价功能,教师可以实时查看学生提交的作业。

四、设计验证

(一)样本测试

模型训练和验证过程:首先,对模型进行足够多轮次的训练,这时模型开始过拟合;其次,根据第一次训练结果,确定后续训练所需要的正确轮数;最后,使用正确轮数,重头开始启动新一次训练。测试函数(test())返回测试集数据的损失值和误差值的输出结果如图4所示。

图4 误差值和损失值输出结果

在Python代码生成的误差PR图中,测试函数值与训练函数值的误差曲线非常接近,表明系统误差小,预测结果较为准确,训练值和测试值输出结果如图5所示。

图5 训练值和测试值输出结果

print(f"Epoch {epoch + 1}/{NUM_EPOCHS}"

f" Training Loss:{running_loss:.4f}, Validation Loss: {val_loss:.4f}")

#训练完成后,可以使用模型进行预测

#测试数据集 test_dataset

predictions = []

model.eval()

withtorch.no_grad():

for test_inputs, _ in test_dataset:

test_outputs = model(test_inputs)

predicted_label = torch.argmax(test_outputs)

predictions.append(predicted_label.item())

#输出预测结果

print(predictions)

(二)系统评价

评价指标:准确率、召回率以及F1的值。

1.准确率 P=切分正确的标签/总的标签数;

2.召回率 R=切分正确的标签/正确标签的总数;

运行下列Python代码,调用sklearn.metrics库中的precision_score,recall_score和f1_score函数来计算准确率、召回率和F1值。将模型设置为评估模式,调用torch.no_grad上下文管理器,避免在评估过程中反复计算梯度,提高系统运行效率。输出结果如表1所示。

表1 测试结果

model.eval()

#初始化评估指标

val_loss =0.0

correct =0

predictions = []

targets = []

withtorch.no_grad():

for batch_idx, (inputs, labels) in enumerate(val_loader):

outputs = model(inputs)

val_loss += criterion(outputs, labels).item()

predicted = torch.max(outputs.data,1)

predictions.extend(predicted.tolist())

targets.extend(labels.tolist())

correct += predicted.eq(labels).sum().item()

#获取类别标签

labels = ['学生作业集', '施工图纸集', '公司施工图集', '批改后图纸集', '不完整图纸集']

#计算准确率

accuracy = correct /len(val_loader.dataset)

#计算召回率

recall = recall_score(targets, predictions,average='macro')

#计算F1值

f1 = f1_score(targets, predictions,average='macro')

#打印评估结果

print(f'Accuracy: {accuracy:.4f}')

print(f'Recall: {recall:.4f}')

print(f'F1: {f1:.4f}')

抽取100份样本,系统模型的训练时间为192秒,预测时间为79秒, F1值达到93.4%,准确率达到94%,召回率为93%,分析结果达到了预期效果。

五、系统应用

(一)基于Web的应用

该系统的Web应用可部署在学校机房电脑上,无登录密钥。学生使用Web版的AI审图系统,通过简单的上传、查阅和下载流程,完成图纸作业检查。教师通过查阅后台数据,能够获得学生提交作业次数、正确率、知识点出错频次等数据。

(二)基于React Native程序开发移动应用

利用React Native框架开发移动端应用程序,使用HTML、CSS和JavaScript等工具,将其封装为适用于iOS和Android平台的App。

图6是基于React Native程序开发的移动应用程序界面示例,展示该移动应用程序在模拟器上的运行场景。图7为通过AI审图系统识图评判后的施工图纸及系统反馈的错误提示和修改建议。

图6 基于React Native程序开发的移动应用程序界面

图7 图纸反馈

六、结语

本设计实现了基于室内施工图制图标准的AI审图系统。该系统利用深度学习技术,能够自动识别和审查“建筑制图与识图”课程室内施工图纸中的文字、符号、线条等元素及其相对应的关系,实现了相关图纸的人工智能审查和信息反馈,为“建筑制图与识图”课程教学提供了有力的辅助。笔者将在此研究基础上,与更多高校相关专业教师交流探讨,增加模型训练参数数量,优化系统算法,以期能够开展更广范围的模型训练,提升模型的泛化能力。

猜你喜欢
施工图制图图纸
大题小做,施工图是一个建筑项目的缩影
探讨输变电工程施工图预算管理与控制
无声手枪如何消音?
探讨输变电工程施工图预算管理与控制
浅谈汽车线束产品图纸管理
看图纸
二向反射模型在土地覆被制图中的应用
工程制图课程教学改革探析
酒店室内装修图纸深化设计浅析
建筑工程制图与识图专业人才培养的探讨