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

知识图谱(BILSTM+CRF项目完整实现、训练结果优化方向(面试))【第八章】

一、训练、评估模型训练函数基本步骤1.构建数据迭代器Dataloader(包括数据处理与构建数据源Dataset)2.实例化模型3.实例化损失函数对象4.实例化优化器对象5.定义打印日志参数6.开始训练6.1 实现外层大循环epoch6.2 将模型设置为训练模式6.3 内部遍历数据迭代器dataloader1将数据送入模型得到输出结果2计算损失3梯度清零: optimizer.zero_grad()4反向传播(计算梯度): loss.backward()5梯度更新(参数更新): optimizer.step()6打印内部训练日志6.4 使用验证集进行模型评估【将模型设置为评估模式】6.5 保存模型: torch.save(model.state_dict(), model_path)6.6 打印外部训练日志验证函数基本步骤1.定义打印日志参数2.将模型设置为评估模式3.内部遍历数据迭代器dataloader3.1 将数据送入模型得到输出结果3.2 计算损失3.3 处理结果3.4 统计批次内指标4.统计整体指标train.pyimport time import torch import torch.nn as nn from sklearn.metrics import precision_score, recall_score, f1_score, classification_report from tqdm import tqdm from P03_NER.LSTM_CRF.config import Config from P03_NER.LSTM_CRF.model.BiLSTM import NERLSTM from P03_NER.LSTM_CRF.model.BiLSTM_CRF import NERLSTM_CRF from P03_NER.LSTM_CRF.utils.data_loader import get_data, word2id conf Config() def model2dev(val_dataloader, model, criterionNone): 使用验证集评估模型的效果 :param val_dataloader: 验证集 :param model: 需要评估的模型对象 :param criterion: 损失函数对象【只有BiLSTM模型会用到】 :return: 评估指标 # 1.定义打印日志参数 avg_loss 0 preds [] # 用来保存非padding位置的预测标签 golds [] # 用来保存非padding位置的真实标签 # 2.将模型设置为评估模式 model.eval() # 3.内部遍历数据迭代器dataloader for index, (input_ids, labels, attention_mask) in enumerate(tqdm(val_dataloader)): # 3.1 将数据送入模型得到输出结果 # 将数据放到 GPU input_ids input_ids.to(conf.device) labels labels.to(conf.device) attention_mask attention_mask.to(conf.device) # 对模型进行判断 if conf.model BiLSTM: # 将数据送入模型得到输出结果 output model(input_ids, attention_mask) # print(foutput--{output.shape}) # 3.2 计算损失 reshape_output output.view(-1, len(conf.tag2id)) reshape_labels labels.view(-1) loss criterion(reshape_output, reshape_labels) # 对损失进行累加操作 avg_loss loss.item() # 3.3 处理结果 predict output.argmax(dim-1).tolist() # print(fpredict--{predict}) else: # 将数据送入模型得到输出结果 predict model(input_ids, attention_mask) # print(fpredict--{predict}) # 3.2 计算损失 loss model.log_likelihood(input_ids, labels, attention_mask).mean() # 对损失进行累加操作 avg_loss loss # 3.3 处理结果略 # 目的基于真实样本长度去获取非padding位置的预测标签和真实标签 # 1)先获取真实长度 real_len (labels ! 11).sum(-1).tolist() # print(freal_len--{real_len}) # 2)基于真实长度去获取非padding位置的预测标签 for index, label in enumerate(predict): real_len_label label[0:real_len[index]] # print(freal_len_label--{real_len_label}) preds.extend(real_len_label) # 注意这里需要使用extend()方法将每个标签添加到列表中 # 3)基于真实长度去获取非padding位置的真实标签 for index, label in enumerate(labels.tolist()): golds.extend(label[0:real_len[index]]) # print(fpreds--{preds}) # print(fgolds--{golds}) # 3.4 统计批次内指标 # break # 4.统计整体指标 avg_loss / len(val_dataloader) precision precision_score(golds, preds, averageweighted) recall recall_score(golds, preds, averageweighted) f1 f1_score(golds, preds, averageweighted) report classification_report(golds, preds) # print(fprecision--{precision}) # print(frecall--{recall}) # print(ff1--{f1}) # print(freport--{report}) return avg_loss, precision, recall, f1, report def model2train(): # 1.构建数据迭代器Dataloader(包括数据处理与构建数据源Dataset) train_dataloader, val_dataloader get_data() # 2.实例化模型 models {BiLSTM: NERLSTM, BiLSTM_CRF: NERLSTM_CRF} model models[conf.model](conf.embedding_dim, conf.hidden_dim, conf.tag2id, word2id, conf.dropout).to(conf.device) print(fmodel--{model}) # 3.实例化损失函数对象 # 忽略索引为11的标签即[PAD]。这样做是因为[PAD]标签不需要参与损失的计算 criterion nn.CrossEntropyLoss(ignore_index11) # 4.实例化优化器对象 optimizer torch.optim.Adam(model.parameters(), lrconf.lr) # 5.定义打印日志参数 start_time time.time() # 6.开始训练 best_f1 -100 # 用来保存最好的模型对应的f1值 # 6.1 实现外层大循环epoch if conf.model BiLSTM: for epoch in range(conf.epochs): # 6.2 将模型设置为训练模式 model.train() # 6.3 内部遍历数据迭代器dataloader for index, (input_ids, labels, attention_mask) in enumerate(tqdm(train_dataloader)): # 1将数据送入模型得到输出结果 # 将数据放到 GPU input_ids input_ids.to(conf.device) labels labels.to(conf.device) attention_mask attention_mask.to(conf.device) # 将数据送入模型得到输出结果 output model(input_ids, attention_mask) # print(foutput--{output.shape}) # 2计算损失 # 在计算损失之前需要将预测结果的形状转变成(batch_size*seq_len, tag_size)并将标签结果转成(batch_size*seq_len) reshape_output output.view(-1, len(conf.tag2id)) # print(freshape_output--{reshape_output.shape}) reshape_labels labels.view(-1) # print(freshape_labels--{reshape_labels.shape}) loss criterion(reshape_output, reshape_labels) # print(floss--{loss}) # 3梯度清零: optimizer.zero_grad() optimizer.zero_grad() # 4反向传播(计算梯度): loss.backward() loss.backward() # 5梯度更新(参数更新): optimizer.step() optimizer.step() # 6打印内部训练日志 if (index1) % 50 0: print(epoch:%04d,------------loss:%f % (epoch, loss.item())) # break # 6.4 使用验证集进行模型评估【将模型设置为评估模式】 avg_loss, precision, recall, f1, report model2dev(val_dataloader, model, criterion) # 6.5 保存模型: torch.save(model.state_dict(), model_path) if f1 best_f1: print(fepoch:{epoch}, avg_loss:{avg_loss}, precision:{precision}, recall:{recall}, f1:{f1}) print(freport--{report}) torch.save(model.state_dict(), save_model/bilstm_best_f1.pth) best_f1 f1 # 注意不忘忘记更新best_f1 # break else: for epoch in range(conf.epochs): # 6.2 将模型设置为训练模式 model.train() # 6.3 内部遍历数据迭代器dataloader for index, (input_ids, labels, attention_mask) in enumerate(tqdm(train_dataloader)): # 1将数据送入模型得到输出结果 # 将数据放到 GPU input_ids input_ids.to(conf.device) labels labels.to(conf.device) attention_mask attention_mask.to(conf.device) # 2计算损失 # 需要使用mean()方法将损失求平均 loss model.log_likelihood(input_ids, labels, attention_mask).mean() # print(floss--{loss}) # 3梯度清零: optimizer.zero_grad() optimizer.zero_grad() # 4反向传播(计算梯度): loss.backward() loss.backward() # 梯度裁剪作用是防止训练不稳定或梯度爆炸 torch.nn.utils.clip_grad_norm_(parametersmodel.parameters(), max_norm10) # 5梯度更新(参数更新): optimizer.step() optimizer.step() # 6打印内部训练日志 if (index 1) % 50 0: print(epoch:%04d,------------loss:%f % (epoch, loss.item())) # break # 6.4 使用验证集进行模型评估【将模型设置为评估模式】 avg_loss, precision, recall, f1, report model2dev(val_dataloader, model) # 6.5 保存模型: torch.save(model.state_dict(), model_path) if f1 best_f1: print(fepoch:{epoch}, avg_loss:{avg_loss}, precision:{precision}, recall:{recall}, f1:{f1}) print(freport--{report}) torch.save(model.state_dict(), save_model/bilstm_crf_best_f1.pth) best_f1 f1 # 注意不忘忘记更新best_f1 # break # 6.6 打印外部训练日志 print(训练结束总耗时%f % (time.time() - start_time)) if __name__ __main__: model2train()使用CRF之后效果比之前稍微好一些但是训练成本会提高很多。二、模型优化BiLSTM_CRF模型在训练完后可以做哪些优化来改善模型性能1模型优化预训练词向量使用预训练的词向量如Word2Vec、GloVe、FastText替代随机初始化的词嵌入可以更好地捕捉词汇语义信息。自注意力机制在BiLSTM后加入自注意力层增强模型对长距离依赖的捕捉能力。替换BiLSTM模型使用Bert或Bert变体来替换BiLSTM一般来说是可以获取更好的语义表达。调整随机失活层可以在embedding层后添加随机失活层也可以修改随机失活比例。2训练过程优化shuffles设置注意真正训练时需要将DataLoader中的shuffle设置为True梯度裁剪在反向传播时对梯度进行裁剪防止梯度爆炸比如预设最大梯度值为10然后反向传播计算梯度得到20那么等比例缩放得到梯度值为10除以200.5这样可以有效防止梯度爆炸。早停机制监控验证集F1值若连续多个epoch未提升则提前终止训练存储多次得到的f1值如果为提升那么提前终止训练。3训练数据优化如果训练集和验证集数据分布不同也就是说使用的是差距很大的样本会使模型的效果较差所以可以将数据打散后再送到dataloader中shuffleTrue这样可以防止一种情况数据存储在多个文件夹下面不同文件夹之间的数据关联性不高那么前几个文件夹的数据都用来训练大模型了后面几个文件夹的数据作为验证集效果不好除了这种方式之外也可以使用分类采样的方式。这种方式可以绝对类型上训练集和验证集的分布是一致的在每个文件夹里面的数据全部采用8:2的方式划分训练集和验证集这样训练效果可以更好。另外还有以下方法更多数据收集或标注更多数据送到模型中进行训练。实体替换保留实体边界随机替换实体内容如疾病名称、药品名称提升实体识别泛化能力。三、模型预测使用训练好的模型随机抽取文本进行NER3.1预测流程基本步骤1.实例化模型2.加载训练好的模型参数3.处理数据4.模型预测5.结果处理整体思路结果解析思路提取实体和标签获取标签类型先获取标签类型然后把这个类型添加到类型列表entity里面最后把实体和标签类型添加到实体列表entities里面3.2预测代码import torch from P03_NER.LSTM_CRF.config import Config from P03_NER.LSTM_CRF.model.BiLSTM import NERLSTM from P03_NER.LSTM_CRF.model.BiLSTM_CRF import NERLSTM_CRF from P03_NER.LSTM_CRF.utils.data_loader import word2id conf Config() id2tag {v: k for k, v in conf.tag2id.items()} print(fid2tag--{id2tag}) # 1.实例化模型 models {BiLSTM: NERLSTM, BiLSTM_CRF: NERLSTM_CRF} model models[conf.model](conf.embedding_dim, conf.hidden_dim, conf.tag2id, word2id, conf.dropout).to(conf.device) print(fmodel--{model}) # 2.加载训练好的模型参数 if conf.model BiLSTM: model.load_state_dict(torch.load(save_model/bilstm_best_f1.pth, weights_onlyTrue)) else: model.load_state_dict(torch.load(save_model/bilstm_crf_best_f1.pth, weights_onlyTrue)) def model2predict(text): # 3.处理数据 ids [] for char in text: if char not in word2id: ids.append(word2id[UNK]) else: ids.append(word2id[char]) # 需要给ids加上一个batch_size维度 ids_tensor torch.tensor([ids]).to(conf.device) # print(fids_tensor--{ids_tensor}) attention_mask (ids_tensor ! 0).long() # 4.模型预测 model.eval() with torch.no_grad(): if conf.model BiLSTM: # 获取预测结果 result model(ids_tensor, attention_mask) # print(fresult--{result}) predict result.argmax(dim-1).tolist()[0] # print(fpredict--{predict}) else: # 获取预测结果 predict model(ids_tensor, attention_mask)[0] # print(fpredict--{predict}) # 5.结果处理 tags [id2tag[tag_id] for tag_id in predict] # print(ftags--{tags}) # 将实体从文本中抽取出来返回一个字典 chars [char for char in text] result extract_entities(chars, tags) # print(fresult--{result}) return result def extract_entities(tokens, labels): entities [] # 用来保存所有 (实体类型, 实体) entity [] # 用来保存单个实体 entity_type None # 实体类型 for token, label in zip(tokens, labels): if label.startswith(B-): # 实体的开始 if entity: # 如果已经有实体先保存 entities.append((entity_type, .join(entity))) entity [] entity_type label.split(-)[1] entity.append(token) elif label.startswith(I-) and entity: # 实体的中间或结尾 entity.append(token) else: if entity: # 保存上一个实体 entities.append((entity_type, .join(entity))) entity [] # 如果最后一个实体没有保存手动保存 if entity: entities.append((entity_type, .join(entity))) # print(fentities--{entities}) return {entity: entity_type for entity_type, entity in entities} if __name__ __main__: text 小明的父亲患有冠心病及糖尿病无手术外伤史及药物过敏史 result model2predict(text) print(ftext--{text}) print(fresult--{result})预测结果

