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

2024年认证杯SPSSPRO杯数学建模

D题 AI绘画带来的挑战

原题再现:

  2023 年开年,ChatGPT 作为一款聊天型AI工具,成为了超越疫情的热门词条;而在AI的另一个分支——绘图领域,一款名为Midjourney(MJ)的软件,热度完全不亚于ChatGPT。AI绘画技术可以模仿设计师的风格和技巧,自动生成类似于人类设计师的设计作品。AI绘画技术可以应用于各种领域,包括绘画、插画、平面设计等,具有较高的效率和精度,能够大大提高创作效率和创作质量。然而,AI绘画技术也带来了一些挑战和风险。比如对于一些传统的美术设计类赛事组织方来说,AI绘画技术就带来了评奖公平性的挑战,由于一些设计作品很难快速判断出究竟是由AI设计的,还是由人类设计师设计的,所以赛事评奖工作变得异常复杂,当参赛作品较多的时候,很难保证最终的结果公平性,附图就是几幅由MJ软件设计的建筑图片,即使业内人士也不能保证做出准确的判断。请你和你的团队建立合理的数学模型以解答如下问题。
  第一阶段问题:
  1. 从简单的几何角度,是否可以找到AI绘画中不符合逻辑的地方?
  2. 请尝试建立数学模型对图片进行打分,评估这幅图片是由AI绘图软件生成的可能性。

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

  在数字时代,人工智能(AI)的发展使得图像生成技术日益成熟,特别是在建筑设计领域,AI绘制的图像能够迅速并准确地呈现设计概念。然而,这也带来了一些挑战,尤其是如何验证一个图像是否为 AI 生成,以及这些图像在几何逻辑上是否符合现实世界的物理和建筑规范。鉴于此,开发一种能够准确识别并评估 AI 生成图像的方法变得尤为重要。
  针对问题一:从几何角度分析由MJ软件设计的建筑图片,查找不符合逻辑的地方。本团队首先进行视觉检查,对于每幅图片,寻找比例失调,结构问题。然后进行几何分析,测量角度,比例计算。基于视觉检查和几何分析的结果,发现图1,2,3中均存在较多不合理的地方如下:图1中的多处结构均不合理,一侧窗户显示为拱形顶部,而另一侧则是平顶,这种差异在同一建筑的相同层面上是不常见的。图2中可以看出有多处影子,但是仔细观察可以发现,影子的形状,方向等均不合理。图3中的烟囱,其设计同样违反了常规建筑和结构原则。烟囱的形状和位置在视觉上显得不协调,不符合实用性和安全性的标准。
  针对问题二:本团队开发了一个数学模型,以评估图像是否可能由AI绘图软件生成。搜集多张真实图片并通过精心定义和提取真实图像与AI生成的图像特征,如线条的直线度、角度的精确度和透视点的一致性,纹理,光照一致性等特征,设立了一个详尽的评分系统。这些特征通过应用Canny边缘检测算法和霍夫变换进行量化,从而准确识别和评估图像中的直线和角度。建立的打分机制基于透视偏差、结构违规、纹理一致性和光照一致性等关键参数,最终得到AI生成图片的得分为97,真实图片的得分为67.通过对AI生成和真实图像的详细比较分析,发现AI生成的图像在光照和纹理处理上的表现通常较差,而结构和透视点则显示出更高的偏差。通过实际图像与AI图像的对比,深入了解两者在特征表现上的相似之处和差异。这种综合评分和分析方法为自动化图像来源验证提供了一个有效的技术途径。

