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.rhkb.cn/news/485469.html

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

相关文章

如何修复和防止 500 内部服务器错误的发生

当遭遇 500 内部错误时,意味着服务器出现了意外状况,以至于无法对请求予以回应。这种错误往往源于服务器端的各类问题,像是服务器配置出现偏差、脚本存在漏洞或者服务器瞬间负荷过重等。在不少情形下,服务器管理员能够化解此难题&…

算法刷题Day11: BM33 二叉树的镜像

点击题目链接 思路 转换为子问题:左右子树相反转。遍历手法:后序遍历 代码 class Solution:def Transverse(self,root: TreeNode):if root None:return rootnewleft self.Transverse(root.left)newright self.Transverse(root.right)# 对root节点…

【项目】基于YOLOv10的目标检测项目

【项目】基于YOLOv10的目标检测项目 (一)模型性能(二)安装与使用(1)环境安装(2)快速使用(3)模型评估Validation(4)模型训练Training&a…

与火山引擎合作深化,观测云携一站式监控解决方案登陆万有商城

近日,观测云正式宣布入驻火山引擎的万有商城。作为一款全栈式数据观测与分析平台,观测云的加入不仅丰富了火山引擎生态,也为广大企业用户带来了更便捷的数字化工具,助力企业快速实现业务监控与优化。 从全球覆盖到本地深耕&#x…

计算机网络原理之HTTP与HTTPS

一、前言 为了理解HTTP,我们有必要事先了解一下TCP/IP协议簇。 通常我们使用的网络(包括互联网)是在TCP/IP协议簇的基础上运作的。而HTTP属于它内部的一个子集。 计算机与网络设备要相互通信,双方必须基于相同的方法。比如&#…

java注解(二):注解的解析以及应用场景、用注解和反射模拟junit框架代码演示

目录 1、什么是注解的解析? 2、解析注解的案例 1、自定义一个注解 2、在类和方法上使用自己定义的注解 3、解析注解 3、模拟Junit框架案例 1、自定义一个MyTest注解 2、定义一个测试类,使用自定义的注解 3、写一个启动类 本文章主要讲解什么是注…

15.三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1&am…

03_Webpack模块打包工具

03_Webpack模块打包工具 目录 知识点自测 以下哪个选项是 ECMAScript 默认导出和导入的语法? A:export 和 require B:module.exports {} 和 import 变量名 C:export default 和 import 变量名 D:export 和 import {…

实验七 用 MATLAB 设计 FIR 数字滤波器

实验目的 加深对窗函数法设计 FIR 数字滤波器的基本原理的理解。 学习用 Matlab 语言的窗函数法编写设计 FIR 数字滤波器的程序。 了解 Matlab 语言有关窗函数法设计 FIR 数字滤波器的常用函数用法。 掌握 FIR 滤波器的快速卷积实现原理。 不同滤波器的设计方法具有不同的优…

day07 接口测试(2)

目录 1、接口用例设计 1.1 接口测试的测试点 1.1.1 功能测试 !! (1)单接口功能: (见1.3) (2)业务场景功能:(见1.4) 1.1.2 性能测试&#xf…

CentOS 二进制安装部署MongoDB 4.0

一、安装MongoDB 1. 下载 MongoDB 二进制文件 前往 MongoDB 官方下载页面(https://www.mongodb.com/try/download/community) 选择对应版本的 tar 包。 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.28.tgz 2. 解压并移动至目标目录 解压文件&#xff…

《Scientific Reports》2024最新投稿经验

"Scientific Reports" 是Nature Portfolio旗下一本备受推崇的开放获取多学科期刊,自2011年起被JCR收录。这本月刊致力于发表自然科学、心理学、医学和工程学领域的突破性原创研究。它的收稿范围广泛,覆盖物理学、化学、生物学、地球科学、环境…

C++内存布局以及常用关键字

C内存布局以及常用关键字 C的内存空间 代码存储区域:常量区、代码区、静态区(全局区)、堆区、栈区 栈区向下增长,堆区向上增长。栈由系统管理,没有内存碎片,每个元素之间都是连续的,大小比较…

设计模式:19、桥接模式

目录 0、定义 1、桥接模式的四种角色 2、桥接模式的UML类图 3、示例代码 0、定义 将抽象部门与实现部分分离,使它们都可以独立地变化。 1、桥接模式的四种角色 抽象(Abstraction):一个抽象类,包含实现者&#xf…

Linux中文件操作

文件由文件内容和文件属性构成,因此对文件的操作就是对文件内容或文件属性的操作。所谓的“打开一个文件”就是将文件的属性或内容加载到内存中,而没有被打开的文件存在于磁盘上。打开的文件称作“内存文件”,未被打开的文件称作“磁盘文件”…

elasticsearch基础总结

最近实习,项目用的elasticseatch做的存储库,但是之前对于es接触的不多,查询语法有些不熟,每次想写个DSL查询时都要gpt或者施展搜索大法,所以索性就自己总结总结,以后忘了也方便查。所以这篇文章会持续更新。…

c++ map对其值排序

无法直接排序,转换成vector<std::pair<string,int>> #include <iostream> #include <map> #include <vector> #include <algorithm>// 用于排序的比较函数 bool compareByValue(const std::pair<std::string, int>& a, const …

PysimpleGUI试用版变更免费版

1、PysimpleGUI试用版&#xff1a; 由于5.0版本之后不是免费的 2、变更版本&#xff1a; 打开pycharm-设置-python解释器&#xff1a;点击 搜索PysimpleGUI-指定版本-选择低于5.0的版本&#xff1a;安装软件包 3、重新运行PysimpleGUI&#xff0c;即可获得免费版&#xff1a;…

Grule前端表单post后端执行grule引擎规则

Grule前端表单post后端执行grule引擎规则 编写前端表单和后端接口 编写test.go执行grule引擎规则 示例都是 go test 执行的测试代码&#xff0c;所以将里面的测试代码去除 由于之前 NumberExponentExample_test.go 已经验证可运行, 所以将 err 的异常处理去除 package mai…

STM32串口接收与发送(关于为什么接收不需要中断而发生需要以及HAL_UART_Transmit和HAL_UART_Transmit_IT的区别)

一、HAL_UART_Transmit和HAL_UART_Transmit_IT的区别 1. HAL_UART_Transmit_IT&#xff08;非阻塞模式&#xff09;&#xff1a; HAL_UART_Transmit_IT 是非阻塞的传输函数&#xff0c;也就是说&#xff0c;当你调用 HAL_UART_Transmit_IT 时&#xff0c;它不会等到数据完全发…