相关文章:

知识图谱(BILSTM+CRF项目完整实现、训练结果优化方向(面试))【第八章】

一、训练、评估模型 训练函数基本步骤: 1.构建数据迭代器Dataloader(包括数据处理与构建数据源Dataset) 2.实例化模型 3.实例化损失函数对象 4.实例化优化器对象 5.定义打印日志参数 6.开始训练 6.1 实现外层大循环epoch 6.2 将模型设置为训练模式 6.3 内部…...

NaViL-9B效果对比评测:vs Qwen-VL、InternVL在中文图文任务表现

NaViL-9B效果对比评测:vs Qwen-VL、InternVL在中文图文任务表现 1. 评测背景与模型介绍 NaViL-9B 是近期发布的一款原生多模态大语言模型,支持纯文本问答和图片理解功能。作为中文多模态领域的新成员,我们将其与市场上表现优异的 Qwen-VL 和…...

real-anime-z企业应用:品牌IP延展——从LOGO生成配套动漫风格VI素材

real-anime-z企业应用:品牌IP延展——从LOGO生成配套动漫风格VI素材 1. 引言:动漫风格VI设计的创新方案 在品牌视觉识别系统(VI)设计中,保持风格一致性是核心挑战。传统设计流程中,从LOGO延展出整套视觉素材需要设计师投入大量时…...