问题重述:

  随着人工智能技术的飞速发展,AI在各个领域的应用日益广泛,其中AI绘画技术成为了近年来的一个热点。2023年,AI绘画软件,尤其是名为Midjourney(MJ)的软件,与聊天型AI工具ChatGPT一样,成为了公众和媒体关注的焦点。AI绘画技术能够模仿人类设计师的风格和技巧,自动生成与人类设计师作品风格相似的设计作品。这种技术在绘画、插画、平面设计等多个领域都显示出了巨大的应用潜力,因为它不仅能够以较高的效率和精度完成设计任务,还能够显著提升创作的质量。
  然而,随着AI 绘画技术的广泛应用,也出现了一系列挑战和风险。特别是在美术设计类比赛中,AI绘画技术的应用引发了关于评奖公平性的广泛讨论。问题在于,一些由AI 设计的作品与人类设计师的作品在视觉上几乎没有区别,使得评委难以判断作品的真正作者,从而影响了比赛的公平性和结果的准确性。此外,当参赛作品数量众多时,确保评审过程的公正性和有效性变得更加困难。
  鉴于这一背景,数学建模比赛提出了一个紧密关联实际应用的问题:如何建立一个合理的数学模型,从简单的几何角度找出 AI 绘画中可能存在的不符合逻辑之处,并评估一幅图片是否由AI 绘图软件生成的可能性。这个问题不仅涉及数学、计算机视觉和机器学习领域的知识,还需要参赛者理解AI绘画技术的基本原理和应用场景。 通过解决这一问题,参赛者将为识别和评估 AI 绘画作品提供新的思路和方法,为确保艺术和设计类比赛的公平性贡献自己的力量。此外,这也有助于进一步探索 AI 技术在创意设计领域的应用潜力及其带来的社会、伦理挑战。
  问题要求
  ➢ 从简单的几何角度,是否可以找到 AI 绘画中不符合逻辑的地方?
  ➢ 请尝试建立数学模型对图片进行打分,评估这幅图片是由 AI 绘图软件生成的可能性。

模型假设:

   假设一:透视准确性的一致性
  所有真实的建筑图片在透视方面都是准确的,其透视线将准确汇聚于正确的消失点。任何与此相悖的表现都可以被视为AI生成图片的潜在标志。
   假设二:结构一致性的物理可行性
  真实世界的建筑结构必须遵循物理和建筑规则,如重力法则和力的均衡。AI生成的图像可能无视这些规则,导致出现物理上不可行的结构。
   假设三:纹理和材料的逼真度
  在真实的建筑图片中,不同材质的纹理应该看起来自然并且过渡合理。AI生成的图像在纹理过渡和材料表现上可能表现出不自然或突兀的特征。
   假设四:光影一致性与环境匹配度
  真实图片中的光影效果将与环境中的光源位置、强度和颜色相一致。AI生成图像可能在光线投射、阴影长度和方向上存在不一致性。
   假设五:比例和尺寸的准确性
  真实建筑图片的建筑元素,如门窗、柱子等,其比例和尺寸与现实世界的建筑规范一致。AI生成的图像可能忽略这些比例规则,产生比例失衡的结果。

完整论文缩略图

在这里插入图片描述

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

部分程序代码:

