当前位置: 首页 > article >正文

计算机视觉的实战项目:从0到1搭建属于自己的图像识别系统

作为软件测试从业者我们每天都在和各类功能验证、兼容性测试、自动化测试框架打交道对AI领域的实战项目往往觉得“门槛高”“和日常工作不沾边”。但随着AI技术在互联网产品中的落地越来越深入图像识别功能已经成为很多APP、智能硬件的核心模块——从扫码支付到证件OCR识别从商品拍照搜索到内容安全的图片鉴黄我们测试工作中已经不可避免要接触到这类AI功能。与其被动地按照需求文档点点点不如自己动手从0到1搭建一套图像识别系统既能理解这类AI功能的底层逻辑也能帮我们在测试中更快定位问题、设计更合理的测试用例。本文我将以软件测试从业者的视角一步步梳理搭建图像识别系统的完整流程分享我们更容易理解的技术逻辑和实践经验。一、项目准备从测试视角明确需求与环境搭建对我们测试来说做任何项目第一步都是明确需求边界搭建图像识别系统也不例外。很多人一上来就想着跑开源大模型最后跑不起来又浪费时间对测试从业者来说我们更建议先做一个小而明确的任务——比如做一个“手写数字识别系统”任务清晰、数据量小跑通流程后再扩展到更复杂的场景比如日常测试中可能接触到的验证码识别、商品分类识别逻辑都是通的。确定任务之后我们需要搭建基础开发环境。和测试环境搭建的逻辑一样我们要把依赖的工具、库都统一版本避免“别人能跑我这里报错”的问题。这里我们推荐使用Anaconda做环境管理对新手非常友好先安装Python 3.10版本目前绝大多数计算机视觉框架都兼容这个版本不会出现版本兼容问题然后通过conda创建独立的虚拟环境命名为cv-recognition把项目隔离开——这其实和我们测试中做环境隔离是一个思路避免不同项目依赖冲突。接下来安装核心依赖库OpenCV-Python这是计算机视觉领域最常用的图像处理库我们做图像预处理、轮廓提取都要用到它对应我们测试工作中就相当于我们测试前对测试数据做清洗预处理一样是基础工具PyTorch目前最流行的深度学习框架之一相比TensorFlow语法更简单调试方便对新手友好我们用来搭建和训练识别模型NumPy用来做矩阵运算所有图像数据最终都会转换成像素矩阵交给模型处理就像我们测试中把接口返回的JSON转换成字典方便处理一样Matplotlib用来可视化训练过程和识别结果方便我们观察模型效果相当于我们测试中用Allure生成测试报告直观看到结果。环境搭建完成后我们需要准备数据集。还是以手写数字识别为例MNIST数据集是公认的入门标准数据集一共包含7万张28*28像素的手写数字图片分为6万张训练集和1万张测试集已经做好了标注直接下载就能用相当于我们测试工作中拿到了已经标注好的测试用例集不用自己再额外整理。如果后续我们要做自定义的图像识别比如测试中用到的验证码识别也可以自己收集样本标注工具可以用LabelImg操作非常简单和我们测试中给缺陷打标签流程差不多。二、核心流程第一步数据预处理测试思维帮你避坑很多入门者会跳过数据预处理直接拿着原始数据扔给模型训练最后模型效果很差还不知道为什么。其实从我们测试的角度来看数据预处理就相当于我们测试前的测试数据准备环节——脏数据、不规范的数据扔进去肯定测不出正确的结果模型训练也是一样的道理。对图像数据来说常见的预处理步骤包括这几步格式统一与尺寸归一化不同来源的图片尺寸、通道数不一样比如有的是彩色3通道RGB有的是灰度单通道我们必须统一成相同尺寸才能输入模型这里MNIST数据集已经帮我们做好了28*28的单通道归一化如果是自己收集的图片就需要用OpenCV把所有图片resize到统一尺寸转换成相同的通道格式。噪声去除真实场景下的图片都会有噪声比如拍照的光斑、阴影、压缩带来的色块噪点这些噪声会干扰模型学习特征我们可以用高斯滤波、中值滤波去除噪声就像我们测试接口的时候要把请求参数里的空值、异常字符去掉一样保证输入数据的干净。数据增强这一步是提升模型泛化能力的关键说白了就是对已有的数据集做变换生成更多的训练数据。比如对图片做轻微旋转、平移、拉伸、调整亮度模拟真实场景下不同角度、不同光线的拍摄情况。从测试的角度来看这就相当于我们做边界用例设计——你永远不知道用户会上传什么样的图片提前让模型见过各种变异的情况模型在真实场景下的识别准确率才会高这其实和我们测试中做组合覆盖、变异测试的思路完全一致。数据集划分我们要把整个数据集按照比例分成训练集、验证集、测试集三部分一般比例是7:2:1。训练集用来让模型学习特征验证集用来在训练过程中调整超参数测试集用来最终评估模型的效果。这也和我们测试流程对应——开发在开发环境用单元测试验证测试在集成测试环境验证最后上线前在预生产环境做最终验收本质都是分层验证保证模型的泛化能力避免过拟合。这里很多新手容易踩坑把测试数据也放到训练集里训练最后测试准确率特别高一放到真实场景用就错得离谱这就是典型的数据泄露和我们测试中把测试用例提前暴露给开发开发针对性写代码是一个道理得出的结果根本不真实。三、模型搭建与训练理解逻辑比调参数更重要对测试人完成数据预处理之后就进入核心的模型搭建环节了。很多测试从业者一看到“神经网络”就觉得头大其实我们不需要像算法工程师那样从底层推导反向传播公式我们只要理解结构逻辑能跑通项目对我们日常测试工作就足够了。对手写数字识别这种简单的图像识别任务我们用经典的卷积神经网络CNN就完全足够CNN也不用讲得太复杂核心就是两个操作卷积提取特征和池化降维。卷积就相当于我们测试的时候一步步检查图片的边缘、纹理、形状这些细节特征先从浅层次的线条再到深层次的数字轮廓逐步把特征提取出来池化就是把提取出来的特征做精简去掉重复冗余的信息保留最关键的特征降低计算量就像我们测试完一个模块之后把核心问题提炼出来去掉无效的日志信息一样。我们用PyTorch搭建的CNN结构非常简单一共五层就够第一层卷积层输入1通道的灰度图输出32个特征图卷积核大小3*3提取基础边缘特征第一层池化层用最大池化把特征图尺寸缩小一半第二层卷积层输入32个特征图输出64个特征图提取更高级的轮廓特征第二层池化层再次缩小尺寸全连接输出层把提取到的特征映射到0-9一共10个分类输出每个数字的概率。搭建好模型之后就开始训练训练的核心逻辑其实就是“不断预测→计算误差→调整参数→再预测”的循环和我们测试中“开发改bug→验证→再改bug→再验证”的迭代流程一模一样。这里我们需要设置几个关键超参数批次大小batch_size一般设为64学习率设为0.001训练轮次epoch设为10轮就足够MNIST数据集小普通CPU电脑训练一轮也就几分钟10轮下来也不到半小时。训练过程中我们要重点关注两个指标训练损失和验证准确率。训练损失不断下降验证准确率不断上升说明模型在正常学习如果训练损失下降但是验证准确率不动甚至上升后下降说明出现了过拟合也就是模型把训练集的特征背下来了泛化能力差这时候我们可以通过增加dropout层、减少训练轮次、增加训练数据来解决这个排查思路其实和我们测试中定位“开发在测试环境跑的通生产环境跑不通”的问题逻辑一致都是适配性的问题。四、模型评估与部署站在测试视角验证系统能力训练完成之后我们需要对整个图像识别系统做全面评估这部分其实就是我们测试从业者的主场了我们可以用专业的测试思维来验证系统效果而不是只看一个准确率。首先在测试集上做基础指标评估除了整体准确率我们还要算出每个类别的精确率、召回率、F1值绘制混淆矩阵看模型到底哪一类识别错得最多。比如手写数字识别中模型经常把1和7搞混把0和6搞混说明这两类的特征相似度高模型还没学好要么增加这两类的训练数据要么调整模型结构这就和我们测试中发现某一个模块缺陷密度特别高就要针对性做回归测试是一样的。除了指标评估我们还要做异常场景测试也就是我们测试常说的边界测试、异常输入测试比如输入一张全黑的图片、输入尺寸不对的图片、输入分辨率极低的模糊图片、输入根本不是数字的图片看系统能不能正确处理是输出异常还是给出错误识别结果一个健壮的图像识别系统应该能识别出输入是否合法而不是随便给一个错误结果这也是我们测试AI功能的时候重点要测的点自己做一遍项目就能非常清楚这类问题出在哪设计测试用例的时候就能更到位。完成评估之后我们就可以把模型部署成一个可用的系统了。对新手来说不需要部署成复杂的服务用Flask做一个简单的web接口就够了把训练好的模型参数保存下来启动Flask服务写一个接口接收用户上传的图片做预处理之后交给模型预测把识别结果返回。这样我们就得到了一个可以实际调用的图像识别系统你可以自己上传手写数字图片测试效果也可以把这个接口拿到自己写个自动化脚本做接口测试完全贴合我们日常的测试工作。五、对测试从业者的额外收获从搭建到测试能力升级很多测试朋友会问我花时间搭一遍这个图像识别系统对我的日常工作有什么帮助其实收获远不止学会一个项目这么简单第一当你测试带图像识别功能的产品时你知道预处理、模型训练、部署各个环节可能出什么问题比如用户上传图片识别不准你能很快定位到底是光线太亮预处理没做好噪声还是模型训练的时候这类样本太少而不是只会提“识别不准”这个模糊的bug第二你可以自己搭建测试数据集针对AI功能做自动化测试比如针对验证码识别功能你可以自动生成几千张带标注的验证码批量跑识别准确率替代手工测试提升测试效率第三现在很多测试岗位都要求懂AI测试有这个从0到1的项目经验不管是面试还是晋升都比只会说“我会功能测试”有竞争力得多。整个项目跑下来你会发现计算机视觉其实没有那么玄乎从环境搭建到数据处理再到模型训练部署很多逻辑和我们做测试的思路是相通的。我们不需要成为专业的算法工程师只要能跑通整个流程理解底层逻辑就能帮我们在AI测试的浪潮中抢占先机搭建一套属于自己的图像识别系统就是进入这个领域最好的起点。

