人脸自收集数据集辅助制作工具——人脸姿态数据标注
综述
我们在进行人脸属性识别深度学习算法研究过程中除了使用开源带标签的数据以外,都会根据具体使用场景与需求用到大量自收集的图像数据(开源/爬虫/自拍等),然这些数据一般是没有人脸对应属性标注标签的。而我们在研究人脸各种检测算法时最终训练需要的数据就是图像+标签,所以如何快速标注这些特定数据便是数据收集工作的重点。本文主要讲一下如何通过python工具辅助标注人脸姿态数据,在此做一个分享。
标注目标确定
- 待标注图片:带有人脸的照片(单人脸/人脸区域在整个图像的占比足够多/各种场景下的人脸)
- 标注属性:人脸3个方向旋转角度标注,偏航角yaw 左右转头(左+ 右-) 俯仰角pitch 抬头低头(上+ 下-) 翻滚角roll 左右歪头(左- 右+)(如下图所示)
- 标签文件:txt文本
- 标注文本格式:
图片文件相对路径 yaw pitch roll
}
- 数据命名规范:图片文件根目录与标签文件同名(除后缀名以外)
辅助工具开发所需的关键技术
去坐标图像显示
- 实现功能:将图像正常显示在一个控件内,去除各种干扰显示
- 关键代码:
# 显示待标记图片im = Image.open(img_path)plt.imshow(im)plt.xticks([]) # 去掉横坐标值plt.yticks([]) # 去掉纵坐标值plt.axis('off')plt.gca().xaxis.set_major_locator(plt.NullLocator())plt.gca().yaxis.set_major_locator(plt.NullLocator())plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0)plt.margins(0, 0)plt.show()
待标注图像遍历处理
- 实现功能:遍历待标注图片,并逐一进行显示和标注操作
- 关键代码:
def MarkToolWithImg(wait_mark_image_root_path, output_label_txt_path):"""根据图片标注并生成标签文件:param wait_mark_image_root_path: 待标记图片根目录路径:param output_label_txt_path: 输出标签路径:return:"""for parent, dirnames, filenames in os.walk(wait_mark_image_root_path):for filename in filenames:img_path = os.path.join(parent, filename)# 消重f = open('Face_data_mark.log', 'rb')a = f.readlines()matchObj = re.search(filename, "%s" % a, re.M | re.I)if matchObj:print(img_path + " 已标记过")else:print("正在标记:" + str(img_path))imgShowAndMark(img_path, output_label_txt_path, None)
def MarkToolWithTxt(label_txt_path):"""根据标签文件定位图片并更新标注:param label_txt_path: 已标注标签路径:return:"""with open(label_txt_path, 'r') as tt:while True:try:line = tt.readline()num = list(map(str, line.strip().split()))# 获取图片路径img_path = num.__getitem__(0)# 过滤已标注的行with open('Face_data_mark.log', 'r') as fdm:markedLines = fdm.readlines()fdm.close()current_img_name = os.path.basename(img_path)print(current_img_name)is_mark = Falsefor c in markedLines:if current_img_name.strip() in c:print(img_path + " 已标注过")is_mark = Trueif is_mark is False:print("正在标注:" + str(img_path))imgShowAndMark(img_path, label_txt_path, line)except Exception as e:print("标注结束:" + str(e))breaktt.close()
待标注图像人脸姿态角度动态设置与保存
- 实现功能:判断待标注图片中人脸三个方向的姿态角度旋转情况,并可以通过手动输入标注3个方向的姿态角度(-90~90),并保存到标签文件中。
- 关键代码:
if current_line != None:# 获取待标注目标行原信息global linelistwith open(label_txt_path, 'r') as fr:linelist = fr.readlines()fr.close()# 待标注行信息global oldLinefor line in linelist:if img_path in line:oldLine = line# 根据对比信息标注新的属性值newLine = myInput("请输入当前图片姿态 Yaw Pitch Roll 属性,已标注属性提示为:" + str(current_line))print("你输入的属性值为,{}!".format(newLine).strip())# 用新标注行替换原标注行replaceLine(label_txt_path, oldLine, newLine)else:newLine = myInput("请输入当前图片姿态 Yaw Pitch Roll 属性")print("你输入的属性为,{}!".format(newLine).strip())with open(label_txt_path, "a") as ot:ot.write(newLine)ot.close()# 插入对应标签文件指定行logging.info("已标记为:" + str(newLine).strip())
标注工具完整工程地址
PoseAnnotation
工具使用
至此,我们的人脸姿态角度标注工具便开发完成了,完美解决了人脸姿态信息标注难的问题,极大提升了标注工作的效率,不知各位大佬是否还有其他更好的方法,欢迎评论区交流讨论。
人脸自收集数据集辅助制作工具——人脸姿态数据标注相关推荐
- 人脸自收集数据集辅助制作工具——人脸关键点数据标注
综述 我们在进行人脸属性识别深度学习算法研究过程中除了使用开源带标签的数据以外,都会根据具体使用场景与需求用到大量自收集的图像数据(开源/爬虫/自拍等),然这些数据一般是没有人脸对应属性标注标签的.而 ...
- 人脸自收集数据集辅助制作工具——多人在线协同标注系统
综述 我们在进行人脸属性识别深度学习算法研究过程中除了使用开源带标签的数据以外,都会根据具体使用场景与需求用到大量自收集的图像数据(开源/爬虫/自拍等),然这些数据一般是没有人脸对应属性标注标签的.而 ...
- 我的世界红石音乐高级教程 python辅助制作工具
我的世界红石音乐高级教程 python辅助制作工具 https://www.bilibili.com/video/av52803181/ QQ群:374821554 游戏资源下载(材质.MOD等)提取 ...
- 3ml乐谱制作工具_每个数据科学家应在其下一个ml项目中使用两种工具
3ml乐谱制作工具 by Braden Riggs and George Williams (gwilliams@gsitechnology.com) Braden Riggs和George Will ...
- T-LESS:制作RGBD 6D姿态数据集和标签
T-LESS: An RGB-D Dataset for 6D Pose Estimation of Texture-less Objects 该数据集网址已公开:http://cmp.felk.cv ...
- 【人脸表情识别】基于图片的人脸表情识别,基本概念和数据集
大家好,欢迎来到我们人脸表情识别的专栏,这是专栏的第一篇文章,今天我们讨论的问题是关于表情识别的基本概念和数据集. 作者&编辑 | Menpinland 在较早之前,有三AI已经有一篇< ...
- 这款课件制作工具可以轻松画出数轴
现代教学要求老师们与时俱进,掌握一些比较好用的教学辅助工具,其中几何画板就是比较好用的.对于数学老师来说,数轴经常要用到,那么有什么好的办法可以画出数轴呢?下面就来学习具体绘制技巧. 几何画板软件免费 ...
- coco 数据集_Tensorflow对COCO目标检测数据预处理
COCO数据集是微软发布的一个大型图像数据集, 专为对象检测.分割.人体关键点检测.语义分割和字幕生成而设计.这个数据集还提供了Matlab, Python 和 Lua 的 API 接口. 该 API ...
- 【影像三维地形图制作(附练习数据)
= 一.数据来源介绍 数字高程数据 数字高程数据来源于中国科学院资源环境科学与数据中心(https://www.resdc.cn/Default.aspx). 公主岭市遥感影像数据 遥感影像数据数据来 ...
最新文章
- mysql 开仓函数_MySQL函数大全 及用法示例
- 百度前端技术学院Task20 笔记
- 使用 IntelliJ IDEA 查看类图,内容极度舒适
- Cortex-M3-异常与中断-向量表 s
- EnumWindows 使用
- 将mysql的data目录移走方法
- 5815. 扣分后的最大得分
- 迄今为止最快的 JSON 序列化工具 Jil
- 网信办:从严整治激情打赏、高额打赏、诱导打赏
- 使用Postfix与Dovecot部署邮件系统
- 笔记本自动打开计算机,笔记本电脑自动开机是什么原因
- 山东省非计算机专业,山东省高校非计算机专业教学考试(选择、判断含答案)2...
- MemoryCache缓存help类
- 【常垒·投资】芯率智能完成A轮融资
- Matlab验证码识别
- 【学习日志】2023.04.24 C++ 调整黑点、白点和中值以增加、平衡或降低对比度
- Vue使用echarts报错提示 vue.runtime.esm.js?2b0e:1897 Error: Initialize failed: invalid dom.
- SDN和NFV的主要区别
- 【EMMC】MSM8953里时钟是如何分频的
- C++技术的主要应用领域