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

计算机视觉——基于YOLOV8 的人体姿态估计训练与推理

概述

自 Ultralytics 发布 YOLOV5 之后,YOLO 的应用方向和使用方式变得更加多样化且简单易用。从图像分类、目标检测、图像分割、目标跟踪到关键点检测,YOLO 几乎涵盖了计算机视觉的各个领域,似乎已经成为计算机视觉领域的“万能工具”。

YOLOV8 姿态估计

人体姿态估计(Human Pose Estimation,简称 HPE)是计算机视觉中的一个重要任务,它旨在检测图像或视频中人体的关键点位置,如头部、四肢和躯干等部位的坐标。YOLO 官方针对 HPE 的模型会在名称后加上 “-pose”,例如 YOLOv8n-pose。目前提供的 HPE 预训练模型是基于 COCO 数据集的 17 个关键点训练而成,具体如下图所示:

COCO 关键点

COCO 数据集的关键点分布如下:

  • 头部和面部:鼻子、左眼、右眼、左耳、右耳,共 5 个关键点。
  • 上肢:左肩、右肩、左肘、右肘、左腕、右腕,共 6 个关键点。
  • 下肢:左髋、右髋、左膝、右膝、左踝、右踝,共 6 个关键点。
  • 躯干:左髋和右髋连接到肩膀,形成躯干的轮廓。

目前 YOLOV8 提供的最大尺寸模型为 YOLOV8X-p6,其输入图像尺寸为 1280×1280,mAP(平均精度)较高,但参数量比 YOLOV8 大了近 30 倍,计算量增加了 118 倍。这种模型虽然精度高,但在实际应用中需要权衡计算资源和实时性。

训练自己的 HPE 模型

Ultralytics 将姿态估计的训练过程封装得非常简单,使得用户可以轻松地训练自己的 HPE 模型。如果需要训练自己的 HPE 模型,可以参考 COCO 数据集中关键点的标注方法,并添加自己的标注图像。COCO 数据集的 17 个关键点标注规则如下:

  • 单数编号:表示身体的左侧部位(如左肩、左肘等)。
  • 双数编号:表示身体的右侧部位(如右肩、右肘等)。

训练示例代码

以下是使用 Ultralytics 提供的 YOLOV8 进行姿态估计模型训练的示例代码:

from ultralytics import YOLO# 三种训练方式
# 训练一个全新的 YOLOV8N HPE 模型
model = YOLO('yolov8n-pose.yaml')# 载入预训练模型进行训练(推荐方式)
model = YOLO('yolov8n-pose.pt')# 与上一种方式相同,先加载配置文件再加载预训练权重
model = YOLO('yolov8n-pose.yaml').load('yolov8n-pose.pt')# 开始训练
model.train(data='coco8-pose.yaml', epochs=100, imgsz=640)

在训练过程中,需要指定数据集的配置文件(如 coco8-pose.yaml),其中包含数据集的路径、类别信息等。epochs 参数表示训练的轮数,imgsz 参数表示输入图像的尺寸。

直接使用预训练模型进行推理

YOLOV8 官方发布的预训练模型已经能够提供非常不错的目标检测和姿态估计效果。以下是如何直接使用这些预训练模型进行推理的示例。

官方推理示例

from ultralytics import YOLO# 加载模型
model = YOLO('yolov8n-pose.pt')  # 加载官方预训练模型
# model = YOLO('path/to/best.pt')  # 加载自定义训练的模型# 使用模型进行推理
results = model('https://ultralytics.com/images/bus.jpg')  # 对图像进行推理

获取关键点的详细信息

如果需要获取推理结果中各个关键点的详细信息,可以参考以下代码:

# 定义关键点索引与名称的对应关系
dic_points = {0: 'nose', 1: 'left_eye', 2: 'right_eye', 3: 'left_ear', 4: 'right_ear',5: 'left_shoulder', 6: 'right_shoulder', 7: 'left_elbow', 8: 'right_elbow',9: 'left_wrist', 10: 'right_wrist', 11: 'left_hip', 12: 'right_hip',13: 'left_knee', 14: 'right_knee', 15: 'left_ankle', 16: 'right_ankle'
}# 加载模型并进行推理
model = YOLO('yolov8n-pose.pt')
results = model('path/to/image.jpg')# 遍历检测结果
for r in results:boxes = r.boxes  # 获取边界框kps = r.keypoints  # 获取关键点# 遍历每个检测到的人体实例for p in kps:list_p = p.data.tolist()  # 将关键点数据转换为列表# 遍历每个关键点for i, point in enumerate(list_p):# 打印关键点的索引和坐标print(f"Keypoint {i} ({dic_points[i]}): ({int(point[0])}, {int(point[1])})")

