初步研究Pose_300W_LP datasets.py

mat文件参数解读

Color_para:颜色参数,用于描述图像的颜色属性,比如图像的亮度、对比度等信息。
亮度属性、对比度属性、饱和度属性(颜色越鲜艳)、色调属性(色调越偏向蓝色)、色温属性(色温越高,色彩偏白)、色调偏移属性(颜色的相对变化程度)、标志位或者缩放因子

Exp_para:表情参数,用于描述人脸的表情状态,比如微笑、皱眉等。

Illum_para:光照参数,用于描述图像中的光照情况,比如光照强度、光照方向等。

Pose_Para:姿态参数,用于描述人脸的姿态,包括头部的旋转、倾斜等。

Pt2d:关键点参数,即关键点坐标,用于描述人脸上的关键点位置,比如眼睛、鼻子、嘴巴等。

roi:感兴趣区域参数,用于描述图像中感兴趣的区域,通常用矩形框来表示。

Shape_para:形状参数,用于描述人脸的形状特征,比如脸部的轮廓、轮廓曲线等。

Tex_para:纹理参数,用于描述人脸的纹理特征,比如肤色、皱纹等。

专有名词

Binned labels:离散化的标签,用于分类任务,通过将连续值映射到预定义的区间中获得。
bins = np.array(range(-99, 102, 3))

这里定义了一个从 -99 到 102 的数组,步长为 3,表示将范围 [-99, 102) 分成宽度为 3 的区间。
映射到离散区间:

binned_pose = np.digitize([yaw, pitch, roll], bins) - 1

np.digitize 函数用于将 yaw、pitch 和 roll 的连续值映射到上述定义的区间中。

  • 1 的操作是为了将结果的索引从0开始。
    示例:
    假设 yaw = 10, pitch = -15, roll = 45,通过分箱后的结果 binned_pose 可能是 [36, 28, 48]。这里 36 表示 yaw 落在区间 [9, 12),28 表示 pitch 落在区间 [-18, -15),48 表示 roll 落在区间 [45, 48)。

用途:
这种离散化处理通常用于分类任务,因为分类模型需要离散的标签。比如在人脸姿态估计中,模型可以被训练来预测某个姿态角度落在哪个区间。

Continuous Labels

Continuous labels 指的是原始的连续数值标签,在你的代码中是指 yaw、pitch 和 roll 以度为单位的实际角度值。

具体操作:
获取连续标签:

cont_labels = torch.FloatTensor([yaw, pitch, roll])

这里 cont_labels 是一个包含 yaw、pitch 和 roll 的浮点数张量(Tensor)。
示例:
假设 yaw = 10, pitch = -15, roll = 45,则 cont_labels 的结果是 torch.FloatTensor([10, -15, 45])。

用途:
连续标签通常用于回归任务,因为回归模型需要预测的是连续数值。比如在姿态估计任务中,如果需要精确预测头部的角度,就需要使用连续标签进行训练和评估。

总结
Binned Labels:离散化的标签,用于分类任务,通过将连续值映射到预定义的区间中获得。
Continuous Labels:连续的原始标签,用于回归任务,直接使用原始的连续数值。
在你的代码中,最终返回了 img、labels(binned labels)、cont_labels(continuous labels)和 self.X_train[index]:

return img, labels, cont_labels, self.X_train[index]

这意味着模型可以同时使用离散化的标签进行分类训练,并且还可以使用连续的标签进行精确预测。

datasets所需要的300W_LP的Matlab文件中的所需要的元素有Pose_para与pt2d

pt2d = utils.get_pt2d_from_mat(mat_path)

在这里插入图片描述
在这里插入图片描述

pose = utils.get_ypr_from_mat(mat_path)

在这里插入图片描述

在这里插入图片描述

初步研究Pose_300W_LP datasets.py

1、打开图像:

使用PIL.Image库打开图像文件,并将其转换为指定的图像模式。
2、获取标注数据:

通过标注文件路径获取2D点坐标和姿势信息。
3、裁剪图像:

