基于via的课堂学生行为数据标注 与yolov7目标检测与自动标注系统

news2024/10/6 1:46:32

目录

  • 0 相关链接
  • 1. 总体功能描述
  • 2.软件安装说明
    • 2.1. 环境搭建
    • 2.2. 激活环境
    • 2.3. 退出环境
    • 2.4. 删除环境
    • 2.5. 安装opencv
  • 3.标注数据处理
    • 3.1. 收集
    • 3.2.via对标注举手
    • 3.3. via 举手标注转化yolo格式
    • 3.4. via动作标注扩展
    • 3.5. via 举手看书写字标注转化yolo格式
  • 4. 标注数据检查与可视化
    • 4.1. 检查via框与yolo框是否一致
    • 4.2. 检查小点
    • 4.3. 可视化数据
  • 5. yolov7 训练与测试
    • 5.1. GPU平台搭建yolov7
    • 5.2. yolov7训练
    • 5.3. yolov7测试
  • 6. yolov7自动标注
    • 6.1. yolov7检测图片
    • 6.2. yolo检测结果转via

0 相关链接

b站操作视频:https://www.bilibili.com/video/BV1cT411e7Rr/
文档:https://docs.qq.com/s/GmsJlEbZPL2QqvUMarbfxG
github:https://github.com/Whiffe/via2yolo

1. 总体功能描述

本系统基于via进行学生行为标注,将标注数据处理为yolo数据集格式。

  • 行为标注:将via中标注的数据转化为yolo格式数据集。
  • 数据可视化:对yolo格式的数据集进行可视化,可以直观看到标注状态。
  • 数据检查:包括数量上的检查和小点的检查
  • 动作扩展:对标注动作进行扩展。
  • 行为检测:并采用yolov7对数据集进行训练测试。

2.软件安装说明

本系统代码发布在github中,可在:https://github.com/Whiffe/via2yolo下载
图 4-1 github 中via2yolo项目

                                             图 2-1 github 中via2yolo项目

2.1. 环境搭建

conda create --name via2yolo python=3.8 -y

2.2. 激活环境

conda activate via2yolo

2.3. 退出环境

conda deactivate

2.4. 删除环境

conda remove -n via2yolo -all

2.5. 安装opencv

pip install opencv-python-headless==4.1.2.30

3.标注数据处理

3.1. 收集

每个文件夹中存放着截图的行为图片图 5-3视频截图

                                               图 3-3视频截图                              

3.2.via对标注举手

使用via在线标注工具,对收集的学生行为图片进行标注
在线标注的链接: https://yu-xiangdongg.gitee.io/via/via_image_annotator.html
图 5-4 via在线标注举手

                                               图 5-4 via在线标注举手      

标注完成后,保存json文件:
图 5-5 标注文件

                                               图 5-5 标注文件 

3.3. via 举手标注转化yolo格式

via2yolo1.py是将via转化为yolo格式
注意这是 via 中只框选了举手这个动作,就是将框转化为yolo格式,行为默认为 0

首先需要将via标注的图片(riseHand_via_dataset)放在via2yolo文件夹下
图 5-6 via2yolo 文件夹下的riseHand_via_dataset

    图 3-6 via2yolo 文件夹下的riseHand_via_dataset

执行的命令如下:

 python via2yolo1.py --riseHand_via_dataset ./riseHand_via_dataset --riseHand_Dataset ./riseHand_Dataset --tain_r 0.8

图 5-7 via 举手标注转化yolo 命令

                                          图 5-7 via 举手标注转化yolo 命令

yolo格式数据集存放在riseHand_Dataset文件夹中Alt在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

                                      图 3-8 riseHand_Dataset 结构

3.4. via动作标注扩展

对学生行为标注的动作进行扩展
扩展动作添加到如下代码中:
图 5-9 扩展动作代码

                                           图 3-9 扩展动作代码

执行命令如下:

python viaExtendAction1.py --riseHand_via_dataset ./riseHand_via_dataset --RRW_via_Dataset ./RRW_via_Dataset

图 5-10 扩展动作命令

                                            图 3-10 扩展动作命令

扩展后的动作数据集存放在RRW_via_Dataset文件夹中Alt在这里插入图片描述

在这里插入图片描述

                                          图 3-11 RRW_via_Dataset文件夹结构

在via在线标注
图 5-12 via在线标注举手、看书、鞋子

                                          图 3-12 via在线标注举手、看书、鞋子

