YOLOv8 本地目标检测 Demo 怎么给同事看Gradio/Flask 跑通后用 cpolar 发外网演示链接你本地的 YOLOv8 图片检测 Demo 已经跑起来了上传一张图框也画出来了。问题来了同事不在同一个局域网手机也访问不到你电脑上的127.0.0.1:7860总不能让对方远程到你电脑上看效果。这篇就解决这个很具体的场景本地用 Gradio 做一个最小可运行的 YOLOv8 目标检测页面再用 cpolar 把本地端口映射成 HTTPS 外网演示链接。对方打开链接上传公开测试图就能看到检测结果。这里不把 Gradio 的shareTrue当主方案。临时演示时我更推荐“本地服务 cpolar 隧道”这条链路端口、开关、暴露范围都在自己手里测试完关掉隧道就行。1 什么是这套演示链路这篇里的角色分工很简单。YOLOv8负责图片目标检测输入图片输出检测框。Gradio负责把 Python 推理函数包装成一个网页上传图片和查看结果都在浏览器里做。cpolar负责给本地 Gradio 端口生成一个 HTTPS 外网地址方便异地同事、手机或临时客户测试。重点不是训练模型也不是搭一个正式系统。我们只做一个“能演示、能关闭、边界清楚”的轻量 Demo。如果你已经有 Flask 页面也不用推倒重来。后面 cpolar 映射端口的逻辑一样只要把7860换成你的 Flask 端口比如5000或8000。为了文章不写散正文用 Gradio 做主线。2 环境准备建虚拟环境并安装依赖建议单独建一个虚拟环境别把模型演示依赖塞进系统 Python。后面排错也轻松跑不起来就看这个环境里的包不会牵连别的项目。2.1 创建项目目录找一个空目录放 Demo 文件mkdir yolov8-gradio-demo cd yolov8-gradio-demo2.2 创建并启用 Python 虚拟环境macOS / Linux 用这组命令python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pipWindows PowerShell 用这组命令py -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install --upgrade pip看到命令行前面出现(.venv)说明当前已经进入虚拟环境。这里别跳过后面安装ultralytics、gradio都会落到这个环境里。2.3 安装 ultralytics 和 GradioUltralytics 官方快速开始文档给出的 pip 安装方式是pip install -U ultralytics。Gradio 官方文档也推荐用 pip 安装并要求 Python 3.10 或更高版本。直接执行pip install -U ultralytics gradio pillow安装完成后看一下版本确认命令能正常导入python -c import ultralytics, gradio; print(ultralytics, ultralytics.__version__); print(gradio, gradio.__version__)如果这里报ModuleNotFoundError先检查虚拟环境有没有启用如果下载太慢换一个稳定的 Python 包源再装。3 写一个最小可运行的 YOLOv8 Gradio Demo现在开始写页面。这个 Demo 只做一件事上传图片调用 YOLOv8 推理返回带检测框的标注图。在项目根目录新建app.pyfrom PIL import Image import gradio as gr from ultralytics import YOLO # 首次运行会自动下载官方预训练权重 yolov8n.pt model YOLO(yolov8n.pt) def detect_objects(image: Image.Image) - Image.Image: 输入 PIL 图片返回 YOLOv8 标注后的 PIL 图片。 if image is None: return None results model.predict(sourceimage, conf0.25, imgsz640) annotated results[0].plot() # numpy array, BGR/RGB 由 ultralytics 内部处理 return Image.fromarray(annotated) demo gr.Interface( fndetect_objects, inputsgr.Image(typepil, label上传测试图片), outputsgr.Image(typepil, label检测结果), titleYOLOv8 本地目标检测 Demo, description上传一张公开测试图片返回 YOLOv8 目标检测标注图。, flagging_modenever, ) if __name__ __main__: demo.launch(server_name127.0.0.1, server_port7860)这里有两个小提醒。一是yolov8n.pt是 YOLOv8 的轻量预训练模型适合演示链路。演示时先别上自己的大模型等页面、端口、隧道都跑通后再替换成你的权重文件。二是server_name127.0.0.1表示 Gradio 只监听本机地址。我们后面只把7860这个 Demo 页面交给 cpolar 映射不让它顺手暴露你的项目目录、训练数据或别的管理端口。4 本地验证先确认 7860 页面真的能用运行 Demopython app.py终端会显示本地访问地址。打开浏览器访问http://127.0.0.1:7860页面里会看到一个图片上传框和一个检测结果区域。上传一张公开样例图比如 COCO 数据集常见的街景、公交车、人物图片点提交后右侧会返回带框的检测图。这一步不是为了“看起来能打开”而已而是确认推理链路已经打通浏览器能上传图片Python 能拿到 PIL 图片YOLOv8 能完成推理Gradio 能把结果图渲染回来。如果页面能打开但推理报错先看终端日志。常见问题集中在三类虚拟环境没启用、依赖没装完整、首次下载yolov8n.pt时网络不稳定。把本地验证做扎实再往外网映射后面少很多干扰项。5 用 cpolar 生成 HTTPS 外网演示链接本地7860跑通后再开外网演示入口。cpolar 在这里只负责一件事把你电脑上的127.0.0.1:7860映射成一个公网 HTTPS 地址。5.1 安装并登录 cpolar如果你还没安装 cpolar先到官网下载页选择对应系统https://www.cpolar.com/downloadmacOS 可以用 Homebrew 安装brew tap probezy/core brew install cpolarLinux 可以用官方一键脚本安装curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash安装后打开本地 Web UIhttp://127.0.0.1:9200能打开后台后按页面提示登录账号。纯命令行环境也可以使用cpolar authtoken绑定账号cpolar authtoken 你的认证Token这里别把9200当成要发给同事的地址。9200是 cpolar 本地管理页面演示时只给同事访问 Gradio Demo 对应的公网地址。5.2 映射 Gradio 的 7860 端口保持python app.py这个终端不要关再开一个新终端进入虚拟环境不是必需的因为 cpolar 是独立命令。执行cpolar http 7860终端会输出 HTTP/HTTPS 公网地址。复制其中的 HTTPS 地址发给同事或在手机浏览器里打开。打开后看到的就是同一个 Gradio 页面。上传公开测试图能返回检测结果就说明“本地模型服务 → cpolar HTTPS 地址 → 异地浏览器访问”这条链路已经跑通。如果外网地址打不开按这个顺序查本机http://127.0.0.1:7860是否仍然能访问python app.py终端有没有报错退出cpolar http 7860终端是否还在运行cpolar Web UI 的“状态 / 在线隧道列表”里是否显示隧道在线。别一上来就改模型代码。外网打不开时先确认本地端口和隧道状态排错会快很多。6 演示时的安全边界只开放 Demo不开放数据临时演示最容易忽略的不是代码而是边界。这个 Demo 只应该开放 Gradio 页面不要把模型目录、训练数据目录、Jupyter、数据库、服务器管理面板一起暴露出去。你给同事的是 cpolar 生成的 Gradio HTTPS 链接不是你的 cpolar 管理后台也不是项目所在机器的其他端口。测试图片也要注意。演示阶段用公开样例图就够了不要上传客户真实图片、合同截图、内部监控画面这类敏感素材。目标检测 Demo 看的是链路和效果不需要拿真实业务数据冒险。演示结束后把两个终端都关掉# 在运行 Gradio 的终端按 CtrlC # 在运行 cpolar http 7860 的终端按 CtrlC如果你要给固定团队长期试用再去考虑固定二级子域名、访问控制、日志、鉴权、部署到正式服务器这些事。cpolar 免费随机公网地址在 24 小时内会变化固定二级子域名需要基础套餐或以上。临时演示就按需开启用完关闭最省心。7 Flask 用户怎么接这条链路如果你的模型 Demo 已经写成 Flask不需要为了 cpolar 改成 Gradio。你只要确认 Flask 本地端口能访问再映射对应端口。比如 Flask 跑在5000python app.py cpolar http 5000比如你用的是8000cpolar http 8000思路不变先本地浏览器验证再开 cpolar 隧道再把 HTTPS 地址发给别人。Gradio 的优势是上传图片、返回图片这类交互写起来更快Flask 的优势是你对路由、鉴权、页面结构有更强控制。临时模型演示我会先用 Gradio 把效果跑出来。8 总结到这里我们已经把一个本地 YOLOv8 图片检测 Demo 变成了可远程访问的临时演示页面本机跑 Gradio7860端口负责图片上传和检测结果展示cpolar 负责生成 HTTPS 外网地址同事或手机打开链接就能测试。关键步骤就三块本地建虚拟环境安装ultralytics、gradio用yolov8n.pt跑通最小检测 Demo先访问http://127.0.0.1:7860确认上传图片、模型推理、结果返回都正常再执行cpolar http 7860把 HTTPS 演示链接发给异地同事测试结束后关闭 Gradio 和 cpolar 隧道。这条方案适合“临时给别人看效果”不是正式生产部署。后续要扩展成团队长期试用版本再补访问鉴权、固定域名、日志记录和正式部署流程。你们更常用 Gradio 还是 Flask 做模型演示如果端口访问、图片上传、YOLOv8 推理哪一步卡住了可以把报错贴出来交流。