松散地裁剪脸部区域,计算裁剪边界时加入随机性以增强数据的多样性。
4、姿势角度转换:

将姿势信息从弧度转换为角度。
5、随机图像增强:

随机翻转图像以增加训练数据的多样性。
随机模糊图像以模拟图像模糊效果。
姿势值分箱:

将姿势角度进行分箱处理,以便进行分类任务。
在这里插入图片描述

返回结果:

返回处理后的图像、分箱后的标签、连续的姿势标签以及图像文件名。
在这里插入图片描述

问题1 k值怎么取

以下几点解释了为什么选择这个范围的k值是有道理的:

增强数据多样性:

在图像数据处理中,特别是在人脸检测和姿态估计任务中,增加数据的多样性可以有效提高模型的泛化能力。通过随机调整裁剪边界,可以生成各种不同的训练样本,帮助模型更好地适应不同的场景和条件。
适度随机扩展:

选择0.2到0.4的范围可以确保裁剪边界的扩展适度。太小的范围可能导致扩展不明显,无法显著增加数据多样性;而太大的范围可能导致裁剪区域包含过多背景信息,甚至丢失关键的脸部特征。
平衡背景和主体:

扩展裁剪边界时,适度的k值可以在包含足够背景信息的同时,仍然保持脸部作为主体。这有助于模型在学习时能够识别脸部特征和背景特征之间的关系,而不会被过多的背景信息干扰。
防止过拟合:

通过引入随机性,模型可以在训练过程中看到更广泛的输入变化,这有助于减少过拟合。在实际应用中,测试数据的分布可能与训练数据有所不同,通过这种随机裁剪可以使模型更具鲁棒性。
实验验证:

选择0.2到0.4的范围可能是基于实验验证得出的经验值。在实际操作中,数据科学家和工程师们通常会通过一系列实验来确定最优的参数范围,以达到最佳的模型性能。
综上所述,k值在0.2到0.4之间的选择是一种折中的方案,既能有效增加训练数据的多样性,又能保持裁剪后图像的有效性,从而有助于提高模型的性能和鲁棒性。

def __getitem__(self, index):# 打开图像文件img = Image.open(os.path.join(self.data_dir, self.X_train[index] + self.img_ext))img = img.convert(self.image_mode)# 获取标注文件路径mat_path = os.path.join(self.data_dir, self.y_train[index] + self.annot_ext)# 松散地裁剪脸部区域pt2d = utils.get_pt2d_from_mat(mat_path)x_min = min(pt2d[0,:])y_min = min(pt2d[1,:])x_max = max(pt2d[0,:])y_max = max(pt2d[1,:])# k = 0.20.40 之间的随机值k = np.random.random_sample() * 0.2 + 0.2x_min -= 0.6 * k * abs(x_max - x_min)y_min -= 2 * k * abs(y_max - y_min)x_max += 0.6 * k * abs(x_max - x_min)y_max += 0.6 * k * abs(y_max - y_min)img = img.crop((int(x_min), int(y_min), int(x_max), int(y_max)))# 获取以弧度表示的姿势pose = utils.get_ypr_from_mat(mat_path)# 转换为角度pitch = pose[0] * 180 / np.piyaw = pose[1] * 180 / np.piroll = pose[2] * 180 / np.pi# 随机翻转图像rnd = np.random.random_sample()if rnd < 0.5:yaw = -yawroll = -rollimg = img.transpose(Image.FLIP_LEFT_RIGHT)# 随机模糊图像rnd = np.random.random_sample()if rnd < 0.05:img = img.filter(ImageFilter.BLUR)# 将值分箱bins = np.array(range(-99, 102, 3))binned_pose = np.digitize([yaw, pitch, roll], bins) - 1# 获取目标张量labels = binned_posecont_labels = torch.FloatTensor([yaw, pitch, roll])# 应用变换if self.transform is not None:img = self.transform(img)return img, labels, cont_labels, self.X_train[index]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/844289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leecode热题100---二分查找---34:在排序数组中查找元素的第一个和最后一个的位置

