极简主义︱利用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 条评论
登录 后参与评论

相关文章

来自专栏机器之心

业界 | 现代「罗塞塔石碑」:微软提出深度学习框架的通用语言

选自arXiv 作者:Ilia Karmanov等 机器之心编译 参与:路雪、刘晓坤、白妤昕 深度学习框架就像语言一样:很多人会说英语,但每种语言都有自己的特殊...

3314
来自专栏语言与智能

统计语言模型简介

统计语言模型是自然语言处理最基础也最重要的任务,也是其它复杂自然语言理解系统中重要的模块之一,理解语言模型对进一步了解自然语言处理,有非常重要的意义。统计语言模...

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

图像不变性特征——hu矩

图像的hu矩是一种具有平移、旋转和尺度不变性的图像特征。 普通矩的计算: f(x,y)的p+q阶原点矩可以表示为: ? 而数字图像是一个二维的离散信...

2817
来自专栏AI研习社

Google 和 Nvidia 强强联手,带来优化版 TensorFlow 1.7

AI 研习社按,日前,谷歌和英伟达宣布将 NVIDIA TensorRT 集成到 TensorFlow 1.7 中。在谷歌开发者博客中,他们介绍了此次合作的详细...

933
来自专栏marsggbo

使用Numpy将数据集中的data和target同时shuffle

因为通常我们需要将数据打散,这样的好处是可以让模型训练更具鲁棒性,那么如何同时打散data和target,而且还需要保持对应顺序不变呢?方法如下

893
来自专栏CreateAMind

Deep Learning Book 中文第十二章 大规模应用

大规模深度学习:GPU、分布式、压缩、动态结构等;视觉预处理等;自然语言,推荐系统介绍。

621
来自专栏程序人生 阅读快乐

Python高性能编程

Python语言是一种脚本语言,其应用领域非常广泛,包括数据分析、自然语言处理、机器学习、科学计算、推荐系统构建等。 本书共有12章,围绕如何进行代码优化和加快...

502
来自专栏开源FPGA

基于FPGA的Sobel边缘检测的实现

  前面我们实现了使用PC端上位机串口发送图像数据到VGA显示,通过MATLAB处理的图像数据直接是灰度图像,后面我们在此基础上修改,从而实现,基于FPGA的动...

2248
来自专栏Python小屋

Python使用扩展库numpy计算矩阵加权平均值

本文介绍Python扩展库numpy的函数average()的用法。 >>> import numpy as np # 创建二维矩阵 >>> x = np.ma...

2775
来自专栏null的专栏

论文阅读——Wide & Deep Learning

这篇文章是阅读《Wide & Deep Learning for Recommender Systems》后的总结,该文章中提出结合Wide模型和Deep模型...

5175

扫码关注云+社区