前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >极简主义︱利用apple机器学习平台Turicreate实现图像相似性检索(二)

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

作者头像
悟乙己
发布2018-01-02 17:09:16
1K0
发布2018-01-02 17:09:16
举报
文章被收录于专栏:素质云笔记素质云笔记

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,同时,保存了图像的长、宽信息

代码语言:javascript
复制
import turicreate as tc
# Load images from the downloaded data
reference_data  = tc.image_analysis.load_images('./101_ObjectCategories')

数据是这样的:

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

.

二、利用Resnet50数据特征提取

主函数tc.image_similarity.create

代码语言:javascript
复制
create(dataset, label = None, feature = None, model = 'resnet-50', verbose = True)

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

常规的执行为:

代码语言:javascript
复制
model = tc.image_similarity.create(reference_data)

那么model就是整个模型文件了。

模型的输出与保存:

代码语言:javascript
复制
model.save('my_model_file')
loaded_model = tc.load_model('my_model_file')

模型的一些基本属性:

代码语言:javascript
复制
model.name()
model.summary()

.

三、相似搜索——query查询

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

例子:

代码语言:javascript
复制
#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的核心功能,很逆天。简单介绍一下,后续有专题博客。

主函数:

代码语言:javascript
复制
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:打印进度更新和模型细节。

一般例子:

代码语言:javascript
复制
graph = model.similarity_graph(k=1)  # an SGraph

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

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

代码语言:javascript
复制
graph.edges
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、数据导入环节
  • 二、利用Resnet50数据特征提取
  • 三、相似搜索——query查询
  • 四、相似关联图搜索——similarity_graph
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档