题目&#xff1a; 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 方法1、枚举 思路&#xff1a;通过正向枚举和反向枚举找到对应…

【EI会议】第二届计算机、物联网与智慧城市国际会议

第二届计算机、物联网与智慧城市国际会议 快速通道 投稿链接&#xff1a;loading 截稿时间&#xff1a;9月15日 检索&#xff1a;EI检索 一、会议信息 大会官网&#xff1a;www.ciotsc.org 会议地点&#xff1a;湖南株洲 会议时间&#xff1a;2023年11月15日-17日 二、征稿主…

Go语言redis框架 — go-redis

https://zhuanlan.zhihu.com/p/645669818 一、简述 1. API友好&#xff0c;命令名称和参数与Redis原生命令一致&#xff0c;使用简单方便。 2. 支持完整的Redis命令集&#xff0c;覆盖了字符串、哈希、列表、集合、有序集合、HyperLogLog等数据结构。 3. 支持连接池&#x…

MySQL中SQL表设计的注意事项

效率工具 推荐一个程序员的常用工具网站&#xff0c;效率加倍嘎嘎好用&#xff1a;程序员常用工具 云服务器 云服务器限时免费领&#xff1a;轻量服务器2核4G腾讯云&#xff1a;2核2G4M云服务器新老同享99元/年&#xff0c;续费同价阿里云&#xff1a;2核2G3M的ECS服务器只需99…

python读取xml列数据绘制3D散点图

python 读取excel 3d散点图 在Python中&#xff0c;要读取Excel文件并创建3D散点图&#xff0c;你可以使用pandas库来读取数据&#xff0c;然后使用matplotlib库来创建3D散点图。以下是一个简单的例子&#xff1a; 首先&#xff0c;确保安装了所需的库&#xff1a; pip inst…

初中地理的中考知识点 中考刷题

初中地理的中考知识点 小程序刷题&#xff0c;推荐用一叶兰 一&#xff0c;地球和地图 1、地球的形状是一个两极略扁&#xff0c;赤道略鼓的不规则的球体。地球的平均半径长是6371千米&#xff0c;赤道长约为4万千米。表面积约为5.1亿平方千米。 2、地球的自转所围绕的假想…

机器学习 - 不均衡学习和异常点检测

第一部分&#xff1a;不均衡学习 1. 引言 定义与重要性 不均衡数据集&#xff1a;指数据集中不同类别的数据数量差异很大&#xff0c;通常是正负样本比例严重失衡。例如&#xff0c;在医疗诊断中&#xff0c;患病患者&#xff08;正样本&#xff09;远少于健康患者&#xff…

基于扩散模型的,开源世界模型DIAMOND

日内瓦大学、微软研究院和爱丁堡大学的研究人员联合开源了&#xff0c;基于扩散模型的世界模型—DIAMOND。 研究人员之所以选择扩散模型作为基础&#xff0c;是因为可以更好地捕捉视觉细节&#xff0c;同时具有建模复杂多模态分布的能力&#xff0c;以便在不同的环境下进行训练…

vue3 手动简单 24h 甘特图封装

甘特图 手动封装简版甘特图&#xff0c;纯展示功能&#xff0c;无其他操作 文章目录 甘特图前言效果图组件使用总结 前言 开始的思路是使用echarts 瀑布图来体现&#xff0c;但是试验后发现&#xff0c;头部时间功能不满足&#xff0c;然未找到其他组件&#xff0c;于是手动封…

VTK实现三视图显示及交互STL模型

VTK实现STL模型的三视图显示及交互 最近收到需求&#xff0c;要实现多视图显示同一个STL模型&#xff0c;并且控制主窗口要其他试图窗口也跟着交互&#xff0c;花了点时间去尝试一下&#xff0c;把这个效果给实现出来了&#xff0c;而且实现也挺简单。 效果演示 要点 用同一个…

微火全域运营平台成优选,业内人士纷纷研究!

