杜伟、陈萍作者

OpenAI CLIP模型新尝试,有开发者在Colab上实现近200万图片的精准检索匹配

得益于 OpenAI 月初发布的 DALL.E 和 CLIP 模型,机器学习社区的开发者在文本与图像的匹配方面又可以尝试很多新的玩法。在这个项目中,一位开发者借助 CLIP 神经网络,在谷歌 Colab notebook 上实现了对 Unsplash 数据集中近 200 万张免费图片的精准文本 - 图片检索匹配。

本月初,OpenAI 同时发布了两个连接文本与图像的神经网络:DALL·E 和 CLIP。其中,DALL·E 可以基于文本直接生成图像,CLIP 能够完成图像与文本类别的匹配。这两个模型发布之后,机器学习社区出现了一些复现 DALL·E 模型的尝试,如开发者 Phil Wang 的 GitHub 项目 DALLE-pytorch,短短二十余天就收获了 1.9k star。


DALLE-pytorch 项目地址:https://github.com/lucidrains/DALLE-pytorch

近日,又有开发者创建了一个利用 CLIP 模型搜索文本精准匹配图片的项目。该项目所有图片出自 Unsplash 数据集,大约有 200 万张,利用 CLIP 模型进行处理。项目既可以在给定的免费谷歌 Colab notebook 中运行,也可以在用户自己的机器上运行。


项目地址:https://github.com/haltakov/natural-language-image-search#two-dogs-playing-in-the-snow

在具体实现上,项目作者在 Colab Notebook 上将所有图片处理成了预计算特征向量,然后找到与自然语言搜索查询(即输入的文本)最匹配的图片。

项目作者提供了一些效果展示图,如输入搜索词条「"Two dogs playing in the snow"」,就会出现以下几幅图片:

摄自:Richard Burlton、Karl Anderson 和 Xuecheng Chen。

输入搜索词条「"The word love written on the wall"」,就会出现以下包含「love」的文本:

摄自:Genton Damian、Anna Rozwadowska 和 Jude Beck。

此外,你还可以选择搜索图片的数量,例如:通过修改「search_unslash(search_query, photo_features, photo_ids, 3)」,将该行中的 3 更改为想要的搜索结果数量。

如何实现?

谷歌 Colab notebook 上运行

在给定的 Colab 会话中进行首次搜索的步骤如下:

1. 首先需要进入 Colab 界面;

2. 登录谷歌账户,单击右上角的「S」按钮即可完成此操作。注意:注册谷歌账户会影响隐私,比如你的谷歌搜索历史记录会记录在谷歌帐户中;

3. 单击单元格中的某个位置(三角形除外),该行显示「search_query = "Two dogs playing in the snow"」;

4. 单击菜单「Runtime→Run before」,等待执行结束;

5. 找到读取(或最初读取)「search_query = "Two dogs playing in the snow"」这一行,将「 "Two dogs playing in the snow"」改变成你想要的查询。例如:「search_query = "A clock with gold-colored numbers on a black background"」;

6.(可选)查找读取(或最初读取)的行「search_unslash(search_query, photo_features, photo_ids, 3)」。将该行中的 3 更改为想要的搜索结果数量;

7. 单击最初读取「search_query = "Two dogs playing in the snow"」这一行左侧的三角形, 等待搜索结果。


Colab 界面地址:https://colab.research.google.com/github/haltakov/natural-language-image-search/blob/main/colab/unsplash-image-search.ipynb#scrollTo=xbym_cYJJH6v

在 Colab 会话中执行更多搜索,请参考上述步骤 5-7。在 Google Colab 会话后,可以选择注销谷歌帐户,因为登录谷歌帐户会影响隐私。

本机上运行

想要在本机上实现该功能,首先需要安装必要的依赖项,安装代码如下:

pip install -r requirements.txt

如果想要运行所有的代码,打开 Jupyter notebooks,按照以下编号顺序以及说明依次操作:

01-setup-clip.ipynb:设置环境,检查并准备 CLIP 代码;

02-download-unsplash-dataset.ipynb:从 Unsplash 数据集下载图片;

03-process-unsplash-dataset.ipynb:使用 CLIP 处理数据集中的所有图片;

