DIY一个以图搜图引擎1

大家好,凡关注本公众号的用户都可参与到这个小实验中来,基于微信头像的数据,我发现这几个有趣的事情(注意保密,以下都只显示头像,我也只能取到头像和昵称的数据,其他没权限了):

这位用户一定是位机器学习资深玩家!

吉娃娃和小松糕....的故事,大家应该都看过吧,上面这图也是类似的,有很多长得像脸的食物,以至于让我训练的模型都认为是多个人。。

我还找出了不少的小动物们:

喜欢路飞的用户们:

这2用户很配:

这一组,有没有很酷:

美女/帅哥组,这个不方便公布。

这是怎么实现的?

本次试验采用Apple开源的Turicreate框架,只需简单7 行代码即可实现。我们继续使用Docker作为开发环境,在官网https://store.docker.com/搜索,找到turicreate的镜像。

1 开发环境准备

终端输入:

docker pull tomirving92/turicreate

下载成功后,终端输入:

docker run --name wx_users -it -p 8888:8888 -v /Users/shadow/Documents/02-coding/kerasStudy:/root/kerasStudy  tomirving92/turicreate bash

进入伪终端中,安装jupyter,输入:

python -m pip install --upgrade
pip python -m pip install jupyter

安装vim,终端输入:

apt-get install vim

vim 主要用来浏览和修改文本内容的:

按键盘上的ESC可以切换至什么模式?VimInsert Mode 输入模式BVisual Mode 视图模式CNormail Mode 命令模式AInsert Mode 输入模式BBVisual Mode 视图模式CCNormail Mode 命令模式AA

再来一张答题卡: 命令模式下保存并退出是哪个命令?Vim:wqB:q!C:AA:q!CC:AAA:wqBB

轻交互的公众号文章:

第一期 超简单的AI自测题

第二期 喵星人密信

终端输入:

jupyter notebook --generate-config --allow-root

运行成功后显示:

Writing default config to: /root/.jupyter/jupyter_notebook_config.py

终端输入:

vim /root/.jupyter/jupyter_notebook_config.py

编辑文件:

#绑定所有地址
c.NotebookApp.ip='*' 

#启动后是否在浏览器中自动打开
c.NotebookApp.open_browser = False 

#端口
c.NotebookApp.port =8888

保存文件,关于如何编辑与保存,请做完vim答题卡后查阅相关资料。

运行jupyter,终端输入:

jupyter notebook --allow-root

打开浏览器,输入

http://localhost:8888/

把终端显示的token输入页面所示的位置,即可使用notebook

http://localhost:8888/?token=**********

root目录下找到我们的项目目录,可根据个人情况自行建立。

root/kerasStudy/05-turicreate-notebooks

新建一个notebook

2 代码

7 行代码,完成从训练至查询相似图像、生成相似图集合的功能。

# 1 引用turicreate库

import turicreate as tc


# 2 读取用户的头像

ref_data  = tc.image_analysis.load_images('./data/userAvatar/ok')


#3 给每一行编号

ref_data = ref_data.add_row_number()


#4 从ref_data,创建图像相似模型

model = tc.image_similarity.create(ref_data,label=None, feature=None, model='resnet-50', verbose=True)


#5 查询与图像A相似的k个图像,此处ref_data[2:3]表示ref_data里的id为2的图像A,k=10表示查询10张

similar_images = model.query(ref_data[2:3],label=None, k=10, radius=None, verbose=False)


#6 根据图像的相似度,生成相似图集合

similarity_graph = model.similarity_graph(k=20, radius=None, include_self_edges=False, output_type='SGraph', verbose=True)
similar_images = similarity_graph.edges

码代码的时候,有不清楚的可以在知识星球求助:

付费社群--知识星球

1 看到一些好案例,关键技术解决方案,写出文章又不成体系,发星球里最合适了;

2 我会在知识星球发一些非常机密的研究心得;

3 一些非常有技巧的知识,给付费用户;

4 公众号的迭代版本,针对文章发更为升级、核心的内容。

5 当然,还有资深的专家在星球里。

最后来个大图,头像关系错综复杂啊:

留待下一篇再介绍更好玩的:比如夫妻相之类的,逢年过节帮你自动生成个节庆头像之类的。。。

参考资料:

苹果的API文档写得很清楚: https://apple.github.io/turicreate/docs/api/

原文发布于微信公众号 - 科技Mix设计Lab(Design-AI-Lab)

原文发表时间:2018-01-19

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PaddlePaddle

【PaddlePaddle】Windows版快速安装包正式上线!

正在钻研深度学习,学习PaddlePaddle,或者是正在用Windods系统的小伙伴们,再也不用特意装Linux系统,借助快速安装包就可以下载PaddlePa...

1314
来自专栏walterlv - 吕毅的博客

关闭模态窗口后,父窗口居然跑到了其他窗口的后面

发布于 2018-02-05 05:58 更新于 2018-06...

831
来自专栏编程微刊

微信小程序图片使用示例

2864
来自专栏肖洒的博客

小波变换

在知乎上看到一篇讲解小波变换的文章,感觉十分有趣。做成了PPT准备在图像工程的presentation。 原文地址:https://zhuanlan.zhi...

1003
来自专栏杨建荣的学习笔记

元数据看板的初步设计思路

今天在飞机上整理了一个初版的元数据看板接口的设计需求,然后又以设计图表的形式补充了一版,整体来说,这个元数据库看板的接口逻辑就梳理差不多了。

1333
来自专栏星流全栈

React + Redux 最佳实践

2805
来自专栏后端云

compute node ha 主流开源实现

nova evacuate和热迁移很像。都是想实例从一个节点转移到另外一个节点。区别主要是热迁移在正常状态下进行的,疏散时在异常状态下进行的。用一个形象的比如就...

1893
来自专栏恰童鞋骚年

操作系统核心原理-3.进程原理(中):进程调度

PS:在多进程并发的环境里,虽然从概念上看,有多个进程在同时执行,但在单个CPU下,在任何时刻只能有一个进程处于执行状态,而其他进程则处于非执行状态。那么问题来...

1035
来自专栏ImportSource

NoSQL-Quorums-仲裁

作者简介: ? 当你权衡“一致性”或“持久性”的时候,不是一个非此即彼,非黑即白的过程。一个请求中涉及的节点越多,那么我们越有可能避免不一致。这自然就引发了一个...

3645
来自专栏沃趣科技

容器化RDS|调度策略

前文我们介绍了基于 Kubernetes 实现的下一代私有 RDS. 其中, 调度策略是具体实现时至关重要的一环, 它关系到 RDS 集群的服务质量和部署密度....

38010

扫码关注云+社区

领取腾讯云代金券