2024年认证杯SPSSPRO杯数学建模D题(第二阶段)AI绘画带来的挑战解题全过程文档及程序

2024年认证杯SPSSPRO杯数学建模

D题 AI绘画带来的挑战

原题再现:

  2023 年开年,ChatGPT 作为一款聊天型AI工具,成为了超越疫情的热门词条;而在AI的另一个分支——绘图领域,一款名为Midjourney(MJ)的软件,热度完全不亚于ChatGPT。AI绘画技术可以模仿设计师的风格和技巧,自动生成类似于人类设计师的设计作品。AI绘画技术可以应用于各种领域,包括绘画、插画、平面设计等,具有较高的效率和精度,能够大大提高创作效率和创作质量。然而,AI绘画技术也带来了一些挑战和风险。比如对于一些传统的美术设计类赛事组织方来说,AI绘画技术就带来了评奖公平性的挑战,由于一些设计作品很难快速判断出究竟是由AI设计的,还是由人类设计师设计的,所以赛事评奖工作变得异常复杂,当参赛作品较多的时候,很难保证最终的结果公平性,附图就是几幅由MJ软件设计的建筑图片,即使业内人士也不能保证做出准确的判断。请你和你的团队建立合理的数学模型以解答如下问题。
  第二阶段问题:
  1. 我们可以利用MJ软件来生成大量的AI设计图来作为识别AI设计的样本数据集,如果这种思路可行,你认为需要构建一个多大的数据集才能保证识别率超过80%?
  2. 如果在今后的设计比赛中,使用AI进行设计辅助已经是不可避免,那么人的参与频次、参与深度、人与AI的信息交互内容等指标将成为打分的关键依据,请你结合第一阶段的模型,构建一个打分系统,通过一定的问卷调研数据来对设计作品进行评价。

整体求解过程概述(摘要)

  本文详细分析了AI绘画带来的挑战。这一挑战主要涉及如何准确地从数学和技术角度区分AI和人类设计的作品,以及如何建立一个公正的评分系统来评估由AI辅助的设计作品。
  随着AI工具如ChatGPT和Midjourney在设计领域的广泛应用,其高效、精准的模仿能力虽然提高了创作效率,但同时也给设计赛事的公平性评判带来了挑战。尤其是在判断作品的真实创作来源——是AI还是人类设计师——这一问题上,确保评奖的公正性显得尤为重要。
  针对问题一,文章详细描述了如何确定构建一个足够大的样本数据集以确保超过80%的AI 与人类作品识别准确率。通过深入研究现有文献,采用图像特征提取技术(包括颜色分布、纹理分析、几何形状识别)和深度学习方法,开发了一个基于CNN的多输入判别模型。该模型通过多次交叉验证和使用不同的正则化技术来避免过拟合,并通过数据集大小的学习曲线来拟合所需的样本量,最终确定需要14745个样本来达到所需的识别准确率。
  针对问题二:为了评估AI辅助设计作品的质量,我们构建了一个综合评分系统,涵盖设计质量评分(Qd)、人工与AI的交互频次(Fa)、人工参与的深度(Da)、交互内容质量(Cq)和综合技术指标(Tq)五个维度,使用加权平均法确定各指标的权重。通过设计问卷,专业评委对Qd和Tq进行评分,设计者对Fa、Da和Cq进行自评,然后我们自行设计了三幅建筑设计作品,控制不同的AI交互频次和人工参与深度,并结合所有评分数据,计算每幅作品的综合评分。结果表明,合理平衡AI与人工的作用,确保适当的交互频次和参与深度,可以有效提升设计作品的整体质量。
  总体而言,文章为解决AI在设计领域带来的挑战提供了一个结构化和科学的方法,不仅增强了识别AI与人类设计作品的能力,还建立了一个公正的评分系统来评估AI 辅助的设计作品。这些方法不仅提高了评估的准确性,也确保了设计比赛的公平性和透明度。

