当前位置: 首页 > 编程日记 > 正文

Playboy封面女郎、互联网第一夫人,程序员们的“钢铁审美”

640?wx_fmt=jpeg

整理 | 琥珀

出品 | AI科技大本营(ID:rgznai100)

46 年前,《花花公子》(Playboy)的一期杂志封面女郎 Lenna,成为数万“钢铁直男”的梦中女神。然而,这位女性更为人所知的是她在计算机图像处理领域的影响。从 1973 年开始,在数字图像处理中,莱娜(Lenna)被广泛作为使用的标准图片,尤其应用于图像压缩的算法研究中。

卡内基梅隆大学计算机科学学院表示:“在过去的 25 年里,没有任何一张图片在成像和电子通信世上更为重要,如今神秘的 Lenna(真名 Lena) 被认为是互联网第一夫人。”

不久前,WIRED 杂志联系到这张照片的主人莱娜·瑟德贝里(Lena Söderberg),并为她拍摄了一张同样姿势的照片。

640?wx_fmt=png

图片来源于WIRED拍摄截图

两张照片对比之下,莱娜的容貌虽已然衰老,但映射出的则是人工智能在计算机视觉领域走过了 46 年的发展。要知道,上世纪 60 年代,达特茅斯会议刚刚掀起第一波人工智能浪潮。直到 2012 年,Geoffery Hinton 团队参与的 ImageNet 竞赛,使用 CNN 模型以超过第二名 10 个百分点的成绩夺得当年竞赛的冠军。如今,深度学习、人工智能在图像处理领域正逐步深入的研究和应用。

作为计算机视觉领域相关研究者学习研究材料,莱娜图堪称入门级典型案例。

谁是 Lenna?

在 IEEE 专业通信学会 2001 年 5 月的通讯中 Jamie Hutchinson 曾这样写道:

“Alexander Sawchuk 记得大概是 1973 年 6 月或 7 月,他还是南加州大学信号与图像处理研究所(SIPI)的一名助教,当时他正与一名研究生和 SIPI 研究室主任忙于寻找一副高质量的图片用于学会论文。他们不喜欢 1960 年代早期电视标准所用的普通检验图,想要一副具有良好动态范围且有光泽的人的面部图像用于扫描。碰巧,有人带来了一本最新出版的《花花公子》杂志。

实验室当时使用的有线传真扫描仪(Muirhead wirephoto scanner)的分辨率是 100 行/英寸,工程师希望得到一幅 512X512 的图片,因此他们将扫描范围定于图片顶端开始的 5.21 英寸,这样下号剪切在人物的肩膀部分。除了这台扫描仪,他们还配置了模数转换器(红、绿、蓝各一个),以及一台惠普 2100 小型计算机。”

实际上,莱娜图并非第一幅用于图像处理算法的《花花公子》杂志图片。1961 年 Lawrence G. Robert 在其关于图像的硕士论文中经过允许使用了一幅 1960 年该杂志的图片。

莱娜图的走红

《IEEE 图像处理汇刊》(IEEE Transactions on Image Processing)的主编戴维·C·蒙森(David C. Munson), 在 1996 年 1 月引用了两个原因来说明莱娜图在科研领域流行的原因:

“首先,该图片包含了平坦区域、阴影和纹理等细节,这些都有利于测试各种不同的图像处理算法。它是一幅很好的测试照片。其次,这是一个非常有魅力女人的照片。因此,多数由男性组成图像处理研究行业倾向于使用他们认为很有吸引力的图片,这也并不令人惊奇。”

如今,莱娜图是图像压缩算法领域应用最广泛的测试图,她的脸部、帽子以及裸露肩膀已经变成了事实上的工业标准。

饱受争议

然而,多年以来,莱娜图因源自《花花公子》受到了科技界的不少争议,有的人担心它会体现出色情内容,甚至该杂志也曾因未经受授权威胁起诉。值得一提的是,Lenna 的那一期杂志是当时《花花公子》销量最好的一期,共卖出去了 716 万多份。

640?wx_fmt=jpeg

该图为杂志原版封面(已打马赛克)

据了解,莱娜来自瑞典,其姓名的正确拼写为 Lena。从 1973 年以来,她的照片就开始出现在图像处理的科学论文中,而直到 1988 年,她才得知自己原来早就被该领域的研究人员所熟识。1997 年,Lena 受邀参加了在波士顿举办的第 50 届图像科技技术年会。在该会议上,Lena 成了最受欢迎的人之一,被无数粉丝所取签名。