相关文章:

计算机视觉的实战项目:从0到1搭建属于自己的图像识别系统

作为软件测试从业者,我们每天都在和各类功能验证、兼容性测试、自动化测试框架打交道,对AI领域的实战项目往往觉得“门槛高”“和日常工作不沾边”。但随着AI技术在互联网产品中的落地越来越深入,图像识别功能已经成为很多APP、智能硬件的核心…...

2026上海GEO生成式引擎优化服务商综合实力测评:谁在真正帮品牌进入AI答案

当企业在讨论“上海生成式引擎优化公司哪家好”时,这个问题本身就反映了市场一个关键的转折。两三年前,企业营销的主战场还是搜索引擎排名和官网访问量。现在,决策者开始频繁向DeepSeek、豆包、通义千问等AI工具提问,而这些生成式…...

ncmdumpGUI终极指南:深度解析网易云音乐NCM加密文件转换技术

ncmdumpGUI终极指南:深度解析网易云音乐NCM加密文件转换技术 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI ncmdumpGUI是一款专为Windows平台设计…...

如何快速无损转换B站m4s视频:完整工具使用指南

如何快速无损转换B站m4s视频:完整工具使用指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为B站缓存视频无法在其他设备…...

绝了!原来毕业论文还能这样写?2026降AIGC工具推荐合集

