前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DIY一个以图搜图引擎1

DIY一个以图搜图引擎1

作者头像
mixlab
发布2018-04-17 15:14:36
1.3K0
发布2018-04-17 15:14:36
举报

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

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

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

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

喜欢路飞的用户们:

这2用户很配:

这一组,有没有很酷:

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

这是怎么实现的?

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

1 开发环境准备

终端输入:

代码语言:javascript
复制
docker pull tomirving92/turicreate

下载成功后,终端输入:

代码语言:javascript
复制
docker run --name wx_users -it -p 8888:8888 -v /Users/shadow/Documents/02-coding/kerasStudy:/root/kerasStudy  tomirving92/turicreate bash

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

代码语言:javascript
复制
python -m pip install --upgrade
pip python -m pip install jupyter

安装vim,终端输入:

代码语言:javascript
复制
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自测题

第二期 喵星人密信

终端输入:

代码语言:javascript
复制
jupyter notebook --generate-config --allow-root

运行成功后显示:

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

终端输入:

代码语言:javascript
复制
vim /root/.jupyter/jupyter_notebook_config.py

编辑文件:

代码语言:javascript
复制
#绑定所有地址
c.NotebookApp.ip='*' 

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

#端口
c.NotebookApp.port =8888

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

运行jupyter,终端输入:

代码语言:javascript
复制
jupyter notebook --allow-root

打开浏览器,输入

代码语言:javascript
复制
http://localhost:8888/

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

代码语言:javascript
复制
http://localhost:8888/?token=**********

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

root/kerasStudy/05-turicreate-notebooks

新建一个notebook

2 代码

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

代码语言:javascript
复制
# 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/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科技Mix设计Lab 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档