随着深度学习的崛起,极大的推动了图像领域的发展,在提取特征这方面而言,神经网络目前有着不可替代的优势。之前文章中我们也介绍了图像检索往往是基于图像的特征比较,看特征匹配的程度有多少,从而检索出相似度高的图片。而检测图像特征,VGG16具有得天独厚的优势。
接下来本文将会通过一个简单的案例来实现一个基于深度学习的图像检索小工具。
准备工作
老样子,先来准备好我们此次需要使用到的工具:
- IDE:Pycharm
- Python:3.7
- Packages:Keras + TensorFlow + Pillow + Numpy
keras
Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及[CNTK后端。简单来说,keras就是对TF等框架的再一次封装,使得使用起来更加方便。
基于vgg16网络提取图像特征
我们都知道,vgg网络在图像领域有着广泛的应用,后续许多层次更深,网络更宽的模型都是基于此扩展的,vgg网络能很好的提取到图片的有用特征,本次实现是基于Keras实现的,提取的是最后一层卷积特征。
思路
主要思路是基于CVPR2015的论文《Deep Learning of Binary Hash Codes for Fast Image Retrieval》实