对看书写字进行标注
图 5-13 via在线标注 看书

                                            图 3-13 via在线标注 看书

图 5-14 via在线标注 写字

                                        图 3-14 via在线标注 写字

3.5. via 举手看书写字标注转化yolo格式

via2yolo2.py是将via举手看书写字标注转化为yolo格式
注意这是 via 中多个动作转化为yolo格式
并且可以检查没有标注的框,并给出没有标注的图片名字

python via2yolo2.py --RRW_via_Dataset  ./RRW_via_Dataset --RRW_Dataset ./RRW_Dataset --tain_r 0.8

图 5-15 via 举手看书写字标注转化yolo格式命令

                               图 3-15 via 举手看书写字标注转化yolo格式命令

yolo格式数据集存放在RRW_Dataset文件夹中AltAltAlt

在这里插入图片描述
在这里插入图片描述
Alt
Alt
Alt
图 5-16 RRW_Dataset文件夹结构

                                        图 3-16 RRW_Dataset文件夹结构

4. 标注数据检查与可视化

4.1. 检查via框与yolo框是否一致

check.py的作用就是是检查via中的框的数量和yolo格式数据集的框的数量是否一致
执行命令如下:

python check.py --via_Dataset ./riseHand_via_dataset --yolo_Dataset ./riseHand_Dataset

图 6-1 检查via框与yolo框是否一致 命令

                                  图 4-1 检查via框与yolo框是否一致 命令

如果出现不匹配的情况,程序会暂停,输出错误。如果程序正常结束,那么via的标注框与yolo的框是匹配的

4.2. 检查小点

check_dot.py是将找到小点对应的图片名字(图片名字中包含路径信息)

执行命令如下:

python check_dot.py --dot_size 15 --via_Dataset ./riseHand_via_dataset

图 6-2 检查小点命令

                                           图 4-2 检查小点命令

如上图所示,找到有小点的图片,然后用去除小点的via在线标注网站: https://yu-xiangdongg.gitee.io/via/via_image_annotator2.html

图 6-3 via在线标注中小点展示

                                  图 4-3 via在线标注中小点展示

再次执行检查小点的程序
图 6-4 检查小点命令,无小点结果

                                     图 4-4 检查小点命令,无小点结果

如果dot_num输出为0,就代表没有小点了。

4.3. 可视化数据

visual.py的作用可视化yolo数据集

执行命令如下:

python visual.py --yolo_Dataset ./riseHand_Dataset --Visual_dir ./Visual

执行结束后,会生成Visual文件夹:
Alt
在这里插入图片描述
图 6-5 Visual文件夹结构

                                            图 4-5 Visual文件夹结构

5. yolov7 训练与测试

5.1. GPU平台搭建yolov7

在 autodl平台中搭建yolov7
在这里插入图片描述
在这里插入图片描述

                                     图 5-1 autodl平台中搭建yolov7

数据集放在/root/autodl-tmp/riseHand_Dataset
Alt

                                              图 5-2 数据集位置

在http://root/yolov7/data/下创建risehand.yaml
内容如下:
图 7-3 risehand.yaml内容

                                       图 7-3 risehand.yaml内容

然后修改/root/yolov7/cfg/training/文件下的yolov7.yaml
将其中的nc: 80 修改为nc: 1
图 7-4 修改yolov7.yaml内容

                                    图 5-4 修改yolov7.yaml内容

5.2. yolov7训练

在/root/yolov7目录下,执行命令。
训练命令如下:

python train.py --data risehand.yaml --cfg cfg/training/yolov7.yaml --weights yolov7.pt --epoch 100 --batch-size 8

图 7-5 yolov7训练命令

                                          图 5-5 yolov7训练命令

训练后,最后结果位于/root/yolov7/runs/train/exp/:
在这里插入图片描述

                                       图 5-6 yolov7训练结果图

5.3. yolov7测试

测试命令:

python detect.py --weights runs/train/exp/weights/best.pt  --source /root/autodl-tmp/riseHand_Dataset/images/val/0401061.png

测试结果:
图 7-7 yolov7测试结果

                                         图 5-7 yolov7测试结果

6. yolov7自动标注

经过了一定数量图片数据的标注(2.7k张),再经过yolov7的训练,就可以使用训练的权重对未标注的图片进行自动标注,然后人工检测微调标注框。

6.1. yolov7检测图片

首先,对未标注的文件夹进行压缩。
Alt

                                    图 6-1 对待标注文件进行压缩

