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

YOLOE开源镜像生产环境部署:YOLOE-v8m-seg在Docker Swarm集群实践

YOLOE开源镜像生产环境部署YOLOE-v8m-seg在Docker Swarm集群实践1. 引言从单机到集群的跨越如果你已经体验过YOLOE官版镜像在单台服务器上的强大能力比如用文本描述就能识别图片里的任何物体或者用一张示例图就能完成精准分割那么下一个问题自然就来了如何把这种能力稳定、高效地部署到生产环境去处理海量的图片或视频流单机部署虽然简单但面对真实的生产需求往往会遇到瓶颈模型推理占用GPU资源高单卡处理能力有限服务缺乏高可用性一旦机器宕机业务就中断难以弹性扩缩容应对流量波峰波谷力不从心。这正是本文要解决的问题。我们将手把手带你将YOLOE-v8m-seg这个强大的开放词汇分割模型从单机Docker容器部署到一个高可用的Docker Swarm集群中。你将学到的不只是一条条命令而是一套能在生产环境扛住压力的实战部署方案。无论你是负责算法落地的工程师还是需要维护AI服务稳定性的运维这篇文章都能给你清晰的路径和可复现的代码。2. 为什么选择Docker Swarm与YOLOE-v8m-seg在开始动手之前我们先花几分钟厘清两个关键选择为什么用Docker Swarm为什么是YOLOE-v8m-seg这个型号2.1 Docker Swarm轻量且够用的集群编排容器编排领域KubernetesK8s名声最响但对于中小规模团队或刚上生产环境的AI服务来说它可能有点“杀鸡用牛刀”。Docker Swarm作为Docker原生的集群工具优势很明显零学习成本如果你会用Docker那就会用Swarm。它的命令和概念几乎是Docker命令的超集。开箱即用内置服务发现、负载均衡、滚动更新和故障恢复无需复杂配置。资源需求低相比K8s它更轻量对集群机器资源占用更少管理也更简单。对于部署像YOLOE这样的模型推理服务Swarm提供的服务副本Replica、全局服务Global Service和滚动更新机制已经足够保障其高可用和可维护性。2.2 YOLOE-v8m-seg平衡性能与效率的选择YOLOE系列提供了多种尺寸的模型如v8s, v8m, v8l。我们选择v8m-seg中号模型带分割功能作为部署对象是基于生产环境的典型考量性能与精度的平衡v8m在检测精度AP和推理速度之间取得了很好的平衡。它比v8s更准又比v8l更快适合对精度有一定要求又需要实时或准实时响应的场景。分割能力的实用性-seg后缀意味着模型支持实例分割不仅能框出物体还能精确勾勒出物体的像素级轮廓。这在很多场景下比单纯检测更有价值例如图像编辑、自动驾驶中的可行驶区域划分、机器人抓取等。开放词汇表的威力这是YOLOE的核心卖点。你不需要预先定义好所有要检测的类别。在生产中业务需求可能随时变化今天要检测“红色包装盒”明天可能要识别“有破损的零件”。通过文本提示Text Prompt你可以动态指定需要寻找的物体类别而无需重新训练或部署新模型极大地提升了服务的灵活性。简单来说这次部署的目标是利用Docker Swarm搭建一个能够弹性伸缩、高可用的集群来稳定运行YOLOE-v8m-seg模型并通过其开放词汇能力灵活应对各种图像识别与分割需求。3. 部署架构与准备工作任何成功的部署都始于清晰的蓝图。我们先来看一下整个系统的架构设计并准备好所需的环境。3.1 集群架构设计我们假设一个由3台Linux服务器组成的小型集群Manager节点 (1台)负责集群管理、任务调度和服务发现。通常也同时作为Worker节点运行服务。Worker节点 (2台)负责运行具体的YOLOE推理服务容器。需要配备GPU本例以NVIDIA GPU为例。[ 外部请求 ] - [ Docker Swarm 负载均衡器 ] - [ YOLOE 服务 (副本1) ] - Worker Node 1 (GPU) - [ YOLOE 服务 (副本2) ] - Worker Node 2 (GPU) - [ YOLOE 服务 (副本3) ] - Manager Node (GPU)架构说明我们在Swarm上创建一个YOLOE服务并设置3个副本Replicas。Swarm会自动将这三个容器调度到拥有可用GPU资源的节点上通过资源约束。外部请求到达Swarm的入口通常是Manager节点的某个端口内置的负载均衡器会将请求分发到任意一个健康的YOLOE容器实例。3.2 节点环境准备在所有要加入集群的服务器Manager和Worker上需要完成以下准备工作安装Docker Engine确保所有节点安装的Docker版本一致建议20.10以上。# 以Ubuntu为例使用官方脚本安装 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh安装NVIDIA容器工具包这是让Docker容器能使用GPU的关键。# 设置仓库和GPG密钥 distribution$(. /etc/os-release;echo $ID$VERSION_ID) curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed s#deb https://#deb [signed-by/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list # 安装工具包 sudo apt-get update sudo apt-get install -y nvidia-container-toolkit # 配置Docker使用nvidia作为默认运行时 sudo nvidia-ctk runtime configure --runtimedocker sudo systemctl restart docker # 验证安装运行一个测试容器 sudo docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi如果能看到GPU信息输出说明环境配置成功。开放必要的防火墙端口Docker Swarm节点之间需要通信。2377/tcp集群管理通信端口。7946/tcp, 7946/udp节点间发现通信。4789/udpOverlay网络流量。以及你计划对外暴露的YOLOE服务端口例如7860如果你用Gradio做Web界面。4. 构建适用于Swarm的YOLOE镜像官方的YOLOE镜像可能更适合单机快速体验。为了在生产集群中运行我们需要构建一个更“健壮”的镜像它需要包含服务化所需的组件。4.1 创建Dockerfile我们创建一个Dockerfile基于一个轻量级的Python镜像安装必要的依赖并设置好启动命令。# 使用带有CUDA的官方Python镜像作为基础 FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04 # 设置非交互式安装以避免提示 ENV DEBIAN_FRONTENDnoninteractive # 安装系统依赖、Python和Conda RUN apt-get update apt-get install -y \ wget \ git \ libgl1-mesa-glx \ libglib2.0-0 \ rm -rf /var/lib/apt/lists/* RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh \ bash miniconda.sh -b -p /opt/conda \ rm miniconda.sh ENV PATH/opt/conda/bin:$PATH # 复制YOLOE项目代码假设本地有 # 更好的做法是从Git仓库直接Clone这里为了演示使用COPY # 实际生产建议将代码打包或使用多阶段构建优化镜像层 WORKDIR /root RUN git clone https://github.com/AILab-CVC/YOLOE.git yoloe WORKDIR /root/yoloe # 创建Conda环境并安装依赖 RUN conda create -n yoloe python3.10 -y # 激活环境并安装PyTorch等。注意RUN命令中每个shell都是新的需要source。 SHELL [conda, run, -n, yoloe, /bin/bash, -c] RUN pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 RUN pip install -r requirements.txt # 安装Gradio用于提供HTTP API可选但推荐 RUN pip install gradio # 下载预训练模型可选也可以在启动时下载 # RUN python -c from ultralytics import YOLOE; YOLOE.from_pretrained(jameslahm/yoloe-v8m-seg) # 创建一个简单的推理API脚本 COPY app.py /root/yoloe/app.py # 设置默认命令激活环境并启动Gradio服务 CMD [conda, run, -n, yoloe, python, app.py]4.2 创建简易的Gradio应用app.py这个脚本将YOLOE的推理能力包装成一个HTTP API方便集群调用。import gradio as gr from ultralytics import YOLOE import torch import cv2 import numpy as np import tempfile import os # 全局加载模型避免每次请求重复加载 print(正在加载YOLOE-v8m-seg模型...) model YOLOE.from_pretrained(jameslahm/yoloe-v8m-seg) print(模型加载完毕) # 如果有GPU移到GPU上 device cuda if torch.cuda.is_available() else cpu model.to(device) def predict(image, text_prompt, confidence_threshold0.25): 执行开放词汇分割预测。 Args: image: 输入图像 (numpy array) text_prompt: 文本提示如 person, dog, car confidence_threshold: 置信度阈值 Returns: 绘制了分割结果的图像 if image is None: return None # 将文本提示转换为列表 names [name.strip() for name in text_prompt.split(,)] # 执行预测 results model(image, devicedevice, namesnames, confconfidence_threshold, verboseFalse) # 获取第一个结果单张图片 result results[0] # 绘制分割掩码和检测框 plotted_img result.plot(masksTrue, labelsTrue, boxesTrue) # OpenCV使用BGRGradio需要RGB plotted_img_rgb cv2.cvtColor(plotted_img, cv2.COLOR_BGR2RGB) return plotted_img_rgb # 创建Gradio界面 demo gr.Interface( fnpredict, inputs[ gr.Image(label上传图片, typenumpy), gr.Textbox(label文本提示 (用英文逗号分隔), valueperson, dog, car, placeholder例如: person, dog, car, bicycle), gr.Slider(minimum0.1, maximum0.9, value0.25, step0.05, label置信度阈值) ], outputsgr.Image(label分割结果), titleYOLOE-v8m-seg 开放词汇分割演示, description上传一张图片并输入用英文逗号分隔的物体名称如person, dog, car。模型将识别并分割出这些物体。, examples[ [ultralytics/assets/bus.jpg, person, bus], [ultralytics/assets/zidane.jpg, person, tie, chair] ] ) # 获取服务器IP让服务在Swarm overlay网络中可被访问 server_name 0.0.0.0 server_port 7860 if __name__ __main__: demo.launch(server_nameserver_name, server_portserver_port, shareFalse)4.3 构建并推送镜像在包含Dockerfile和app.py的目录下执行构建命令并将其推送到你的私有或公共镜像仓库如Docker Hub。# 1. 构建镜像 docker build -t your-dockerhub-username/yoloe-v8m-seg:swarm-ready . # 2. 登录Docker Hub (或其他仓库) docker login # 3. 推送镜像 docker push your-dockerhub-username/yoloe-v8m-seg:swarm-ready关键点将镜像推送到仓库是必须的因为Swarm集群中的所有节点都需要能从同一个地方拉取镜像。5. 在Docker Swarm集群中部署服务现在进入核心环节创建Swarm集群并部署我们的YOLOE服务。5.1 初始化与加入Swarm集群在Manager节点上初始化Swarm# 在你想作为管理器的机器上执行 # 将 --advertise-addr 替换为该节点的实际IP地址 docker swarm init --advertise-addr MANAGER-IP执行成功后会输出一条带有docker swarm join --token ...的命令。保存好这个命令。在Worker节点上加入集群 将上一步得到的join命令在每台Worker节点上执行。# 在Worker节点上执行 docker swarm join --token SWMTKN-1-... MANAGER-IP:2377在Manager节点上查看节点状态docker node ls你应该能看到所有节点并且Manager节点的状态是Leader。5.2 创建Overlay网络为了让服务副本之间能够通信虽然本例中不需要以及为服务提供一个独立的网络空间我们创建一个Overlay网络。docker network create --driver overlay --attachable yoloe-net5.3 编写Docker Stack部署文件使用Docker Stack基于Compose V3格式来定义我们的服务是最佳实践。创建一个docker-compose.swarm.yml文件。version: 3.8 services: yoloe-inference: image: your-dockerhub-username/yoloe-v8m-seg:swarm-ready # 替换为你的镜像 deploy: replicas: 3 # 启动3个副本 placement: constraints: - node.labels.gpu true # 仅调度到有gpu标签的节点 resources: reservations: devices: - driver: nvidia count: 1 # 每个容器预留1块GPU capabilities: [gpu] restart_policy: condition: on-failure delay: 10s max_attempts: 3 update_config: parallelism: 1 # 滚动更新时一次更新1个副本 delay: 30s order: stop-first ports: - target: 7860 # 容器内部端口 published: 7860 # 映射到Swarm入口的端口 protocol: tcp mode: ingress # Swarm的负载均衡模式 networks: - yoloe-net volumes: # 可选挂载一个卷用于缓存模型或存储结果 - yoloe-cache:/root/.cache # 环境变量示例可以传递模型名称、阈值等 # environment: # - MODEL_NAMEjameslahm/yoloe-v8m-seg # - CONF_THRESH0.25 networks: yoloe-net: external: true volumes: yoloe-cache:重要配置解析deploy.placement.constraints: 我们通过节点标签gputrue来确保服务只被调度到有GPU的节点。你需要提前给这些节点打上标签docker node update --label-add gputrue NODE-ID。deploy.resources.reservations.devices: 这是关键它告诉Swarm这个服务需要GPU资源确保每个服务副本都能独占一块GPU。ports.mode: ingress: 这是Swarm的集群模式发布端口。外部访问Manager节点的7860端口请求会被Swarm的负载均衡器分发到任意一个健康的服务副本。5.4 部署Stack并验证部署服务# 在Manager节点执行 docker stack deploy -c docker-compose.swarm.yml yoloe-stack查看服务状态docker stack services yoloe-stack docker service ps yoloe-stack_yoloe-inference # 查看具体任务运行在哪个节点验证服务 等待几十秒让镜像拉取和容器启动。然后打开浏览器访问http://MANAGER-NODE-IP:7860。你应该能看到Gradio的Web界面。上传一张图片输入如“person, dog”的提示词点击提交。如果能看到分割结果恭喜你部署成功了测试高可用性手动停止一个运行着YOLOE容器的Worker节点上的容器docker kill CONTAINER-ID。很快Swarm会检测到任务失败并在其他符合条件的节点上重新启动一个新的副本。docker service ps命令可以观察到这一过程。在此期间通过http://MANAGER-NODE-IP:7860的Web请求可能偶尔会失败如果刚好打到故障副本但服务整体依然可用。6. 生产环境进阶考量基础的集群部署完成后我们还需要考虑一些生产环境下的实际问题。6.1 性能监控与日志收集监控使用docker stats可以查看容器基本的CPU/内存使用情况。对于生产环境建议集成Prometheus Grafana。NVIDIA DCGM Exporter可以监控GPU指标。日志Swarm服务默认的日志驱动是json-file。对于集中式日志管理可以在docker-compose.swarm.yml中配置日志驱动为syslog、journald或gelf并指向ELKElasticsearch, Logstash, Kibana或Loki等日志系统。logging: driver: json-file options: max-size: 10m max-file: 36.2 配置管理与密钥安全环境变量如上面的Compose文件所示可以将模型路径、置信度阈值等配置通过environment传入避免硬编码在代码中。密钥管理如果服务需要访问数据库密码、API密钥等敏感信息切勿写在Compose文件或镜像里。应使用Docker Swarm的密钥管理功能# 创建密钥 echo my-secret-password | docker secret create db_password -然后在Compose文件中引用services: yoloe-inference: ... secrets: - db_password environment: - DB_PASSWORD_FILE/run/secrets/db_password在应用代码中从/run/secrets/db_password文件读取密码。6.3 滚动更新与回滚当你有新版本的镜像需要发布时例如更新了YOLOE代码或依赖Swarm的滚动更新策略update_config就派上用场了。构建并推送新镜像例如标记为swarm-ready-v2。更新Stack文件将image字段改为新镜像标签。执行更新docker stack deploy -c docker-compose.swarm.yml yoloe-stackSwarm会根据update_config中定义的parallelism并行度和delay延迟逐步停止旧容器并启动新容器实现零停机或短时停机的更新。回滚如果更新后发现问题可以快速回滚到上一个版本。# 回滚到上一次成功的服务配置 docker service update --rollback yoloe-stack_yoloe-inference6.4 水平伸缩与资源优化动态扩缩容根据监控到的GPU利用率和请求队列长度可以手动或通过自动化脚本调整副本数。# 将副本数扩展到5个 docker service scale yoloe-stack_yoloe-inference5资源限制除了reservations预留还可以设置limits上限防止单个容器过度消耗资源。deploy: resources: limits: cpus: 4 memory: 8G reservations: devices: ...模型预热与缓存在app.py中我们在启动时加载模型冷启动。对于生产环境可以考虑在健康检查通过前完成预热。对于频繁使用的文本提示可以缓存其编码结果以提升性能。7. 总结通过本文的实践我们完成了一次从单机AI模型到生产级集群服务的完整跨越。回顾一下关键步骤和收获明确目标我们选择了Docker Swarm作为轻量级编排工具并确定了YOLOE-v8m-seg作为部署模型在性能与灵活性间取得了平衡。精心准备为所有节点配置了Docker和NVIDIA容器运行时为集群部署扫清了环境障碍。定制镜像我们构建了一个包含Gradio Web接口的Docker镜像将YOLOE的推理能力封装成了易于调用的服务。集群部署通过初始化Swarm、编写Stack文件我们成功将服务以多副本形式部署到GPU节点上并配置了资源约束、滚动更新等生产级特性。进阶加固我们探讨了监控、日志、密钥管理、滚动更新等生产环境必须考虑的问题使服务更加健壮和安全。这套方案的价值在于它提供了一套可复现、可扩展、高可用的部署范式。你可以很容易地将文中的yoloe-v8m-seg替换成其他AI模型镜像或者将3个节点的Swarm集群扩展到更多节点以应对不断增长的业务需求。YOLOE的开放词汇能力结合容器化集群的弹性为图像识别与分割服务的落地提供了强大的基础设施。希望这篇详尽的指南能帮助你顺利地将先进的AI能力转化为稳定可靠的生产力。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

