人脸识别5.1- insightface人脸检测模型scrfd-训练实战笔记,目标检测的理论理解

2023-11-17

1、 insightface/ detection / scrfd模型训练

1.0、数据集

数据集下载说明:https://github.com/deepinsight/insightface/tree/master/detection/datasets

官方下载目录:http://shuoyang1213.me/WIDERFACE/
在这里插入图片描述
标签下载:https://gitee.com/link?target=https%3A%2F%2Fdrive.google.com%2Ffile%2Fd%2F1UW3KoApOhusyqSHX96yEDRYiNkd3Iv3Z%2Fview%3Fusp%3Dsharing

飞桨数据集和标签整体打包下载:https://aistudio.baidu.com/aistudio/datasetdetail/157445

1.0.1、数据集理解

标注和理解:https://blog.csdn.net/weixin_45181318/article/details/116176687

以第一个例子为例

```clike
# 0--Parade/0_Parade_marchingband_1_849.jpg 1024 1385
449.00000 330.00000 571.00000 479.00000 488.90601 373.64301 0.00000 542.08899 376.44199 0.00000 515.03101 412.82999 0.00000 485.17401 425.89301 0.00000 538.35699 431.49100 0.00000  

"#"号开头的,便是图片的地址,将其放入img_path中
紧接着是图片的分辨率
449.00000 330.00000 571.00000 479.00000 表示box(x1, y1, w, h)
接着是5个关键点信息,分别用0.0隔开 或者1.0分开
488.906 373.643 0.0
542.089 376.442 0.0
515.031 412.83 0.0
485.174 425.893 0.0
538.357 431.491 0.0
1个置信度值

用labelme做的标记,按照顺序:五个点+一个bbox
```clike
import os
import json

data_dir = 'train标注\\'
all_json = os.listdir(data_dir)

