nanodet训练手势识别模型

article/2025/10/29 18:37:57

序言

前段时间nanodet爆火,以非常小的模型和运算量,取得了超过tiny-yolov4的精度,非常惊艳,因为时间问题一直没有尝试,最近有空决定尝试一下。先来看下作者给的模型效果
在这里插入图片描述
在这里插入图片描述

一、nanodet安装

首先安装nanodet的环境包:

pip install Cython termcolor numpy tensorboard pycocotools matplotlib pyaml opencv-python tqdm

然后安装nanodet

git clone https://github.com/RangiLyu/nanodet.git
cd nanodet
python setup.py develop

安装结束后测试一下模型有没有问题,下载coco预训练权重密码erbn,然后运行demo查看是否安装成功:

python demo/demo.py image --config CONFIG_PATH --model MODEL_PATH --path IMAGE_PATH
  • CONFIG_PATH 是config/nanodet-m.yaml
  • MODEL_PATH 是刚才下载的权重
  • IMAGE_PATH 是测试图片路径

在这里插入图片描述
效果好像还不错,确认没问题后开始准备数据集。

二、准备数据集

这里使用的是自己收集的手势识别数据集,类别总共有6类,分类是:上、下、左、右、拳头、手掌,采用VOC格式标注;
在这里插入图片描述
nanodet支持voc和coco两种格式的训练,所以这里直接按照voc格式训练,当然也可以转换为coco格式,转换代码在之前的博文中VOC格式标注转COCO格式。我的数据集目录结构为:
在这里插入图片描述
修改配置文件,将config/nanodet_custom_xml_dataset.yml复制一份,另取名为nanodet-m-shoushi.yml,按需修改以下几处:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改结束后直接运行:

python tools/train.py config/nanodet-m-shoushi.yml

正常运行输出界面:
在这里插入图片描述
最后的训练结果,好像还不错:
在这里插入图片描述

三、效果展示

本来想上nanodet、yolov5s、yolo-fastest训练的对比的,发现上不了视频。那算了,随机截图几张看下效果图:

  • affirm 表示拳头
  • start 表示手掌

效果并不是特别理想,置信度比较低,误检和漏检比较严重,使用同样的数据集,用yolo-fastest和yolov5s训练出来的效果要远远好于nanodet,yolov5s就不用说了,和另外两个不是一个量级的,效果自然是要比较好,但是很有趣的现象是,nanodet在测试集上的map精度要比yolo-fastest高很多,但是实际摄像头的测试效果却比yolo-fastest差很多。这是不是可以说明,在一些固定背景下的检测,也许更适合用nanodet,在背景更复杂的场景,yolo-fastest泛化能力可能更强一些。

为什么要和yolo-fastest对比?作为两个压缩到极致的检测算法,还是很有必要对比一下的,感兴趣的可以看这两个优秀算法的介绍,牛逼克拉斯。

Yolo-Fastest:超超超快的开源ARM实时目标检测算法
NanoDet:轻量级(1.8MB)、超快速(移动端97fps)目标检测项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/yy9KSg0f.shtml

相关文章

Pytorch教程[10]完整模型训练套路

一般的模型构建都是按照下图这样的流程 下面分享一个自己手动搭建的网络 from model import * import torchvision import torch from torch.utils.tensorboard import SummaryWriter from torchvision import transforms from torch import nn from torch.utils.data import …

PaddleOCR学习(二)PaddleOCR检测模型训练

这一部分主要介绍,如何使用自己的数据库去训练PaddleOCR的文本检测模型。 官方教程https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/detection.md 一、准备训练数据 首先你需要有自己的数据,如果没有自己的数据,推荐使…

迁移学习的模型训练

用深度学习解决目标检测有两个重要工作: 1、设计、实现、训练和验证模型 模型如果设计模型如何编程实现如何收集足够的数据来训练并验证模型是否符合预期 从头开始设计、实现、训练和验证模型是需要有众多深度学习算法人才做支撑,并且极其耗时耗力 2、…

TF2.0模型训练

TF2.0模型训练 概述数据集介绍1、通过fit方法训练模型准备数据创建模型编译模型训练模型 2、通过fit_generator方法训练模型构建生成器创建模型编译模型训练模型 3、自定义训练准备数据创建模型定义损失函数及优化器训练模型 下一篇TF2.0模型保存 概述 这是TF2.0入门笔记【TF2…

TensorFlow 2.0 —— 模型训练

目录 1、Keras版本模型训练1.1 构造模型(顺序模型、函数式模型、子类模型)1.2 模型训练:model.fit()1.3 模型验证:model.evaluate()1.4 模型预测:model.predict()1.5 使用样本加权和类别加权1.6 回调函数1.6.1 EarlySt…