YOLOE开源镜像生产环境部署:YOLOE-v8m-seg在Docker Swarm集群实践

YOLOE开源镜像生产环境部署:YOLOE-v8m-seg在Docker Swarm集群实践 1. 引言:从单机到集群的跨越 如果你已经体验过YOLOE官版镜像在单台服务器上的强大能力,比如用文本描述就能识别图片里的任何物体,或者用一张示例图就能完成精准…...

Wan2.2-I2V-A14B教育落地:K12学校AI课件视频辅助生成工具部署

Wan2.2-I2V-A14B教育落地:K12学校AI课件视频辅助生成工具部署 1. 为什么K12教育需要AI视频生成工具 在K12教育领域,教师每天需要准备大量教学视频素材。传统视频制作需要专业设备和剪辑技能,耗时耗力。Wan2.2-I2V-A14B文生视频模型可以快速…...

NaViL-9B中小企业AI落地方案:低成本双卡部署多模态智能助手

NaViL-9B中小企业AI落地方案:低成本双卡部署多模态智能助手 1. 平台介绍 NaViL-9B是上海人工智能实验室研发的原生多模态大语言模型,能够同时处理文本和图像输入,为中小企业提供经济高效的AI解决方案。这款模型特别适合需要同时处理文字和图…...

14 - SVM的用户态API接口

