极简主义︱利用apple机器学习平台Turicreate实现图像相似性检索(二)

apple开源机器学习框架turicreate内容非常广阔,本篇介绍冰山一角的图像相似,极简主义的代表!!!! github:https://apple.github.io/turicreate/docs/api/generated/turicreate.SFrame.html

首篇博客:python︱apple开源机器学习框架turicreate中的SFrame——新形态pd.DataFrame

原理就是利用resnet-50,提取图像特征并保存至model之中,然后可以任意查询。

  • 1、数据导入环节
  • 2、利用Resnet50数据特征提取
  • 3、相似搜索——query查询
  • 4、相似关联图搜索——similarity_graph

.

一、数据导入环节

专门针对图像的load_images函数,让内容读成dataframe,同时,保存了图像的长、宽信息

import turicreate as tc
# Load images from the downloaded data
reference_data  = tc.image_analysis.load_images('./101_ObjectCategories')

数据是这样的:

这个数据带有图片链接地址 + 图片的长宽信息。 .

二、利用Resnet50数据特征提取

主函数tc.image_similarity.create

create(dataset, label = None, feature = None, model = 'resnet-50', verbose = True)

model默认使用resnet50,label是标识行,如reference_data中的path

常规的执行为:

model = tc.image_similarity.create(reference_data)

那么model就是整个模型文件了。 模型的输出与保存:

model.save('my_model_file')
loaded_model = tc.load_model('my_model_file')

模型的一些基本属性:

model.name()
model.summary()

.

三、相似搜索——query查询

query(dataset, label=None, k=5, radius=None, verbose=True)
    - dataset:SFrame,需查询的数据
    - label:索引名,选择一列,输入列名
    - k:最大返回样本数
    - radius:半径范围,如果超过radius个间隔,就不显示
    - verbose:打印进度更新和模型细节。

例子:

#Querying the model
similar_images = model.query(reference_data[0:10] ,label = 'path',k=10)
similar_images.head()

查询reference_data前十张图,前K=10个相似图。 similar_images为一个SFrame,一共100行。 label表示similar_images这个dataframe的索引是之前reference_data表中的’path’这一列。

.

四、相似关联图搜索——similarity_graph

这个是Turicreate的核心功能,很逆天。简单介绍一下,后续有专题博客。 主函数:

similarity_graph(k=5, radius=None, include_self_edges=False, output_type='SGraph', verbose=True)
    k:最大返回样本数
    radius:float,半径范围,如果超过radius个间隔,就不显示
    include_self_edges:是否包含自己,True的话,返回的结果包含自己(自己的相似性为1)
    output_type:‘SGraph’, ‘SFrame’两种
    verbose:打印进度更新和模型细节。

一般例子:

graph = model.similarity_graph(k=1)  # an SGraph

返回一个SGraph格式。会有一个构建图的过程,这里YY一张图:

来看看一个简单的结果示意:

graph.edges

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WD学习记录

数据结构与算法2016-06-01

1.数据结构包括数据的逻辑结构和物理结构。数据的逻辑结构就是从具体问题抽象出来的数学模型,是为了讨论问题的方便,与数据在计算机中的具体存储没有关系。讨论数据结构...

782
来自专栏用户2442861的专栏

买卖股票最多K次

给定一个大小为n的数组,数组的元素a[i]代表第i天的股票价格。 设计一个算法,计算在最多允许买卖k次(一买一卖记为一次)的条件下的最大收益。 需要注意的...

523
来自专栏算法channel

动态规划中篇:爬楼梯

主要推送关于对算法的思考以及应用的消息。培养思维能力,注重过程,挖掘背后的原理,刨根问底。本着严谨和准确的态度,目标是撰写实用和启发性的文章,欢迎您的关注。 0...

3579
来自专栏瓜大三哥

HLS Lesson8-基本操作

1.算术操作 ? 如果是定点数处理时候,需要遵循的原则是:大数据不溢出,小数据不损失 2.算数赋值 ? ? #include<iostream> #includ...

2187
来自专栏PaddlePaddle

【进阶篇】C-API 使用流程

编写|PaddlePaddle 排版|wangp 这篇推文介绍 PaddlePaddle C-API 整体使用流程 1 使用流程 使用 C-API 的工作流...

2793
来自专栏Hongten

让你一看就明白什么是单列模式(和静态静态工厂模式)--java版本_源码下载

=================================================

361
来自专栏深度学习计算机视觉

A HierarchicalTest Case Prioritization Technique for Object Oriented Software

1、成员组成 (1)组长:张俊怡 (2)组员:孟令军 2、文献基本情况介绍 (1)文献名称:A HierarchicalTest Case Prioritiz...

3417
来自专栏TensorFlow从0到N

TensorFlow从0到1 - 2 - TensorFlow核心编程

上一篇Hello, TensorFlow!中的代码还未解释,本篇介绍TensorFlow核心编程的几个基本概念后,那些Python代码就很容易理解了。 与Te...

40410
来自专栏PPV课数据科学社区

【连载】R语言18讲(四)

? 前面讲到了怎么导入数据,获取数据,按照数据挖掘的流程,在我们导入数据之后接下来的工作便是对数据进行初步的探索,探索的工作主要包括两大块,第一是数据...

2698
来自专栏TensorFlow从0到N

TensorFlow从1到2 - 5 - 非专家莫入!TensorFlow实现CNN

当看到本篇时,根据TensorFlow官方标准《Deep MNIST for Experts》,你已经达到Expert Level,要恭喜了。 且不说是否夸大...

6229

扫码关注云+社区