在接受 WIRED 采访中,Lena 表示:“When I was in Quebec, this girl came up to me and she said, ‘I think I know every freckle on your face,’” she recalled. “She was like, ‘Oh, you’re real. You’re a person.’”(“当我在魁北克居住的那段时间,有位女孩对我说,‘我想我知道你脸上的每一个雀斑’,她像是想要告诉我‘哇,你是真的,真实的一个人物。”)

如今

杰西·塞德曼(Jeff Seideman)是影像科学与技术学会的前任主席,他回忆说,莱娜的出席引起了同伴们的惊呼。“听起来很傻,因为他们都很惊讶原来这位封面女郎是位真人。他们中有些人甚至花了 25 年的时间研究这幅图片,而 25 岁恰恰是她成为这张图片人物的年纪。”从那时起,互联网已经发展为拥有数十亿用户和数万亿张图片,没有人曾怀疑过她在这张图片中的形象和后来颇有争议的言论。

正如莱娜的真实身份被 Lenna 这个名字所隐藏后,Lenna 已然脱离了真实女性的属性范畴了。几十年后,某些细节已经变得极为模糊,时间和地点也难以回忆,随后为之填充的是一代又一代的工程师们。

Programmed Inequality 一书的作者、技术历史学家 Marie Hicks 提到:“在 1973 年她的照片被带入实验室时,就意味着有数百名女性已被推向大众眼前。即便没有《花花公子》的照片,他们肯定会使用另一张漂亮白人女性的照片,只是这个事情得到了我们的关注。实际上,这件事情背后则是:整个世界一开始就从计算领域得到重塑,而重塑的这个世界是属于我们的而不是少数人。”

参考链接:

  • https://www.wired.com/story/finding-lena-the-patron-saint-of-jpegs/

  • https://en.wikipedia.org/wiki/Lenna

(本文为 AI科技大本营整理文章,转载请微信联系 1092722531。)

征稿

640?wx_fmt=png

推荐阅读:

  • 从I到R:人工智能语言简史

  • 断舍离:我彻底戒掉苹果、微软、Google、Facebook 和亚马逊之后?

  • “离开 360 时,它只给了我一块钱”

  • DevOps“兵器”60样,你都会使哪几样?

  • 假期倒计时, 这份完整区块链开发资源列表, 赶紧收藏学起来!

  • 这4门AI网课极具人气,逆天好评!(附代码+答疑)

  • 给AI开发者的新年礼物,技术公开课大放送(附演讲PPT)

  • 如何用最强模型BERT做NLP迁移学习?

  • “百练”成钢:NumPy 100练

    640?wx_fmt=png

点击“阅读原文”,打开CSDN APP 阅读更贴心!

相关文章:

开源实时日志分析ELK

开源实时日志分析ELK 2018-01-04 转自:开源实时日志分析ELK平台部署 日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性…

【linux】串口编程(二)——非阻塞接收

项目中很少会使用阻塞接收,一般都是selectread监听模式来实现非阻塞接收。 使用selece时,需要处理一些异常情况的返回,比如:系统中断产生EINTR错误;超时错误ETIMEDOUT。 使用read时,需要处理读取时可能出现…

使用Photoshop制作网页模板

用图层组管理网页元素首先是在Photoshop中制作好网页的框架。网页中的元素有很多, 像Banner条、文本框、文字、版权、Logo、广告等。尽量把这些相对独立的元素放在不同的图层中,这样方便以后的再编辑。不过图层一多,就 显得很凌乱&#xff0c…

赵本山:我的时代还没有结束 | Python告诉你

作者 | 丁彦军来源 | 恋习Python(ID: sldata2017)【AI科技大本营按】今年春晚的小品好看吗?没有了赵本山的春晚总觉得少了点什么,然而许久不登春晚舞台的本山大叔借着B站的东风证明了「你大爷还是你大爷」。最近很多人被“改革春…

038——VUE中组件之WEB开发中组件使用场景与定义组件的方式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>组件之WEB开发中组件使用场景与定义组件的方式</title><script src"vue.js"></script> </head> <body> <…

IronPython系列:Composite Pattern及其实现

最近挺经常做鱼的。对于做鱼的步骤算是熟悉。以烤制为例&#xff0c;主要有三步&#xff1a;洗&#xff08;Clean&#xff09;、切&#xff08;Cut&#xff09;和烤&#xff08;Bake&#xff09;。烤鱼&#xff08;Bake&#xff09;又有两个小步&#xff1a;加热(Heat)和烤(Bak…

2019全球AI 100强,中国占独角兽半壁江山,但忧患暗存