难度: 🟡🔴 中级 预计学习时间: 2小时 前置知识: 第4章(核心数据结构)、第6章(范围管理) 📋 概述 SVM(Shared Virtual Memory)的用户态接口是上层框架(ROCm runtime、HSA runtime)与内核驱动之间的唯一公开契约。整个SVM用户态API只有一个IOCTL命令 AMDKFD_IOC_…...

Kali与编程・暴力破解・大白话版(超好懂)

大家好,我是 Kali 与编程讲师老 K,B 站和网易云课堂讲师,致力于帮助小白轻松学会 Kali 与编程,接下来你将搞懂什么是《暴力破解》。 暴力破解,说白了就是用程序自动不停地试密码,一个一个试,直…...

Ubuntu虚拟机桌面黑屏/VNC连接失败?

问题现象 在使用workstation 安装的Ubuntu桌面版时,常遇到两个让人头疼的问题: 现象1:Workstation虚拟机黑屏 在VMware Workstation中安装Ubuntu桌面版,长时间不操作虚拟机界面,屏幕会自动黑屏。虽然SSH还能正常连接&a…...

IDC服务商快速上手命令合集

做idc服务商的&#xff0c;最主要就是对客户服务器进行维护&#xff0c;本篇文章主要就是将平常主要的维护操作&#xff0c;做一个合集&#xff0c;方便维护时快速调用。也方便欧云服务器的代理和各位同行朋友使用&#xff0c;降低难度。0、linux换源命令bash <(curl -sSL h…...