然后将数据上传到autodl平台中的/root/autodl-tmp/,并解压
Alt

                              图 6-2 对待标注文件上传平台并解压

接下来使用yolov7对待标注文件进行检测,命令如下:

python detect.py --weights runs/train/exp/weights/best.pt  --source /root/autodl-tmp/1302 --save-txt --save-conf --name ./1302

图 8-3 yolov7对待标注文件进行检测

                             图 6-3 yolov7对待标注文件进行检测

检测结果位于:/rootyolov7/runs/detect/1302/下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

                          图 6-4 yolov7训练后对举手图片的检测结果

6.2. yolo检测结果转via

将https://github.com/Whiffe/via2yolo/blob/main/via3_tool.py, https://github.com/Whiffe/via2yolo/blob/main/via2yolo.py这两个文件上传到autodl平台中的/root/yolov7。
在这里插入图片描述
在这里插入图片描述

                                图 6-5 via3_tool.py与yolo2via.py上传autodl平台

将yolov7检测结果转化为via标注格式的json文件,输入如下命令

python yolo2via.py --img_path /root/autodl-tmp/1302 --label_path  ./runs/detect/1302/labels --json_path ./1302.json

运行结束后,再/root/yolov7目录下产生1302.json的文件
在这里插入图片描述

                                  图 6-6 yolov7检测结果转via格式的json文件

然后将生成的json文件下载到待标注的文件夹下:
在这里插入图片描述

                                         图 6-7 下载json文件到待标注文件夹下

打开在线标注的链接:https://yu-xiangdongg.gitee.io/via/via_image_annotator.html,导入图片与json文件,进行标注。
在这里插入图片描述

                                            图 6-8 via中导入图片与json文件

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

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

相关文章

Vue3.0中的响应式原理