冰雪传奇三职业深度解析!官方认证下支持安卓、iOS、PC 三端互通

风华经典手游平台是国内知名游戏门户网站官网经典IP端游授权开发1:1复刻手游,用户可通过风华经典手游官网获取游戏及资讯礼包码,官网设置专属游戏客服提供游戏服务!本次为各位新手玩家带来《冰雪传奇三职业》提起传奇,…...

nli-MiniLM2-L6-H768性能解析:6层768维模型如何兼顾BERT级精度与推理速度

nli-MiniLM2-L6-H768性能解析:6层768维模型如何兼顾BERT级精度与推理速度 1. 模型概述 nli-MiniLM2-L6-H768是一个专为自然语言推理(NLI)与零样本分类设计的轻量级交叉编码器(Cross-Encoder)模型。这个模型在保持接近BERT-base精度的同时,通过精巧的架…...

利用GitHub Actions实现SDMatte模型的CI/CD自动化测试流水线

利用GitHub Actions实现SDMatte模型的CI/CD自动化测试流水线 1. 为什么需要自动化测试流水线 在AI模型开发过程中,每次代码变更或权重更新都可能影响最终效果。传统的人工测试方式存在几个明显痛点:测试覆盖率低、反馈周期长、环境不一致导致结果不可复…...

