[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-willard-yuan--cnn-for-image-retrieval":3,"tool-willard-yuan--cnn-for-image-retrieval":62},[4,18,26,35,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108111,2,"2026-04-08T11:23:26",[14,15,13],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":10,"last_commit_at":41,"category_tags":42,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[43,15,13,14],"语言模型",{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,52],"视频",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":59,"last_commit_at":60,"category_tags":61,"status":17},5646,"opencv","opencv\u002Fopencv","OpenCV 是一个功能强大的开源计算机视觉库，被誉为机器视觉领域的“瑞士军刀”。它主要解决让计算机“看懂”图像和视频的核心难题，提供了从基础的图像读取、色彩转换、边缘检测，到复杂的人脸识别、物体追踪、3D 重建及深度学习模型部署等全方位算法支持。无论是处理静态图片还是分析实时视频流，OpenCV 都能高效完成特征提取与模式识别任务。\n\n这款工具特别适合计算机视觉开发者、人工智能研究人员以及机器人工程师使用。对于希望将视觉感知能力集成到应用中的软件工程师，或是需要快速验证算法原型的学术研究者，OpenCV 都是不可或缺的基础设施。虽然普通用户通常不会直接操作代码，但日常生活中使用的扫码支付、美颜相机和自动驾驶系统，背后往往都有它的身影。\n\nOpenCV 的独特亮点在于其卓越的性能与广泛的兼容性。它采用 C++ 编写以确保高速运算，同时提供 Python、Java 等多种语言接口，极大降低了开发门槛。库中内置了数千种优化算法，并支持跨平台运行，能够无缝对接各类硬件加速器。作为社区驱动的项目，OpenCV 拥有活跃的生态系统和丰富的学习资源，持续推动着视觉技术的前沿发展。",86988,1,"2026-04-08T16:06:22",[14,15],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":78,"owner_email":79,"owner_twitter":80,"owner_website":81,"owner_url":82,"languages":83,"stars":123,"forks":124,"last_commit_at":125,"license":80,"difficulty_score":126,"env_os":127,"env_gpu":128,"env_ram":129,"env_deps":130,"category_tags":138,"github_topics":140,"view_count":32,"oss_zip_url":80,"oss_zip_packed_at":80,"status":17,"created_at":144,"updated_at":145,"faqs":146,"releases":187},5657,"willard-yuan\u002Fcnn-for-image-retrieval","cnn-for-image-retrieval",":sunrise:The code of post \"Image retrieval using MatconvNet and pre-trained imageNet\"","cnn-for-image-retrieval 是一个基于卷积神经网络（CNN）的开源图像检索工具，旨在帮助开发者快速构建“以图搜图”应用。它利用预训练的 ImageNet 模型提取图像深层特征，通过计算特征相似度在数据库中查找相似图片，有效解决了传统方法难以理解图像语义内容的痛点。\n\n该项目最初基于 MatConvNet 框架，现已扩展支持 Caffe 和 Keras 等主流深度学习平台，并提供了完整的 Web 演示代码，非常适合计算机视觉领域的研究人员、算法工程师以及希望搭建自定义图像搜索系统的开发者使用。其独特的技术亮点在于验证了降维的有效性：研究发现将高维 CNN 特征（如 4096 维）通过 PCA 降至 128 维后，不仅能大幅节省存储空间，甚至能因去除信息冗余而提升检索精度。此外，项目还包含了计算平均检索精度（mAP）的标准脚本和对比基准框架，为用户评估和优化检索效果提供了便利。无论是用于学术研究还是工程落地，cnn-for-image-retrieval 都提供了一套成熟且易于复现的解决方案。","## CNN for Image Retrieval\n\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-BSD-blue.svg)](..\u002FLICENSE)\n\n博文：[Image retrieval using MatconvNet and pre-trained imageNet](http:\u002F\u002Fyongyuan.name\u002Fblog\u002Fimage-retrieval-using-MatconvNet-and-pre-trained-imageNet.html)，对应web演示主页[picSearch](http:\u002F\u002Fyongyuan.name\u002Fpic)。\n\n**2017\u002F10\u002F08**: 构建CBIR检索对比框架[cnn-cbir-benchmark](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-cbir-benchmark)，包括Fisher Vector, VLAD, FC, RMAC, CROW.\n\n**2017\u002F08\u002F15更新**：增加Python版本，[Caffe版本](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-cbir-benchmark\u002Ftree\u002Fmaster\u002Ffc_retrieval)，[Keras版本](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fflask-keras-cnn-image-retrieval)。\n\n**2015\u002F12\u002F31更新**：添加对MatConvNet最新版version 1.0-beta17的支持，预训练的模型请到Matconvnet官网下载最新的模型。\n\n**2015\u002F12\u002F31更新**：添加对MatConvNet最新版version 1.0-beta17的支持，预训练的模型请到Matconvnet官网下载最新的模型。\n\n**2015\u002F10\u002F20更新**：Web演示部分代码公开[CNN-Web-Demo-for-Image-Retrieval](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002FCNN-Web-Demo-for-Image-Retrieval)。\n\n**2015\u002F09\u002F24更新**：添加对MatConvNet最新版version 1.0-beta14的支持。\n\n**2015\u002F12\u002F31更新**：添加对[MatConvNet](http:\u002F\u002Fwww.vlfeat.org\u002Fmatconvnet\u002F)最新版version 1.0-beta17的支持，删掉原来的版本(预训练的模型请到matconvnet官网下载最新的模型)。\n\n**2015\u002F06\u002F29更新**：添加对[MatConvNet](http:\u002F\u002Fwww.vlfeat.org\u002Fmatconvnet\u002F)最新版version 1.0-beta12的支持。\n\n**注意**：其中文件夹matconvnet-1.0-beta17是已经编译好了的，鉴于MatConvNet只能在**Matlab 2014**及其以上以及系统必须是**64位**，所以在使用此工具箱之前得满足这两个条件。如果是Pythoner，推荐使用[flask-keras-cnn-image-retrieval](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fflask-keras-cnn-image-retrieval)，纯Python，非常易于写成在线图像搜索应用。\n\n\u003Cp align=\"center\">Caltech-256图像数据库上搜索结果\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwillard-yuan_cnn-for-image-retrieval_readme_d5668f836dc4.jpg\"  width = 600 alt=\"search result\"\u002F>\u003C\u002Fp>\n\n### 运行步骤\n\n1). 如果不需要计算mAP的话，那就直接把你的图像库文件夹名字命名为`database`，并将图片全部放在放在`database`文件夹下即可。如果你要在后面计算MAP（平均检索精度）的话，要确保图像数据库做成文件夹`databaseClassified`中的形式，然后执行下面命令：\n\n```sh\npython movefiles.py\n```\n\n2). 接着便可以抽取特征。运行`extractCNN.m`，要用parfor并行的话，直接修改注释部分即可。\n\n3). 检索可视化。这一步运行`queryInDatabaseDemo.m`即可。\n\n4). 计算mAP。不需要计算MAP的这步略过。运行`compute_MAP.m`，关于mAP的计算，请参阅我画的mAP计算过程示意图：[信息检索评价指标](http:\u002F\u002Fyongyuan.name\u002Fblog\u002Fevaluation-of-information-retrieval.html)，这个计算mAP的脚本是按照那个流程中定义的mAP计算方式来写的。\n\n### 降维\n\n> 非常的amazing, 除了验证降维到128D后损失不减外，惊奇地发现4096D的CNN降维到128D后精度还有提高，一种可能的解释：CNN特征也有一定的信息冗余，信息冗余所带来的影响比降维所带来的损失的影响要更大。结论：You should reduce the dimension of CNN when you use if.\n\n\u003Cp align=\"center\">PCA降维对CNN特征的影响\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwillard-yuan_cnn-for-image-retrieval_readme_c4d68372842c.png\"  width = 500 alt=\"search result\"\u002F>\u003C\u002Fp>\n\n上面实验使用的是本项目代码，图像数据集使用的是Caltech101。\n\n关于PCA对PCA降维的影响，[Neural Codes for Image Retrieval](http:\u002F\u002Farxiv.org\u002Fpdf\u002F1404.1777v2.pdf)中也有探讨，以及曾跟Adrian Rosebrock也有过这方面的交流：\n>ANN is really fantastic, it makes such much easier. You could also try something like PCA on your 4096-d vector and try to get it down to 128-d. It would save some space and (ideally) not hurt accuracy.\n\n所以，如果采用了CNN特征的话，推荐将其降维到128D。\n\n## CNN资源列表\n\n### C++\n\n[conv-net-version-3](https:\u002F\u002Fgithub.com\u002Fxingdi-eric-yuan\u002Fconv-net-version-3)，对应博客[Convolutional Neural Networks III](http:\u002F\u002Feric-yuan.me\u002Fcnn3\u002F)\n\n### Python\n\n[Keras](https:\u002F\u002Fgithub.com\u002Ffchollet\u002Fkeras)，强力推荐\n\nKeras资源列表：\n\n[DeepLearning tutorial（6）易用的深度学习框架Keras简介](http:\u002F\u002Fblog.csdn.net\u002Fu012162613\u002Farticle\u002Fdetails\u002F45397033)\n\n[DeepLearning tutorial（7）深度学习框架Keras的使用-进阶](http:\u002F\u002Fblog.csdn.net\u002Fu012162613\u002Farticle\u002Fdetails\u002F45581421)\n\n[Keras VGG-16模型 VGG16 model for Keras](https:\u002F\u002Fgist.github.com\u002Fbaraldilorenzo\u002F07d7802847aaad0a35d3)\n\n[PDNN](https:\u002F\u002Fgithub.com\u002Fyajiemiao\u002Fpdnn)，对应主页[PDNN: A Python Toolkit for Deep Learning](http:\u002F\u002Fwww.cs.cmu.edu\u002F~ymiao\u002Fpdnntk.html)\n\n### Matlab\n\n[GoogLeNet](http:\u002F\u002Fvision.princeton.edu\u002Fpvt\u002FGoogLeNet\u002F), A GPU Implementation of GoogLeNet.\n\n\n","## 用于图像检索的卷积神经网络\n\n[![许可证](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-BSD-blue.svg)](..\u002FLICENSE)\n\n博文：[使用MatconvNet和预训练的ImageNet模型进行图像检索](http:\u002F\u002Fyongyuan.name\u002Fblog\u002Fimage-retrieval-using-MatconvNet-and-pre-trained-imageNet.html)，对应的网页演示主页为[picSearch](http:\u002F\u002Fyongyuan.name\u002Fpic)。\n\n**2017\u002F10\u002F08**：构建了CBIR检索对比框架[cnn-cbir-benchmark](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-cbir-benchmark)，包括Fisher Vector、VLAD、FC、RMAC、CROW。\n\n**2017\u002F08\u002F15更新**：增加了Python版本，[Caffe版本](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-cbir-benchmark\u002Ftree\u002Fmaster\u002Ffc_retrieval)，[Keras版本](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fflask-keras-cnn-image-retrieval)。\n\n**2015\u002F12\u002F31更新**：添加对MatConvNet最新版version 1.0-beta17的支持，预训练的模型请到Matconvnet官网下载最新的模型。\n\n**2015\u002F12\u002F31更新**：添加对MatConvNet最新版version 1.0-beta17的支持，预训练的模型请到Matconvnet官网下载最新的模型。\n\n**2015\u002F10\u002F20更新**：Web演示部分代码公开[CNN-Web-Demo-for-Image-Retrieval](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002FCNN-Web-Demo-for-Image-Retrieval)。\n\n**2015\u002F09\u002F24更新**：添加对MatConvNet最新版version 1.0-beta14的支持。\n\n**2015\u002F12\u002F31更新**：添加对[MatConvNet](http:\u002F\u002Fwww.vlfeat.org\u002Fmatconvnet\u002F)最新版version 1.0-beta17的支持，删掉原来的版本(预训练的模型请到matconvnet官网下载最新的模型)。\n\n**2015\u002F06\u002F29更新**：添加对[MatConvNet](http:\u002F\u002Fwww.vlfeat.org\u002Fmatconvnet\u002F)最新版version 1.0-beta12的支持。\n\n**注意**：其中文件夹matconvnet-1.0-beta17是已经编译好了的，鉴于MatConvNet只能在**Matlab 2014**及其以上以及系统必须是**64位**，所以在使用此工具箱之前得满足这两个条件。如果是Pythoner，推荐使用[flask-keras-cnn-image-retrieval](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fflask-keras-cnn-image-retrieval)，纯Python，非常易于写成在线图像搜索应用。\n\n\u003Cp align=\"center\">Caltech-256图像数据库上搜索结果\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwillard-yuan_cnn-for-image-retrieval_readme_d5668f836dc4.jpg\"  width = 600 alt=\"search result\"\u002F>\u003C\u002Fp>\n\n### 运行步骤\n\n1). 如果不需要计算mAP的话，那就直接把你的图像库文件夹名字命名为`database`，并将图片全部放在放在`database`文件夹下即可。如果你要在后面计算MAP（平均检索精度）的话，要确保图像数据库做成文件夹`databaseClassified`中的形式，然后执行下面命令：\n\n```sh\npython movefiles.py\n```\n\n2). 接着便可以抽取特征。运行`extractCNN.m`，要用parfor并行的话，直接修改注释部分即可。\n\n3). 检索可视化。这一步运行`queryInDatabaseDemo.m`即可。\n\n4). 计算mAP。不需要计算MAP的这步略过。运行`compute_MAP.m`，关于mAP的计算，请参阅我画的mAP计算过程示意图：[信息检索评价指标](http:\u002F\u002Fyongyuan.name\u002Fblog\u002Fevaluation-of-information-retrieval.html)，这个计算mAP的脚本是按照那个流程中定义的mAP计算方式来写的。\n\n### 降维\n\n> 非常的amazing, 除了验证降维到128D后损失不减外，惊奇地发现4096D的CNN降维到128D后精度还有提高，一种可能的解释：CNN特征也有一定的信息冗余，信息冗余所带来的影响比降维所带来的损失的影响要更大。结论：You should reduce the dimension of CNN when you use if.\n\n\u003Cp align=\"center\">PCA降维对CNN特征的影响\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwillard-yuan_cnn-for-image-retrieval_readme_c4d68372842c.png\"  width = 500 alt=\"search result\"\u002F>\u003C\u002Fp>\n\n上面实验使用的是本项目代码，图像数据集使用的是Caltech101。\n\n关于PCA对PCA降维的影响，[Neural Codes for Image Retrieval](http:\u002F\u002Farxiv.org\u002Fpdf\u002F1404.1777v2.pdf)中也有探讨，以及曾跟Adrian Rosebrock也有过这方面的交流：\n>ANN is really fantastic, it makes such much easier. You could also try something like PCA on your 4096-d vector and try to get it down to 128-d. It would save some space and (ideally) not hurt accuracy.\n\n所以，如果采用了CNN特征的话，推荐将其降维到128D。\n\n## CNN资源列表\n\n### C++\n\n[conv-net-version-3](https:\u002F\u002Fgithub.com\u002Fxingdi-eric-yuan\u002Fconv-net-version-3)，对应博客[Convolutional Neural Networks III](http:\u002F\u002Feric-yuan.me\u002Fcnn3\u002F)\n\n### Python\n\n[Keras](https:\u002F\u002Fgithub.com\u002Ffchollet\u002Fkeras)，强力推荐\n\nKeras资源列表：\n\n[DeepLearning教程（6）易用的深度学习框架Keras简介](http:\u002F\u002Fblog.csdn.net\u002Fu012162613\u002Farticle\u002Fdetails\u002F45397033)\n\n[DeepLearning教程（7）深度学习框架Keras的使用-进阶](http:\u002F\u002Fblog.csdn.net\u002Fu012162613\u002Farticle\u002Fdetails\u002F45581421)\n\n[Keras VGG-16模型 VGG16 model for Keras](https:\u002F\u002Fgist.github.com\u002Fbaraldilorenzo\u002F07d7802847aaad0a35d3)\n\n[PDNN](https:\u002F\u002Fgithub.com\u002Fyajiemiao\u002Fpdnn)，对应主页[PDNN: A Python Toolkit for Deep Learning](http:\u002F\u002Fwww.cs.cmu.edu\u002F~ymiao\u002Fpdnntk.html)\n\n### Matlab\n\n[GoogLeNet](http:\u002F\u002Fvision.princeton.edu\u002Fpvt\u002FGoogLeNet\u002F), A GPU Implementation of GoogLeNet.","# cnn-for-image-retrieval 快速上手指南\n\n本项目基于卷积神经网络（CNN）实现图像检索功能，支持 Matlab (MatConvNet) 和 Python (Caffe\u002FKeras) 多种实现。以下指南主要基于 README 中提供的 Matlab 核心流程，并推荐 Python 替代方案。\n\n## 环境准备\n\n### 系统要求\n- **操作系统**：必须是 **64 位** 系统。\n- **Matlab 版本**：需安装 **Matlab 2014** 或更高版本（项目内置了编译好的 `matconvnet-1.0-beta17`）。\n- **预训练模型**：需从 [MatConvNet 官网](http:\u002F\u002Fwww.vlfeat.org\u002Fmatconvnet\u002F) 下载最新的预训练模型文件。\n\n### 前置依赖与替代方案\n- **Matlab 用户**：确保已安装 MatConvNet 工具箱（项目文件夹中已包含编译版）。\n- **Python 用户（推荐）**：如果你更熟悉 Python 或希望部署在线应用，推荐使用作者提供的纯 Python 版本，更易上手且无需 Matlab 环境：\n  - [Flask + Keras 版本](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fflask-keras-cnn-image-retrieval)\n  - [Caffe 版本](https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-cbir-benchmark\u002Ftree\u002Fmaster\u002Ffc_retrieval)\n\n## 安装步骤\n\n1. **克隆项目代码**\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-for-image-retrieval.git\n   cd cnn-for-image-retrieval\n   ```\n\n2. **下载预训练模型**\n   访问 [MatConvNet 官网](http:\u002F\u002Fwww.vlfeat.org\u002Fmatconvnet\u002F) 下载最新模型，并将其放置于项目指定的模型目录中（具体路径参考 `extractCNN.m` 中的配置）。\n\n3. **准备图像数据库**\n   - **仅检索（不计算 mAP）**：创建一个名为 `database` 的文件夹，将所有待检索图片放入其中。\n   - **需要计算 mAP（评估精度）**：按照 `databaseClassified` 文件夹内的分类结构整理图片，然后运行以下命令自动移动文件：\n     ```sh\n     python movefiles.py\n     ```\n\n## 基本使用\n\n以下以最基础的图像检索流程为例（基于 Matlab）：\n\n### 1. 提取特征\n运行 `extractCNN.m` 脚本提取图像库的 CNN 特征。\n> **提示**：如需加速处理，可取消脚本中 `parfor` 部分的注释以启用并行计算。\n\n```matlab\n% 在 Matlab 命令行中运行\nextractCNN;\n```\n\n### 2. 执行检索与可视化\n运行演示脚本 `queryInDatabaseDemo.m`，输入查询图片即可在数据库中检索相似图像并展示结果。\n\n```matlab\n% 在 Matlab 命令行中运行\nqueryInDatabaseDemo;\n```\n\n### 3. （可选）计算评估指标 mAP\n如果需要评估检索系统的平均精度（mAP），运行以下脚本：\n\n```matlab\ncompute_MAP;\n```\n\n### 💡 性能优化建议\n根据项目实验结论，**强烈建议对提取的 CNN 特征进行降维处理**。\n- 将原始的 4096 维特征通过 PCA 降维至 **128 维**。\n- **效果**：不仅能大幅节省存储空间，实验表明在 Caltech101 等数据集上，降维后的检索精度甚至有所提升（消除了特征冗余）。","某数字博物馆正在构建内部文物图像管理系统，策展人需要快速从数十万张藏品照片中找出风格或构图相似的文物，以辅助展览策划。\n\n### 没有 cnn-for-image-retrieval 时\n- **检索效率低下**：依赖人工打标签或简单的文件名搜索，无法通过图片内容（如纹理、形状）直接查找相似图，耗时耗力。\n- **查准率不足**：传统基于颜色直方图的算法难以理解深层语义，常将“红色花瓶”错误匹配到“红色衣服”，无法满足专业策展需求。\n- **存储与计算负担重**：直接使用原始高维 CNN 特征（如 4096 维）导致数据库体积庞大，检索响应缓慢，且未进行降维优化。\n- **技术门槛高**：团队缺乏从头训练深度模型的算力与数据，难以在有限资源下搭建可用的图像检索原型。\n\n### 使用 cnn-for-image-retrieval 后\n- **实现以图搜图**：利用预训练的 ImageNet 模型提取深层特征，策展人上传一张参考图，系统即可秒级返回视觉上高度相似的文物列表。\n- **语义理解精准**：基于卷积神经网络的特征表达能捕捉高级语义信息，准确匹配具有相同艺术风格或结构的藏品，大幅提升相关性。\n- **性能显著优化**：应用工具推荐的 PCA 降维策略，将特征从 4096 维压缩至 128 维，不仅减少了存储空间，还因去除冗余信息提升了检索精度。\n- **快速落地部署**：直接复用成熟的 MatConvNet 或 Python (Keras\u002FCaffe) 代码框架，无需重新训练模型，几天内即可搭建起可演示的检索系统。\n\ncnn-for-image-retrieval 通过引入预训练深度学习模型与科学的降维策略，让非 AI 专家团队也能低成本构建高精度的专业图像检索系统。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwillard-yuan_cnn-for-image-retrieval_d5668f83.jpg","willard-yuan","Yong Yuan","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fwillard-yuan_0f8c5ff6.png","Play life on hard mode! 十年饮冰，思想造物！\r\n","@meituan -> @kuaishou -> @shopee","Beijing, China","yongyuanstu@gmail.com",null,"yongyuan.name","https:\u002F\u002Fgithub.com\u002Fwillard-yuan",[84,88,92,96,100,104,108,111,115,119],{"name":85,"color":86,"percentage":87},"MATLAB","#e16737",32.4,{"name":89,"color":90,"percentage":91},"Cuda","#3A4E3A",25.3,{"name":93,"color":94,"percentage":95},"C++","#f34b7d",17.6,{"name":97,"color":98,"percentage":99},"TeX","#3D6117",10.3,{"name":101,"color":102,"percentage":103},"Python","#3572A5",7.3,{"name":105,"color":106,"percentage":107},"Shell","#89e051",2.4,{"name":109,"color":110,"percentage":32},"C","#555555",{"name":112,"color":113,"percentage":114},"Makefile","#427819",1.3,{"name":116,"color":117,"percentage":118},"HTML","#e34c26",0.7,{"name":120,"color":121,"percentage":122},"CSS","#663399",0.5,632,225,"2025-05-22T03:28:58",4,"Windows, Linux, macOS","未说明（MatConvNet 支持 GPU 加速，但具体型号和 CUDA 版本未在文中指定；Python 版本依赖后端框架）","未说明",{"notes":131,"python":132,"dependencies":133},"该工具主要基于 Matlab 开发，强制要求操作系统为 64 位且安装 Matlab 2014 及以上版本。文中提供了预编译的 MatConvNet 文件夹。对于纯 Python 用户，作者强烈推荐使用其另外的开源项目 'flask-keras-cnn-image-retrieval'，该项目更易于部署在线图像搜索应用。此外，建议将提取的 CNN 特征通过 PCA 降维至 128D 以提高检索精度并减少存储。","未说明（原文提到有 Python 版本，推荐使用 Keras，但未指定具体版本号；主要运行环境为 Matlab 2014+）",[134,135,136,137],"Matlab 2014 或更高版本","MatConvNet (version 1.0-beta17)","Keras (针对 Python 版本)","Caffe (针对 Python 版本)",[139,15],"其他",[141,142,143],"image-retrieval","cnn","matconvnet","2026-03-27T02:49:30.150509","2026-04-09T05:25:54.865703",[147,152,157,162,167,172,177,182],{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},25652,"运行 extractCNN 时遇到 'Unknown layer type lrn' 或 'Attempt to execute SCRIPT vl_nnconv as a function' 错误怎么办？","这通常是因为 MatConvNet 版本不兼容或未正确安装导致的。建议尝试更换为 MatConvNet 1.0-beta17 版本。如果问题依旧，请检查 MatConvNet 是否正确编译和配置到 MATLAB 路径中。对于 Web 项目搜索图片的需求，建议基于 TensorFlow、Keras、Caffe 或 Mxnet 重构项目，作者提供了一个基于 Keras 的轻量级图像搜索项目参考：flask-keras-cnn-image-retrieval。","https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-for-image-retrieval\u002Fissues\u002F2",{"id":153,"question_zh":154,"answer_zh":155,"source_url":156},25653,"在处理大规模图像数据库（如 2000 万张）时，使用 Faiss 能带来多大的性能提升？","有用户反馈将模型替换为 ResNet-50 并结合 Faiss 后，在 2000 万规模的数据库中，单张图片的检索耗时可达到约 0.01 秒，性能提升显著。","https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-for-image-retrieval\u002Fissues\u002F11",{"id":158,"question_zh":159,"answer_zh":160,"source_url":161},25654,"CNN 提取的高维特征（如 2048D）是否有必要使用 Hash（如 LSH）进行索引？内存不足时如何处理？","如果不是为了构建大型系统工程，仅测试特征效果，建议尽量不使用 Hash，直接使用暴力搜索即可。Hash（如 LSH）可能会导致较大的精度损失。如果内存不足以一次性加载所有特征，可以采用分批计算的方式。若必须构建工程化索引，强烈推荐使用 PQ（乘积量化）、OPQ 或 HNSW 等方法，而不是 Hash。","https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-for-image-retrieval\u002Fissues\u002F15",{"id":163,"question_zh":164,"answer_zh":165,"source_url":166},25655,"如何处理视频检索任务？预训练的图像 CNN 模型是否适用，以及如何计算视频间的相似度？","推荐使用基于帧（frame-based）的方法，因为基于整个视频的特征提取非常耗时，不适合大规模数据集。可以从预训练的 ImageNet 图像特征提取模型开始，并使用 PQ 方法作为近似最近邻（ANN）索引。计算查询视频与参考视频的相似度时，可将视频分割为关键帧，提取帧特征后进行匹配排序，具体可参考作者关于多帧排序问题的博文。","https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-for-image-retrieval\u002Fissues\u002F12",{"id":168,"question_zh":169,"answer_zh":170,"source_url":171},25656,"该方法支持在移动设备上运行吗？计算成本和模型大小如何？","该项目本身不支持直接在移动设备上运行。如果需要在移动端部署，建议使用 TensorFlow Lite 来实现该任务。","https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-for-image-retrieval\u002Fissues\u002F13",{"id":173,"question_zh":174,"answer_zh":175,"source_url":176},25657,"README 中的博客链接无法打开，哪里可以查看相关的技术文章？","原博客链接可能已失效，可以直接查看 GitHub 仓库中存档的文章《图像检索：CNN 卷积神经网络与实战》，或者访问作者在 willard-yuan.github.io 仓库中整理后的博文内容。","https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-for-image-retrieval\u002Fissues\u002F4",{"id":178,"question_zh":179,"answer_zh":180,"source_url":181},25658,"运行代码时出现 'Matrix dimensions must agree' 错误，特别是在处理大量图片时，如何解决？","该错误通常不是由图片数量引起的，而是特定图片数据异常或环境配置问题。建议先使用少量图片（如 10 张）构建数据库进行测试，如果小样本测试通过，则需排查特定图片文件或 MATLAB\u002FMatConvNet 环境（如 Win7 64 位 + VS2010 + MATLAB 2015a + MatConvNet beta17）的兼容性问题。","https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-for-image-retrieval\u002Fissues\u002F3",{"id":183,"question_zh":184,"answer_zh":185,"source_url":186},25659,"在哪里可以找到 ESP Game 数据集？","项目维护者明确表示没有 ESP Game 数据集，无法提供下载。","https:\u002F\u002Fgithub.com\u002Fwillard-yuan\u002Fcnn-for-image-retrieval\u002Fissues\u002F14",[]]