实战指南:在 CPU 上 200ms 内搜索 4000 万文档

实战指南&#xff1a;在 CPU 上 200ms 内搜索 4000 万文档&#xff1a;使用二进制嵌入和 Int8 重排序 摘要&#xff1a;这篇文章Search 40M documents in under 200ms介绍了一种在纯CPU环境下高效处理大规模语义搜索的技术方案。文章的技术亮点在于结合了二进制嵌入&#xff08…...

Simufact.Forming工艺链仿真实战:从冷成型到热处理的完整流程配置技巧

Simufact.Forming工艺链仿真实战&#xff1a;从冷成型到热处理的完整流程配置技巧 在高端制造领域&#xff0c;工艺链仿真是确保产品质量和生产效率的关键环节。Simufact.Forming作为业界领先的金属成型仿真解决方案&#xff0c;其工艺链功能能够无缝衔接从冷成型到热处理的完整…...

链表(两数相加)(1)

一.题目 2. 两数相加 - 力扣&#xff08;LeetCode&#xff09; 二.思路讲解 2.1 审题 题目给出两个非空链表&#xff0c;每个链表表示一个非负整数&#xff0c;并且数字是逆序存储的&#xff0c;即链表的头节点对应数字的最低位。例如&#xff0c;链表 2->4->3 表示数字…...