面向用药安全的多智能体协同决策系统第二阶段汇报

面向用药安全的多智能体协同决策系统第二阶段 一、阶段背景 在第一阶段中,项目已经完成了系统整体技术路线设计,确定了采用“前后端分离 多智能体后端调度 图谱审查 状态机控制”的总体方案,并明确了后端与模型微调方向将以 MIMIC-III、MI…...

go get -tool怎么用

go get -tool 是 Go 1.24 版本引入的新功能,用于将工具依赖(tool dependencies)添加到 go.mod 文件中,而不是下载到 go.mod 的 require 部分或单独维护 tools.go 文件。基本用法bash复制# 添加一个工具依赖(例如 golan…...

Spring AI Alibaba 1.x 系列【28】Nacos Skill 管理中心功能说明

文章目录1. 概述2. Nacos 中的 Skill2.1 Skill 的定义与结构2.2 Skill Registry 的核心价值3. Skill 管理3.1 生命周期3.1.1 创建3.1.2 草稿(Draft)3.1.3 提交审核(Submit)3.1.4 发布流水线(Pipeline)3.1.5…...

预算为0也能上系统?揭秘私藏的5个“零成本”数字化神器

这些年我陆续接触了不少低代码产品,最终沉淀下来的这五款,各自解决了一类典型问题。璞华易构:把流程管理还给业务人员第一,拖拽式表单编辑器,运营、财务十分钟就能搭出带校验的申请单,不用等IT排期。第二&a…...