关键点的可视化

为了更直观地展示姿态估计的结果,可以通过绘制关键点和连接线来可视化人体姿态。以下是一些示例代码,展示如何绘制头部、躯干、上肢、下肢和脊椎的关键点。

头部关键点

头部的关键点包括双耳、眼睛和鼻子,共 5 个点。以下代码展示了如何绘制这些关键点及其连接线:

import cv2
import numpy as npdef draw_head(img, list_p):# 绘制耳朵、眼睛和鼻子的关键点for p in list_p[:5]:cv2.circle(img, (int(p[0]), int(p[1])), 8, (0, 255, 0), -1)# 绘制眼睛之间的连接线start = (int(list_p[1][0]), int(list_p[1][1]))end = (int(list_p[2][0]), int(list_p[2][1]))cv2.line(img, start, end, (0, 0, 255), 2)# 绘制鼻子到眼睛中点的连接线start = (int((list_p[1][0] + list_p[2][0]) / 2), int((list_p[1][1] + list_p[2][1]) / 2))end = (int(list_p[0][0]), int(list_p[0][1]))cv2.line(img, start, end, (0, 0, 255), 2)# 绘制耳朵之间的连接线start = (int(list_p[3][0]), int(list_p[3][1]))end = (int(list_p[4][0]), int(list_p[4][1]))cv2.line(img, start, end, (0, 0, 255), 2)return img

躯干关键点

躯干的关键点包括肩膀和臀部,共 4 个点。以下代码展示了如何绘制这些关键点及其连接线:

def draw_body(img, list_p):points = []# 绘制肩膀和臀部的关键点for p in [list_p[5], list_p[6], list_p[11], list_p[12]]:cv2.circle(img, (int(p[0]), int(p[1])), 12, (0, 255, 0), -1)point = (int(p[0]), int(p[1]))points.append(point)# 将关键点连接成多边形points = np.array(points)points =points.reshape((-1, 1, 2))isClosed = Truecolor = (0, 0, 255)thickness = 3img = cv2.polylines(img, [points], isClosed, color, thickness)return img

上肢关键点

上肢的关键点包括肩膀、手肘和手腕,共 6 个点。以下代码展示了如何绘制这些关键点及其连接线:

def draw_upper(img, list_p):# 绘制左上肢的关键点和连接线for i, p in enumerate([list_p[5], list_p[7], list_p[9]]):cv2.circle(img, (int(p[0]), int(p[1])), 8, (0, 255, 0), -1)lines = [(5, 7), (7, 9)]for n in lines:start = (int(list_p[n[0]][0]), int(list_p[n[0]][1]))end = (int(list_p[n[1]][0]), int(list_p[n[1]][1]))cv2.line(img, start, end, (0, 0, 255), 3)# 绘制右上肢的关键点和连接线for i, p in enumerate([list_p[6], list_p[8], list_p[10]]):cv2.circle(img, (int(p[0]), int(p[1])), 8, (0, 255, 0), -1)lines = [(6, 8), (8, 10)]for n in lines:start = (int(list_p[n[0]][0]), int(list_p[n[0]][1]))end = (int(list_p[n[1]][0]), int(list_p[n[1]][1]))cv2.line(img, start, end, (0, 0, 255), 3)return img

下肢关键点

下肢的关键点包括臀部、膝盖和脚踝,共 6 个点。以下代码展示了如何绘制这些关键点及其连接线:

def draw_lower(img, list_p):# 绘制左下肢的关键点和连接线for i, p in enumerate([list_p[11], list_p[13], list_p[15]]):cv2.circle(img, (int(p[0]), int(p[1])), 8, (0, 255, 0), -1)lines = [(11, 13), (13, 15)]for n in lines:start = (int(list_p[n[0]][0]), int(list_p[n[0]][1]))end = (int(list_p[n[1]][0]), int(list_p[n[1]][1]))cv2.line(img, start, end, (0, 0, 255), 3)# 绘制右下肢的关键点和连接线for i, p in enumerate([list_p[12], list_p[14], list_p[16]]):cv2.circle(img, (int(p[0]), int(p[1])), 8, (0, 255, 0), -1)lines = [(12, 14), (14, 16)]for n in lines:start = (int(list_p[n[0]][0]), int(list_p[n[0]][1]))end = (int(list_p[n[1]][0]), int(list_p[n[1]][1]))cv2.line(img, start, end, (0, 0, 255), 3)return img

脊椎关键点

脊椎的关键点可以通过连接鼻子、肩膀中心和臀部中心来表示。以下代码展示了如何绘制这些关键点及其连接线:

def draw_spine(img, list_p):# 计算肩膀中心点shoulder_center = ((list_p[5][0] + list_p[6][0]) / 2, (list_p[5][1] + list_p[6][1]) / 2)# 计算臀部中心点hip_center = ((list_p[11][0] + list_p[12][0]) / 2, (list_p[11][1] + list_p[12][1]) / 2)# 绘制关键点cv2.circle(img, (int(shoulder_center[0]), int(shoulder_center[1])), 12, (0, 255, 0), -1)cv2.circle(img, (int(hip_center[0]), int(hip_center[1])), 12, (0, 255, 0), -1)# 绘制连接线cv2.line(img, (int(list_p[0][0]), int(list_p[0][1])), (int(shoulder_center[0]), int(shoulder_center[1])), (0, 0, 255), 3)cv2.line(img, (int(shoulder_center[0]), int(shoulder_center[1])), (int(hip_center[0]), int(hip_center[1])), (0, 0, 255), 3)return img

应用场景

将所有关键点和连接线绘制在一起,可以得到完整的人体姿态估计结果,如下图所示:
在这里插入图片描述

这种姿态估计技术可以应用于多种场景,例如:

  • 人员识别:在监控视频中识别人员的行走姿态,即使面部模糊或较小,也能通过姿态特征进行识别。
  • 运动分析:分析运动员的动作,帮助教练进行技术指导。
  • 康复治疗:辅助医生评估患者的康复情况,通过姿态变化监测康复进度。

总结

通过 YOLOV8 的姿态估计功能,我们可以轻松地检测图像或视频中人体的关键点,并将其可视化。这为计算机视觉领域的多种应用提供了强大的支持。未来,我们可以进一步探索如何利用这些关键点信息来提高人员识别的准确性,或者将其应用于其他更具挑战性的任务中。

相关文章:

计算机视觉——基于YOLOV8 的人体姿态估计训练与推理

概述 自 Ultralytics 发布 YOLOV5 之后,YOLO 的应用方向和使用方式变得更加多样化且简单易用。从图像分类、目标检测、图像分割、目标跟踪到关键点检测,YOLO 几乎涵盖了计算机视觉的各个领域,似乎已经成为计算机视觉领域的“万能工具”。 Y…...

【本地图床搭建】宝塔+Docker+MinIO+PicGo+cpolar:打造本地化“黑科技”图床方案

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言宝塔安装DockerMinIO 安装与设置cploar内网穿透PicGo下载与安装typora安装总结互动…...

【家政平台开发(41)】家政平台性能蜕变:性能测试与优化全解析

本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质量,…...

监控docker中的java应用

1)进入指定的容器 docker exec -it demo /bin/bash 2)下载curl root89a67e345354:/# apt install curl -y 3)下载arthas root89a67e345354:/# curl -O https://arthas.aliyun.com/arthas-boot.jar 4)运行 root89a67e345354:/# java -jar arthas-boot.jar 5)监控 […...

Android游戏辅助工具开发详解

文章目录 第一部分:概述与基础准备1.1 游戏辅助工具的定义与用途1.2 开发环境准备1.3 项目创建与配置 第二部分:核心功能实现2.1 屏幕点击功能实现2.1.1 基础点击功能2.1.2 多点触控实现 2.2 滑动功能实现2.2.1 基础滑动功能2.2.2 曲线滑动实现 2.3 屏幕…...

重生之外卖配送时被投诉后的反思

重生之外卖配送时被投诉后的反思 写苍穹外卖时 我们发现在每一次调用sql语句时 insert update语句总会需要在service的实现类里加入例如create_time,create_user , update_time , update_user的填充 每次赋值都要重新编写代码,会造成代码冗余 ; 序号字…...