从H.264到AV1:主流视频编码标准的演进、选型与实战场景剖析

1. 视频编码标准的发展脉络 我第一次接触视频编码是在2005年&#xff0c;当时用手机拍摄的3GP视频文件总是模糊不清。后来才知道&#xff0c;这背后是MPEG-4 Part 2编码在起作用。如今视频编码技术已经迭代了好几代&#xff0c;从最早的MPEG-2到现在的AV1&#xff0c;每一次升级…...

Creo混合与扫描混合实战:从基础到高级建模技巧

1. Creo混合与扫描混合功能入门指南 第一次打开Creo的混合功能时&#xff0c;我完全被那些参数搞懵了。后来才发现&#xff0c;这个看似复杂的功能其实就像搭积木一样简单。混合建模的核心思想就是把不同形状的截面按照特定规则连接起来&#xff0c;形成三维实体。比如你想做个…...

java架构一/1:微服务电商/地基/登录

一、构建聚合工程&#xff08;Java-Maven&#xff09;foodie-dev为父工程&#xff0c;其他为子模块。foodie-dev-api的pom.xml引入依赖-service&#xff0c;-service引入-mapper&#xff0c;-mapper引入-pojo&#xff0c;-pojo引入-common。二、使用PDMan进行数据库建模&#x…...