nli-MiniLM2-L6-H768惊艳效果:支持‘跨语言标签’(English label + 中文文本)混合推理

nli-MiniLM2-L6-H768惊艳效果:支持跨语言标签(English label 中文文本)混合推理 1. 模型效果惊艳展示 nli-MiniLM2-L6-H768模型在零样本文本分类任务中展现出令人惊艳的效果,特别是其独特的跨语言标签混合推理能力。这个轻量级…...

Z-Image开源大模型调试工具:LM系列权重一键注入+生成结果自动标注

Z-Image开源大模型调试工具:LM系列权重一键注入生成结果自动标注 1. 工具概述 Z-Image是一款专为LM系列自定义权重设计的Transformer权重可视化测试工具,基于阿里云通义Z-Image底座开发。它解决了模型调试过程中的几个关键痛点: 权重切换繁…...

vLLM-v0.17.1模型服务API设计精髓:从入门到精通

vLLM-v0.17.1模型服务API设计精髓:从入门到精通 1. 快速认识vLLM API vLLM作为当前最流行的大模型推理框架之一,其API设计充分考虑了工程实践中的各种需求。最新发布的v0.17.1版本在保持接口简洁的同时,新增了多项实用功能。我们先来看一个…...

wps加载项安装

开发完以后怎么安装呢? window: 1.首先执行 wpsjs build,然后选择在线插件,然后将build里最里层文件里的内容全部复制然后启动一个node服务,放在如图public文件下,不会启node服务的就找后端部署下&#xff…...

计算机毕业设计:Python农产品电商数据挖掘与推荐系统 Flask框架 矩阵分解 数据分析 可视化 协同过滤推荐算法 深度学习(建议收藏)✅

1、项目介绍 技术栈 采用 Python 语言开发,基于 Flask 框架搭建后端服务,通过 requests 爬虫采集农产品数据,运用矩阵分解算法(带偏置的协同过滤推荐算法)结合随机梯度下降优化模型,前端使用 Echarts 实现…...

计算机毕业设计:Python棉花种植产量与市场价格监测系统 Django框架 ARIMA算法 数据分析 可视化 爬虫 大数据 大模型(建议收藏)✅

1、项目介绍 技术栈 采用 Python 语言开发,基于 Django 框架搭建后端服务,使用 MySQL 数据库进行数据存储,通过 requests 爬虫技术从棉花产业经济信息网采集数据,运用时间序列 ARIMA 预测算法模型进行产量与价格预测,前…...

别再只插USB了!树莓派Pico的VSYS、3V3、VBUS引脚供电方案全解析(附电池供电实战)

树莓派Pico供电系统深度实战:从锂电池管理到多电源无缝切换 当第一次将树莓派Pico从USB线缆上拔下来时,那种摆脱线材束缚的自由感令人兴奋——直到发现设备突然断电。这个场景揭示了嵌入式开发中最基础却最容易被忽视的问题:如何为移动中的Pi…...

HTTP协议必知必会详解

系列文章目录 文章目录系列文章目录摘要一、开篇:你真的分得清 HTTP 和 HTML 吗?二、HTTP 的本质:浏览器与服务器的 "约定语言"三、一次完整的 HTTP 请求,到底经历了什么?四、拆解 HTTP 报文:请求…...

golang如何使用sync.WaitGroup_golang sync.WaitGroup并发等待使用方法