还在为查重率爆红、AI痕迹太明显、格式乱成一团而发愁?2026 年的 AI 论文工具早已不只是写文章那么简单,从选题构思到降AIGC率、去AI痕迹、查重优化,全流程智能辅助,帮你把论文写作变得简单高效,告别熬夜改稿的焦虑&am…...

终极指南:用AlwaysOnTop免费开源工具彻底改变你的Windows工作方式

终极指南:用AlwaysOnTop免费开源工具彻底改变你的Windows工作方式 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 你是否经常在多个窗口间来回切换,浪费宝…...

终极指南:三步搞定Windows系统安卓APK文件安装,告别模拟器时代

终极指南:三步搞定Windows系统安卓APK文件安装,告别模拟器时代 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为电脑无法直接运行手机应用…...

解锁你的音乐收藏:浏览器端音频解密完整指南

解锁你的音乐收藏:浏览器端音频解密完整指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitcod…...

Visual C++运行库一键安装指南:彻底解决Windows应用依赖问题

Visual C运行库一键安装指南:彻底解决Windows应用依赖问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过打开软件时弹出"缺少…...

MPC Video Renderer终极指南:如何在Windows上实现专业级视频渲染体验

MPC Video Renderer终极指南:如何在Windows上实现专业级视频渲染体验 【免费下载链接】VideoRenderer Внешний видео-рендерер 项目地址: https://gitcode.com/gh_mirrors/vi/VideoRenderer MPC Video Renderer是一款专为Windows平台设计…...

将deepseek v4 pro集成到codex桌面APP中使用

📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、《解密程序员的思维密码——沟通、演讲、思考的实践》作者、清华大学出版社签约作家、Java领域…...

掌握OpenCore Legacy Patcher:3步让老旧Mac焕发新生的实用指南

掌握OpenCore Legacy Patcher:3步让老旧Mac焕发新生的实用指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款开源…...

SMUDebugTool:AMD Ryzen处理器深度调试与性能调优完全指南

SMUDebugTool:AMD Ryzen处理器深度调试与性能调优完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...

Windows安卓应用安装终极指南:5分钟快速配置跨平台应用体验