OpenClaw多模态实践:千问3.5-27B图片理解+文件整理自动化

OpenClaw多模态实践&#xff1a;千问3.5-27B图片理解文件整理自动化 1. 为什么需要自动化图片管理 上周整理项目资料时&#xff0c;我发现桌面上散落着237张截图——有会议纪要片段、代码报错提示、参考文档关键页&#xff0c;甚至还有随手截的灵感草图。手动分类这些文件花了…...

AI大揭秘:从ChatGPT到深度学习,普通人如何抓住AI风口?

一提及AI&#xff0c;大家脑海里想的是什么呢&#xff1f;是Deepseek、豆包、元宝等软件应用&#xff0c;还是能跑会跳的机器人&#xff1f;或者是那些能自己跑的车子、能自己运转的机器&#xff1f; 这些都是AI&#xff0c;都是人工智能。 基本概念 AI是英文Artificial Intell…...

OpenClaw(小龙虾)Windows 11 一键部署教程|2026 最新版|零代码・免配置・解压即用

适用系统&#xff1a;Windows 11 专业版 / 家庭版 / 正式版&#xff08;全版本兼容&#xff09; 项目介绍&#xff1a;OpenClaw 是 GitHub 星标 28W 的开源本地 AI 智能体&#xff0c;可自动操控电脑、整理文件、浏览器自动化、办公自动化&#xff0c;被国内用户称为小龙虾&am…...

从标注到训练:手把手教你用Labelme制作YOLOv8-Pose可用的关键点数据集

从标注到训练&#xff1a;手把手教你用Labelme制作YOLOv8-Pose可用的关键点数据集 在计算机视觉领域&#xff0c;关键点检测技术正逐渐成为研究热点。无论是人体姿态估计、面部表情识别还是工业质检中的零件定位&#xff0c;准确的关键点检测都是实现这些应用的基础。然而&…...

MySQL 索引特性与性能优化全解

&#x1f525;草莓熊Lotso&#xff1a;个人主页 ❄️个人专栏: 《C知识分享》 《Linux 入门到实践&#xff1a;零基础也能懂》 ✨生活是默默的坚持&#xff0c;毅力是永久的享受&#xff01; &#x1f3ac; 博主简介&#xff1a; 文章目录前言&#xff1a;一. 索引是什么1.1 初…...

SentenceTransformer:计算句子嵌入的模型

原文&#xff1a;towardsdatascience.com/sentencetransformer-a-model-for-computing-sentence-embedding-e8d31d9e6a8f 在这篇帖子中&#xff0c;我们探讨了 2019 年发布的 SentenceTransformer [1]&#xff0c;它具有双编码器架构&#xff0c;并将 BERT 调整为产生高效的句子…...

