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')

数据是这样的:

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

主函数load_images:

load_images(url, format='auto', with_path=True, recursive=True, ignore_failure=True, random_order=False)

其中,

  • url : str
    The string of the path where all the images are stored.
  • format : {‘PNG’ | ‘JPG’ | ‘auto’}, optional
    The format of the images in the directory. The default ‘auto’ parameter
    value tries to infer the image type from the file extension. If a
    format is specified, all images must be of that format.
  • with_path : bool, optional
    Indicates whether a path column is added to the SFrame. If ‘with_path’
    is set to True, the returned SFrame contains a ‘path’ column, which
    holds a path string for each Image object.
  • recursive : bool, optional
    Indicates whether ‘load_images’ should do recursive directory traversal,
    or a flat directory traversal.

  • ignore_failure : bool, optional
    If true, prints warning for failed images and keep loading the rest of
    the images.

  • random_order : bool, optional
    Load images in random order.

几个案例:

>>> url ='https://static.turi.com/datasets/images/nested'>>> image_sarray = turicreate.image_analysis.load_images(url, "auto", with_path=False,...                                                    recursive=True)

还有快速resize图片:

 Resize a single image>>> img = turicreate.Image('https://static.turi.com/datasets/images/sample.jpg')>>> resized_img = turicreate.image_analysis.resize(img,100,100,1)Resize an SArray of images>>> url ='https://static.turi.com/datasets/images/nested'>>> image_sframe = turicreate.image_analysis.load_images(url, "auto", with_path=False,...                                                    recursive=True)>>> image_sarray = image_sframe["image"]>>> resized_images = turicreate.image_analysis.resize(image_sarray, 100, 100, 1)

.


二、利用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


公众号“素质云笔记”定期更新博客内容:

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

  1. 极简主义︱使用Turicreate进行快速图像分类迁移训练与预测(六)

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

  2. 【译文】追求生产极简主义

    翻译 :丁兴华 欢迎访问网易云社区,了解更多网易技术产品运营经验. 有报道称Kelly Johnson在冷战期间的洛克希德公司工作时,创造了KISS('keep it simple, stupid') ...

  3. html网页设计思路,极简主义网页设计思路与原则

    极简主义是一种风格,也是很多高级设计师都信奉的原则之一.它在室内装修设计,人物造型设计,时尚搭配服装设计,平面vi包装设计以及本文重点提到的网页设计等方面,都有着很多经典的案例.素马设计分享频道也分享 ...

  4. 极简主义_网页设计中功能极简主义的真实性要少得多

    极简主义 Written by Jessica Bennett 由杰西卡·贝内特 ( Jessica Bennett)撰写 介绍 (Introduction) "Less is more&q ...

  5. 18个最新的极简主义风格网站

    极简主义的设计之所以总是流行,是因为他们一直用一些很简单的创意和资源去表达概念,网页设计的领域受极简主义设计的影响很大,许多有才华的设计师总是用几个简单的工具就设计出了不起的网站,比如字体和几何图形等 ...

  6. 极简主义APP界面UI设计实例模板,不简单!

    UI设计是对用户软件使用环境的设计.由于APPUI设计必须遵从易用性的特点,尤其是手机界面尺寸有限.因此,简洁大方的交互界面设计才能更容易的吸引用户.引导用户. RentHouse - 简单主页搜索移 ...

  7. 张艾迪(创始人):视觉计算极简主义的设计

    AOOOiA.global创始人艾迪张:面临着新互联网的时代的到来.全球各行业对产品设计和色彩搭配上进行了新的色彩标准化.就想人们喜欢Apple的黑与白.喜欢AOOOiA.Global/224 的赤橙 ...

  8. 《泰囧》票房奇迹:极简主义的胜利

    人类已经无法阻挡<泰囧>了,这是广州专线一部让影院工作者连轴转的电影,一部晚场几乎满座的电影,一部创造了单日观影人次的电影,而对出品方光线影业来说,这是一雪前耻的电影,它直接把各地电影院变 ...

  9. Effie:真正的极简主义!秒杀幕布

    作为一名追求极简主义的人,在生活上删繁就简,了解自己内心的真实需求,不盲从不跟风,不被欲望所吞没,把所有的精力都用在真实可靠有效的欲望上. 以前经常用幕布这款软件来辅助我纪录和规划生活,管理任务,制定 ...

最新文章

  1. 怎样使用dhcp自动分配IP地址
  2. NIOS2随笔——uCOS-II实时操作系统
  3. Unity优化之GC——合理优化Unity的GC (难度3 推荐5)
  4. 自己动手写事件总线(EventBus)
  5. [手把手教]discuzX2插件制作教程__最菜鸟级别的入门坎 【三】
  6. php 给html 赋值,PHP+JavaScript+HTML变量之间赋值及传递
  7. Android P Beta 3 现已发布!
  8. Android增量升级方案
  9. 这样演示正弦和余弦的相互变换,不怕难懂!
  10. 商品浏览时的css,jquery仿京东商品放大浏览页面
  11. Jenkins Bitbucket Vue 部署
  12. arcgis定义投影报错
  13. java课前演讲讲什么_课前演讲讲什么比较有创意(逼格)?
  14. 软件测试依据的国家技术标准规范
  15. 2022版自动发卡平台自动发卡源码
  16. 领英如何高效加好友,领英一天最多可以发送多少条消息?
  17. spring boot 推理cron 表达式【只支持6位或7位的cron表达式】
  18. C语言for循环语句
  19. 彼得•德鲁克 (Peter F.Drucker)管理思想
  20. GeoJSON格式规范说明

热门文章

  1. POJ1703-Find them, Catch them
  2. Java多线程优化方法及使用方式
  3. sublime text3安装、注册及常用插件
  4. FZU 2129 子序列个数 (递推dp)
  5. 掌握 cinder-scheduler 调度逻辑 - 每天5分钟玩转 OpenStack(48)
  6. 使用“Grafeas”元数据API和“Kritis”部署授权管理软件供应链
  7. 使用Gitosis搭建Git服务器
  8. Linux:JDK配置
  9. 软件设计原则和方法通俗理解
  10. Lire对图片进行索引