DAMO-YOLO部署教程:从requirements.txt依赖安装到Gradio界面汉化配置
DAMO-YOLO部署教程从requirements.txt依赖安装到Gradio界面汉化配置1. 开篇为什么你需要这个手机检测模型想象一下你正在开发一个智能会议室管理系统需要自动检测参会人员是否违规使用手机。或者你正在做一个内容审核工具需要从海量图片中快速筛选出包含手机的图像。手动检查效率太低。自己训练模型成本太高。这时候一个现成的、高性能的手机检测模型就显得尤为重要。阿里巴巴开源的DAMO-YOLO手机检测模型正好能解决这个问题。它专门针对“手机”这一类别进行了优化在保持高精度的同时推理速度极快。官方数据显示其AP0.5达到了88.8%在T4显卡上推理一张图片仅需3.83毫秒。但拿到模型只是第一步如何把它部署成一个稳定、易用的服务甚至定制一个中文界面才是真正让模型发挥价值的关键。这篇教程我就带你一步步完成从环境搭建、依赖安装、服务启动到界面汉化的全过程。即使你之前没怎么接触过深度学习部署跟着做也能搞定。2. 环境准备与项目初始化在开始之前我们先明确一下目标我们要在Linux服务器上部署一个基于Gradio的Web服务通过浏览器就能上传图片进行手机检测。2.1 检查基础环境首先确保你的服务器已经安装了Python建议3.8及以上版本和pip。打开终端输入以下命令检查python3 --version pip3 --version如果显示版本号说明基础环境OK。接下来我们需要获取项目代码。根据提供的镜像信息模型和相关代码应该已经预置在/root/cv_tinynas_object-detection_damoyolo_phone/目录下。我们直接进入这个目录cd /root/cv_tinynas_object-detection_damoyolo_phone进入后可以用ls命令查看一下目录结构确认关键文件是否存在ls -la你应该能看到app.py主程序、start.sh启动脚本、requirements.txt依赖文件等。2.2 理解核心依赖文件requirements.txt部署深度学习项目最让人头疼的就是环境依赖。不同的模型、不同的框架版本经常会出现兼容性问题。好在项目提供了requirements.txt文件它就像一份“食材清单”列出了运行所需的所有Python库及其版本。我们打开这个文件看看可以用cat requirements.txt命令。根据提供的镜像信息核心依赖通常包括ModelScope (1.34.0): 这是阿里巴巴开源的模型即服务框架我们通过它来加载和运行DAMO-YOLO模型。PyTorch (2.0.0): 深度学习框架模型的运行基础。Gradio (4.0.0): 用于快速构建Web界面的库让我们不用写前端代码就能有个交互界面。OpenCV (4.8.0): 计算机视觉库用于图片的读取、处理和结果可视化。easydict (1.10): 方便地以属性方式访问字典常用于配置文件读取。有了这份清单安装就变得非常简单了。3. 一步步安装依赖与启动服务依赖安装是部署过程中最关键也最容易出错的一步。我们分步进行确保每一步都成功。3.1 安装项目依赖在项目根目录下执行以下命令安装所有依赖pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple这里我加上了-i参数指定使用清华大学的镜像源国内下载速度会快很多。命令执行后pip会自动解析requirements.txt文件并下载安装所有列出的包及其依赖。安装过程可能遇到的问题及解决权限问题如果提示“Permission denied”可以在命令前加上sudo或者使用pip install --user选项安装到用户目录。版本冲突如果某个包版本与其他已安装包冲突pip会报错。可以尝试先升级pippip install --upgrade pip或者根据错误信息手动调整requirements.txt中某个包的版本号。PyTorch安装慢或失败PyTorch官网有时访问较慢。如果遇到问题可以去PyTorch官网https://pytorch.org/get-started/locally/根据你的CUDA版本选择对应的安装命令。安装完成后可以用pip list命令查看已安装的包确认关键库的版本是否符合要求。3.2 首次运行与模型下载依赖装好了我们来第一次启动服务。最简单的方法是运行项目提供的启动脚本./start.sh或者直接运行Python主程序python3 app.py第一次运行会做什么加载模型程序会通过ModelScope框架根据模型IDdamo/cv_tinynas_object-detection_damoyolo_phone去拉取模型文件。缓存模型模型文件会被下载到指定的缓存路径/root/ai-models/iic/cv_tinynas_object-detection_damoyolo_phone/。模型不大只有125MB下载应该很快。启动Web服务模型加载成功后Gradio会启动一个本地Web服务默认监听7860端口。当你看到终端输出类似Running on local URL: http://0.0.0.0:7860的信息时恭喜你服务启动成功了3.3 访问与测试Web界面打开你的浏览器在地址栏输入http://你的服务器IP地址:7860。如果你就在服务器本机操作可以直接输入http://localhost:7860。你会看到一个Gradio生成的Web界面通常包含一个图片上传区域一个“Submit”或“Run”按钮一个用于显示结果的区域你可以点击“Upload”上传一张包含手机的图片然后点击按钮进行检测。几秒钟后结果就会显示出来图片上会出现一个框框住检测到的手机旁边还会有一个置信度分数比如0.95表示模型有多大的把握认为那是手机。至此一个最基本的手机检测服务就部署完成了。但界面是英文的对于国内用户可能不太友好。接下来我们进行汉化。4. Gradio界面汉化实战Gradio的界面文本是写在app.py文件里的。汉化其实就是找到这些英文文本把它们替换成中文。我们不需要修改Gradio库本身只需要修改我们的应用代码。4.1 定位界面文本用你喜欢的文本编辑器如vim、nano或VSCode远程连接打开app.py文件。找到创建Gradio界面的部分通常是以gr.Interface()或gr.Blocks()开头的代码块。我们需要关注其中的几个关键参数标题和描述title、description参数。输入输出组件标签gr.Image()的label参数gr.Button()的value参数。示例说明examples参数相关的描述。例如你可能会看到这样的代码demo gr.Interface( fndetect_phone, # 核心处理函数 inputsgr.Image(typefilepath, labelUpload Image), # 输入组件 outputsgr.Image(typepil, labelDetection Result), # 输出组件 titleDAMO-YOLO Phone Detection, # 标题 descriptionUpload an image to detect phones., # 描述 examples[[assets/demo/phone1.jpg], [assets/demo/phone2.jpg]], # 示例 allow_flaggingnever )4.2 进行汉化修改我们将上面的英文文本替换为中文。注意只修改字符串内容不要修改变量名和代码结构。demo gr.Interface( fndetect_phone, inputsgr.Image(typefilepath, label上传图片), # 汉化Upload Image - 上传图片 outputsgr.Image(typepil, label检测结果), # 汉化Detection Result - 检测结果 titleDAMO-YOLO 手机检测系统, # 汉化 description上传一张图片检测其中的手机。, # 汉化 examples[[assets/demo/phone1.jpg], [assets/demo/phone2.jpg]], allow_flaggingnever )如果界面中使用了gr.Button找到它的value参数进行汉化比如valueSubmit改为value开始检测。如果代码使用的是gr.Blocks()这种更灵活的布局方式那么你需要找到所有gr.Textbox(label...)、gr.Markdown(...)等包含显示文本的地方逐一进行汉化。4.3 更复杂的汉化自定义CSS可选如果你觉得默认的样式不够美观或者想进一步调整布局Gradio支持自定义CSS。你可以在创建界面时通过css参数引入自定义样式。例如在app.py中新增一个CSS字符串变量custom_css h1 { font-family: Microsoft YaHei, sans-serif; } .gr-button { background-color: #007bff; color: white; } /* 添加更多自定义样式 */ 然后在创建gr.Interface或gr.Blocks时加上csscustom_css参数。这样可以让界面字体更符合中文阅读习惯或者改变按钮颜色。4.4 测试汉化效果保存修改后的app.py文件。因为我们的服务是动态加载代码的所以需要重启服务才能生效。首先停止当前运行的服务。在终端中按CtrlC即可。然后重新启动服务python3 app.py再次刷新浏览器中的页面你应该就能看到中文界面了。5. 服务管理、API调用与进阶配置服务跑起来之后我们还需要知道如何管理它以及除了Web界面还有什么其他使用方式。5.1 服务管理命令查看服务状态想知道服务是不是在后台运行可以用这个命令。ps aux | grep python3 app.py停止服务如果使用start.sh脚本启动它可能会把进程ID写入一个service.pid文件停止命令是kill $(cat service.pid)如果没有pid文件也可以用pkill -f app.py。查看日志服务运行时输出的信息会记录在日志里方便排查问题。tail -f service.log # 如果脚本指定了日志文件 # 或者直接查看控制台输出5.2 使用Python API直接调用Web界面适合手动测试和演示。如果你的其他程序需要自动调用这个检测功能那么使用Python API会更方便。在你的Python脚本中可以这样写from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks import cv2 # 1. 创建检测管道 # 注意cache_dir 指向模型缓存目录trust_remote_codeTrue 是必须的 phone_detector pipeline( taskTasks.domain_specific_object_detection, # 指定任务类型 modeldamo/cv_tinynas_object-detection_damoyolo_phone, cache_dir/root/ai-models, # 模型缓存路径 trust_remote_codeTrue # 信任并运行模型自定义代码 ) # 2. 进行推理 image_path your_image.jpg result phone_detector(image_path) # 3. 解析结果 print(f检测到 {len(result[scores])} 部手机) for i, (bbox, score) in enumerate(zip(result[boxes], result[scores])): # bbox格式通常是 [x1, y1, x2, y2] print(f手机 {i1}: 位置 {bbox}, 置信度 {score:.3f}) # 4. 可视化结果可选 if result[boxes]: img cv2.imread(image_path) for bbox in result[boxes]: x1, y1, x2, y2 map(int, bbox) cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.imwrite(result.jpg, img) print(结果已保存为 result.jpg)这种方式非常灵活你可以把它集成到你的自动化流程、后台服务或者更复杂的应用中。5.3 可能遇到的问题与解决思路端口冲突如果7860端口被其他程序占用服务会启动失败。可以修改app.py中launch()函数的server_port参数换一个端口比如server_port7861。模型加载失败检查缓存路径/root/ai-models是否存在且有写入权限。也可以尝试删除缓存文件让程序重新下载。内存不足这个模型很小一般不会内存不足。但如果你的服务器内存很小且同时运行很多服务可以尝试在启动Python时限制内存使用。汉化后乱码确保你的app.py文件是以UTF-8编码保存的。在Linux下可以用iconv命令转换编码。6. 总结回顾一下我们完成了以下几件事环境准备检查了Python环境进入了项目目录。依赖安装利用requirements.txt一键安装了所有必需的Python包解决了可能遇到的依赖冲突问题。服务启动通过运行app.py成功启动了Gradio Web服务并通过浏览器测试了手机检测功能。界面汉化深入app.py代码将Gradio界面的标题、标签、描述等文本从英文替换为中文并了解了如何通过自定义CSS进一步美化界面。进阶使用学习了如何通过命令行管理服务进程以及如何绕过Web界面直接使用Python API来集成检测功能到其他程序中。这个基于DAMO-YOLO的手机检测服务现在已经是一个完全可用的工具了。它精度高、速度快、部署简单无论是用于项目演示、集成开发还是学习深度学习模型部署都是一个非常好的例子。你可以在此基础上继续探索比如修改代码让检测结果除了画框还能标出置信度。尝试将服务部署到云服务器并通过内网穿透工具提供公网访问。研究configuration.json和damoyolo.py了解模型结构的配置和定义。希望这篇教程能帮你顺利部署并定制属于自己的AI检测服务。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。