Visenze API学习
Visenze概述
Visenze是新加坡国立大学的一个孵化项目,主要用于提供图片检索识别方案。一般来说,搭建一个CBIR系统大体需要以下几个关键技术:
- 图片数据库的构建和管理
- 图片检索算法研究,包括特征提取、匹配及索引等算法
- 服务器搭建和维护,与客户机进行交互(Visenze用到了Http和Json协议)
对于一个中小型公司而言,搭建这样一个系统是需要很大的精力和财力的,特别是在图片检索研究方面,很多公司并不具备相关的技术积累。而Visenze提供了一个完整的解决方案,用户只需将自己的图片数据以csv文件的方式上传至Visenze,调用Visenze提供的API即可实现整个图片检索过程。因此,用户无需再关注图片检索的技术细节,可以把工作重心转移到UI设计及其他功能实现上来。当然,个人认为,当公司发展到一定程度的时候,还是要把这些技术掌握到自己手里比较好。
Visenze允许用户为图片添加各种标签(如价钱,来源等等),从这点看还是具有很大的应用价值的。上传格式见下图(除im_name, im_url必须有外,其他标签可任意增删):
![]()
最近准备仿照Visenze搭建一个基于Android的图片检索系统,作为小白,但求多学到点技术。本文先翻译Visenze API Doc, 目的是对其通信协议,数据交互有一个整体认识,便于后续深入研究。
由于Visenze的服务器源码是非开源的,所以后端代码还是需要自己编写的,希望能写出来吧!
一、API概述
1.1 介绍
ViSearch是Visenze的图片检索API,用以提供准确、可靠及可扩展的图片检索。ViSearch API能够使开发者有效地索引并完成图片检索功能。Visenze提供了各种不同语言的SDK,可以方便的应用于Web和移动终端。
1.2 SDK下载
SDK下载地址:
- Java SDK
- Python SDK
- PHP SDK
- IOS SDK
- Android SDK
当然,也可以访问其JavaScript,IOS和Andorid版上手指南,后续我将重点研究它的Android SDK。
1.3 认证
Visenze为每个ViSearch应用分配了一个唯一的 access key 和 access key。这个密钥对用于认证每个API调用。
Visearch有两个API调用机制。第一个方法是HTTP基本认证(HTTP Basic Auth)——aceess key 和 secret key经过base64编码后,附加在请求头中。这种方法使用简单,但仅仅适用于从后台系统调用API(可能是因为安全问题,前端采用这种方式容易被劫持)。第二种方法是基于签名的认证(signature based authentication)——密钥对用于生成一个数字签名并附加在request URL上。这种方法对于前端和后端调用都较安全。
1.3.1 HTTP Basic Auth
这种认证方式就是标准的HTTP Basic Auth。这里,access key用作用户名,secret key用作认证密码。
在HTTP中,基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。
在发送之前是以用户名追加一个冒号然后串接上口令,并将得出的结果字符串再用Base64算法编码。例如,提供的用户名是Aladdin、口令是open sesame,则拼接后的结果就是Aladdin:open sesame,然后再将其用Base64编码,得到QWxhZGRpbjpvcGVuIHNlc2FtZQ==。最终将Base64编码的字符串发送出去,由接收者解码得到一个由冒号分隔的用户名和口令的字符串。
虽然对用户名和口令的Base64算法编码结果很难用肉眼识别解码,但它仍可以极为轻松地被计算机所解码,就像其容易编码一样。编码这一步骤的目的并不是安全与隐私,而是为将用户名和口令中的不兼容的字符转换为均与HTTP协议兼容的字符集。
1.3.2 Signature Based Authentication
这种认证方法需要生成一个签名,且对于每次请求只能使用一次。
1.串联成以下字段: secret_key + nonce + date
- secret_key: app的secret key;
- nonce: 一个随机的唯一的字符串,至少8个字符;
- date: 发出请求的UNIX时