题目整理之线性dp

周赛137_D小苯的序列涂色 #include<bits/stdc.h> #define int long long #define fi first #define se second using namespace std; const int mod1e97; typedef pair<int,int>pii; const int N3e5; int dx[4]{1,-1,0,0}; int dy[4]{0,0,1,-1}; int num[N],inv[N]…...

新手避坑指南:用Pandas高效合并CIC-IDS-2018的10个CSV文件(附内存优化技巧)

新手避坑指南&#xff1a;用Pandas高效合并CIC-IDS-2018的10个CSV文件&#xff08;附内存优化技巧&#xff09; 网络安全数据分析的第一步往往是从处理原始数据集开始。CIC-IDS-2018作为业内广泛使用的基准数据集&#xff0c;其分散在10个CSV文件中的特征数据给初学者带来了不小…...

OpenClaw个人知识库构建:Qwen3-14b_int4_awq自动标注与归档

OpenClaw个人知识库构建&#xff1a;Qwen3-14b_int4_awq自动标注与归档 1. 为什么需要自动化知识管理 作为一个长期与技术文档打交道的开发者&#xff0c;我的本地硬盘里堆积着超过20GB的研究资料——从PDF论文、Markdown笔记到代码片段和会议记录。传统文件夹分类早已失效&a…...

校正协变量的相关:偏相关分析

当你想研究两个变量&#xff08;X 和 Y&#xff09;的关系&#xff0c;但担心其他变量&#xff08;Z&#xff09;可能干扰这个关系时&#xff0c;偏相关分析 (Partial Correlation) 可以在剔除协变量的影响后&#xff0c;计算 X 和 Y 之间更“纯粹”的关联。 1. 核心定义 偏相关…...

数字游民工作流:OpenClaw+千问3.5-27B自动处理跨境邮件

数字游民工作流&#xff1a;OpenClaw千问3.5-27B自动处理跨境邮件 1. 为什么需要自动化邮件处理 作为数字游民&#xff0c;我每天需要处理来自不同时区的客户邮件。这些邮件往往混杂着英语、西班牙语和中文&#xff0c;且包含大量模糊的需求描述。最痛苦的是凌晨三点被手机提…...

OpenClaw+Qwen3-14b_int4_awq:自动化文档生成工具

OpenClawQwen3-14b_int4_awq&#xff1a;自动化文档生成工具 1. 为什么需要自动化文档生成 作为一名技术写作者&#xff0c;我经常面临一个困境&#xff1a;代码写完了&#xff0c;文档却迟迟无法完成。每次面对空白的Markdown文件&#xff0c;总有种无从下笔的感觉。更糟糕的…...

基于SpringBoot + Vue的人工智能时代个人计算机的安全防护科普系统

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 &#x1f49b;博主介绍&#…...

NaViL-9B多场景落地:物流运单图像识别+地址结构化+异常标记

NaViL-9B多场景落地&#xff1a;物流运单图像识别地址结构化异常标记 1. 物流行业的AI变革机遇 现代物流行业每天处理数以亿计的运单&#xff0c;传统人工处理方式面临三大挑战&#xff1a; 效率瓶颈&#xff1a;人工录入一张运单平均耗时30秒&#xff0c;高峰期处理能力不足…...

基于SpringBoot + Vue的鲜花销售系统(角色:用户、商家、管理员)

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 &#x1f49b;博主介绍&#…...

小程序常用页面跳转 5 种方式汇总(开发常备手册)

小程序多页面协作离不开路由跳转&#xff0c;不同场景对应不同跳转 API&#xff0c;今天一次性整理齐全&#xff0c;开发随时查阅。保留当前页跳转&#xff08;普通内页&#xff09;wx.navigateTo({url:"/pages/detail/detail"})关闭当前页再跳转wx.redirectTo({url:…...

Python脚本打包成.exe方法

利用 pyinstaller打包 先安装这个库 pip install pyinstaller安装完成后&#xff0c;就可台利用pyinstaller进行打包了 在脚本文件的目录下切到cmd中&#xff0c;执行以下 pyinstaller -F tcping.py-F参数&#xff1a; 表示覆盖打包&#xff0c;不管我们打包几次&#xff0c;都…...