【深度学习】安全帽检测,目标检测,Faster RCNN训练
文章目录
- 资料
- 环境
- 尝试训练
- 安全帽数据训练
- 测试
- 预测
- 全部数据、代码、训练完的权重等资料见:
资料
依据这个进行训练:
https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/pytorch_object_detection/faster_rcnn
├── backbone: 特征提取网络,可以根据自己的要求选择
├── network_files: Faster R-CNN网络(包括Fast R-CNN以及RPN等模块)
├── train_utils: 训练验证相关模块(包括cocotools)
├── my_dataset.py: 自定义dataset用于读取VOC数据集
├── train_mobilenet.py: 以MobileNetV2做为backbone进行训练
├── train_resnet50_fpn.py: 以resnet50+FPN做为backbone进行训练
├── train_multi_GPU.py: 针对使用多GPU的用户使用
├── predict.py: 简易的预测脚本,使用训练好的权重进行预测测试
├── validation.py: 利用训练好的权重验证/测试数据的COCO指标,并生成record_mAP.txt文件
└── pascal_voc_classes.json: pascal_voc标签文件
环境
dockerfile:
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04
ENV DEBIAN_FRONTEND=noninteractive# 安装基本软件包
RUN apt-get update && \apt-get upgrade -y && \apt-get -y --no-install-recommends install vim wget curl build-essential python3.10-dev python3.10 python3-pip sudo && \update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 && \apt-get install -y libgl1 libglib2.0-0 ffmpeg tzdata && \ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \echo "Asia/Shanghai" > /etc/timezoneRUN apt-get -y --no-install-recommends install vim wget curl git build-essential python3.10 python3-pip python3.10-venv sudoRUN apt-get install -y libgl1 libglib2.0-0 iputils-ping python3.10-dev libgoogle-perftools-dev nginx# 更改默认Shell为bash
SHELL ["/bin/bash", "-c"]
python 环境:
git clone https://github.com/WZMIAOMIAO/deep-learning-for-image-processing.git
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda create -n py38 python=3.8 -y
conda activate py38
# CUDA 11.0
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch -y
cd /deep-learning-for-image-processing/pytorch_object_detection/faster_rcnn
pip install -r requirements.txt
得到readme.md说的一些权重:
cd /deep-learning-for-image-processing/pytorch_object_detection/faster_rcnn/backbonewget https://download.pytorch.org/models/mobilenet_v2-b0353104.pth
--2024-06-05 13:50:21-- https://download.pytorch.org/models/mobilenet_v2-b0353104.pthmv mobilenet_v2-b0353104.pth mobilenet_v2.pthwget https://download.pytorch.org/models/resnet50-0676ba61.pth
--2024-06-05 13:50:46-- https://download.pytorch.org/models/resnet50-0676ba61.pthmv resnet50-0676ba61.pth resnet50.pthwget https://download.pytorch.org/models/fasterrcnn_resnet50_fpn_coco-258fb6c6.pthmv fasterrcnn_resnet50_fpn_coco-258fb6c6.pth fasterrcnn_resnet50_fpn_coco.pthmkdir /deep-learning-for-image-processing/pytorch_object_detection/faster_rcnn/data
cd /deep-learning-for-image-processing/pytorch_object_detection/faster_rcnn/datawget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
尝试训练
反向commit 镜像:
docker commit 74d9893ccb29 kevinchina/deeplearning:fasterrcnn_train_v1docker push kevinchina/deeplearning:fasterrcnn_train_v1
重启容器:
docker run --gpus all -it -v $PWD:/wkp --shm-size=64g kevinchina/deeplearning:fasterrcnn_train_v1 bash
训练:
conda activate py38
cd /deep-learning-for-image-processing/pytorch_object_detection/faster_rcnn/
python train_mobilenetv2.py
启动成功:
一轮训练完成后的验证:
安全帽数据训练
安全帽佩戴检测
数据集:https://github.com/njvisionpower/Safety-Helmet-Wearing-Dataset
加入安全帽数据,小小修改一下源代码的一些小的东西:
启动训练:
python train_mobilenetv2.py
训练完一轮:
训练结束:
Test: Total time: 0:00:52 (0.0858 s / it)
Averaged stats: model_time: 0.0590 (0.0440) evaluator_time: 0.2436 (0.0344)
Accumulating evaluation results...
DONE (t=1.42s).
IoU metric: bboxAverage Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.412Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.695Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.425Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.171Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.540Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.669Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.169Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.395Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.466Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.262Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.602Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.714
successful save loss curve!
successful save mAP curve!
测试
用test.txt中测试准确率
python validation.py
预测
(py38) root:/deep-learning-for-image-processing/pytorch_object_detection/faster_rcnn# python predict.py
using cuda:0 device.
inference+NMS time: 0.018668174743652344
docker push kevinchina/deeplearning:fasterrcnn_train_v2
全部数据、代码、训练完的权重等资料见:
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
相关文章:
【深度学习】安全帽检测,目标检测,Faster RCNN训练
文章目录 资料环境尝试训练安全帽数据训练测试预测全部数据、代码、训练完的权重等资料见: 资料 依据这个进行训练: https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/pytorch_object_detection/faster_rcnn ├── bac…...
IDEA2024创建maven项目
1、new->project 2、创建后展示 3、生成resources文件夹 4、测试--编写一个hello文件...
linux上VirtualBox使用
前言 最近想把唯一的windows系统装成linux, 但是确实存在一些特殊软件无法舍弃,所有装完linux需要用虚拟机装个windows 上来使用特定的一些软件(不想用wine了)。 还有对一些特定usb设备的透传,这样才能保证在虚拟机中…...
PID控制算法介绍及使用举例
PID 控制算法是一种常用的反馈控制算法,用于控制系统的稳定性和精度。PID 分别代表比例(Proportional)、积分(Integral)和微分(Derivative),通过组合这三个部分来调节控制输出&#…...
因子区间[牛客周赛44]
思路分析: 我们可以发现125是因子个数的极限了,所以我们可以用二维数组来维护第几个数有几个因子,然后用前缀和算出来每个区间合法个数,通过一个排列和从num里面选2个 ,c num 2 来计算即可 #include<iostream> #include<cstring> #include<string> #include…...
代码随想录算法训练营第四十四天 | 01背包问题理论基础、01背包问题滚动数组、416. 分割等和子集
背包问题其实有很多种,01背包是最基础也是最经典的,软工计科学生一定要掌握的。 01背包问题 代码随想录 视频讲解:带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经…...
【PingPong_注册安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …...
车辆路径规划之Dubins曲线与RS曲线简述
描述 Dubins和RS曲线都是路径规划的经典算法,其中车辆运动学利用RS曲线居多,因此简单介绍Dubins并引出RS曲线。 花了点时间看了二者的论文,并阅读了一个开源的代码。 Dubins曲线 Dubins曲线是在满足曲率约束和规定的始端和末端的切线&#…...
PostgreSQL 和Oracle锁机制对比
PostgreSQL 和Oracle锁机制对比 PostgreSQL 和 Oracle 都是业界广泛使用的关系型数据库管理系统,它们在锁机制方面都有独到的设计来控制并发访问,确保数据的一致性和完整性。下面我们详细比较一下这两个数据库系统的锁机制。 1. 锁类型 PostgreSQL P…...
6月05日,每日信息差
第一、特斯拉在碳博会上展示了其全品类的可持续能源解决方案,包括首次在国内展出的超大型电化学商用储能系统 Megapack 和家庭储能系统 Powerwall。此外,特斯拉还展示了电动汽车三电系统的解构和电池回收技术产品 第二、2024 年第一季度,全球…...
MongoDB~俩大特点管道聚合和数据压缩(snappy)
场景 在MySQL中,通常会涉及多个表的一些操作,MongoDB也类似,有时需要将多个文档甚至是多个集合汇总到一起计算分析(比如求和、取最大值)并返回计算后的结果,这个过程被称为 聚合操作 。 根据官方文档介绍&…...
HTML+CSS+JS 动态登录表单
效果演示 实现了一个登录表单的背景动画效果,包括一个渐变背景、一个输入框和一个登录按钮。背景动画由多个不同大小和颜色的正方形组成,它们在页面上以不同的速度和方向移动。当用户成功登录后,标题会向上移动,表单会消失。 Code <!DOCTYPE html> <html lang=&q…...
统一返回响应
前言 我们为什么要设置统一返回响应 提高代码的可维护性:通过统一返回请求的格式,可以使代码更加清晰和易于维护,减少重复的代码,提高代码质量。 便于调试和测试:统一的返回格式使得在调试和测试时更为简单ÿ…...
大数据学习问题记录
问题记录 node1突然无法连接finalshell node1突然无法连接finalshell 今天我打开虚拟机和finalshell的时候,发现我的node1连接不上finalshell,但是node2、node3依旧可以链接,我在网上找了很多方法,但是是关于全部虚拟机连接不上finalshell&a…...
第N4周:中文文本分类
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、预备知识 中文文本分类和英文文本分类都是文本分类,为什么要单独拎出来个中文文本分类呢? 在自然语言处理(NLP&#x…...
【kubernetes】探索k8s集群的pod控制器详解(Deployment、StatefulSet、DaemonSet、Job、CronJob)
目录 一、Pod控制器及其功用 二、pod控制器有多种类型 2.1ReplicaSet 2.1.1ReplicaSet主要三个组件组成 2.2Deployment 2.3DaemonSet 2.4StatefulSet 2.5Job 2.6Cronjob 三、Pod与控制器之间的关系 3.1Deployment 3.2SatefulSet 3.2.1StatefulSet三个组件 3.2.2为…...
直接插入排序
#include <stdio.h>void insert_sort(int arr[], int n) {int i;int j;int tmp;for (i 1; i < n; i){tmp arr[i];j i - 1;// 将要插入的元素与数组中的元素比较(从后向前比) while (j > 0 && arr[j] > tmp){arr[j 1] arr[…...
esp32s3 nvs 存储过程中使用malloc和free函数的一点困惑
我的项目中,大量使用了malloc()和free()函数,在使用nvs存储之前没有出现问题。 esp32厂家nvs的blob存储的例程中,有使用malloc()和free(),我参照例程写了自己的blob存储函数f,一开始是可以正常使用的,后来…...
除visio以外的几款好用流程图绘制工具
流程图绘制软件在嵌入式软件开发中扮演着重要的角色,它们能够帮助用户清晰、直观地展示工作流程。以下是几款流行的流程图绘制软件及其特点的详细报告: 思维导图MindMaster MindMaster作为一款专业的思维导图软件,不仅具备强大的思维导图制作…...
CentOS 7 64位 常用命令
一、系统管理命令 systemctl start firewalld.service:启动防火墙服务 systemctl stop firewalld.service:停止防火墙服务 systemctl enable firewalld.service:设置防火墙服务开机自启 systemctl disable firewalld.service:禁止…...
ChatGPT-4o抢先体验
速度很快,结果很智能,支持多模态输入输出,感兴趣联系作者。 windows/linux/mac 客户端下载参考:https://github.com/lencx/Noi...
STM32实验之USART串口发送+接受数据(二进制/HEX/文本)
涉及三个实验: 1.USART串口发送和接收数据 我们使用的是将串口封装成为一个Serial.c模块.其中包含了 void Serial_Init(void);//串口初始化 void Serial_SendByte(uint8_t Byte);//串口发送一个字节 void Serial_SendArray(uint8_t *Array,uint16_t Length);//…...
网关(Gateway)- 内置过滤器工厂
官方文档:Spring Cloud Gateway 内置过滤器工厂 AddRequestHeaderGatewayFilterFactory 为请求添加Header Header的名称及值 配置说明 server:port: 8088 spring:application:name: api-gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8847username: nacos…...
电风扇如何实现跌倒断电保护功能
电风扇作为日常生活中常用的家电产品,为了提升安全性能,在设计上通常会考虑加入跌倒断电保护功能。其中,光电倾倒开关是实现跌倒断电保护功能的关键组件之一。 光电倾倒开关内置红外发光二极管和光敏接收器,其工作原理非常巧妙。…...
编译原理总结
编译器构成 1. 前端分析部分 1.1 词法分析 确定词性,输出为token序列 1.2 语法分析 识别短语 1.3 语义分析 分析短语在句子中的成分 IR中间代码生成 2. 机器无关代码优化 3. 后端综合部分 目标代码生成 机器相关代码优化 4. 其他 全局信息表 异常输出...
JavaScript:从基础到进阶的全面介绍
JavaScript:从基础到进阶的全面介绍 JavaScript(简称JS)是一种广泛用于Web开发的编程语言。它是一种轻量级的、解释型或即时编译的语言,具有函数优先的特点。JS最初是为了实现网页的动态效果而设计的,如今已发展成为前…...
linux指令-sed
sed 是一个流编辑器,用于对输入流(或文件)进行基本的文本转换。以下是 sed 命令的详细输出说明文档: 1. 基本语法 sed [OPTIONS]... [SCRIPT] [INPUTFILE...] OPTIONS:可选的命令行选项,如 -i 用于直接修…...
Docker部署青龙面板
青龙面板 文章目录 青龙面板介绍资源列表基础环境一、安装Docker二、安装Docker-Compose三、安装青龙面板3.1、拉取青龙(whyour/qinglong)镜像3.2、编写docker-compose文件3.3、检查语法启动容器 四、访问青龙面板五、映射本地部署的青龙面板至公网5.1、…...
【LeetCode】每日一题 2024_6_4 将元素分配到两个数组中 II(二分、离散化、树状数组)
文章目录 LeetCode?启动!!!题目:将元素分配到两个数组中 II题目描述代码与解题思路 每天进步一点点 LeetCode?启动!!! 又有段时间没写每日一题的分享了,原本今…...
JAVA小案例-break练习,随机数,到88停止
JAVA小案例-break练习,随机数,到88停止 代码如下: public class Break {/*** break练习,随机数,到88停止* param args*/public static void main(String[] args) {int count0;//计数器System.out.println("Begi…...
创做网站/电商推广和网络推广的区别
Heres an action item for you, dear reader, and finally a decent reason to put your USB key to work other than just holding family photos. 亲爱的读者,这是为您准备的一项行动,最后一个体面的理由是使USB密钥可以正常工作,而不仅仅…...
上海网站seo公司/官网站内推广内容
点击上方“iOS开发”,选择“置顶公众号” 关键时刻,第一时间送达! 前言 经过两个多月的开发与调试,全民星跑1.0.1终于上线了,首先要感谢曲总和雷建民的技术支持.全民星跑作为一个以跑步计步为主要功能的软件,骚栋在开发过程中实在是遇到了不…...
什么叫网站建设/企业培训课程视频
我正在尝试使用Sipjs的帮助为用户设置Asterisk语音聊天,遵循SIPJS docs http://sipjs.com/guides/server-configuration/asterisk上给出的说明 . 用户已创建并已连接 . 他们可以通过Zoiper互相打电话 . 但无法通过Sipjs或SipML5调用 . 当任何人用户从Sipjs或SipMl5进…...
政府网站建设方案书模板/seo导航
//时间的正则表达式 var reg /^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/; var regExp new RegExp(reg); if(!regExp.test(value)){alert("时间格式不正确,正确格式为:12:00:00");return; } //去掉最后一个:[0-5]\d 表示没有秒表 即12:00二、…...
韩式摄影网站源码/营销网站建设专家
Vue入门6、插槽(自定义分发)router-view重定向嵌套路由 项目沿用Vue入门5的项目,/views/Four.vue 插槽(自定义分发) 我们先来想想一个场景 我们的 和 标签里的内容是从服务器里来的,不想写死 <temp…...
平顶山市哪里有做网站的/优化关键词推广
阅读本文大概需要3分钟。 好吧,我承认我标题党了,如果你是进来找如何搭建小程序中的支付流程的,请你下车吧~ 这篇文章是介绍个人小程序如何集成赞赏功能的,利用微信小程序提供的支付接口必须具有公司资质才可以。或者你也可以集成…...