如何在jupyter上运行Java代码(适用LINUX)

如何在jupyter上运行Java代码 1.下载必须软件 下载JDK且JDK版本必须 ≥ 9 ≥9 ≥9从github上下载ijava 附 : ijava下载链接.装有jupyter,我在LINUX上是直接装的anaconda 安装过程 将下载的ijava压缩包解压出来,并在此路径用该命令 : sudo…

Java单元测试介绍

文章目录 单元测试单元测试基本介绍单元测试快速入门单元测试常用注解 单元测试 单元测试基本介绍 单元测试: 单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,…

Jupyter 配置 Java环境,写Java代码,测试成功

本次简单诉说下怎么通过jupyter安装iJava,写Java代码。 安装Java的不说了 我使用的是Java15 然后去:https://github.com/SpencerPark/IJava/releases 下载zip,不要下载其他的 得到就是一个py文件 下面就是一个 python install.py 我这里就…

java调用python执行脚本,附代码

最近有个功能需要java调用python脚本实现一些功能,前期需要做好的准备:配置好python环境,如下: 以下展示的为两种,一种为生成图片,另一种为生成字符串。 package com.msdw.tms.common.utils.py;import ja…

Selenium Java自动化测试环境搭建

IDE用的是Eclipse。 步骤1:因为是基于Java,所以首先要下载与安装JDK(Java Development Kit) 下载: 点击这里下载JDK 安装:按照默认安装一路点next就可以了。 验证:安装完成后,在命…

java单元测试(Junit)

相关代码下载链接: http://download.csdn.net/detail/stevenhu_223/4884357 在有些时候,我们需要对我们自己编写的代码进行单元测试(好处是,减少后期维护的精力和费用),这是一些最基本的模块测试。当然&…

Java单元测试工具:JUnit4(一)——概述及简单例子

(一)JUnit概述及一个简单例子 看了慕课网的JUnit视频教程: http://www.imooc.com/learn/356,总结笔记。 这篇笔记记录JUnit的概述,以及一个快速入门的例子。 1.概述 1.1 什么是JUnit ①JUnit是用于编写可复用测试集的…

Linux下执行Python脚本

1.Linux Python环境 Linux系统一般集成Python,如果没有安装,可以手动安装,联网状态下可直接安装。Fedora下使用yum install,Ubuntu下使用apt-get install,前提都是root权限。安装完毕,可将Python加入环境变…

python pytest脚本执行工具

pytest脚本执行工具 支持获取当前路径下所有.py脚本 添加多个脚本,一起执行 import tkinter as tk from tkinter import filedialog import subprocess import os from datetime import datetimedef select_script():script_path filedialog.askopenfilename(fil…

linux上运行python(简单版)

linux上运行python(简单版) 一、前提准备1.centOS72.挂载yum源[http://t.csdn.cn/Isf0i](http://t.csdn.cn/Isf0i) 二、安装python3三、运行程序 一、前提准备 1.centOS7 2.挂载yum源http://t.csdn.cn/Isf0i 在终端进行安装python3 二、安装python3 …

linux怎么运行python脚本?

linux运行python脚本的方法: 1、命令行执行: 建立一个test.py文档,在其中书写python代码。之后,在命令行执行:python test.py 说明:其中python可以写成python的绝对路径。使用which python进行查询。 注…

java实现远程执行Linux下的shell脚本

java实现远程执行Linux下的shell脚本 背景导入Jar包第一步:远程连接第二步:开启Session第三步:新建测试脚本文件结果报错 背景 最近有个项目,需要在Linux下的服务器内写了一部分Python脚本,业务处理却是在Java内&…

Java运行Python脚本

前段时间遇到了在JavaWeb项目中嵌入运行Python脚本的功能的需求。想到的方案有两种,一种是使用Java技术(Jython或Runtime.exec)运行Python脚本,另一种是搭建一个Python工程对外提供相应http或webservice接口。两种方案我都有实现&…

Java项目分层

MVC模式 在实际的开发中有一种项目的程序组织架构方案叫做MVC模式,按照程序 的功能将他们分成三个层,如下图:Modle层(模型层)、View层(显示层)、Controller层(控制层)。…

java项目收获总结_java开发项目收获心得

1 java开发项目收获心得 it行业现在的发展如日中天,很多人都纷纷走进这个行业,而java作为跨平台的编程语言更是受欢迎。java其实相对其他语言来说的确很有优势,但是也有点缺陷,但是以后发展到什么程度,谁都不知道。那么下面小编给大家说说java开发项目收获心得,希望能对你…