整理 | apddd出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;日前&#xff0c;创投研究机构CB Insights发布了年度人工智能企业百强榜单——由100个最具前途的AI公司组成&#xff0c;它们从3000多个候选者中脱颖而出&#xff0c;其业务涵盖人工智能硬件、数据基础设施…

【linux】串口编程(三)——错误处理

一个程序的优劣&#xff0c;可以从多个角度来判断&#xff0c;错误处理就是其中之一。从代码中的错误处理部分&#xff0c;可以体现出一个程序员的水平和修养。 下面还是以libmodbus为例&#xff0c;总结下串口编程中的错误处理。 【1】基础 【1.1】modbus中错误处理有三种&a…

微服务实战之春云与刀客(三)—— 面向接口调用代码结构实例

2019独角兽企业重金招聘Python工程师标准>>> 概述 在上一篇中提到了spring cloud 面向接口调用的开发风格&#xff0c;这一篇会举一个简单的但完整的例子来说明整个代码结构。 代码已上传到 https://github.com/maruixiang/spring-cloud-demo/tree/master/demo1 代码…

如何创建复杂的机器学习项目?

翻译 | 光城责编 | 郭芮转载自CSDN&#xff08;CSDNnews&#xff09;scikit-learn提供最先进的机器学习算法。但是&#xff0c;这些算法不能直接用于原始数据。原始数据需要事先进行预处理。因此&#xff0c;除了机器学习算法之外&#xff0c;scikit-learn还提供了一套预处理方…

关闭vmware喇叭报警声

关闭vmware喇叭报警声 在vmware里面安装linux系统后&#xff0c;操作时经常使用tab键或使用VI时经常听到pc speaker突然叫一声&#xff0c;如果正当戴着耳机欣赏音乐&#xff0c;被这么一叫还要吓一跳。下面是解决办法&#xff1a;C:\Documents and Settings\All Users\Applica…

【ubuntu工具】Atom的简介及安装

Atom中文社区&#xff1a;https://atom-china.org/ 知乎atom&#xff1a;https://www.zhihu.com/question/22867204 Atom&#xff0c;是github用nodejs编写的一个编辑器 Atom安装步骤&#xff1a; sudo add-apt-repository ppa:webupd8team/atomsudo aptitude updatesudo a…

破解Win2008口令-ERD6.0

我们在日常使用计算机的过程中&#xff0c;大多都经历过由于忘记口令从而无法进入系统的遭遇。遇到这种问题该如何处理呢&#xff1f;很多朋友一定想到了形形的口令破解工具&#xff0c;这些工具中名气最大的就是ERD Commander Boot CD。 ERD Commander Boot CD是一张可以启动操…

【Qt】Qt5.9.0: error: GL/gl.h: 没有那个文件或目录

重新安装ubuntu&#xff0c;在编译Qt时报错&#xff1a; /home/Qt5.9.0/Examples/Qt-5.9/widgets/widgets/calculator/button.cpp:51: from …/calculator/button.cpp:51: /home/Qt5.9.0/5.9/gcc_64/include/QtGui/qopengl.h:139: error: GL/gl.h: 没有那个文件或目录 解决方…

给Chrome“捉虫”16000个,Google开源bug自检工具

整理 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 在内部开发和使用八年之久&#xff0c;近日&#xff0c;Google 宣布开源 bug 自动化检测工具 ClusterFuzz。ClusterFuzz 是一款提供端到端的自动化模糊测试工具&#xff1a;从错误检测到分类排查&…

小巧的日志记录组件 - 开源研究系列文章

今天给大家带来一个小巧的日志记录组件LogHelper。这个组件是由Log4Net这个组件的由来而来的&#xff0c;不过只是写入.txt文本文件而已。如果能够对大家的项目有帮助那就更好了。 首先&#xff0c;打开.SLN解决方案&#xff0c;添加引用日志组件。 然后&#xff0c;先对日志组…

.NET开发人员值得关注的七个开源项目

微软近几年在.NET社区开源项目方面投入了相当多的时间和资源&#xff0c;不禁让原本对峙的开源社区阵营大吃一惊&#xff0c;从微软.NET社区中的反应来看&#xff0c;微软.NET开发阵营对开源工具的依赖正日益增强&#xff0c;本文就为所有.NET开发人员介绍7个应该关注的开源项目…

SystemTap了解

SystemTrap是监控和跟踪运行中的Linux内核操作的动态方法。 http://www.ibm.com/developerworks/cn/linux/l-systemtap/ 使用SystemTrap需要使用trap来运行一个stp脚本 如何安装&#xff1a; Centos下直接yum install systemtrap就行了 测试是否可以运行 运行&#xff1a;stap …

Windows 95被做成了App,可玩扫雷和纸牌