问题分析:

  问题一分析
  在解决问题一,即确定构建多大的数据集以确保识别准确率超过80%的情况下,我们采取了多方面的分析和实验步骤。首先,通过研究相关文献并参考现有的资料,我们设计并实现了一系列用于判断AI绘图的模块。这些模块基于图像特征的提取,例如颜色分布、纹理分析和几何形状,是构建有效判别模型的基础。此外,我们还引入了基于深度学习的特征提取,如预训练神经网络的中间层输出,以捕获更复杂的图像特征。
  接下来,我们在不同规模的数据集上训练了基于CNN的多输入判别模型。模型的训练和验证过程中,我们使用了交叉验证方法来确保评估结果的可靠性和模型的泛化能力。为了防止过拟合,我们还引入了dropout和L2正则化技术。通过这些模型,我们绘制了学习曲线,观察模型性能随数据集大小的变化。通过这些数据集的准确率绘制了模型的学习曲线图,然后通过三种方法(线性外推,三次多项式拟合,集成学习)预估了数据集的大小。
  最终,通过综合考虑三种预估方法得优缺点以及多个机器学习模型的学习曲线,构建了数据集预估算法,得到当准确率达到80%时,所需要的数据集大小为14745
  问题二的分析
  随着人工智能(AI)技术在设计领域的广泛应用,设计比赛中使用AI进行设计辅助已成为不可避免的趋势。然而,如何公平地评估这些AI辅助设计作品,成为新的挑战。为了全面、公正地评价这些设计作品,本文结合5个维度的指标:
  1. 设计质量评分(Qd):由专业评委对作品的美学质量、创新性、实用性和细节处理进行评分。
  2. 人工与AI的交互频次(𝐹a):衡量设计者在设计过程中与AI交互的次数。
  3. 人工参与的深度(𝐷a):量化设计者在设计过程中的参与深度。
  4. 交互内容质量(𝐶q):评估设计者在与AI交互过程中内容的有效性和创造性。
  5. 综合技术指标(Tq):包括纹理一致性、光影处理、透视准确性和色彩一致性。 然后通过加权平均法确定各指标的权重,最终建立一个综合评分公式:
在这里插入图片描述
  该综合评分系统能够科学、公正地评估 AI 辅助设计的作品,确保评分过程的公平性和准确性。然后再针对设计质量评分(Qd),综合技术指标(Tq)这2个部分设计一份问卷给专业评委打分,其中综合技术的部分指标结合第一阶段确定的特征提取的方法进行打分,人工与AI的交互频次(𝐹a),人工参与的深度(𝐷a),交互内容质量(𝐶q)则设计问卷给设计者自评。

模型假设:

  特征差异性假设:
  假设AI和人类设计师生成的作品在几何一致性、纹理细节、色彩搭配、透视准确性以及风格特征上存在可识别的差异。这些差异可以通过适当的图像处理技术和特征提取算法捕捉到。
  独立同分布假设:
  假设训练数据和将要预测的数据是独立同分布的。这意味着训练集中的数据分布与实际应用中遇到的数据分布相同,保证模型在实际应用中的有效性。
  评价系统公正性假设:
  在对AI辅助设计作品进行评分时,假设评价标准公正、客观,能够真实反映作品的设计质量和技术水平。此外,假设评分过程中人的主观判断与AI分析结果的结合是合理的,可以准确评估作品的质量。

完整论文缩略图

在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:

