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

相关文章

来自专栏aCloudDeveloper

Mobility Model and Routing Model about the ONE

ONE主要的功能是节点的移动,节点间的相遇情况,路由情况以及消息的处理机制。下面简要介绍下目前ONE自带的六种移动模型和六种路由模型。 Mobility Mod...

19490
来自专栏CDA数据分析师

excel隔行选取新方法,99.99%的人没用过!

文 | 赵志东 有一个excel表格,需要隔N行选取。可能是隔一行,也可能是隔2行、3行。 ? 常见的有两种方法: 一、按ctrl键不松用鼠标逐行选取。如果需要...

19160
来自专栏PaddlePaddle

【FAQ】本地训练与预测相关问题汇总

导语 在使用指南的最后一部分,我们汇总了使用PaddlePaddle过程中的常见问题,本部分推文目录如下: 2.22:【FAQ】模型配置相关问题汇总 2.23:...

372100
来自专栏生信技能树

第3篇:用MACS2软件call peaks

Peak calling即利用计算的方法找出ChIP-seq或ATAC-seq中reads富集的基因组区域。

1.4K40
来自专栏一棹烟波

CUDA与OpenGL互操作

当处理较大数据量的时候,往往会用GPU进行运算,比如OpenGL或者CUDA。在实际的操作中,往往CUDA实现并行计算会比OpenGL更加方便,而OpenGL在...

304100
来自专栏CNN

Tensorflow将模型导出为一个文件及接口设置

在上一篇文章中《Tensorflow加载预训练模型和保存模型》,我们学习到如何使用预训练的模型。但注意到,在上一篇文章中使用预训练模型,必须至少的要4个文件:

21920
来自专栏大数据和云计算技术

SparkStreaming窗口操作

黄文辉同学第三篇的总结,大家支持。 概述 SparkStreaming提供了窗口的计算,它允许你对数据的滑动窗口应用转换。基于窗口的操作会在一个比Streami...

57480
来自专栏量化投资与机器学习

【精选】Jupyter Notebooks里的TensorFlow图可视化

前言 前提:假设你熟悉Python,TensorFlow和Jupyter notebooks。 我们的目标只是可视化计算图。 TensorFlow操作形成计算图...

53070
来自专栏wOw的Android小站

[Tensorflow] Faster R-CNN 和自定义 VOC 数据集

看了pascal_voc.py代码,可以把代码的jpg拼接改成png,这样可以不做上一步.

1.7K20
来自专栏人工智能LeadAI

存储Tensorflow训练网络的参数

训练一个神经网络的目的是啥?不就是有朝一日让它有用武之地吗?可是,在别处使用训练好的网络,得先把网络的参数(就是那些variables)保存下来,怎么保存呢?其...

33180

扫码关注云+社区

领取腾讯云代金券