04-search-image-dataset.ipynb:使用自然语言查询在数据集中检索图片;

05-search-image-api.ipynb:使用 Unsplash Search API 检索图片,CLIP 过滤搜索结果。


注意:只有精简版的 Unsplash 数据集是公开可用的。如果你想使用完整版,你需要申请(免费)访问权限;使用 Unsplash Search API 搜索图像不需要访问 Unsplash 数据集,但可能会产生糟糕的结果。

项目作者


项目作者 Vladimir Haltakov 取得了慕尼黑工业大学的计算机视觉博士,主要研究语义分割的上下文。他的主要研究兴趣在于计算机视觉机器学习,包括多类别图像分割、3D 重建、场景理解、光流、条件随机场概率图模型等。

目前,他就职于宝马集团(BMW Group),主要从事自动驾驶汽车的高精准定位研究和工作。

个人主页:https://haltakov.net/

参考链接:https://www.reddit.com/r/MachineLearning/comments/l52qe6/p_use_natural_language_queries_to_search_2/

工程OpenAI
相关数据
图像分割技术

图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像索赋予相同的编号。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

自动驾驶汽车技术

自动驾驶汽车,又称为无人驾驶汽车、电脑驾驶汽车或轮式移动机器人,是自动化载具的一种,具有传统汽车的运输能力。作为自动化载具,自动驾驶汽车不需要人为操作即能感测其环境及导航。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

条件随机场技术

条件随机场(conditional random field,简称 CRF),是一种鉴别式机率模型,是随机场的一种,常用于标注或分析序列资料,如自然语言文字或是生物序列。 如同马尔可夫随机场,条件随机场为无向性之图模型,图中的顶点代表随机变量,顶点间的连线代表随机变量间的相依关系,在条件随机场当中,随机变量 Y 的分布为条件机率,给定的观察值则为随机变量 X。原则上,条件随机场的图模型布局是可以任意给定的,一般常用的布局是链接式的架构,链接式架构不论在训练(training)、推论(inference)、或是解码(decoding)上,都存在有效率的算法可供演算。 条件随机场跟隐马尔可夫模型常被一起提及,条件随机场对于输入和输出的机率分布,没有如隐马尔可夫模型那般强烈的假设存在。 线性链条件随机场应用于标注问题是由Lafferty等人与2001年提出的。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

语义分割技术

语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类。图像语义分割是AI领域中一个重要的分支,是机器视觉技术中关于图像理解的重要一环。

概率图模型技术

在概率论和统计学中,概率图模型(probabilistic graphical model,PGM) ,简称图模型(graphical model,GM),是指一种用图结构来描述多元随机 变量之间条件独立关系的概率模型

Jupyter技术

Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。

宝马集团机构

宝马公司是巴伐利亚机械制造厂股份公司的简称,1916年成立于德国慕尼黑,与菲亚特、福特、雷诺、劳斯莱斯相比显得年轻。但是在20世纪30年代它却制造出了世界上最好的跑车和豪华轿车,

https://www.bmw.com.cn/zh/index.html
宝马机构

宝马(BMW)是享誉世界的豪华汽车品牌。宝马的车系有1、2、3、4、5、6、7、8、i、X、Z等几个系列,还有在各系基础上进行改进的M系(宝马官方的高性能改装部门)。 宝马公司创建于1916年,总部设在德国巴伐利亚州慕尼黑。BMW的蓝白标志宝马总部所在地巴伐利亚州州旗的颜色。百年来,宝马汽车由最初的一家飞机引擎生产厂发展成为以高级轿车为主导,并生产享誉全球的飞机引擎、越野车和摩托车的企业集团,名列世界汽车公司前列。其全称为Bavarian Motor Work。 2018年7月10日,长城公司与宝马公司签署合资协议,合资成立光束汽车有限公司。2018年10月11日,宝马集团举行了中国战略协议签字仪式和华晨宝马铁西新工厂开工仪式。宝马对华晨宝马投资新增30亿欧元,合资协议延至2040年。 2018年12月18日,世界品牌实验室编制的《2018世界品牌500强》揭晓,宝马排名第16位。

www.bmwgroup.com
相关技术
推荐文章
暂无评论
暂无评论~