import cv2 
import numpy as np 
def extract_geometric_features(image_path): 
image = cv2.imread(image_path, cv2.IMREAD_COLOR) 
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
edges = cv2.Canny(gray, 50, 150, apertureSize=3) 
# 使用霍夫变换检测线条 
lines = cv2.HoughLinesP(edges, 1, np.pi/180, threshold=50, 
minLineLength=100, maxLineGap=10) 
if lines is not None: 
for line in lines: 
x1, y1, x2, y2 = line[0] 
cv2.line(image, (x1, y1), (x2, y2), (255, 0, 0), 2) 
return image 
# 使用函数 
result_image = extract_geometric_features('path_to_your_image.jpg') 
cv2.imshow('Geometric Features', result_image) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 
def analyze_light_shadow_features(image_path): 
image = cv2.imread(image_path) 
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) 
lightness = hsv[:, :, 2].mean()  # 获取亮度通道的平均值 
contrast = image.std()           # 计算标准差以评估对比度 
return lightness, contrast 
def color_histogram_features(image_path): 
image = cv2.imread(image_path) 
hist = cv2.calcHist([image], [0, 1, 2], None, [256, 256, 256], [0, 256, 
0, 256, 0, 256]) 
cv2.normalize(hist, hist) 
return hist.flatten() 
from tensorflow.keras.applications.vgg19 import VGG19, preprocess_input 
from tensorflow.keras.preprocessing import image 
from tensorflow.keras.models import Model 
def extract_texture_features(image_path): 
model = VGG19(weights='imagenet', include_top=False) 
model = Model(inputs=model.inputs, 
outputs=model.get_layer('block5_conv4').output) 
img = image.load_img(image_path, target_size=(224, 224)) 
img_array = image.img_to_array(img) 
img_array = np.expand_dims(img_array, axis=0) 
img_array = preprocess_input(img_array) 
features = model.predict(img_array) 
return features.mean(axis=(0, 1, 2)) 
# 继续使用 VGG19 模型进行风格特征的提取 
def extract_style_features(image_path): 
# 同上使用 VGG19 的某层输出进行风格特征分析 
return extract_texture_features(image_path)  # 使用相同的方法,目标层可能有所不同 
import cv2 
import numpy as np 
from tensorflow.keras.models import load_model 
def extract_structure_and_proportion_features(image_path): 
# 加载预训练的模型(此处假设模型已加载) 
model = load_model('path_to_your_pretrained_model.h5') 
image = cv2.imread(image_path) 
image_resized = cv2.resize(image, (224, 224)) 
# 对图像进行预处理并进行预测 
img_array = np.expand_dims(image_resized, axis=0) 
detections = model.predict(img_array) 
# 解析检测结果,提取结构和比例特征 
features = [] 
for detection in detections: 
# 假设detection 包括边界框和类别标签 
x, y, width, height, label = detection 
features.append((label, x, y, width, height)) 
return features 
from tensorflow.keras.applications.vgg19 import VGG19, preprocess_input 
from tensorflow.keras.preprocessing import image 
from tensorflow.keras.models import Model 
def extract_layout_features(image_path): 
model = VGG19(weights='imagenet', include_top=False) 
model = Model(inputs=model.inputs, 
outputs=model.get_layer('block5_pool').output) 
img = image.load_img(image_path, target_size=(224, 224)) 
img_array = image.img_to_array(img) 
img_array = np.expand_dims(img_array, axis=0) 
img_array = preprocess_input(img_array) 
# 这将给出图像的高级特征,可以用于理解图像布局 
features = model.predict(img_array) 
layout_features = features.mean(axis=(0, 1, 2)) 
return layout_features 
from tensorflow.keras.applications import VGG16 
from tensorflow.keras.layers import Dense, Flatten, Dropout 
from tensorflow.keras.models import Model 
from tensorflow.keras.optimizers import Adam 
# 加载预训练的VGG16模型,不包括顶层 
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 
224, 3)) 
# 冻结基模型的所有层,这些层不会在训练中更新 
for layer in base_model.layers: 
layer.trainable = False 
# 添加新的顶层 
x = Flatten()(base_model.output) 
x = Dense(1024, activation='relu')(x) 
x = Dropout(0.5)(x) 
predictions = Dense(1, activation='sigmoid')(x) 
# 构建整个模型 
model = Model(inputs=base_model.input, outputs=predictions) 
# 编译模型 
model.compile(optimizer=Adam(lr=0.0001), loss='binary_crossentropy', 
metrics=['accuracy']) 
history = model.fit( 
train_generator, 
epochs=10, 
validation_data=validation_generator 
) 
model.save('path_to_save_model.h5') 
from tensorflow.keras.layers import Input, Dense, concatenate 
from tensorflow.keras.models import Model 
# 假设特征维度 
input_geom = Input(shape=(geom_feature_size,)) 
input_color = Input(shape=(color_feature_size,)) 
input_texture = Input(shape=(texture_feature_size,))
# 可以为每种特征单独添加处理层 
x_geom = Dense(64, activation='relu')(input_geom) 
x_color = Dense(64, activation='relu')(input_color) 
x_texture = Dense(64, activation='relu')(input_texture) 
# 合并特征 
combined_features = concatenate([x_geom, x_color, x_texture]) 
# 添加更多层 
x = Dense(128, activation='relu')(combined_features) 
output = Dense(1, activation='sigmoid')(x) 
# 创建模型 
model = Model(inputs=[input_geom, input_color, input_texture], 
outputs=output) 
model.fit( 
[train_geom_features, train_color_features, train_texture_features], 
train_labels, 
validation_data=([val_geom_features, val_color_features, 
val_texture_features], val_labels), 
epochs=10, 
batch_size=32 
) 
from tensorflow.keras.layers import Input, Dense, concatenate, Dropout 
from tensorflow.keras.models import Model 
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/908011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子电路:全面深入了解晶振的定义、作用及应用