计算机基础复习资料整理

计算机基础复习资料整理 一、操作系统 (一)定义 操作系统(Operating System,OS)是介于计算机硬件和用户(程序或人)之间的接口。作为通用管理程序,它管理计算机系统中每个部件的活动…...

Profibus DP主站网关数据映射全解析!

Profibus DP主站网关数据映射全解析! 在工业自动化领域,Profibus DP主站网关作为一种关键的通讯设备,其数据映射的精准度和效率对整个控制系统的性能有着至关重要的影响。本文旨在深入探讨Profibus DP主站网关的数据映射过程,揭示…...

ocr-不动产权识别

目录 一、在阿里云申请ocr识别服务 二、创建springboot项目 三、后续 一、在阿里云申请ocr识别服务 在线体验:房产证图片上传 [阿里官方]不动产权证OCR文字识别_API专区_云市场-阿里云 (aliyun.com) 可以选择一毛500次这个 当然也可以白嫖100 下面有个在线调试…...

leetcode 198. House Robber

本题是动态规划问题。 第一步,明确并理解dp数组以及下标的含义 dp[i]表示从第0号房间一直到第i号房间(包含第i号房间)可以偷到的最大金额,具体怎么偷这里不考虑,第i1号及之后的房间也不考虑。换句话说,dp[i]也就是只考虑[0,i]号…...

【2025软考高级架构师】——软件架构设计(4)

摘要 本文主要介绍了几种软件架构设计相关的概念和方法。包括C2架构风格的规则,模型驱动架构(MDA)的起源、目标、核心模型及各模型之间的关系;软件架构复用的概念、历史发展、维度、类型及相关过程;特定领域架构&…...

分发饼干问题——用贪心算法解决

目录 一:问题描述 二:解决思路 贪心策略(C语言)算法复习总结3——贪心算法-CSDN博客 三:代码实现 四:复杂度分析 一:问题描述 分发饼干问题是一个经典的可以使用贪心算法解决的问题&#xf…...

深入详解MYSQL的MVCC机制

参考资料: 参考视频(注意第二个视频关于幻读的讲解是错误的,详情见本文) redoLog的结构详解 参考资料 学习内容: 1. MVCC要解决的问题 MVCC要解决的问题是,在不产生脏读等数据库问题的前提下,数据库的查询语句和更改语句不相互阻塞的情况; 在InnoDB中,MVCC仅仅存…...

DNS域名解析

目录 一.DNS 1.1DNS的简介 1.2DNS的背景 1.3DNS的架构 1.4实现DNS的方式 1.5DNS的查询类型 1.6DNS解析的基本流程 二.主从复制 2.1定义 2.2优缺点 三.DNS服务软件 3.1bind 3.1.1定义 3.1.2bind相关文件 3.2DNS服务器的核心文件 3.2.1主配置文件 3.2.2域名文件 …...

Java基础:一文讲清多线程和线程池和线程同步