with open("train.txt","w") as f:
     for j_name in all_json:
          f.write(j_name + '\n')
          j = open(data_dir + j_name, encoding='utf-8'
         
          info = json.load(j)
       
          x1 = info['shapes'][5]['points'][0][0]
          y1 = info['shapes'][5]['points'][0][1]
          x2 = info['shapes'][5]['points'][1][0]
          y2 = info['shapes'][5]['points'][1][1]
          w = str(round(x2 - x1, 2))
          h = str(round(y2 - y1, 2))
          x1 = str(round(x1, 2))
          y1 = str(round(y1, 2))
          d1x = str(round(info['shapes'][0]['points'][0][0], 2))
          d1y = str(round(info['shapes'][0]['points'][0][1], 2))
          d2x = str(round(info['shapes'][1]['points'][0][0], 2))
          d2y = str(round(info['shapes'][1]['points'][0][1], 2))
          d3x = str(round(info['shapes'][2]['points'][0][0], 2))
          d3y = str(round(info['shapes'][2]['points'][0][1], 2))
          d4x = str(round(info['shapes'][3]['points'][0][0], 2))
          d4y = str(round(info['shapes'][3]['points'][0][1], 2))
          d5x = str(round(info['shapes'][4]['points'][0][0], 2))
          d5y = str(round(info['shapes'][4]['points'][0][1], 2))
          label = x1 + ' ' + y1 + ' ' + w + ' ' + h + ' ' + d1x + ' ' + d1y + ' ' + '0.0' + ' ' + d2x + ' ' + d2y + ' ' + '0.0' + ' ' + d3x + ' ' + d3y + ' ' + '0.0' + ' ' + d4x + ' ' + d4y + ' ' + '0.0' + ' ' + d5x + ' ' + d5y + ' ' + '0.0' + ' ' + '1'

          f.write(label + '\n')





1.1、安装

1.1.0、虚拟环境安装

Linux-Centos7下安装Anaconda,conda 安装虚拟环境,cuda,cudnn

1.1.1、pytorch安装

不同的cuda版本用不同的安装方式,查找历史版本:pytorch安装参考

pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
import torch
print(torch.__version__)  # '1.7.0'
print(torch.version.cuda)  # 10.2
torch.cuda.is_available() # False

1.1.2、mmcv安装

mmcv安装参考和cuda以及pytorch相匹配:https://mmcv.readthedocs.io/en/latest/get_started/installation.html

pip install -U openmim
mim install mmcv-full==1.3.17 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.7.0/index.html
pip install mmdet -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.7.0/index.html

1.1.3、整体编译安装

git clone https://gitee.com/AI-Mart/insightface.git
cd insightface/detection/scrfd
或者
cd /data/mart/face_insightface/insightface/detection/scrfd
pip install -r requirements/build.txt
pip install -v -e .  # or "python setup.py develop"
pip install scipy

1.2、训练

python ./tools/train.py ./configs/scrfd/scrfd_1g.py --gpus=1
nohup python ./tools/train.py ./configs/scrfd/scrfd_1g.py --gpus=1 2>&1 &
tail -f nohup.out

2、目标检测YOLO理论

You Only Look Once
论文参考:https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf
演示官网:https://pjreddie.com/darknet/yolo/
博客解释参考:https://www.cnblogs.com/lijie-blog/p/10180271.html
预测原理参考:https://baijiahao.baidu.com/s?id=1717730753560317539&wfr=spider&for=pc

原理

YOLO提供了另一种更为直接的思路:直接在输出层回归bounding box的位置和bounding box所属的类别(整张图作为网络的输入,把 Object Detection 的问题转化成一个 Regression 问题)。

图像和网格和预测库和物体的关系

grid>bbox>object
每个 bounding box 要预测 (x, y, w, h) 和 confidence 共5个值,每个网格还要预测一个类别信息,记为 C 类。则 SxS个 网格,每个网格要预测 B 个 bounding box 还要预测 C 个 categories。输出就是 S x S x (5*B+C) 的一个 tensor。
注意:class 信息是针对每个网格的,confidence 信息是针对每个 bounding box 的。

在yolov1中作者将一幅图片分成7x7个网格(grid cell),由网络的最后一层输出7×7×30的tensor,也就是说每个格子输出1×1×30的tensor。30里面包括了2个bound ing box的x,y,w,h,confidengce以及针对格子而言的20个类别概率,输出就是 7x7x(5x2 + 20) 。

预测的时候

在 test 的时候,每个网格预测的 class 信息和 bounding box 预测的 confidence信息相乘,就得到每个 bounding box 的 class-specific confidence score:
在这里插入图片描述
换句话说,如果ground truth落在这个grid cell里,那么Pr(Object)就取1,否则就是0,IOU就是bounding box与实际的groud truth之间的交并比。所以confidence就是这两者的乘积。

等式左边第一项就是每个网格预测的类别信息,第二、三项就是每个 bounding box 预测的 confidence。这个乘积即 encode 了预测的 box 属于某一类的概率,也有该 box 准确度的信息,这个公式综合了预测库的位置的概率和类别的概率。
得到每个 box 的 class-specific confidence score 以后,设置阈值,滤掉得分低的 boxes,对保留的 boxes 进行 NMS 处理,就得到最终的检测结果。
其中坐标的 x, y 用对应网格的 offset 归一化到 0-1 之间,w, h 用图像的 width 和 height 归一化到 0-1 之间。

YOLO最后统计最终候选框原理

对每一个网格的每一个bbox执行同样操作:7x7x2 = 98 bbox (每个bbox既有对应的class信息又有坐标信息)

在这里插入图片描述
得到98bbox的信息后,首先对阈值小于0.2的score清零,然后重新排序,最后再用NMS算法去掉重复率较大的bounding box(NMS:针对某一类别,选择得分最大的bounding box,然后计算它和其它bounding box的IOU值,如果IOU大于0.5,说明重复率较大,该得分设为0,如果不大于0.5,则不改。

这样一轮后,再选择剩下的score里面最大的那个bounding box,然后计算该bounding box和其它bounding box的IOU,重复以上过程直到最后)。最后每个bounding box的20个score取最大的score,如果这个score大于0,那么这个bounding box就是这个socre对应的类别(矩阵的行),如果小于0,说明这个bounding box里面没有物体,跳过即可。
在这里插入图片描述

优点和缺点

现在来总结一下Yolo的优缺点。首先是优点,Yolo采用一个CNN网络来实现检测,是单管道策略,其训练与预测都是end-to-end,所以Yolo算法比较简洁且速度快。第二点由于Yolo是对整张图片做卷积,所以其在检测目标有更大的视野,它不容易对背景误判。其实我觉得全连接层也是对这个有贡献的,因为全连接起到了attention的作用。另外,Yolo的泛化能力强,在做迁移时,模型鲁棒性高。

最后不得不谈一下Yolo的缺点,首先Yolo各个单元格仅仅预测两个边界框,而且属于一个类别。对于小物体,Yolo的表现会不如人意。这方面的改进可以看SSD,其采用多尺度单元格。也可以看Faster R-CNN,其采用了anchor boxes。Yolo对于在物体的宽高比方面泛化率低,就是无法定位不寻常比例的物体。当然Yolo的定位不准确也是很大的问题。

损失函数

另外一点时,由于每个单元格预测多个边界框。但是其对应类别只有一个。那么在训练时,如果该单元格内确实存在目标,那么只选择与ground truth的IOU较大的那个边界框来负责预测该目标,而其它边界框认为不存在目标。这样设置的一个结果将会使一个单元格对应的边界框更加专业化,其可以分别适用不同大小,不同高宽比的目标,从而提升模型性能。大家可能会想如果一个单元格内存在多个目标怎么办,其实这时候Yolo算法就只能选择其中一个来训练,这也是Yolo算法的缺点之一。要注意的一点时,对于不存在对应目标的边界框,其误差项就是只有置信度,左标项误差是没法计算的。而只有当一个单元格内确实存在目标时,才计算分类误差项,否则该项也是无法计算的。

损失函数分为三个部分:位置大小损失,confidence损失和类别损失,计算损失的大题思路是,用预测值与真实值的差的平方求和,三部分损失加权求和得到总损失。
在这里插入图片描述

位置损失

这里计算w和h时开了根号的原因在于,bbox与ground truth在w h上的相同差异,对大框的影响应该小于小框,因此不应该等同看待。比如我们有bbox1和truth1,二者的宽度分别为200和150;另外还有bbox2和truth2,二者的宽度分别为20和15。我们应该让bbox2的损失更大一些,因为按照比例来说它偏差的比较多,但是直接相减的做法会让它们的损失相同,而取根号再相减可以达到这个效果。

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

置信度损失

confidence用于判断这个bbox中是否含有待标注物体,因此对含有的bbox要进行惩罚,对不含有的bbox也要进行惩罚。confidence的预测值就是我们算出来的c了,而confidence的真实值是需要计算的。

对于那些不负责物体的bbox,confidence的真实值是0;对于那些负责物体的bbox,confidence的真实值是1。
在这里插入图片描述

分类损失

因为YOLOv1中是每个cell只能预测一种类别(而不是每个bbox),所以我们只要考虑负责物体的cell的类别损失。直接使用条件概率值作为预测的类别值,因为负责即表示有物体;对于真实值,则在真实类别上值为1,错误类别上值为0。

在这里插入图片描述

滑动窗口,检测》分类,穷举遍历

在介绍Yolo算法之前,首先先介绍一下滑动窗口技术,这对我们理解Yolo算法是有帮助的。采用滑动窗口的目标检测算法思路非常简单,它将检测问题转化为了图像分类问题。其基本原理就是采用不同大小和窗口在整张图片上以一定的步长进行滑动,然后对这些窗口对应的区域做图像分类,这样就可以实现对整张图片的检测了,如下图3所示,如DPM就是采用这种思路。但是这个方法有致命的缺点,就是你并不知道要检测的目标大小是什么规模,所以你要设置不同大小的窗口去滑动,而且还要选取合适的步长。但是这样会产生很多的子区域,并且都要经过分类器去做预测,这需要很大的计算量,所以你的分类器不能太复杂,因为要保证速度。解决思路之一就是减少要分类的子区域,这就是R-CNN的一个改进策略,其采用了selective search方法来找到最有可能包含目标的子区域(Region Proposal),其实可以看成采用启发式方法过滤掉很多子区域,这会提升效率。

overfeat算法的思路

在这里插入图片描述

如果你使用的是CNN分类器,那么滑动窗口是非常耗时的。但是结合卷积运算的特点,我们可以使用CNN实现更高效的滑动窗口方法。这里要介绍的是一种全卷积的方法,简单来说就是网络中用卷积层代替了全连接层,如图4所示。输入图片大小是16x16,经过一系列卷积操作,提取了2x2的特征图,但是这个2x2的图上每个元素都是和原图是一一对应的,如图上蓝色的格子对应蓝色的区域,这不就是相当于在原图上做大小为14x14的窗口滑动,且步长为2,共产生4个字区域。最终输出的通道数为4,可以看成4个类别的预测概率值,这样一次CNN计算就可以实现窗口滑动的所有子区域的分类预测。这其实是overfeat算法的思路。之所可以CNN可以实现这样的效果是因为卷积操作的特性,就是图片的空间位置信息的不变性,尽管卷积过程中图片大小减少,但是位置对应关系还是保存的。说点题外话,这个思路也被R-CNN借鉴,从而诞生了Fast R-CNN算法。

3、faster RCNN/YOLO/SSD算法的比较

是这样的,如果都用一句话来描述
RCNN 解决的是,“为什么不用CNN做classification呢?”(但是这个方法相当于过一遍network出bounding box,再过另一个出label,原文写的很不“elegant”
Fast-RCNN 解决的是,“为什么不一起输出bounding box和label呢?”(但是这个时候用selective search generate regional proposal的时间实在太长了
Faster-RCNN 解决的是,“为什么还要用selective search呢?”于是就达到了real-time。开山之作确实是开山之作,但是也是顺应了“Deep learning 搞一切vision”这一潮流吧。
在这里插入图片描述
参考:https://www.zhihu.com/question/35887527/answer/140239982
参考:https://blog.csdn.net/lanmengyiyu/article/details/79680022

SSD

在深度卷积网络中, 浅层的特征图拥有较小的感受野, 深层的特征图拥有较大的感受野, 因此SSD充分利用了这个特性, 使用了多层特征图来做物体检测, 浅层的特征图检测小物体, 深层的特征图检测大物体.如图5.8所示
SSD: 直接将固定大小宽高的PriorBox作为先验的感兴趣区域, 利用一个阶段完成了分类与回归;PriorBox本质上是在原图上的一系列矩形框
在这里插入图片描述

Faster RCNN

Faster RCNN:首先在第一个阶段对固定的Anchor进行了位置修正与筛选, 得到感兴趣区域后, 在第二个阶段再对该区域进行分类与回归; 在Faster RCNN中, 所有Anchors对应的特征都来源于同一个特征图, 而该层特征的感受野相同, 很难处理被检测物体的尺度变化较大的情况, 多个大小宽高的Anchors能起到的作用也有限。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

人脸识别5.1- insightface人脸检测模型scrfd-训练实战笔记,目标检测的理论理解 的相关文章

  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 如何在Python中流式传输和操作大数据文件

    我有一个相对较大 1 GB 的文本文件 我想通过跨类别求和来减小其大小 Geography AgeGroup Gender Race Count County1 1 M 1 12 County1 2 M 1 3 County1 2 M 2
  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 补丁 - 为什么相对补丁目标名称不起作用?

    我已经从模块导入了一个类 但是当我尝试修补类名而不使用模块作为前缀时 出现类型错误 TypeError Need a valid target to patch You supplied MyClass 例如 以下代码给出了上述错误 imp
  • 为什么删除临时文件时出现WindowsError?

    我创建了一个临时文件 向创建的文件添加了一些数据 已保存 然后尝试将其删除 但我越来越WindowsError 编辑后我已关闭该文件 如何检查哪个其他进程正在访问该文件 C Documents and Settings Administra
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • Kivy - 有所有颜色名称的列表吗?

    在 Kivy 中 小部件 color属性允许输入其值作为字符串颜色名称 也 例如在 kv file Label color red 是否有所有可能的颜色名称的列表 就在这里 来自Kivy 的文档 https kivy org doc sta
  • Python - 来自 .进口

    我第一次尝试图书馆 我注意到解决图书馆内导入问题的最简单方法是使用如下结构 from import x from some module import y 我觉得这件事有些 糟糕 也许只是因为我不记得经常看到它 尽管公平地说我还没有深入研究
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • 如果未引发异常,则通过 Python 单元测试

    在Python中unittest框架 是否有一种方法可以在未引发异常的情况下通过单元测试 否则会因 AssertRaise 而失败 如果我正确理解你的问题 你could做这样的事情 def test does not raise on va
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • Emacs 24.x 上的 IPython 支持

    我对 IPython 与 Emacs 的集成感到困惑 从 Emacs 24 开始 Emacs 附带了自己的python el 该文件是否支持 IPython 还是仅支持 Python 另外 维基百科 http emacswiki org e
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • ANTLR 获取并拆分词法分析器内容

    首先 对我的英语感到抱歉 我还在学习 我为我的框架编写 Python 模块 用于解析 CSS 文件 我尝试了 regex ply python 词法分析器和解析器 但我发现自己在 ANTLR 中 第一次尝试 我需要解析 CSS 文件中的注释
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • 在 Django 查询中使用 .extra(select={...}) 引入的值上使用 .aggregate() ?

    我正在尝试计算玩家每周玩游戏的次数 如下所示 player game objects extra select week WEEK games game date aggregate count Count week 但姜戈抱怨说 Fiel
  • 混淆矩阵不支持多标签指示符

    multilabel indicator is not supported是我在尝试运行时收到的错误消息 confusion matrix y test predictions y test is a DataFrame其形状为 Horse
  • python 线程安全可变对象复制

    Is 蟒蛇的copy http docs python org 2 library copy html模块线程安全吗 如果不是 我应该如何在 python 中以线程安全的方式复制 deepcopy 可变对象 蟒蛇的GIL http en w
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS

随机推荐

  • SecureCRT9.1高亮配色设置

    参考 http zh cjh com qita 1623 html https download csdn net download qq 45698138 88310255 spm 1001 2014 3001 5503 1 创建文件co
  • fork的例子

    以下是下列代码的头文件 forks c Examples of Unix process control include
  • Ruoyi-cloud集成Sa-Token SSO单点登录

    文章目录 服务端 客户端前端 客户端后端 https github com dromara Sa Token Sa Token SSO 模式三 修改本地hosts 127 0 0 1 sa sso server com 127 0 0 1
  • ionic3代码压缩和apk优化

    我们在做ionic打包的时候 通常执行这条命令 ionic cordova build android release prod 使用这个命令生成的apk是ionic项目导出的最优化的apk 但是如果还想继续压缩 那么还可以借助Androi
  • Unity 空气墙Shader

    废话不多说 先上效果图 具体代码如下 Shader Hidden AirWall Properties Color Color Color 1 1 1 1 颜色 Interval Interval float 10 间隔 SubShader
  • springmvc注解和参数传递

    一 SpringMVC注解入门 创建web项目 在springmvc的配置文件中指定注解驱动 配置扫描器 Xml代码 收藏代码
  • FFmpeg 实战指南

    文章目录 表达式 滤镜效果 zoompan 中心视距由远及近 中心视距由近及远 水平视距从左到右 水平视距从右到左 垂直视距从上到下 垂直视距从下到上 rotate 顺时针旋转 PI 6 弧度 逆时针旋转 PI 6 弧度 顺时针旋转 45
  • 【Flink】处理函数Process

    目录 处理函数 基本处理函数 ProcessFunction 处理函数的功能 ProcessFunction解析 处理函数的分类 按键分区处理函数 KeyedProcessFunction 定时器Timer 和定时服务 TimerServi
  • 几种css炫酷背景欣赏

    这里为大家带来几种表现惊人的css背景效果 纯css表现效果 有桌布效果 星空效果 心形效果 砖墙效果等 请欣赏 background radial gradient rgba 255 255 255 0 0 rgba 255 255 25
  • 2020-10-29 org.apache.commons.lang3.StringUtils

    public static void TestStr null 和 操作 判断是否Null 或者 System out println StringUtils isEmpty null System out println StringUt
  • 基于神经网络的模式识别

    一 项目设计的目的 通过构建BP网络和离散Hopfield网络模式识别实例 输出稳定结果 二 相关原理知识介绍 BP学习算法是通过反向学习过程使误差最小 其算法过程从输出节点开始 反向地向第一隐含层 即最接近输入层的隐含层 传播由总误差引起
  • Ceres Solver从零开始手把手教学使用

    目录 一 简介 二 安装 三 介绍 四 Hello Word 五 导数 1 数值导数 2解析求导 六 实践 Powell函数 一 简介 笔者已经半年没有更新新的内容了 最近学习视觉SLAM的过程中发现自己之前学习的库基础不够扎实 Ceres
  • 用JS获取移动设备信息

    获取设备信息少不了的一个JS脚本就是 mobile detect js 如图第二个script链接就是mobile detect js的网上链接 它的官方链接我给大家放在这里了 mobile detect js官方地址https www m
  • 【毕业设计】深度学习图像语义分割算法研究与实现 - python 机器视觉

    文章目录 0 前言 2 概念介绍 2 1 什么是图像语义分割 3 条件随机场的深度学习模型 3 1 多尺度特征融合 4 语义分割开发过程 4 1 建立 4 2 下载CamVid数据集 4 3 加载CamVid图像 4 4 加载CamVid像
  • SpringBoot学习笔记35——实现List校验@Validated

    在 Controller 类上 加上 Validated 在需要校验的参数上加上 Valid 就可以校验list里的实体类的属性 还需要在统一异常处理类中添加异常处理 参数校验异常类 param exception return autho
  • redis未授权访问漏洞利用+redis日志分析

    redis未授权访问漏洞利用 redis日志分析 redis未授权访问 远程连接redis kali redis cli h IP redis常用语句 set key value 设置键值对 get key 获得值 incr intkey
  • 超分辨率学习记录

    超分辨率学习记录 超分定义 经典模型 前上采样 SRCNN 后上采样 FSRCNN 这篇博客主要内容来自于天池网站的超分辨率理论基础 同时对于其中涉及的学术名词也进行了解释 作为自己学习的记录 注 所有名词右上方带 的下面都有详细解释 博客
  • 最近点对问题

    分而治之 题目来源 Quoit Design Problem Description Have you ever played quoit in a playground Quoit is a game in which flat ring
  • 视频编解码(一):ffmpeg编码H.264帧类型判断

    本文主要讲述ffmpeg编码过程中是如何设置I帧 B帧及P帧的 以及如何通过代码判断帧类型 之前看过很多网上的文章 讲述如何判断I帧 B帧 P帧 然而都是停留在H 264官方文档中的定义 如果不结合ffmpeg 就仿佛纸上谈兵 有点不切实际
  • 人脸识别5.1- insightface人脸检测模型scrfd-训练实战笔记,目标检测的理论理解

    1 insightface detection scrfd模型训练 1 0 数据集 数据集下载说明 https github com deepinsight insightface tree master detection dataset