image = imread('1.jpg'); 
imshow(image); 
>> % 转换为灰度图像 
grayImage = rgb2gray(image); % 边缘检测 
edges = edge(grayImage, 'canny'); % 显示边缘 
figure; 
imshow(edges); 
title('Edge Detection'); % Hough 变换检测直线 
[H, theta, rho] = hough(edges); % 显示标准 Hough 变换的结果 
figure; 
imshow(imadjust(rescale(H)), 'XData', theta, 'YData', rho, 'InitialMagnification', 
'fit'); 
xlabel('\theta (degrees)'), ylabel('\rho'); 
axis on, axis normal, hold on; 
colormap(gca,hot); % 查找 Hough 变换的峰值 
peaks = houghpeaks(H, 5, 'threshold', ceil(0.3 * max(H(:)))); % 超过 Hough 变换峰值的直线 
lines = houghlines(edges, theta, rho, peaks, 'FillGap', 5, 'MinLength', 7); % 显示原图及检测到的直线 
figure, imshow(grayImage), hold on 
max_len = 0; 
for k = 1:length(lines) xy = [lines(k).point1; lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green'); % 绘制开始点 plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow'); % 绘制结束点 plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red'); 
end 
hold off; % 读取图像 
image = imread(imgPath); % 显示图像 
figure; 
imshow(image); 
title('Original Image'); 
>> % 转换图像为灰度 
grayImage = rgb2gray(image); % 应用 Canny 边缘检测 
edges = edge(grayImage, 'canny'); % 显示边缘检测结果 
figure; 
imshow(edges); 
title('Canny Edge Detection'); 
>> % 执行霍夫变换 
[H, theta, rho] = hough(edges); % 查找霍夫变换的峰值 
peaks = houghpeaks(H, 5, 'threshold', ceil(0.3*max(H(:)))); % 提取直线 
lines = houghlines(edges, theta, rho, peaks, 'FillGap', 20, 'MinLength', 40); % 显示原图及检测到的直线 
figure, imshow(grayImage), hold on 
for k = 1:length(lines) xy = [lines(k).point1; lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green'); % 标记线条端点 plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow'); plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red'); 
end 
title('Detected Lines'); 
hold off;
% 定义Excel文件路径 files = { 'D:\认证杯\ 真实图片1_Data.xlsx',  'D:\认证杯\ 真实图片2_Data.xlsx',  'D:\认证杯\真实图片3_Data.xlsx' }; % 初始化空cell array来存储数据 allData = {}; % 循环读取每个文件 for i = 1:length(files) % 读取Excel文件 data = readtable(files{i}); % 检查并显示数据的大小 disp(['Data from ', files{i}, ':']); disp(size(data)); % 将数据存储在cell array中 allData{end+1} = data; end % 检查所有数据表是否具有相同的列数 numCols = size(allData{1}, 2); consistent = all(cellfun(@(x) size(x, 2) == numCols, allData)); % 如果所有数据表列数一致,则合并它们 if consistent mergedData = vertcat(allData{:}); disp('All data tables have the same number of columns.'); else error('Not all data tables have the same number of columns.'); end % 显示合并后的数据的一些信息 disp('Merged data size:'); disp(size(mergedData)); % 保存合并后的数据到新的Excel文件 writetable(mergedData, 'D:\认证杯\\Merged_Data.xlsx'); disp('Merged data saved to D:\认证杯\\Merged_Data.xlsx'); 
end 
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

算法-字符串-5.最长回文子串

一、题目: 二、思路解析 1.思路: 最长子串——动态数组 2.常用方法: a.字符串的截断 ress.substring(start,end1); 3.核心逻辑: 1.特殊情况:字符串为空或字符串的长度为0 if(snull||s.length())return ""…

高中数学:计数原理-二项式定理

文章目录 一、二项式定理与通项公式二、二项式系数的性质 一、二项式定理与通项公式 我们先来看完全平方公式 二、二项式系数的性质

刷题计划day26 回溯(五)回溯止【N 皇后】【解数独】

⚡刷题计划day26 回溯(五)继续,回溯最后一个专题,今天的是hard题,也是比较经典的题型,可以点个免费的赞哦~ 往期可看专栏,关注不迷路, 您的支持是我的最大动力🌹~ 目录…

UE5基本数据类型

bool: 表示布尔值,只有两个取值:true 或 false,用于表示逻辑条件。int8: 表示 8 位的有符号整数,范围是 −128−128 到 127127。uint8: 表示 8 位的无符号整数,范围是 00 到 255255。int16: 表示 16 位的有符号整数&am…

linux的vdagent框架设计

1、vdagent Linux 的 spice 客户代理由两部分组成,一个系统范围的守护进程 spice-vdagentd 和一个 X11 会话代理 spice-vdagent,每个 X11 会话有一个。spice-vdagentd 通过 Sys-V initscript 或 systemd 单元启动。 如下图:spice-vdagent&a…

docker修改并迁移存储至数据盘

文章目录 前言一、操作步骤(需要root权限)1. 查看磁盘占用,查看当前docker目录占用的空间2. 查看正在运行的容器,并停止容器及服务3. 拷贝数据、修改配置(关键步骤)4. 加载配置,启动服务及容器 …

证明网络中的流形成一个凸集

证明网络中的流形成一个凸集 步骤1:定义和符号步骤2:线性组合步骤3:验证容量限制步骤4:验证流量守恒结论示例代码(C语言) 在网络流理论中,一个流 f f f 是定义在网络图的边集上的一种函数&…

阿里云轻量应用服务器开放端口,图文教程分享

阿里云轻量应用服务器如何开放端口?在轻量服务器管理控制台的防火墙中添加规则即可开通端口,开通80端口就填80,开通443就填443端口,开通3306端口就填3306。阿里云百科网aliyunbaike.com整理阿里云轻量应用服务器端口号开通图文教程…