WaitGroup 必须先 wg.Add(n) 再启动 goroutine,Done() 需与 Add 匹配且仅调用一次,Wait() 后不可复用或重置,超时需配合 goroutine 和 select 实现。WaitGroup 必须在启动 goroutine 前 Add很多人一上来就 go func() { wg.Done() }()&#xf…...

20260420给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Buildroot时解决网络异常Your network is not able to access sources.buil

unset RK_NETWORK_CHECK ./build.sh # 或你原来的编译命令20260420给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Buildroot时解决网络异常Your network is not able to access sources.buildroot.net! 2026/4/20 20:23缘起:解决编译错误1、 Running 95-extra-p…...

5分钟掌握Windows和Office一键激活:KMS_VL_ALL_AIO智能激活工具终极指南

5分钟掌握Windows和Office一键激活:KMS_VL_ALL_AIO智能激活工具终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Off…...

UDOP-large多模态文档教程:视觉编码器如何融合Layout坐标特征

UDOP-large多模态文档教程:视觉编码器如何融合Layout坐标特征 1. 引言 想象一下,你拿到一份复杂的英文研究报告PDF,里面有文字、表格、图表,还有各种标题和段落。你想快速知道这篇报告的核心内容是什么,或者想提取出…...

快速部署ComfyUI Qwen:人脸生成图像环境搭建与模型加载

快速部署ComfyUI Qwen:人脸生成图像环境搭建与模型加载 1. 环境准备与快速部署 1.1 系统要求检查 在开始部署前,请确保你的设备满足以下最低配置要求: 操作系统:Windows 10/11 64位、macOS 10.15或Linux发行版(如U…...

PyTorch 2.8镜像保姆级教程:RTX 4090D下FFmpeg 6.0+视频预处理流程详解

PyTorch 2.8镜像保姆级教程:RTX 4090D下FFmpeg 6.0视频预处理流程详解 1. 环境准备与快速部署 在开始视频预处理流程前,我们需要确保PyTorch 2.8镜像环境已正确部署。本镜像专为RTX 4090D 24GB显卡优化,预装了FFmpeg 6.0等视频处理工具链。…...

GEO优化中的内容特征提取:AI如何判断内容质量?

在GEO(生成式引擎优化)实践中,核心问题之一是:AI大模型如何判断一篇内容的质量?哪些特征会影响内容的收录和推荐?本文从技术角度分析内容特征提取机制,为GEO优化提供量化参考。一、内容特征提取…...

nli-MiniLM2-L6-H768惊艳效果展示:SNLI风格英文文本对三分类高置信度输出

nli-MiniLM2-L6-H768惊艳效果展示:SNLI风格英文文本对三分类高置信度输出 1. 模型核心能力展示 nli-MiniLM2-L6-H768作为轻量级自然语言推理模型,在文本关系判断任务上展现出惊人的准确度。不同于生成式模型,它专注于分析两段文本之间的逻辑…...

从选题到成稿:我是如何用AI搞定本科毕业论文的

又到一年毕业季,论文这座大山如期而至。作为刚刚度过这段“水深火热”时期的过来人,太理解各位学弟学妹此刻的心情了——选题方向模糊不清,文献资料查到头秃,院校要求看得云里雾里,码字速度更是感人肺腑。我当年也是这…...

Qianfan-OCR多场景应用:科研实验室仪器操作手册OCR→安全警告自动标红

Qianfan-OCR多场景应用:科研实验室仪器操作手册OCR→安全警告自动标红 1. 项目背景与价值 在科研实验室日常工作中,仪器操作手册是保障实验安全与规范的重要文档。传统人工处理方式面临三大痛点: 效率低下:实验室每年新增数十种…...

AArch64系统指令集解析与性能优化实践

1. AArch64系统指令概述AArch64是ARMv8架构的64位执行状态,其系统指令集为操作系统和底层软件开发提供了丰富的硬件控制能力。作为ARM架构的重大革新,AArch64不仅扩展了寄存器位宽,更在内存管理、虚拟化支持和安全隔离等方面引入了全新机制。…...

AI人体骨骼检测保姆级教程:3步完成部署,轻松绘制骨骼连线图

AI人体骨骼检测保姆级教程:3步完成部署,轻松绘制骨骼连线图 1. 引言:为什么选择MediaPipe进行人体骨骼检测 在计算机视觉领域,人体姿态估计技术已经广泛应用于健身指导、动作捕捉、虚拟试衣等多个场景。传统方案往往需要昂贵的G…...