回顾Vue2的响应式原理 实现原理: - 对象类型:通过 Object.defineProperty()对属性的读取、修改进行拦截(数据劫持)。 - 数组类型:通过重写更新数组的一系列方法来实现拦截。(对数组的变更方法进行了包裹&…

jekins部署java和vue

一、安装jekins,下面安装的是2.387.2版本 必须安装有jdk11或jdk17 二、部署java项目 1.安装插件:Maven Integration plugin和Deploy to container Plugin 2.配置全局环境变量:jdk、git、maven 3.创建maven项目 cd docus-server/docus-serv…

深入底层谈谈String

深入底层谈谈String一、聊聊字符串拼接【底层】二、聊聊String实现(源码分析)实现的接口内部属性及其部分构造函数部分方法说明明明replace,replaceAll,substring等方法得到了新的字符串,为什么说String是不变的呢&…

kali设置静态ip地址

Kali设置静态ip地址 本篇文章主要分3部分讲解如何为Kali虚拟机配置静态IP地址,使其能够与主机和外网进行通信。首先需要配置VMware的虚拟网卡,然后配置Kali虚拟机,最后配置主机。 一、配置VMware 打开VMware,选择【编辑】—【虚…

C++游戏分析与破解方法介绍

1、C游戏简介 目前手机游戏直接用C开发的已经不多,使用C开发的多是早期的基于cocos2dx的游戏,因此我们这里就以cocos2d-x为例讲解C游戏的分析与破解方法。 Cocos2d-x是一个移动端游戏开发框架,可以使用C或者lua进行开发,也可以混…

Spring框架核心与设计思想

文章目录一、Spring是什么?二、什么是IoC容器?什么是IOC?Spring IoC三、DI总结一、Spring是什么? 我们一般所说的Spring指的是Spring Framework(Spring 框架),它是一个开源的框架,Spring支持广泛的应用场景…

Spring事务详解

🏆今日学习目标: 🍀Spring事务详解 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪发光…

贯穿设计模式第三话--依赖倒转原则

🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是最爱吃鱼罐头,大家可以叫鱼罐头呦~🥳🥳🥳 从今天开始,将…

【GPT4】GPT4 官方报告解读

欢迎关注【youcans的AGI学习笔记】原创作品 【GPT4】GPT-4 官方报告解读1. GPT-4 官方介绍2. GPT-4 的性能2.1 GPT-4 在各种学术和专业考试中的性能2.2 GPT-4 在传统机器学习测试中的性能2.3 GPT-4 在不同语言测试中的性能3. GPT-4 的图像输入功能3.1 GPT-4 图像输入案例3.2 GP…

《分解因数》:质因数分解

目录 一、题目&#xff1a; 二、思路&#xff1a; 三、代码&#xff1a; 一、题目&#xff1a; 分解因数 《分解因数》题目链接 所谓因子分解&#xff0c;就是把给定的正整数a&#xff0c;分解成若干个素数的乘积&#xff0c;即 a a1 a2 a3 ... an,并且 1 < a1…

<数据结构> 链表 - 单链表(c语言实现)

B.最简单结构的链表——不带哨兵位单链表的实现&#xff08;关于哨兵位结点&#xff09; 一、不带哨兵位单链表结点的创建1.1 typedef 链表的数据类型 1.2 结点的结构体创建 二、单链表要实现的功能 三、需要包含的头文件四、函数接口一览为什么有些函数参数传递的是二级指针&a…

【FreeRTOS(二)】FreeRTOS新手入门——计数型信号量和二进制信号量的基本使用并附代码解析

写在前面&#xff1a; 本文章如有错漏之处&#xff0c;敬请指正&#xff0c;另外本文为网络材料整理&#xff0c;侵删。 FreeRTOS信号量的基本使用&代码解析一、信号量概述二、计数型信号量三、二进制信号量四、信号量函数API1、创建信号量2、删除一个信号量3、信号量释放4…

ASP.NET动态Web开发技术第5章

第5章数据验证一.预习笔记 1.验证控件概述&#xff1a; 2.RequiredFieldValidator&#xff08;必填验证&#xff09; 常用属性1&#xff1a;ControlToValidator:被验证的输入控件的ID 常用属性2&#xff1a;Text&#xff1a;验证失败时&#xff0c;验证控件显示的文本 常用…

8.3 总体分布的假设检验

学习目标&#xff1a; 如果我要学习总体分布的假设检验&#xff0c;我会采取以下步骤&#xff1a; 掌握基础概念&#xff1a;学习和掌握统计学中基础的概念&#xff0c;如总体、样本、假设检验、p值等等。 学习检验方法&#xff1a;了解和学习不同的总体分布假设检验方法&…

亚信科技AntDB数据库荣膺第十二届数据技术嘉年华(DTC 2023)“最具潜力数据库”大奖

近日&#xff0c;亚信科技AntDB数据库产品在第十二届数据技术嘉年华&#xff08;DTC 2023&#xff09;峰会上斩获“2022年度最具潜力数据库”大奖。亚信安慧副总裁张桦先生受邀参会&#xff0c;并发表了《AntDB数据库通信行业核心系统应用与创新》的主题演讲&#xff0c;分享了…

vue实现好看的相册、图片网站

目录 一、效果图 1.项目访问地址 2.画虫官方效果图&#xff1a; 3.作者实现的效果图&#xff1a; 二、代码实现 1.项目结构截图 2.路由配置代码&#xff1a; 3. 头部底部主页面内容显示容器的代码 4.首页&#xff0c;即标签页的代码 三、项目启动说明 四、总结 一、…

Android---MVC/MVP/MVVM的演进

目录 一个文件打天下 一个文件--->MVC MVC--->MVP MVP--->MVVM 6大设计原则 完整demo 我们通过"#字棋"游戏来展现MVC-->MVP-->MVVM 之间的演进 一个文件打天下 数据、视图以及逻辑都放在一个 class 里面。而一个 class 里最多 500 行代码&…

springboot 密码加密

首先介绍一下jasypt的使用方法 版本对应的坑 使用的时候还是遇到一个坑&#xff0c;就是jasypt的版本与spring boot版本存在对应情况。可以看到jasypt是区分java7和java8的&#xff0c;也存在依赖spring版本的情况。 自己尝试了一下 在使用jasypt-spring-boot-starter的前提…

优思学院|职场达人有什么晋升秘诀?

作为职场人士&#xff0c;升职晋升是我们一直追求的目标。然而&#xff0c;在职场中&#xff0c;竞争是激烈的&#xff0c;只有那些真正做到了突出表现和积极进取的人才能获得晋升机会。这里将分享七个职场达人的晋升秘诀&#xff0c;希望对那些正在寻找升职机会的人有所帮助。…

Python圈的普罗米修斯——一套近乎完善的监控系统

文章目录前言一、怎么采集监控数据&#xff1f;二、采集的数据结构与指标类型2.1 数据结构2.2 指标类型2.3 实例概念2.4.数据可视化2.5.应用前景总结前言 普罗米修斯(Prometheus)是一个SoundCloud公司开源的监控系统。当年&#xff0c;由于SoundCloud公司生产了太多的服务&…