Windows安卓应用安装终极指南:5分钟快速配置跨平台应用体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为在Windows电脑上无法直接安装安卓应用而烦…...

NsEmuTools:10分钟搞定NS模拟器配置,让你专注游戏乐趣

NsEmuTools:10分钟搞定NS模拟器配置,让你专注游戏乐趣 【免费下载链接】ns-emu-tools 一个用于安装/更新 NS 模拟器的工具 项目地址: https://gitcode.com/gh_mirrors/ns/ns-emu-tools 还在为NS模拟器的复杂配置而头疼吗?每次想玩Swit…...

3分钟快速解决Windows热键冲突检测难题:Hotkey Detective终极指南

3分钟快速解决Windows热键冲突检测难题:Hotkey Detective终极指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...

WorkshopDL终极指南:无需Steam客户端也能轻松下载创意工坊模组

WorkshopDL终极指南:无需Steam客户端也能轻松下载创意工坊模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了游戏&#xff0…...

结肠“瑞士卷”制片法

在肠道病理研究中,如何完整保留小鼠结肠的全层结构、同时避免人为损伤,一直是实验操作的难点。本文分享一套改良版“瑞士卷”制片技术,无需剖开肠管、无需机械顶压,即可获得高质量的全结肠切片,特别适合炎症、隐窝异常…...

从API调用成功率看Taotoken服务的稳定性与容灾表现

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从API调用成功率看Taotoken服务的稳定性与容灾表现 在将大模型能力集成到自动化流程或日常开发工具链时,服务的稳定性和…...

音乐解锁工具:让加密音乐文件在任何设备自由播放

音乐解锁工具:让加密音乐文件在任何设备自由播放 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gi…...

3步终结Windows热键冲突:Hotkey Detective终极排查指南

3步终结Windows热键冲突:Hotkey Detective终极排查指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾…...

告别繁琐审核!实测AI Agent如何重塑复杂非结构化票据与合同处理流程?

摘要:在企业数字化转型步入深水区的2026年,处理复杂非结构化票据与合同已成为横亘在财务、法务部门面前的“最后一公里”难题。传统RPA因UI变动易崩溃、主流智能体因缺乏API适配而无法落地,导致大量业务仍依赖低效的人工操作。本文由「企服AI…...

低空旅游观光与低空通勤(eVTOL)运营管理与服务保障平台建设方案

本方案旨在为eVTOL载具构建集运营管理、空中交通管制、安全保障与乘客服务于一体的数字化平台。通过微服务架构、5G-A融合感知、空域网格化与零信任安全等核心技术,解决高密度飞行中的资源调度与安全冲突问题。目标实现毫秒级冲突解算与15分钟内快速周转&#xff0c…...

OpenCore Legacy Patcher完整指南:让老旧Mac焕发新生,运行最新macOS

OpenCore Legacy Patcher完整指南:让老旧Mac焕发新生,运行最新macOS 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台被苹…...

AI 如何改变软件工程:Martin Fowler 视角 + 实战洞见

AI 如何改变软件工程:Martin Fowler 视角 实战洞见 AI(尤其是 LLM)是软件工程自高级语言(从汇编到 C/Fortran)以来最大的转变。它引入了非确定性(Non-deterministic)编程,改变了从编…...

自动加字幕软件推荐:口播视频如何批量加字幕过

口播视频加字幕,为什么越做越累?一位知识类博主连续两周日更3条口播视频,每条12–18分钟,需手动校对字幕、拆分金句切片、补气口停顿、匹配背景音乐——最后一条视频发布时,字幕错漏率达17%,平台审核未过。…...

AI Agent 为什么必须有“记忆系统”?

导语:大模型不是没有智商,而是经常没有“记性”。真正能长期干活的 Agent,不是靠无限拉长上下文,而是靠一套会压缩、会检索、会遗忘、会治理的外置记忆系统。一、先给结论:Agent 的记忆系统,本质是“上下文…...

CANN runtime:昇腾NPU 运行时的职责边界

个人主页:ujainu 文章目录前言为什么需要运行时这一层runtime管什么,不管什么Stream:并行的基本调度单位Event:跨Stream的同步锚点内存池化:少一次malloc就少一次卡顿任务队列:从计算图到硬件指令的最后一跳…...

为内部知识库问答机器人集成taotoken多模型能力的架构设计

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部知识库问答机器人集成taotoken多模型能力的架构设计 应用场景类,探讨为企业内部知识库构建智能问答机器人时&…...

Windows Cleaner如何5步解决C盘爆红问题?完全指南助你释放宝贵空间

Windows Cleaner如何5步解决C盘爆红问题?完全指南助你释放宝贵空间 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否曾经面对C盘爆红的警告束手无…...