6 秒重温 Windows95 开机画面 作者 | 琥珀 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; “看到 Win95&#xff0c;再看到仙剑 DOS 的画面&#xff0c;突然有种想哭的感觉&#xff0c;小时候帮李逍遥实现了仗剑江湖的愿望&#xff0c;但自己却没有实现自己的愿望…

【Ubuntu】虚拟机VirtualBox安装win7完整步骤

在Ubuntu16.04中使用VirtualBox安装win7&#xff0c;亲测可以完美使用; 完整步骤参见如下链接&#xff1a; 1、VirtualBox安装步骤&#xff1a;http://www.xitongcheng.com/jiaocheng/xtazjc_article_23804.html 2、win7镜像下载&#xff1a;http://www.xitongcheng.com/jia…

全栈AI工程师指南,DIY一个识别手写数字的web应用

作者 | shadow chi本文经授权转载自 无界社区mixlab&#xff08;ID&#xff1a;mix-lab&#xff09;网上大量教程都是教如何训练模型&#xff0c;往往我们只学会了训练模型&#xff0c;而实际应用的环节是缺失的。def AIFullstack&#xff08; &#xff09;&#xff1a;本文从「…

mysql 中limit 用法!!

select * from mydb where id limit i,j; 意思就是从第i行开始&#xff0c;检索出j行&#xff0c;结束&#xff01;主要用于分页技术中&#xff0c;比如说我们一页现实10行&#xff0c;可以这样做&#xff1a;select * from mydb where id order by id desc limit $page,10($pa…

【Qt】Qt动态库和静态库的创建和使用

动态库(共享库)的创建 在Qt Creator中新建项目,选择Library 点击“Choose”进入下一步 选择创建库的类型:共享库 选择Kit套件 选择需要的模块 配置工程路径、名字等 Qt Creator自动创建的文件 我配置的动态库名字为:Share pro文件内容

23.3. Ethernet0/0 - Wan口配置

23.3.1. DHCP 动态IP地址 <Netkiller>system-view System View: return to User View with CtrlZ.interface Ethernet0/0port link-mode routenat outboundip address dhcp-allocipsec policy navigator #[Netkiller]display dhcp client Ethernet0/0 DHCP client inform…

用Python解锁“吃鸡”正确姿势

大吉大利&#xff0c;今晚吃鸡~ 今天跟朋友玩了几把吃鸡&#xff0c;经历了各种死法&#xff0c;还被嘲笑说论女生吃鸡的100种死法&#xff0c;比如被拳头抡死、跳伞落到房顶边缘摔死 、把吃鸡玩成飞车被车技秀死、被队友用燃烧瓶烧死的。这种游戏对我来说就是一个让我明白原来…

Oracle Grid Control 10.2.0.5 for Linux 安装和配置指南

一、概述&#xff1a;Grid Control的组件包括Management Agent, Management Service (OMS), Management Repository. 系统架构如下: 10g oem是一个基于web的管理架构&#xff0c;这和10g之前的笨重的java客户端有很大的区别。我们可以从2方面来研究它的架构&#xff0c;一个是管…

【Qt】Qt Plugin:Qt插件创建与使用

插件接口设计 以a+b=c的接口为例:int add(int a, int b) 在 主项目 工程中创建接口文件(一个头文件)eg:Add.h #ifndef ADD_H #define ADD_H#include <QtPlugin> class Add { public:virtual int add(int a, int b)= 0;//纯虚函数 }; Q_DECLARE_INTERFACE(Add, &qu…

9.5. SELINUX

禁用SElinux编辑/etc/selinux/config&#xff0c;修改如下内容&#xff1a; SELINUXdisabled使用命令 getenforce setenforce 0lokkit --selinuxdisabledPlease enable JavaScript to view the <a href"http://disqus.com/?ref_noscript">comments powered by…

说说我们为什么需要加班

做软件这行&#xff0c;加班就是家常便饭。做了这么多年程序员&#xff0c;我还真没听哪个说公司不加班的&#xff0c;碰见好的不时、偶尔加班&#xff0c;差的就是无尽的加。加班是那么的邪恶、令人作呕&#xff0c;但又无法抗拒&#xff0c;它仿佛就像嫖客患上梅毒——摆脱不…

为 Django admin 登录页添加验证码

为什么80%的码农都做不了架构师&#xff1f;>>> 历史原因&#xff0c;使用上古版本 django 1.6.5&#xff0c;但新版本应该大同小异 首先添加自定义后台模块app&#xff0c; 如adm&#xff0c;并添加到 INSTALLED_APPS 下。 假设处理自定义登录的view是 apps/adm/v…