本次了解重点: 1.压电效应的数学描述 2.生产工艺以及关键工序 3.电路设计部分如负阻原理和匹配电容计算 4.失效案例比如冷启动问题 5.新形态晶振技术引入5G和量子计算 6.温补晶振的补偿机制 7故障案例讲解-更换负载电池或增加预热电路 蓝牙音频断续-频偏导致 工控机死机-起振电…

【Java实用工具类】手撸SqlBuilder工具类,优雅拼接动态SQL,MyBatisPlus同款风格!

📌 正文: 有时候我们项目底层是 JdbcTemplate 查询,没法像 MyBatisPlus 一样用 Wrapper 拼接条件,但我们又不想手撸字符串。那怎么办?我今天就给你整了个 SqlBuilder 工具类,支持 eq、ne、like、in、gt、l…

WEB3——开发者怎么查看自己的合约日志记录

在区块链中查看合约的日志信息(也叫事件 logs),主要有以下几种方式,具体方法依赖于你使用的区块链平台(如 Ethereum、BSC、Polygon 等)和工具(如 Etherscan、web3.js、ethers.js、Hardhat 等&am…

Maven-生命周期

目录 1.项目对象模型 2.依赖管理模型 3.仓库:用于存储资源,管理各种jar包 4.本地仓库路径 1.项目对象模型 2.依赖管理模型 3.仓库:用于存储资源,管理各种jar包 4.本地仓库路径

redis数据过期策略

redis数据过期策略有两种方案 1.惰性删除 2.定期删除 首先说惰性删除,对于已经过期的数据,访问这个key的时候判断key是否过期,如果过期则删除,这种方式对cpu友好,只有使用key的时候才会进行过期检查,用不到…

P1040 [NOIP 2003 提高组] 加分二叉树

目录 题目算法标签: 区间 d p dp dp, 动态规划, d f s dfs dfs思路代码 题目 P1040 [NOIP 2003 提高组] 加分二叉树 算法标签: 区间 d p dp dp, 动态规划, d f s dfs dfs 思路 给出的是一颗子树的中序遍历, s c o r e l r r o o t score l \times r root scorelrro…

uni-app学习笔记十七-css和scss的使用

SCSS 和 CSS的异同点 我们可以使用css和scss来设置样式。其中SCSS(Sassy CSS)是 CSS 预处理器 Sass(Syntactically Awesome Stylesheets)的一种语法格式,而 CSS(Cascading Style Sheets)是标准…

Spring Boot中Excel处理完全指南:从基础到高级实践

Excel处理基础知识 1.1 为什么需要在应用中处理Excel文件? 在企业应用开发中,Excel文件处理是一个非常常见的需求,主要用于以下场景: 数据导入:允许用户通过Excel上传批量数据到系统 数据导出:将系统数据…

Python编程基础(四) | if语句

引言:很久没有写 Python 了,有一点生疏。这是学习《Python 编程:从入门到实践(第3版)》的课后练习记录,主要目的是快速回顾基础知识。 练习1:条件测试 编写一系列条件测试,将每个条…

使用pandas实现合并具有共同列的两个EXCEL表

表1&#xff1a; 表2&#xff1a; 表1和表2&#xff0c;有共同的列“名称”&#xff0c;而且&#xff0c;表1的内容&#xff08;行数&#xff09;<表2的行数。 目的&#xff0c;根据“名称”列的对应内容&#xff0c;将表2列中的“所处行业”填写到表1相应的位置。 实现代…

ERP学习-AP

业务需要。持续更新学习进度 借助网上零搭建平台上手实操 这个是简道云平台页面链接&#xff0c;登录的化去手机号登录 目前开始对应付模块进行学习

Dify知识库下载小程序

一、Dify配置 1.查看或创建知识库的API 二、下载程序配置 1. 安装依赖resquirements.txt ######requirements.txt##### flask2.3.3 psycopg2-binary2.9.9 requests2.31.0 python-dotenv1.0.0#####安装依赖 pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.…

【PbstarAdmin】微前端架构下的高效后台管理系统解决方案

如果你正在寻找一个高效、稳定、易于使用、易于扩展的管理后台解决方案&#xff0c;PbstarAdmin 绝对值得一试。以下是它的在线演示和官方文档地址&#xff0c;你可以先睹为快&#xff1a; 在线演示&#xff1a;http://pbstar-admin.pbstar.cn/官方文档&#xff1a;http://pbs…

Java基础之数组(附带Comparator)

文章目录 基础概念可变参数组数组与ListComparator类1,基本概念2,使用Comparator的静态方法&#xff08;Java 8&#xff09;3,常用Comparator方法4,例子 排序与查找数组复制其他 基础概念 int[] anArray new int[10];只有创建对象时才会使用new关键字&#xff0c;所以数组是个…

Apache Doris 在数据仓库中的作用与应用实践

在当今数字化时代&#xff0c;企业数据呈爆炸式增长&#xff0c;数据仓库作为企业数据管理和分析的核心基础设施&#xff0c;其重要性不言而喻。而 Apache Doris&#xff0c;作为一款基于 MPP&#xff08;Massively Parallel Processing&#xff0c;大规模并行处理&#xff09;…

P1438 无聊的数列/P1253 扶苏的问题

因为这两天在写线性代数的作业&#xff0c;没怎么写题…… P1438 无聊的数列 题目背景 无聊的 YYB 总喜欢搞出一些正常人无法搞出的东西。有一天&#xff0c;无聊的 YYB 想出了一道无聊的题&#xff1a;无聊的数列。。。 题目描述 维护一个数列 ai​&#xff0c;支持两种操…

SpringBoot 自定义注解实现限流

SpringBoot 自定义注解实现限流 限流是为了防止服务器资源的过度消耗&#xff0c;通过一定的策略来控制访问频率&#xff0c;确保服务的高可用性和稳定性。其核心意义在于防止流量高峰时期接口过载&#xff0c;从而引起服务崩溃或响应延迟增加。本文将简述如何通过AOP和自定义…

Unity——QFramework框架 内置工具

QFramework 除了提供了一套架构之外&#xff0c;QFramework 还提供了可以脱离架构使用的工具 TypeEventSystem、EasyEvent、BindableProperty、IOCContainer。 这些工具并不是有意提供&#xff0c;而是 QFramework 的架构在设计之初是通过这几个工具组合使用而成的。 内置工具…

Vue3.5 企业级管理系统实战(二十二):动态菜单

在前几篇内容中已完成菜单、角色及菜单权限等相关开发&#xff0c;若要在左侧菜单根据用户角色动态展示菜单&#xff0c;需对 Sidebar 中的相关数据进行修改。鉴于其他相关方法及类型已在前文实现&#xff0c;本文不再重复阐述。 1 修改 Sidebar 组件 在 src/layout/componen…

014校园管理系统技术解析:构建智慧校园管理平台

校园管理系统技术解析&#xff1a;构建智慧校园管理平台 在教育信息化快速发展的当下&#xff0c;校园管理系统成为提升学校管理效率、优化校园服务的重要工具。该系统集成院校管理、投票管理等多个核心模块&#xff0c;面向管理员、用户和院内管理员三种角色&#xff0c;通过…