随着全域运营赛道的兴盛&#xff0c;越来越多的全域运营平台陆续上线&#xff0c;拓宽全域运营服务商选择空间的同时&#xff0c;也让全域运营平台选择成为了他们最为头疼的问题。在此背景下&#xff0c;各大全域运营平台背后的研发公司开始各出奇招&#xff0c;以获得更多全域…

EI期刊的定金和尾款

当涉及到EI&#xff08;工程索引&#xff09;期刊发表并支付定金和尾款时&#xff0c;许多学者和研究人员可能会感到担忧&#xff0c;因为这涉及到一定的风险。在探讨这个话题时&#xff0c;我们需要考虑几个因素&#xff0c;包括期刊的声誉、可信度、出版质量以及作者的权益保…

windows上安装miniforge和jupyterlab

1&#xff0c;下载miniforge3 GitHub - conda-forge/miniforge: A conda-forge distribution. 下载下来后傻瓜式安装就可以了 配置环境变量&#xff0c;在系统环境变量的path添加下列就行了&#xff0c;根据自己的路径修改 2&#xff0c;创建虚拟环境 conda create -n test …

layui实现表格根据数据来勾选已保存的数据

示例图 勾选一次保存后&#xff0c;每次进到查询都会看到被勾选的数据&#xff0c;代码如下&#xff1a; done: function(res, curr, count) {var groupId "[[${groupId}]]";$.ajax({url: //写后端获取数据的接口type: GET,success: function(data) {console.log(d…

3.00002 内存管理之postgresql如何初始化内存上下文,都初始化了哪些上下文?

文章目录 解决问题:PostgreSQL 7. 1 以前的版本在处理大量以指针传值的查询时一直存在着内存泄漏的问题,直到 查询结束才能将内存收回 。内存上下文-数据结构内存上下文-启动相关函数MemoryContextInitAllocSetContextCreate (宏,定义为:AllocSetContextCreateInternal (as…

ArcGIS常规操作-带你创建正确的空间数据库

ArcGIS常规操作-带你创建正确的空间数据库 ArcGIS一词在各行业中出现得越来越多&#xff0c;尤其在国土空间规划中&#xff0c;依赖大量GIS工具和技术的应用&#xff0c;ArcGIS成为了必备的技能之一。今天讲解一下ArcGIS的基础操作&#xff0c;让大家可以快速地上手ArcGIS&…

Graph Composer全面介绍

本文全面介绍了Graph Composer的功能、安装、使用方法以及高级特性&#xff0c;旨在帮助读者从基础到高级全面掌握Graph Composer的使用&#xff0c;并有效应用于智能视频分析和AI应用开发。 文章目录 Graph Composer概述Graph Composer的基本功能和优势Graph Composer与NVIDIA…

亮相CCIG2024,合合信息文档解析技术破解大模型语料“饥荒”难题

近日&#xff0c;2024中国图象图形大会在古都西安盛大开幕。本届大会由中国图象图形学学会主办&#xff0c;空军军医大学、西安交通大学、西北工业大学承办&#xff0c;通过二十多场论坛、百余项成果&#xff0c;集中展示了生成式人工智能、大模型、机器学习、类脑计算等多个图…

SQL问题的常用信息收集命令及解决思路 |OceanBase应用实践

面对SQL问题&#xff0c;大家的常用的分析思路是&#xff1a; 一、问题是否源于SQL本身&#xff1f;是的话需进行SQL调优。 二、SQL语句本身无误&#xff0c;但执行效果并未达到我们的预期效果。 检查当前的服务器负载状况&#xff0c;例如CPU利用率、内存占用、IO读写等关键…

[蓝桥杯 2021 省 AB2] 负载均衡

一.题目 题目描述 有 n 台计算机&#xff0c;第 i 台计算机的运算能力为 v i v_i vi​。 有一系列的任务被指派到各个计算机上&#xff0c;第 i 个任务在 a i a_i ai​ 时刻分配&#xff0c;指定计算机编号为 b i b_i bi​&#xff0c;耗时为 c i c_i ci​ 且算力消耗为…