精华内容
下载资源
问答
  • 原标题:图像匹配,基于深度学习DenseNet实现以图搜图功能度学习的发展使得在此之前以机器学习为主流算法的相关实现变得简单,而且准确率更高,效果更好,在图像检索这一块儿,目前有谷歌的以图搜图,百度的以图搜图...

    原标题:图像匹配,基于深度学习DenseNet实现以图搜图功能

    度学习的发展使得在此之前以机器学习为主流算法的相关实现变得简单,而且准确率更高,效果更好,在图像检索这一块儿,目前有谷歌的以图搜图,百度的以图搜图,而百度以图搜图的关键技术叫做“感知哈希算法”,这是一个很简单且快速的算法,其原理在于针对每一张图片都生成一个特定的“指纹”,然后采取一种相似度的度量方式得出两张图片的近似程度。

    而深度学习在图像领域的快速发展,在于它能学习到图片的相关特征,评价一个深度模型的好坏往往在于它学习到有用的特征程度的多少,在提取特征这方面而言,目前神经网络有着不可替代的优势。而图像检索往往也是基于图像的特征比较,看特征匹配的程度有多少,从而检索出相似度高的图片。

    基于DenseNet网络提取图像特征

    我们都知道,vgg、DenseNet卷积网络在图像领域有着广泛的应用,后续许多层次更深,网络更宽的模型都是基于此扩展的,vgg网络能很好的提取到图片的有用特征,本次实现是基于Keras实现的,提取的是最后一层卷积特征。

    项目代码获取方式:

    图像匹配

    提取特征

    将特征以及对应的文件名保存为h5文件

    选一张测试图片测试检索效果

    相似度采用余弦相似度度量

    以一张小鸟的图片为例测试结果如下:

    第一张为测试图片,后面三张为检索图片,可以看出效果相当好了。

    如果想用Resnet或者Densenet提取特征,只需针对上述代码做出相应的修改,去掉注释修改部分代码即可。返回搜狐,查看更多

    责任编辑:

    展开全文
  • 市图书馆发展规划.doc

    2020-12-26 20:07:17
    市图书馆发展规划 xx市图书馆新馆在市委、市政府以及文化局领导的关怀和重视下,于xxxx年xx月xx日对广大市民试开放。目前试开放的部门有外借部(上架图书2万册)、期刊部(杂志...我馆的现代化发展必须政府投入为...
  • 作者:鸭科技 微信公众号:tucodec(大家有想与作者交流的请到微信公众号找我们哦~更多文章尽在公众号!) 人,是感官的动物。 我们的大脑,像一块复杂度极高的CPU,每天在接收着各种格式的数据,进行着无休止的...
        

    作者:图鸭科技 微信公众号:tucodec
    (大家有想与作者交流的请到微信公众号找我们哦~更多文章尽在公众号!)

    人,是感官的动物。

    我们的大脑,像一块复杂度极高的CPU,每天在接收着各种格式的数据,进行着无休止的计算。我们以各种感官接触着这个世界,抽取着不同感官下的信息,从而认知了世界。而图像作为承载信息最为丰富的一种媒介,在人类探索智慧的历史中,一直占据着重要的位置。人用这样一双肉眼如何识别不同类别的图像(image classification and pattern recognition),如何在图像中分割出形形色色的物体(semantic segmentation and object detection),如何从模糊的图像中想象出物体的轮廓(image super-resolution),如何创作出天马行空的图画(image synthesis),都是目前机器视觉图像处理领域关注的热点问题。全世界的研究者都希望有朝一日,计算机能代替人眼来识别这一幅幅图像,发现在图像中隐藏的密码。

    图像分类

    图像分类是图像处理中的一个重要任务。在传统机器学习领域,去识别分类一个一个图像的标准流程是特征提取、特征筛选,最后将特征向量输入合适的分类器完成特征分类。直到2012年Alex Krizhevsky突破性的提出AlexNet的网络结构,借助深度学习的算法,将图像特征的提取、筛选和分类三个模块集成于一体,设计5层卷积层加3层全连接层的深度卷积神经网络结构,逐层对图像信息进行不同方向的挖掘提取,譬如浅层卷积通常获取的是图像边缘等通用特征,深层卷积获取的一般是特定数据集的特定分布特征。AlexNet以15.4%的创纪录低失误率夺得2012年ILSVRC(ImageNet大规模视觉识别挑战赛)的年度冠军,值得一提的是当年亚军得主的错误率为26.2%。AlexNet超越传统机器学习的完美一役被公认为是深度学习领域里程碑式的历史事件,一举吹响了深度学习在计算机领域爆炸发展的号角。
    图为李飞飞博士和她的ImageNet数据集
    图为李飞飞博士和她的ImageNet数据集

    时间转眼来到了2014年,GoogleNet横空出世,此时的深度学习,已经历ZF-net, VGG-net的进一步精炼,在网络的深度,卷积核的尺寸,反向传播中梯度消失问题等技术细节部分已有了详细的讨论,Google在这些技术基础上引入了Inception单元,大破了传统深度神经网络各计算单元之间依次排列,即卷积层->激活层->池化层->下一卷积层的范式,将ImageNet分类错误率提高到了6.7%的高水平。

    在网络越来越深,网络结构越来越复杂的趋势下,深度神经网络的训练越来越难,2015年Microsoft大神何恺明(现就职于Facebook AI Research)为了解决训练中准确率先饱和后降低的问题,将residual learning的概念引入深度学习领域,其核心思想是当神经网络在某一层达到饱和时,利用接下来的所有层去映射一个f(x)=x的函数,由于激活层中非线性部分的存在,这一目标几乎是不可能实现的。

    但ResNet中,将一部分卷积层短接,则当训练饱和时,接下来的所有层的目标变成了映射一个f(x)=0的函数,为了达到这一目标,只需要训练过程中,各训练变量值收敛至0即可。Resdiual learning的出现,加深网络深度提高模型表现的前提下保证了网络训练的稳定性。2015年,ResNet也以3.6%的超低错误率获得了2015年ImageNet挑战赛的冠军,这一技术也超越了人类的平均识别水平,意味着人工智能在人类舞台中崛起的开始。

    图像中的物体检测

    图像分类任务的实现可以让我们粗略的知道图像中包含了什么类型的物体,但并不知道物体在图像中哪一个位置,也不知道物体的具体信息,在一些具体的应用场景比如车牌识别、交通违章检测、人脸识别、运动捕捉,单纯的图像分类就不能完全满足我们的需求了。

    这时候,需要引入图像领域另一个重要任务:物体的检测与识别。在传统机器领域,一个典型的案例是利用HOG(Histogram of Gradient)特征来生成各种物体相应的“滤波器”,HOG滤波器能完整的记录物体的边缘和轮廓信息,利用这一滤波器过滤不同图片的不同位置,当输出响应值幅度超过一定阈值,就认为滤波器和图片中的物体匹配程度较高,从而完成了物体的检测。这一项工作由Pedro F. Felzenszalb, Ross B. Girshick, David Mcallester还有Deva Ramanan以Object Detection with Discriminatively Trained Part-Based Models共同发表在2010年9月的IEEE Transactions on Pattern Analysis and Machine Interlligence期刊上。

    传统机器学习典型案例,HOG特征滤波器完整的记录了人的整体轮廓以及一些如眼睛、躯干、四肢等特征部位的细节信息

    (传统机器学习典型案例,HOG特征滤波器完整的记录了人的整体轮廓以及一些如眼睛、躯干、四肢等特征部位的细节信息)

    时间如白驹过隙,惊鸿一瞥, 四年过去,Ross B. Girishick已由当年站在巨人肩膀上的IEEE Student Member成长为了AI行业内独当一面的神级人物,继承了深度学习先驱的意志,在2014年CVPR会议上发表题为Rich Feature Hirarchies for Accurate Object Detection and Semantic Segmentation文章。RCNN,一时无两,天下皆知。

    图片描述

    (图为深度学习“上古四杰”,从左向右依次为[1]卷积神经网络的提出者Yan Lecun,[2]被誉为“深度学习之父”、深度学习领路人,近期逆流而行提出深度网络Capsule概念的Geoffery Hinton,[3]《Deep Learning》一书作者Yoshua Bengio, [4]前斯坦福人工智能实验室主任Andrew Ng(吴恩达))

    RCNN的核心思想在于将一个物体检测任务转化为分类任务,RCNN的输入为一系列利用selective search算法从图像中抽取的图像块,我们称之为region proposal。
    经过warping处理,region proposals被标准化到相同的尺寸大小,输入到预先训练好并精细调参的卷积神经网络中,提取CNN 特征。得到了每一个proposal的CNN特征后,针对每一个物体类别,训练一个二分类器,判断该proposal是否属于该物体类别。2015年,为了缩短提取每一个proposal的CNN特征的时间,Girishick借鉴了Spatial Pooling Pyramid Network(SPPnet)中的pooling技术,首先利用一整幅图像提取CNN特征图谱,再在这张特征图谱上截取不同的位置的proposal,从而得到不同尺寸的feature proposals,最后将这些feature proposals通过SPPnet标准化到相同的尺寸,进行分类。这种改进,解决了RCNN中每一个proposal都需要进行CNN特征抽取的弊端,一次性在整图上完成特征提取,极大的缩短了模型的运行时间,因而被称作“Fast R-CNN”,同名文章发表于ICCV 2015会议。

    2015年,Girishick大神持续发力,定义RPN(region-proposal-network)层,取代传统的region proposal截取算法,将region proposal的截取嵌入深度神经网络中,进一步提高了fast R-CNN的模型效率,因而被称作“Faster R-CNN”,在NIPS2015上Girishick发表了题为“Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks”的关键文章,完成了RCNN研究领域的三级跳壮举。
    图片描述

    (图为RCNN算法流程,最终可识别“马”以及骑在马背上的“人”)

    图像生成

    随着时代的发展,科学家们不仅仅是技术的研究者,更是艺术的创造者。

    在人工智能领域的另一位新一代灵魂人物,Ian Goodfellow在2014年提出了Generative Adversarial Net的概念,通过定义一个生成器(generator)和一个判别器(discriminator)来完成图像生成任务。其原理在于生成器的任务是从随机噪声中“创造”出接近目标图像的“假图像”去欺骗判别器,而判别器的任务是去甄别哪一些图像是来自于真实的数据集,哪一些图像是来自于生成器,在生成器和判别器的互相对抗中,通过合理的损失函数设计完成训练,最终模型收敛后,判别器的概率输出为常数0.5,即一幅图像来自于生成器和真实数据集的概率相同,生成器生成的图像的概率分布无限趋近于真实数据集。

    GAN技术成为2015,2016年深度学习研究的热门领域,在图像恢复、降噪、超分辨重建等方向获得了极佳的表现,衍生出一系列诸如WGAN,Info-GAN,DCGAN,Conditional-GAN等技术,引领了一波风潮。

    图片描述

    (图为利用Cycle-GAN技术,由一幅普通的照片生成莫奈、梵高等风格的油画)

    图像的故事才刚刚开始。

    当我们把一帧帧图像串联在一起,变成流动的光影,我们研究的问题就从空间维度上扩展到了时间维度,我们不仅需要关心物体在图像中的位置、类别、轮廓形状、语义信息,我们更要关心图像帧与帧之间的时间关系,去捕捉、识别一个物体的运动,去提取视频的摘要,去分析视频所表达的含义,去考虑除了图像之外的声音、文本标注,去处理一系列的自然语言,我们的研究一步一步,迈向了更广阔的星辰与大海。

    图像和视频,都是虚拟的一串串数字,一个个字节,但却让这个世界更加真实。

    展开全文
  • 以图搜图/图像检索相关资料

    千次阅读 2015-11-20 19:52:37
    基于内容的图片检索(Content Based Image Retrieval, CBIR),也有人称之为以图搜图,是一个很老的研究领域,它是利用机器学习...同时,越来越多的公司和机构开始涉足该领域,以此来推动以图搜图的快速发展与成长
      基于内容的图片检索(Content Based Image Retrieval, CBIR),也有人称之为以图搜图,是一个很老的研究领域,它是利用机器学习、模式识别、计算机视觉等相关技术对图片的内容进行分析、检测、检索的一种应用。随着近年来模式识别与机器学习的快速发展,该领域又逐渐火热起来,并涌现出很多实际可用的商业系统。同时,越来越多的公司和机构开始涉足该领域,以此来推动以图搜图的快速发展与成长。以下是本人收集的以图搜图的相关资料,包括国内外相关公司,开源代码,科研人员链接,相关期刊、会议杂志等。
    


    一、国内外图片搜索、以图搜图相关的公司

    1.TineEyet: http://www.tineye.com/   位于加拿大多伦多市的一家公司,主要从事图像识别与检索方面的业务,客户包括eBey,kKayak, Getty Images, Digg, iStockphoto, SmileTrain, Photoshelter等。该公司提供手机端的商用图像检索、识别API

    2.淘淘搜:http://www.taotaosou.com/ 位于杭州的一家公司,于2010年4月由阿里巴巴集团投资成立,专门从事图片购物搜索领域。目前主要提供衣服、鞋子、包等的图片搜索业务。  

    3.图图搜衣:http://tutuso.cn/ 广东图图搜衣网络科技有限公司,位于广东佛山的一家公司,主要从事相似女装图片搜索、比价等业务

    4.图视:http://www.1000look.net/ 江苏图视网络科技有限公司,于2011年成立于南京市,专注于图像检索、识别方面,目前从事书本检索,logo检索,衣服检索等业务。  

    5.Cortexica: http://www.cortexica.com/  位于伦敦的一家公司,主要从事衣服、鞋子、包、汽车等检索业务。该公司提供手机端的图片检索,识别API

    6.Picitup: http://www2.picitup.com/   基于颜色的衣服、鞋子等相似图片搜索,目前产品已经应用于eBey.com, Art.com, Shopping.com等

    7.北京华旗图像数据智能技术有限公司:http://www.icitimage.com/index.htm  国家知识产权局商标图片检索系统,外观专利图片检索系统  

    8.中科奥森:http://www.authenmetric.com/products-%E4%BA%BA%E8%84%B8%E7%85%A7%E7%89%87%E6%B5%B7%E9%87%8F%E6%AF%94%E5%AF%B9%E7%B3%BB%E7%BB%9F2.html 人脸检索系统  

    9.搜图购:http://www.tucue.com/product.html   杭州图酷科技有限公司,衣服,箱包的图片搜索购物

    10.纳特微视科技有限公司:  http://www.netovision.com/Products1.html  海量视频目标搜寻系统 

    11.搜狗图片检索:http://pic.sogou.com/ 

    12.百度识图:http://shitu.baidu.com/ 

    13.Incogna: http://www.incogna.com/#random 搜图购物 

    14.google goggles: http://www.google.com/mobile/goggles/#text android平台的图片搜索app

    15.搜搜慧眼http://huiyan.qq.com/ 腾讯公司的图书,cd,海报,条形码,logo等检索、识别的app

    16.Kooaba:http://www.kooaba.com/  瑞士一家公司,基于云平台的图像识别API,商标识别,红酒识别等  

    17. 尚街:http://www.instreet.cn/ 北京一家公司,从事基于内容的图片、视频广告植入

    18. Sketch2Photo: http://cg.cs.tsinghua.edu.cn/montage/home.htm   清华大学基于手绘简笔草图的图片检索 

    19.Imense: http://imense.com/ 英国剑桥的一家公司,从事证件识别、相似图片检索等业务 

    20.Imprezzeo: http://www.imprezzeo.com 基于内容的图片检索,人脸识别 

    21.Pixolution: http://www.pixolution.de/index.php?id=2#1 德国柏林一家公司,基于内容的图片检索

    22. Muvis: http://muvis.cs.tut.fi/ 坦佩雷理工大学开发的桌面图像搜索引擎

    23. 拍购http://paigou.cc/   北京一家公司,从事手机购物app

    24. Superfish: http://superfish.com/ 美国加州的一家公司,相似图片检索

    25.VSearch: http://www.vsearchtech.com  位于硅谷的创业团队,从事相似图片检索购物业务  

    26. ChicEngine:http://www.chicengine.com/ 美国一家公司,从事时尚服饰检索,

    27.SenSeeTive: https://www.visual-recognition.com/ 法国巴黎一家公司,图片、视频检索

    28.  MobileAcuity: http://www.mobileacuity.com/ 英国一家公司,手机拍照,图片检索;

    29. 图答应:http://www.tudaying.com/ 亮风台上海信息技术有限公司的一款产品,微信图像识别

    30. 应用拍拍:http://snapp.hiscene.com/pages/main/ 图标识别

    31. 一个图片搜索插件:  http://www.hit-gallery.com/  上海智琢软件,

     

    二、以图搜图相关的科研项目、开源代码等

    1. Lire: http://www.semanticmetadata.net/lire/

         https://code.google.com/p/lire/

    http://www.lire-project.net/  

    一个以图搜图的Java开源库

    2. Octagon: http://octagon.viitala.eu/ 一个免费的以图搜图软件,2007年已停止更新 

    3. http://www.cs.washington.edu/research/imagedatabase/ 华盛顿大学以图搜图项目主页  

    4. CIRES: http://amazon.ece.utexas.edu/~qasim/research.htm 基于内容的图片检索系统

    5. Photobook: http://vismod.media.mit.edu/vismod/demos/photobook/ MIT的一个以图搜图项目

    6. http://www.ci.gxnu.edu.cn/cbir/liu.aspx 广西师范大学的一个以图搜图系统

    7. Fire:http://code.google.com/p/fire-cbir/    http://thomas.deselaers.de/fire/

    开源图片搜索引擎

    8. Jcbir:  http://code.google.com/p/jcbir/  利用小波边缘和k均值聚类分析的一个java图片检索开源代码  

    9. Sora-core:  http://code.google.com/p/sora-core/  一个简单的图片检索系统平台,开源,内含FFT,分割,动态阈值,颜色直方图等

    10. http://cbir.info/  一个图片检索的资料网站 

    11. 搜狗互联网图片库:http://www.sogou.com/labs/dl/p2.html 可以下载下来进行图片检索实验。图片共计635GB

    12. Luminate: http://www.luminate.com/  基于图像识别的广告植入 

    13. IMAGENET: http://www.image-net.org/ 一个图片库,可以下载 

    14. GIFThttp://www.gnu.org/software/gift/ 基于反馈信息的图片检索开源库 

    15.  Caliph & Emir: http://www.semanticmetadata.net/features/  基于MPEG-7的图片检索

    16.  anaktisi: http://orpheus.ee.duth.gr/anaktisi/  基于相关反馈的图片检索库,内部实现了一系列新的CBIR特征描述符

    17.  svetlana lazebnik: http://www.cs.illinois.edu/homes/slazebni/  伊利诺伊大学助理教授,主攻图像分解,图像检索方面;

    18. 荷兰乌德勒支大学图像与多媒体研究中心:http://www.cs.uu.nl/centers/give/multimedia/index.html 图像、多媒体检索与匹配

    19. 德克萨斯大学奥斯丁分校助理教授Kristen Grauman:http://www.cs.utexas.edu/~grauman/  图像检索 

    20. ImageRecover:  http://www.cs.bu.edu/groups/ivc/ImageRover/ 波士顿大学以图搜图 

    21. IMEDIA: https://www.rocq.inria.fr/imedia/index_UK.html 法国国家信息与自动化研究所,以图搜图项目, 

    22. 百度深度学习研究中心博士后于尹安:http://www.cbsr.ia.ac.cn/users/ynyu/index.htm 

    23.  百度技术副总监于凯:http://www.dbs.ifi.lmu.de/~yu_k/

    24.  百度深度学习研究中心,深度神经网络图片检索系统:http://www.cbsr.ia.ac.cn/users/ynyu/dnn.html

    25.  意大利博洛尼亚大学Windsurf: http://www-db.deis.unibo.it/Windsurf/ 

    26.   希腊国立雅典理工大学VIRaL: http://viral.image.ntua.gr/

    27.   美国马歇尔大学PxSearch: http://inperc.com/wiki/index.php?title=Pixcavator_image_search

    28.  ElasticVision: http://elastic-vision.software.informer.com/ 图像聚类软件 

    29.   OpenDIR:http://code.google.com/p/opendir/ google开源项目

    30.   

    31. 

     

     

    三、以图搜图相关的期刊、杂志、会议等

    1. ACM ICMR 2014(ACM International Conference on Multimedia Retrieval),http://www.icmr2014.org/ ICMR2014于4月1日至4日在英国苏格兰格拉斯哥大学举办,会议主要探讨文本、图像、视频、音频等多媒体信息检索方面的研究

    2. VECTR2013the 5th International Workshop on Video Event Categorization,Tagging and Retrieval,2013ICCV的一个附属workshop,视频标记,聚类,事件分析,检索方面; 于2013128日在澳大利亚悉尼举行

    3.  ICCV2013,于2013123-6日在澳大利亚悉尼举行,计算机视觉、图像处理领域的三大顶级会议之一。

    4. MMEDIA 2014(the 6th International Conference on Advances in Multimedia), 2014223-27,法国阿尔卑斯海滨省尼斯市,多媒体编解码、多媒体分析及内容检索、 

    5. CVPR2014, http://www.pamitc.org/cvpr14/ 2014年6月24-27日,美国俄亥俄州,计算机时间领域的三大会议之一 

    6. ICPR2014, International Conference on Pattern Recognition, http://www.icpr2014.org/  2014824-28,瑞典,斯德哥尔摩 

    7. ECCV2014http://eccv2014.org/  计算机视觉领域三大会议之一 ,201495--12,瑞士,苏黎世

    8. ICIP2014http://www.icip2014.com/ 2014年10月27-30,法国,巴黎 


    出处:http://blog.csdn.net/carson2005/article/details/11636673

    展开全文
  • 企业发展历程流程PPT素材下载,本素材动态形式展示一个企业从1980年到2007年的发展历程记事,网格为背景图案,使得幻灯片非常有科技感; 关键词:科技,发展历程,大记事,PPT流程,幻灯片图表素材,PPTX...
  • 骑驴找马:职业发展图以挖掘自身潜藏的能力为核心,致力于为你提供最实用的骑驴找马:职业发展,赶...该文档为骑驴找马:职业发展,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • 我国早在公元500多年就有素描影像《西山径昆仑》、《北山径汾水》,宋代石刻城市地图《半江》,在我国地图学史上具有重要地位,列为国家重要保护文物;2000年3月在哈尔滨人民大广场展示《哈尔滨全家福——...
  • 基于深度学习实现以图搜图功能

    万次阅读 多人点赞 2018-12-12 18:32:24
    前记: 深度学习的发展使得在此之前以机器学习为主流算法的相关实现变得简单,而且准确率更高,效果更好,在图像检索这一块儿,目前有谷歌的以图搜图,百度的以图搜图,而百度以图搜图的关键技术叫做“感知哈希算法...

    前记: 深度学习的发展使得在此之前以机器学习为主流算法的相关实现变得简单,而且准确率更高,效果更好,在图像检索这一块儿,目前有谷歌的以图搜图,百度的以图搜图,而百度以图搜图的关键技术叫做“感知哈希算法”,这是一个很简单且快速的算法,其原理在于针对每一张图片都生成一个特定的“指纹”,然后采取一种相似度的度量方式得出两张图片的近似程度,具体见之前的一篇博客哈希算法-图片相似度计算
      而深度学习在图像领域的快速发展,在于它能学习到图片的相关特征,评价一个深度模型的好坏往往在于它学习到有用的特征程度的多少,在提取特征这方面而言,目前神经网络有着不可替代的优势。而图像检索往往也是基于图像的特征比较,看特征匹配的程度有多少,从而检索出相似度高的图片。
      
    基于vgg16网络提取图像特征
      我们都知道,vgg网络在图像领域有着广泛的应用,后续许多层次更深,网络更宽的模型都是基于此扩展的,vgg网络能很好的提取到图片的有用特征,本次实现是基于Keras实现的,提取的是最后一层卷积特征。
      
    提取特征

    #  extract_cnn_vgg16_keras.py
    # -*- coding: utf-8 -*-
    import numpy as np
    from numpy import linalg as LA
    
    from keras.applications.vgg16 import VGG16
    # from keras.applications.resnet50 import ResNet50
    # from keras.applications.densenet import DenseNet121
    from keras.preprocessing import image
    from keras.applications.vgg16 import preprocess_input as preprocess_input_vgg
    # from keras.applications.resnet50 import preprocess_input as preprocess_input_resnet
    # from keras.applications.densenet import preprocess_input as preprocess_input_densenet
    class VGGNet:
        def __init__(self):
            # weights: 'imagenet'
            # pooling: 'max' or 'avg'
            # input_shape: (width, height, 3), width and height should >= 48
            self.input_shape = (224, 224, 3)
            self.weight = 'imagenet'
            self.pooling = 'max'
            # include_top:是否保留顶层的3个全连接网络
            # weights:None代表随机初始化,即不加载预训练权重。'imagenet'代表加载预训练权重
            # input_tensor:可填入Keras tensor作为模型的图像输出tensor
            # input_shape:可选,仅当include_top=False有效,应为长为3的tuple,指明输入图片的shape,图片的宽高必须大于48,如(200,200,3)
            #pooling:当include_top = False时,该参数指定了池化方式。None代表不池化,最后一个卷积层的输出为4D张量。‘avg’代表全局平均池化,‘max’代表全局最大值池化。
            #classes:可选,图片分类的类别数,仅当include_top = True并且不加载预训练权重时可用。
            self.model_vgg = VGG16(weights = self.weight, input_shape = (self.input_shape[0], self.input_shape[1], self.input_shape[2]), pooling = self.pooling, include_top = False)
         #    self.model_resnet = ResNet50(weights = self.weight, input_shape = (self.input_shape[0], self.input_shape[1], self.input_shape[2]), pooling = self.pooling, include_top = False)
         #   self.model_densenet = DenseNet121(weights = self.weight, input_shape = (self.input_shape[0], self.input_shape[1], self.input_shape[2]), pooling = self.pooling, include_top = False)
            self.model_vgg.predict(np.zeros((1, 224, 224 , 3)))
        #    self.model_resnet.predict(np.zeros((1, 224, 224, 3)))
        #    self.model_densenet.predict(np.zeros((1, 224, 224, 3)))
        '''
        Use vgg16/Resnet model to extract features
        Output normalized feature vector
        '''
        #提取vgg16最后一层卷积特征
        def vgg_extract_feat(self, img_path):
            img = image.load_img(img_path, target_size=(self.input_shape[0], self.input_shape[1]))
            img = image.img_to_array(img)
            img = np.expand_dims(img, axis=0)
            img = preprocess_input_vgg(img)
            feat = self.model_vgg.predict(img)
            # print(feat.shape)
            norm_feat = feat[0]/LA.norm(feat[0])
            return norm_feat
        #提取resnet50最后一层卷积特征
        def resnet_extract_feat(self, img_path):
            img = image.load_img(img_path, target_size=(self.input_shape[0], self.input_shape[1]))
            img = image.img_to_array(img)
            img = np.expand_dims(img, axis=0)
            img = preprocess_input_resnet(img)
            feat = self.model_resnet.predict(img)
            # print(feat.shape)
            norm_feat = feat[0]/LA.norm(feat[0])
            return norm_feat
        #提取densenet121最后一层卷积特征
        def densenet_extract_feat(self, img_path):
            img = image.load_img(img_path, target_size=(self.input_shape[0], self.input_shape[1]))
            img = image.img_to_array(img)
            img = np.expand_dims(img, axis=0)
            img = preprocess_input_densenet(img)
            feat = self.model_densenet.predict(img)
            # print(feat.shape)
            norm_feat = feat[0]/LA.norm(feat[0])
            return norm_feat
    

    将特征以及对应的文件名保存为h5文件

    # index.py
    # -*- coding: utf-8 -*-
    import os
    import h5py
    import numpy as np
    import argparse
    from extract_cnn_vgg16_keras import VGGNet
    
    '''
     Returns a list of filenames for all jpg images in a directory. 
    '''
    def get_imlist(path):
        return [os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')]
    
    
    '''
     Extract features and index the images
    '''
    if __name__ == "__main__":
        database = './data/picture'
        index = 'vgg_featureCNN.h5'
        img_list = get_imlist(database)
        
        print("--------------------------------------------------")
        print("         feature extraction starts")
        print("--------------------------------------------------")
        
        feats = []
        names = []
    
        model = VGGNet()
        for i, img_path in enumerate(img_list):
            norm_feat = model.vgg_extract_feat(img_path)      #修改此处改变提取特征的网络
            img_name = os.path.split(img_path)[1]
            feats.append(norm_feat)
            names.append(img_name)
            print("extracting feature from image No. %d , %d images in total" %((i+1), len(img_list)))
    
        feats = np.array(feats)
        # print(feats)
        # directory for storing extracted features
        # output = args["index"]
        output = index
        print("--------------------------------------------------")
        print("      writing feature extraction results ...")
        print("--------------------------------------------------")
    
    
        h5f = h5py.File(output, 'w')
        h5f.create_dataset('dataset_1', data = feats)
        # h5f.create_dataset('dataset_2', data = names)
        h5f.create_dataset('dataset_2', data = np.string_(names))
        h5f.close()
    

    选一张测试图片测试检索效果
    相似度采用余弦相似度度量

    #  test.py
    # -*- coding: utf-8 -*-
    from extract_cnn_vgg16_keras import VGGNet
    import numpy as np
    import h5py
    import matplotlib.pyplot as plt
    import matplotlib.image as mpimg
    import argparse
    
    query = './data/picture/bird.jpg'
    index = 'vgg_featureCNN.h5'
    result = './data/picture'
    # read in indexed images' feature vectors and corresponding image names
    h5f = h5py.File(index,'r')
    # feats = h5f['dataset_1'][:]
    feats = h5f['dataset_1'][:]
    print(feats)
    imgNames = h5f['dataset_2'][:]
    print(imgNames)
    h5f.close()
            
    print("--------------------------------------------------")
    print("               searching starts")
    print("--------------------------------------------------")
        
    # read and show query image
    # queryDir = args["query"]
    queryImg = mpimg.imread(query)
    plt.title("Query Image")
    plt.imshow(queryImg)
    plt.show()
    
    # init VGGNet16 model
    model = VGGNet()
    
    # extract query image's feature, compute simlarity score and sort
    queryVec = model.vgg_extract_feat(query)    #修改此处改变提取特征的网络
    print(queryVec.shape)
    print(feats.shape)
    scores = np.dot(queryVec, feats.T)
    rank_ID = np.argsort(scores)[::-1]
    rank_score = scores[rank_ID]
    # print (rank_ID)
    print (rank_score)
    
    
    # number of top retrieved images to show
    maxres = 3          #检索出三张相似度最高的图片
    imlist = []
    for i,index in enumerate(rank_ID[0:maxres]):
        imlist.append(imgNames[index])
        # print(type(imgNames[index]))
        print("image names: "+str(imgNames[index]) + " scores: %f"%rank_score[i])
    print("top %d images in order are: " %maxres, imlist)
    # show top #maxres retrieved result one by one
    for i,im in enumerate(imlist):
        image = mpimg.imread(result+"/"+str(im, 'utf-8'))
        plt.title("search output %d" %(i+1))
        plt.imshow(image)
        plt.show()
    

    以一张小鸟的图片为例测试结果如下:
    在这里插入图片描述
    第一张为测试图片,后面三张为检索图片,可以看出效果相当好了。
    在这里插入图片描述
    如果想用Resnet或者Densenet提取特征,只需针对上述代码做出相应的修改,去掉注释修改部分代码即可。

    参考文献:
    https://github.com/willard-yuan/flask-keras-cnn-image-retrieval
    https://www.zhihu.com/question/29467370
    http://yongyuan.name/blog/layer-selection-and-finetune-for-cbir.html

    展开全文
  • 以图搜图相关资料

    万次阅读 2013-09-13 11:48:38
    基于内容的图片检索(Content Based Image Retrieval, CBIR),也有人称之为以图搜图,是一个很老的研究领域,它是利用机器学习...同时,越来越多的公司和机构开始涉足该领域,以此来推动以图搜图的快速发展与成长
  • 随着深度学习的崛起,极大的推动了图像领域的发展,在提取特征这方面而言,神经网络目前有着不可替代的优势。之前文章中我们也介绍了图像检索往往是基于图像的特征比较,看特征匹配的程度有多少,从而检索出相似度高...
  • 自古以来,人们就一直试图用各种机器来代替人的部分脑力劳动,提高人们征服自然的能力,其中对人工智能的产生、发展有重大影响的主要研究成果包括:早在公元前384-公元前322年,伟大的哲学...
  • 图像为例,按照图像检索中使用的信息区分,图像可以分为两类:基于文本的图像检索和基于内容识别的图像检索。基于文本的图像检索完全不分析和利用图像本身的内容,其检索质量完全依赖于与图像关联的文字信息与图像...
  • 新一代人工智能发展规划 解读人工智能的过去现在和未来 解读人工智能的过去现在和未来 前言人工智能的概念及发展历史 前言人工智能的概念及发展历史 一 人工智能的概念 一 人工智能的概念 人工智能机器为载体的...
  • 图像采集卡发展

    2009-09-10 17:27:00
    长久以来,图像卡一直是整个机器视觉系统的核心部件,它负责将模拟信号数字化,并一定的格式传输到计算机的内存中方便用户处理这些图像数据。 图像采集卡是图像采集部分和图像处理部分的接口。图象经过采样、...
  • 以图搜图的相关资料

    千次阅读 2013-10-13 09:27:30
    基于内容的图片检索(Content Based Image Retrieval, CBIR),也有人称之为以图搜图,是一个很老的研究领域,它是利用机器学习...同时,越来越多的公司和机构开始涉足该领域,以此来推动以图搜图的快速发展与成长
  • 巨大的人才缺口直接导致各企业纷纷高薪聘请Java人才。那么,Java工程师的职业发展路径是什么样的?小白入门Java后,成长路线是怎样的?下面,就给大家分析一下。1、Java程序员这是Java开发工程师的第一阶段了,...
  • 进入90年代以来,计算机技术、通信技术和软件技术为核心的信息技术取得了更加迅猛的发展,各种装备与设备上嵌入式计算与系统的广泛应用大大地推动了行业的渗透性应用。嵌入式系统被描述为:“应用为中心、软件...
  • 从计算机应用系统的角度出发,人工智能是研究如何制造出人造的智能机器或智能系统,来模拟人类智能活动的能力,延伸人们智能的科学。人工智能发展简史1.萌芽期(1956年以前)自古以来,人类就力图根据认识水平...
  • 雅温得西北部的Mbankolo,Febe,Carrier,Nkolbisson和Messa地区等都是城市战线发展为特征的自发土地占领的受害者。 来自喀麦隆西部和该国其他地区的抵制返回原籍地的移民占主导地位,这些受害者包括贫穷的城市...
  • 本文目录结构大数据领域相关概念一看懂大数据发展历程 ...本博文一张的形式给大家呈现大数据发展历程。 首先先介绍几个常见知识概率,以便大家方便理解相关领域知识。 [倒排索引] 倒排索引是对互联网内容的...
  • 但在抗“疫”过程中,大数据、人工智能、云计算等为代表的新一代信息技术发挥了重要作用,并激发了新业态、新模式的出现。同时,2020年也是我国顶层设计发力新基建、提速数字基建建设的一年。在此背景下,乘新基建...
  • 今天看了《深入理解Java虚拟机》第2版这本书,书籍开篇介绍了Java的发展史,发现比较多,好多页,不好记,所以,把主要点画了这张思维导,便于记忆,希望能帮到大家。这张图Java各个版本的发布时间为时间轴完成...
  • 以图搜图的一些知识

    千次阅读 2014-01-02 15:23:28
     基于内容的图片检索(Content Based Image Retrieval, CBIR),也有人称之为以图搜图,是一个很老的研究领域,它是利用机器学习、模式识别、计算机视觉等相关技术对图片的内容进行分析、检测、检索的一种应用...
  • 本课程主要给大家介绍人工智能的相关发展和应用,同时通过案例介绍基于深度CNN的图像特征提取和相似计算的原理和简单应用。通过本次课程可以让你轻松地对人工智能有全面的了解。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,723
精华内容 3,489
关键字:

以图发展