如何在Ubuntu中利用repo和git地址下载获取imx6ull的BSP

01-设置git的用户名和邮箱 git config --global user.name "suwenhao" git config --global user.email "2487872782qq.com"这里不设置的话后面在第5步的repo配置中还是会要求输入,而且以后进行相关操作都要输入,不妨现在就进行配置…

C++设计模式之外观模式

动机 下图中左边方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。 如何简化外部客户程序和系统间的交互接口?如何将外部客户程序的演化和内部子系统…

13.高级GLSL

高级GLSL 1.GLSL的内建变量 着色器都是最简化的,如果需要当前着色器以外地方的数据的话,我们必须要将数据传进来。我们已经学会使用顶点属性、uniform和采样器来完成这一任务了。然而,除此之外,GLSL还定义了另外几个以gl_为前缀…

使用数据层进行数据生命周期管理

作者:来自 Elastic Stef Nestor Elasticsearch 7.10 使配置数据生命周期变得不再那么复杂。在这篇博文中,我将介绍一些变化、如何使用它们以及一些最佳实践。 数据生命周期可以包含很多阶段,因此我们将涉及: 将集群划分为层&…

Jenkins环境一站式教程:从安装到配置,打造高效CI/CD流水线环境-Ubuntu 22.04.5 环境离线安装配置 Jenkins 2.479.1

文章目录 Jenkins环境一站式教程:从安装到配置,打造高效CI/CD流水线环境-Ubuntu 22.04.5 环境离线安装配置 Jenkins 2.479.1一、环境准备1.1 机器规划1.2 环境配置1.2.1 设置主机名1.2.2 停止和禁用防火墙1.2.3 更新系统 二、安装配置Jenkins2.1 安装JDK…

用Python绘制医学热图

在医学研究和临床实践中,数据的可视化是不可或缺的一部分。通过直观的数据展示,医学专业人员可以更好地理解各种疾病的治愈率、治疗效果以及医院之间的差异。今天,我们将介绍一种强大的数据可视化工具——热图(Heatmap&#xff09…

WPF 本地生成验证码

1、效果如下图&#xff0c;点击图片可更新验证码&#xff08;其实图片就是一个Button的背景图&#xff09;。 2、主要使通过用户控件创建&#xff0c;UCVerificationCode.xaml代码如下。 <UserControl x:Class"UC.UCVerificationCode"xmlns"http://schemas.…

彻底理解ThreadLocal的应用场景和底层实现

一.概念 定义&#xff1a; ThreadLocal 是 Java 中所提供的线程本地存储机制&#xff0c;可以利用该机制将数据缓存在某个线程内部&#xff0c;该线程可以在任意时刻、任意方法中获取缓存的数据。 其实是可以通过调用 Set() 方法往里面存入值&#xff0c;存入的值是每个线程互…

视频 的 音频通道提取 以及 视频转URL 的在线工具!

视频 的 音频通道提取 以及 视频转URL 的在线工具&#xff01; 工具地址: https://www.lingyuzhao.top/toolsPage/VideoTo.html 它提供了便捷的方法来处理视频文件&#xff0c;具体来说是帮助用户从视频中提取音频轨道&#xff0c;并将视频转换为可以通过网络访问的URL链接。无…

shell自动显示当前git的branch

效果简介&#xff1a; 1. 如果没在git仓库&#xff0c;显示无变化 2. 如果在git仓库&#xff0c;显示当前分支 实现方法&#xff1a; 在~/.bashrc 里添加&#xff1a; function git_branch { test -d .git && branch"git branch | grep "^\*" | sed…

pytorch生成对抗网络

# 生成对抗网络 import os import torch import torchvision import torch.nn as nn from torchvision import transforms from torchvision.utils import save_image # Device configuration device torch.device(cuda if torch.cuda.is_available() else cpu) # 超参数 late…

从GCC源码分析C语言编译原理——源码表层分析(脚本篇)

目录 一、目录结构 二、有意思的小功能 三、install脚本 脚本变量和设置 程序名称变量 模式和命令 参数解析 主要逻辑 四、主要功能脚本 ------------------------------------------------------------------------------------------------------------------------…