01-概述 02-线程创建 继承Thread 实现Runnable(任务对象) 实现Callable接口 public class ThreadDemo3 {public static void main(String[] args) throws ExecutionException, InterruptedException {// 目标&#xff1a;线程创建3// 需求&#xff1a;求1-100的和Callable<…...

ubuntu 20.04 连不上蓝牙耳机/蓝牙鼠标

sudo gedit /etc/bluetooth/main.conf改为 ControllerMode dual然后重启蓝牙服务 sudo service bluetooth restart...

SaaS、Paas、IaaS、MaaS、BaaS五大云计算服务模式

科普版&#xff1a;通俗理解五大云计算服务模式 1. SaaS&#xff08;软件即服务&#xff09; 一句话解释&#xff1a;像“租用公寓”&#xff0c;直接使用现成的软件&#xff0c;无需操心维护。 案例&#xff1a;使用钉钉办公、在网页版WPS编辑文档。服务提供商负责软件更新和…...

【深拷贝、浅拷贝】golang函数参数传递,变量复制后,操作变量参数,是否影响原有数据?全面解析

Golang中深拷贝与浅拷贝的详细解析&#xff0c;以及变量复制、函数参数传递等场景下对新旧变量影响的总结&#xff1a; 一拷贝与浅拷贝的核心区别 1. 浅拷贝&#xff08;Shallow Copy&#xff09; • 定义&#xff1a;仅复制数据的顶层结构&#xff0c;对引用类型字段&#x…...

c语言编程经典习题详解3

21. 求给定正整数 n 以内的素数之积 定义:找出小于给定正整数n的所有素数,并将它们相乘。要点:使用双层for循环,外层循环遍历小于n的数,内层循环判断是否为素数,若是则累乘。应用:在数论研究、密码学等领域有应用。c #include <stdio.h>int isPrime(int num) {if…...

【HD-RK3576-PI】Docker搭建与使用

硬件&#xff1a;HD-RK3576-PI 软件&#xff1a;Linux6.1Ubuntu22.04 1. 安装Docker Docker安装脚本下载&#xff1a; roothd-rk3576-pi:~ $ curl -fsSL https://test.docker.com -o test-docker.sh 可以直接执行安装 roothd-rk3576-pi:~ $ sh test-docker.sh 2. 配置国内镜…...

C++进阶——异常

目录 1、异常的概念及使用 1.1 异常的概念 1.2 异常的抛出和捕获 1.3 栈展开 1.4 查找匹配的处理代码 1.5 异常的重新抛出 1.6 异常的安全问题 1.7 异常的规范 2、标准库的异常(了解) 1、异常的概念及使用 1.1 异常的概念 C语言&#xff0c;出错了&#xff0c;就报错…...

Linux安装开源版MQTT Broker——EMQX服务器环境从零到一的详细搭建教程

零、EMQX各个版本的区别 EMQX各个版本的功能对比详情https://docs.emqx.com/zh/emqx/latest/getting-started/feature-comparison.html...

C++ 编程指南36 - 使用Pimpl模式实现稳定的ABI接口

一&#xff1a;概述 C 的类布局&#xff08;尤其是私有成员变量&#xff09;直接影响它的 ABI&#xff08;应用二进制接口&#xff09;。如果你在类中添加或修改了私有成员&#xff0c;即使接口不变&#xff0c;编译器生成的二进制布局也会变&#xff0c;从而导致 ABI 不兼容。…...

笔记本电脑突然无法开机电源灯亮但是屏幕无法点亮

现象 按电源键&#xff0c;电源灯点亮&#xff0c;屏幕没动静 风扇开始运转&#xff0c;然后一会儿就不转了&#xff1b;屏幕一直没动静&#xff0c;屏幕没有任何反应&#xff08;没有系统启动画面&#xff0c;没有徽标显示&#xff0c;就一点反应也没用&#xff09; 这个问…...

mongodb 4.0+多文档事务的实现原理

1. 副本集事务实现&#xff08;4.0&#xff09;‌ ‌非严格依赖二阶段提交‌ MongoDB 4.0 在副本集环境中通过 ‌全局逻辑时钟&#xff08;Logical Clock&#xff09;‌ 和 ‌快照隔离&#xff08;Snapshot Isolation&#xff09;‌ 实现多文档事务&#xff0c;事务提交时通过…...

decompiled.class file bytecode version50(java 6)

idea运行项目报错&#xff0c;跳到具体的.class中&#xff0c;idea会给出提示下载源码&#xff0c;点击下载报错&#xff0c;具体报错信息我没记录了&#xff08;反正就是无法看到源码&#xff09; 解决方式&#xff1a; 1、网上说下载scala插件&#xff0c;重启idea即可 但是…...

CSS 列表样式学习笔记

CSS 列表样式提供了强大的功能&#xff0c;用于定制 HTML 列表的外观。通过 CSS&#xff0c;可以轻松地改变列表项的标记类型、位置&#xff0c;甚至使用图像作为列表项标记。以下是对 CSS 列表样式的详细学习笔记。 一、HTML 列表类型 在 HTML 中&#xff0c;主要有两种类型…...

linux网络设置

ifconfig 查看ip地址 查看当前的liunx系统的网络参数ip地址 Ubuntu需要安装 Apt install -y net-tools 查看网络信息 Ifconfig 只能看到开启的网卡 Ifconfig -a 看到所有的网卡包括开启和关闭的 Ifconfig 网卡名称 up 开启网卡 Ifconfig 网卡名称 down 关闭网卡 If…...

抗干扰CAN总线通信技术在分布式电力系统中的应用

摘要&#xff1a;随着分布式电力系统的广泛应用&#xff0c;其通信系统的可靠性与稳定性受到了前所未有的挑战。CAN总线通信技术以其卓越的抗干扰性能和可靠性&#xff0c;在众多通信技术中脱颖而出&#xff0c;成为解决分布式电力系统通信问题的关键。本文深入剖析了CAN总线通…...

Maven工具学习使用(十二)——extension和depency的区别

在 Maven 中&#xff0c;extensions 和 dependencies 是两个不同的概念&#xff0c;它们在项目构建和依赖管理中扮演着不同的角色。 1、Dependencies dependencies 是 Maven 项目中用于管理项目所需的库和模块的部分。这些依赖可以是本地仓库中的&#xff0c;也可以是远程仓库…...

Python学生信息查询

利用字典设置学生信息&#xff0c;将这些信息放入列表中进行存储&#xff0c;根据输入的姓名查询展示对应的学生信息。 Student1{no:202001,name:zyt,score:87} Student2Student1.copy() Student3Student2.copy()Student2[no]202002 Student3[no]202003Student2[name]zwh Stud…...

一天时间,我用AI(deepseek)做了一个配色网站

前言 最近在开发颜色搭配主题的相关H5和小程序&#xff0c;想到需要补充一个web网站&#xff0c;因此有了这篇文章。 一、确定需求 向AI要答案之前&#xff0c;一定要清楚自己想要做什么。如果你没有100%了解自己的需求&#xff0c;可以先让AI帮你理清逻辑和思路&#xff0c;…...

MQ(消息队列)体系详解

消息队列&#xff08;MQ&#xff0c;Message Queue&#xff09; 是一种基于消息传递的异步通信机制&#xff0c;用于不同系统、服务之间进行数据传递和交互。它通常用来解耦生产者和消费者&#xff0c;提供高可用、高吞吐量和可靠的消息传递。 一、消息队列用途 1.系统解耦 …...

【GESP真题解析】第 3 集 GESP一级样题卷编程题 2:闰年求和

大家好&#xff0c;我是莫小特。 这篇文章给大家分享 GESP 一级样题卷编程题第 2 题&#xff1a;闰年求和。 题目链接 洛谷链接&#xff1a;B3846 闰年求和 一、完成输入 根据题目要求&#xff0c;我们需要输入两个整数&#xff0c;分别表示起始年份和终止年份。 要求计算…...

Windows Server 2019 安装 Docker 完整指南

博主本人使用的是离线安装 1. 安装前准备 系统要求 操作系统&#xff1a;Windows Server 2019&#xff08;或 2016/2022&#xff09;权限&#xff1a;管理员权限的 PowerShell网络&#xff1a;可访问互联网&#xff08;或离线安装包&#xff09; 启用容器功能 Install-Win…...

JetBrains PhpStorm v2024.3.1 Mac PHP开发工具

JetBrains PhpStorm v2024.3.1 Mac PHP开发工具 一、介绍 JetBrains PhpStorm 2024 mac&#xff0c;是一款PHP开发工具&#xff0c;直接开始编码&#xff0c;无需安装和配置大量插件。PhpStorm 从一开始就已包含 PHP、JavaScript 和 TypeScript 开发所需的一切&#xff0c;还…...

机器学习(ML)在AI驱动测试通过数据驱动的智能决策显著提升测试效率、覆盖率和准确性。

机器学习(ML)在AI驱动测试中扮演着 核心引擎 的角色,通过数据驱动的智能决策显著提升测试效率、覆盖率和准确性。以下是机器学习在测试各环节的具体作用及实现方案: 一、机器学习在测试生命周期中的作用 #mermaid-svg-u4vgPE6O2jugiZFB {font-family:"trebuchet ms&qu…...

0x06.Redis 中常见的数据类型有哪些?

回答重点 Redis 常见的数据结构主要有五种,这五种类型分别为:String(字符串)、List(列表)、Hash、Set(集合)、Zset(有序集合,也叫sorted set)。 String 字符串是Redis中最基本的数据类型,可以存储任何类型的数据,包括文本、数字和二进制数据。它的最大长度为512MB。 使…...

本地缓存方案Guava Cache

Guava Cache 是 Google 的 Guava 库提供的一个高效内存缓存解决方案&#xff0c;适用于需要快速访问且不频繁变更的数据。 // 普通缓存 Cache<Key, Value> cache CacheBuilder.newBuilder().maximumSize(1000) // 最大条目数.expireAfterWrite(10, TimeUnit.MINUTES) /…...

A Causal Inference Look at Unsupervised Video Anomaly Detection

标题&#xff1a;无监督视频异常检测的因果推断视角 原文链接&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/20053 发表&#xff1a;AAAI-2022 文章目录 摘要引言相关工作无监督视频异常检测因果推断 方法问题公式化一般设置强基线模型 无监督视频异常检测的因…...

MQ(RabbitMQ.1)

MQ的含义及面试题 MQMQ的含义MQ之间的调用的方式MQ的作用MQ的几种产品RabbitMQRabbitMQ的安装RabbitMQ的使用RabbitMQ⼯作流程 AMQPWeb界面操作用户相关操作虚拟主机相关操作 RabbitMQ的代码应用编写生产者代码编写消费者代码 生产者代码消费者代码 MQ MQ的含义 MQ&#xff0…...

cursor+高德MCP:制作一份旅游攻略

高德开放平台 | 高德地图API (amap.com) 1.注册成为开发者 2.进入控制台选择应用管理----->我的应用 3.新建应用 4.点击添加Key 5.在高德开发平台找到MCP的文档 6.按照快速接入的步骤&#xff0c;进行操作 一定要按照最新版的cursor, 如果之前已经安装旧的版本卸载掉重新安…...

FPGA时序分析与约束(11)——时钟组

目录 一、同步时钟与异步时钟 二、逻辑与物理独立时钟 2.1 逻辑独立时钟 2.2 物理独立时钟 三、如何设置时钟组 四、注意事项 专栏目录&#xff1a; FPGA时序分析与约束&#xff08;0&#xff09;——目录与传送门https://ztzhang.blog.csdn.net/article/details/134893…...

opencv 识别运动物体

import cv2 import numpy as npcap cv2.VideoCapture(video.mp4) try:import cv2backSub cv2.createBackgroundSubtractorMOG2() except AttributeError:backSub cv2.bgsegm.createBackgroundSubtractorMOG()#形态学kernel kernel cv2.getStructuringElement(cv2.MORPH_REC…...

opencv实际应用--银行卡号识别

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉库&#xff0c;主要用于图像和视频处理、目标检测、特征提取、3D重建以及机器学习任务。它支持多种编程语言&#xff08;如C、Python&#xff09;&#xff0c;提供丰富的算法和工具&a…...

【软考系统架构设计师】系统架构设计知识点

1、 从需求分析到软件设计之间的过渡过程称为软件架构。 软件架构为软件系统提供了一个结构、行为和属性的高级抽象&#xff0c;由构件的描述、构件的相互作用&#xff08;连接件&#xff09;、指导构件集成的模式以及这些模式的约束组成。 软件架构不仅指定了系统的组织结构和…...

GPT - 2 文本生成任务全流程

数据集下载 数据预处理 import json import pandas as pdall_data []with open("part-00018.jsonl",encoding"utf-8") as f:for line in f.readlines():data json.loads(line)all_data.append(data["text"])batch_size 10000for i in ran…...

重返JAVA之路——面向对象

目录 面向对象 1.什么是面向对象&#xff1f; 2.面向对象的特点有哪些&#xff1f; 3.什么是对象&#xff1f; 4.什么是类&#xff1f; 5.什么是构造方法? 6.构造方法的特性有哪些&#xff1f; 封装 1.什么是封装&#xff1f; 2.封装有哪些特点&#xff1f; 数据隐…...

docker 安装 jenkins

拉取镜像 docker pull jenkins/jenkins:2.426.3-lts-jdk17 创建数据卷 # 创建时即设置安全权限&#xff08;SGID确保组权限继承&#xff09; sudo mkdir -p /var/jenkins_home sudo chmod -R 777 /var/jenkins_home 拉取镜像并运行容器 # 生产环境推荐&#xff08;JDK17…...

sql 向Java的映射

优化建议&#xff0c;可以在SQL中控制它的类型 在 MyBatis 中&#xff0c;如果返回值类型设置为 java.util.Map&#xff0c;默认情况下可以返回 多行多列的数据...