![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度学习
文章平均质量分 89
*pprp*
GiantPandaCV公众号作者,研究方向automl,nas
展开
-
PyTorch模型训练集正常收敛,但验证集准确率稳定在10%并保持不变
The Validation Accuracy of model, implemented in PyTorch, always got 10% and not converge.原创 2022-08-07 17:07:12 · 4616 阅读 · 8 评论 -
Compact-Transformer:缓解数据不足带来的问题
【GiantPandaCV导语】本文致力于解决ViT在小型数据集上性能不够好的问题,这个问题非常实际,现实情况下如果确实没有大量数据集,同时也没有合适的预训练模型需要从头训练的时候,ViT架构性能是不如CNN架构的。这篇文章实际上并没有引入大量的卷积操作,通过修改patch size,以及使用SeqPool的方法就可以取得不错的成绩。引言ViT不适用于小数据集,但是由于很多领域中数据量大小是非常有限的,为了打破ViT数据匮乏下性能不好,只能应用于大数据集的问题。本文提出使用正确的尺寸以及tokeniz原创 2022-03-21 20:49:32 · 3790 阅读 · 0 评论 -
CoAtNet: 90.88% Paperwithcode榜单第一,层层深入考虑模型设计
【GiantPandaCV导语】CoAt=Convolution + Attention,paperwithcode榜单第一名,通过结合卷积与Transformer实现性能上的突破,方法部分设计非常规整,层层深入考虑模型的架构设计。引言Transformer模型的容量大,由于缺乏正确的归纳偏置,泛化能力要比卷积网络差。提出了CoAtNets模型族:深度可分离卷积与self-attention能够通过简单的相对注意力来统一化。叠加卷积层和注意层在提高泛化能力和效率方面具有惊人的效果方法这部原创 2022-01-08 18:26:07 · 2704 阅读 · 0 评论 -
CeiT:训练更快的多层特征抽取ViT
【GiantPandaCV导语】来自商汤和南洋理工的工作,也是使用卷积来增强模型提出low-level特征的能力,增强模型获取局部性的能力,核心贡献是LCA模块,可以用于捕获多层特征表示。引言针对先前Transformer架构需要大量额外数据或者额外的监督(Deit),才能获得与卷积神经网络结构相当的性能,为了克服这种缺陷,提出结合CNN来弥补Transformer的缺陷,提出了CeiT:(1)设计Image-to-Tokens模块来从low-level特征中得到embedding。(2)将Tran原创 2022-01-08 16:20:18 · 1986 阅读 · 0 评论 -
CNN、Transformer、MLP的经验性分析
A Battle of Network Structures: An Empirical Study of CNN, Transformer, and MLP【GiantPandaCV导语】ViT的兴起挑战了CNN的地位,随之而来的是MLP系列方法。三种架构各有特点,为了公平地比较几种架构,本文提出了统一化的框架SPACH来对比,得到了具有一定insight的结论。背景近期Transformer MLP系列模型的出现,增加了CV领域的多样性,MLP-Mixer的出现表明卷积或者注意力都不是模型性能优异原创 2021-12-24 10:20:41 · 2953 阅读 · 3 评论 -
知识蒸馏综述: 知识的类型
【GiantPandCV引言】简单总结一篇综述《Knowledge Distillation A Survey》中的内容,提取关键部分以及感兴趣部分进行汇总。这篇是知识蒸馏综述的第一篇,主要内容为知识蒸馏中知识的分类,包括基于响应的知识、基于特征的知识和基于关系的知识。知识蒸馏简介定义:知识蒸馏代表将知识从大模型向小模型传输的过程。作用:可以用于模型压缩和训练加速 手段。综述梳理思路:知识蒸馏的种类训练机制教师-学生 架构蒸馏算法性能比较实际应用典型的知识蒸原创 2021-11-28 09:43:49 · 898 阅读 · 0 评论 -
如何更好地调整学习率?
【GiantPandaCV导读】learning rate对模型调优重要性不言而喻,想到超参数调优第一个可能想到的方法就是网格搜索Grid Search,但是这种方法需要大量的计算资源。之前使用fastai的时候发现其集成了一个功能叫lr_finder(), 可以快速找到合适的学习率,本文就主要分析这个15年就提出来的技术Cyclical Learning Rates。链接:https://arxiv.org/abs/1506.011861. 前言一般学习率可以人工设置,根据经验进行设置。通常会尝试原创 2021-07-06 09:35:42 · 3807 阅读 · 5 评论 -
【Pytorch基础】BatchNorm常识梳理与使用
BatchNorm, 批规范化,主要用于解决协方差偏移问题,主要分三部分:计算batch均值和方差规范化仿射affine算法内容如下:需要说明几点:均值和方差是batch的统计特性,pytorch中用running_mean和running_var表示$\gamma 和和和\beta$是可学习的参数,分别是affine中的weight和bias以BatchNorm2d为例,分析其中变量和参数的意义:affine: 仿射的开关,决定是否使用仿射这个过程。affine=Fa原创 2021-05-29 11:04:06 · 1002 阅读 · 0 评论 -
如何阅读和学习深度学习项目代码
【前言】现在深度学习项目代码量越来越大,并且单个文件的量也非常的大。笔者总结了一些专家的经验并结合自己看的一些项目,打算总结一下如何探索和深入一个深度学习项目库。笔者pprp,未经允许不得擅自转发。1. 基础知识首先,需要保证有一定的深度学习基础知识,吴恩达的深度学习课还有斯坦福大学的CS231n都是不错的入门教程,只需要有大学数学的基础就可以看懂。然后,需要对Linux系统使用有一定的了解,一般选择Ubuntu系统作为主力系统,了解一下基础的系统命令就可以了,比如rm,ls,cd,cat,vim,s原创 2021-05-27 21:45:05 · 1958 阅读 · 1 评论 -
【神经网络搜索】Single Path One Shot
【GiantPandaCV导读】Single Path One Shot(SPOS)是旷视和清华、港科大联合的工作。与之前的工作不同,SPOS可以直接在大型数据集ImageNet上搜索,并且文章还提出了一种缓和权重共享的NAS的解耦策略,让模型能有更好的排序一致性。代码:https://github.com/megvii-model/SinglePathOneShot论文:https://arxiv.org/abs/1904.00420摘要之前的One-Shot NAS训练难度很大,并且在大型数据原创 2021-05-04 11:06:04 · 939 阅读 · 4 评论 -
【神经网络搜索】DARTS: Differentiable Architecture Search
【GiantPandaCV】DARTS将离散的搜索空间松弛,从而可以用梯度的方式进行优化,从而求解神经网络搜索问题。本文首发于GiantPandaCV,未经允许,不得转载。1. 简介此论文之前的NAS大部分都是使用强化学习或者进化算法等在离散的搜索空间中找到最优的网络结构。而DARTS的出现,开辟了一个新的分支,将离散的搜索空间进行松弛,得到连续的搜索空间,进而可以使用梯度优化的方处理神经网络搜索问题。DARTS将NAS建模为一个两级优化问题(Bi-Level Optimization),通过使用Gra原创 2021-03-02 09:25:56 · 813 阅读 · 1 评论 -
Microsoft NNI入门
【GiantPandaCV导语】Neural Network Intelligence 是一个工具包,可以有效帮助用户设计并调优汲取学习模型的神经网络架构,以及超参数。具有易于使用、可扩展、灵活、高效的特点。本文主要讲NNI基础的概念以及一个训练MNIST的入门教程。本文首发于GiantPandaCV,未经允许,不得转载。1. 概述NNI有以下几个特性:易于使用:可以通过pip进行安装,通过命令行工具查看效果。可扩展:支持不同计算资源,多种计算平台,可以在不同平台并行运行。灵活:NNI内部有超参原创 2021-03-01 18:15:03 · 895 阅读 · 2 评论 -
【神经网络搜索】ENAS:Efficient Neural Architecture Search
【GiantPandaCV导语】本文介绍的是Efficient Neural Architecture Search方法,主要是为了解决之前NAS中无法完成权重重用的问题,首次提出了参数共享Parameter Sharing的方法来训练网络,要比原先标准的NAS方法降低了1000倍的计算代价。从一个大的计算图中挑选出最优的子图就是ENAS的核心思想,而子图之间都是共享权重的。1. 摘要ENAS是一个快速、代价低的自动网络设计方法。在ENAS中,控制器controller通过在大的计算图中搜索挑选一个最原创 2021-03-01 18:09:32 · 1074 阅读 · 0 评论 -
【CV中的Attention机制】模块梳理合集
文章目录0. 总述1. SENet(CVPR18)2. SKNet(CVPR19)3. CBAM(ECCV18)&BAM(BMVC18)&scSE(MICCAI18)4. Non-Local Network(CVPR19)5. GCNet(ICCVW19)6. CCNet(ICCV19)7. Shuffle Attention(ICASSP21)8. ECANet(CVPR20)9. SGENet(CoRR19)10. GSoPNet(CVPR19)11. FCANet(CoRR20)12.原创 2021-02-16 09:11:56 · 1318 阅读 · 0 评论 -
我们是如何改进YOLOv3进行红外小目标检测的?
【GiantPandCV导语】本文将介绍BBuf、小武和笔者一起在过年期间完成的一个目标检测项目,将描述我们模型改进的思路、实验思路、结果汇总和经验性总结。声明:这篇文章经过了三人同意,并且所有创新点也将被公布。此外,由于经验上的不足,可能整个实验思路不够成熟,比不上CV大组的严谨性和完备性,如有问题还烦请指教。1. 红外小目标检测红外小目标检测的目标比较小,目标极其容易和其他物体混淆,有一定的挑战性。另外,这本质上也是一个小目标领域的问题,很多适用于小目标的创新点也会被借鉴进来。此外,该数据集还原创 2020-09-10 09:47:59 · 6355 阅读 · 31 评论 -
使用关键点进行小目标检测
【GiantPandaCV导语】本文是笔者出于兴趣搞了一个小的库,主要是用于定位红外小目标。由于其具有尺度很小的特点,所以可以尝试用点的方式代表其位置。本文主要采用了回归和heatmap两种方式来回归关键点,是一个很简单基础的项目,代码量很小,可供新手学习。1. 数据来源数据集:数据来源自小武,经过小武的授权使用,但不会公开。本项目只用了其中很少一部分共108张图片。标注工具:https://github.com/pprp/landmark_annotation标注工具也可以在GiantPanda原创 2020-09-03 09:23:59 · 1759 阅读 · 5 评论 -
【资源】CenterNet原理与代码解析
《CenterNet原理与代码解析》是首发于GiantPandaCV公众号的电子书教程,由pprp总结并整理CenterNet相关解析,这本电子书是基于非官方的CenterNet实现,https://github.com/zzzxxxttt/pytorch_simple_CenterNet_45,这个版本的实现入门难度小一些,基于官方版本(https://github.com/xingyizhou/CenterNet)进行修改,要比官方代码更适合阅读和理解,dataloader、hourglass、训练流程原创 2020-09-02 15:34:45 · 1500 阅读 · 0 评论 -
CenterNet测试推理过程
【GiantPandaCV导语】这是CenterNet系列的最后一篇。本文主要讲CenterNet在推理过程中的数据加载和后处理部分代码。最后提供了一个已经配置好的数据集供大家使用。代码注释在:https://github.com/pprp/SimpleCVReproduction/tree/master/CenterNet1. eval部分数据加载由于CenterNet是生成了一个heatmap进行的目标检测,而不是传统的基于anchor的方法,所以训练时候的数据加载和测试时的数据加载结果是不同的。原创 2020-09-01 21:05:07 · 1207 阅读 · 2 评论 -
CenterNet之loss计算代码解析
[GiantPandaCV导语] 本文主要讲解CenterNet的loss,由偏置部分(reg loss)、热图部分(heatmap loss)、宽高(wh loss)部分三部分loss组成,附代码实现。1. 网络输出论文中提供了三个用于目标检测的网络,都是基于编码解码的结构构建的。ResNet18 + upsample + deformable convolution : COCO AP 28%/142FPSDLA34 + upsample + deformable convolution :原创 2020-08-17 21:59:03 · 2601 阅读 · 2 评论 -
CenterNet的骨干网络之DLASeg
DLA全称是Deep Layer Aggregation, 于2018年发表于CVPR。被CenterNet, FairMOT等框架所采用,其效果很不错,准确率和模型复杂度平衡的也比较好。CenterNet中使用的DLASeg是在DLA-34的基础上添加了Deformable Convolution后的分割网络。1. 简介Aggretation聚合是目前设计网络结构的常用的一种技术。如何将不同深度,将不同stage、block之间的信息进行融合是本文探索的目标。目前常见的聚合方式有skip conn原创 2020-08-06 10:16:15 · 3554 阅读 · 10 评论 -
pytorch版CenterNet训练自己的数据集
CenterNet(Objects as points)已经有一段时间了,之前这篇文章-【目标检测Anchor-Free】CVPR 2019 Object as Points(CenterNet)中讲解了CenterNet的原理,可以回顾一下。这篇文章是基于非官方的CenterNet实现,https://github.com/zzzxxxttt/pytorch_simple_CenterNet_45,这个版本的实现更加简单,基于官方版本(https://github.com/xingyizhou/Cent原创 2020-07-31 16:07:48 · 2736 阅读 · 16 评论 -
CenterNet骨干网络之hourglass
CenterNet中主要提供了三个骨干网络ResNet-18(ResNet-101), DLA-34, Hourglass-104,本文从结构和代码先对hourglass进行讲解。本文对应代码位置在:https://github.com/pprp/SimpleCVReproduction/tree/master/Simple_CenterNet1. Ground Truth Heatmap在开始讲解骨干网络之前,先提一下上一篇文章中有朋友问我的问题:CenterNet为什么要沿用CornerNet的半原创 2020-07-31 16:00:37 · 1497 阅读 · 0 评论 -
CenterNet 数据加载解析
本文主要解读CenterNet如何加载数据,并将标注信息转化为CenterNet规定的高斯分布的形式。1. YOLOv3和CenterNet流程对比CenterNet和Anchor-Based的方法不同,以YOLOv3为例,大致梳理一下模型的框架和数据处理流程。YOLOv3是一个经典的单阶段的目标检测算法,图片进入网络的流程如下:对图片进行resize,长和宽都要是32的倍数。图片经过网络的特征提取后,空间分辨率变为原来的1/32。得到的Tensor去代表图片不同尺度下的目标框,其中目标框的表原创 2020-07-30 15:44:18 · 877 阅读 · 0 评论 -
卷积神经网络中的即插即用模块
《卷积神经网络中的即插即用模块》是首发于GiantPandaCV公众号的电子书教程,由pprp总结并整理了常见的即插即用模块,可以分为注意力模块和其他模块。通过这篇电子书中的模块结合《从零开始学习YOLOv3》中的在YOLOv3模型中添加Attention机制一节的内容,就可以自由的尝试即插即用模块了,当然在除了YOLOv3以外的框架也可以自由插入。这些即插即用模块都是笔者接触到的,由于精力所限,还有很多没有在该电子书中说明,如果有补充可以在文末联系笔者,笔者会及时添加更新电子书的。电子书中涉及到的源码原创 2020-05-30 07:48:53 · 3744 阅读 · 6 评论 -
Pelee:移动端实时检测Backbone
简介在ImageNet数据集上,PeleeNet只有MobileNet模型的66%,并且比MobileNet精度更高。PeleeNet作为backbone实现SSD能够在VOC2007数据集上达到76.4%的mAP。文章总体上参考DenseNet的设计思路,提出了三个核心模块进行改进,有一定参考价值。核心PeleeNet实际上是DenseNet的变体,使用的依然是DenseNet的连接方法,核心的设计原则也和DenseNet相仿(特征重用)。核心模块:Two-Way Dense Layer原创 2020-05-17 09:23:43 · 527 阅读 · 0 评论 -
通过DarkLabel构建DeepSort标注格式和ReID数据集
上一篇文章推荐了DarkLabel标注软件,承诺会附上配套的代码,本文主要分享的是格式转换的几个脚本。先附上脚本地址: https://github.com/pprp/SimpleCVReproduction/tree/master/DarkLabel先来了解一下为何DarkLabel能生成这么多格式的数据集,来看看DarkLabel的格式:frame(从0开始计), 数量, id(从0开始...原创 2020-04-30 11:57:06 · 2410 阅读 · 20 评论 -
一张图梳理YOLOv4论文
AlexeyAB大神继承了YOLOv3, 在其基础上进行持续开发,将其命名为YOLOv4。并且得到YOLOv3作者Joseph Redmon的承认,下面是Darknet原作者的在readme中更新的声明。来看看YOLOv4和一些SOTA模型的对比,YOLOv4要比YOLOv3提高了近10个点。1. 思维导图YOLOv4总体上可以划分为两部分,一部分是讲Bag of freebies和Ba...原创 2020-04-25 07:55:51 · 2883 阅读 · 0 评论 -
HRNet:打通多个视觉任务的全能骨干网络结构(分类,分割,检测,姿态,风格等)
HRNet是微软亚洲研究院的王井东老师领导的团队完成的,打通图像分类、图像分割、目标检测、人脸对齐、姿态识别、风格迁移、Image Inpainting、超分、optical flow、Depth estimation、边缘检测等网络结构。王老师在ValseWebinar《物体和关键点检测》中亲自讲解了HRNet,讲解地非常透彻。以下文章主要参考了王老师在演讲中的解读,配合论文+代码部分,来为各...原创 2020-04-22 11:11:06 · 7502 阅读 · 3 评论 -
Deep SORT多目标跟踪算法代码解析
Deep SORT是多目标跟踪(Multi-Object Tracking)中常用到的一种算法,是一个Detection Based Tracking的方法。这个算法工业界关注度非常高,在知乎上有很多文章都是使用了Deep SORT进行工程部署。笔者将参考前辈的博客,结合自己的实践(理论&代码)对Deep SORT算法进行代码层面的解析。在之前笔者写的一篇Deep SORT论文阅读总结中...原创 2020-04-20 11:51:33 · 5149 阅读 · 11 评论 -
IBN-Net: 提升模型的域自适应性
本文解读内容是IBN-Net, 笔者最初是在很多行人重识别的库中频繁遇到比如ResNet-ibn这样的模型,所以产生了阅读并研究这篇文章的兴趣,文章全称是: 《Two at Once: Enhancing Learning and Generalization Capacities via IBN-Net》。IBN-Net和SENet非常相似:可以方便地集成到现有网络模型中。在多个视觉任务中...原创 2020-04-08 08:59:06 · 2417 阅读 · 0 评论 -
【科普】神经网络中的随机失活方法
1. Dropout如果模型参数过多,而训练样本过少,容易陷入过拟合。过拟合的表现主要是:在训练数据集上loss比较小,准确率比较高,但是在测试数据上loss比较大,准确率比较低。Dropout可以比较有效地缓解模型的过拟合问题,起到正则化的作用。Dropout,中文是随机失活,是一个简单又机器有效的正则化方法,可以和L1正则化、L2正则化和最大范数约束等方法互为补充。在训练过程中,Drop...原创 2020-04-05 10:02:27 · 2061 阅读 · 0 评论 -
【从零开始学习YOLOv3】2. 代码配置和数据集处理
前言:本文是讲的是如何配置pytorch版本的yolov3、数据集处理、常用的命令等内容。该库的数据集格式既不是VOC2007格式也不是MS COCO的格式,而是一种新的格式,跟着文章一步一步来,很简单。另外我们公众号针对VOC2007格式数据集转化为本库所需要格式特意开发了一个简单的数据处理库。1. 环境搭建将github库download下来。git clone https://...原创 2020-03-31 11:51:06 · 1620 阅读 · 20 评论 -
【从零开始学习YOLOv3】8. YOLOv3中Loss部分计算
YOLOv1是一个anchor-free的,从YOLOv2开始引入了Anchor,在VOC2007数据集上将mAP提升了10个百分点。YOLOv3也继续使用了Anchor,本文主要讲ultralytics版YOLOv3的Loss部分的计算, 实际上这部分loss和原版差距非常大,并且可以通过arc指定loss的构建方式, 如果想看原版的loss可以在下方release的v6中下载源码。Githu...原创 2020-03-29 08:45:43 · 2663 阅读 · 1 评论 -
增强CNN学习能力的Backbone:CSPNet
CSPNet全称是Cross Stage Partial Network,主要从一个比较特殊的角度切入,能够在降低20%计算量的情况下保持甚至提高CNN的能力。CSPNet开源了一部分cfg文件,其中一部分cfg可以直接使用AlexeyAB版Darknet还有ultralytics的yolov3运行。1. 简介Cross Stage Partial Network(CSPNet)就是从网络...原创 2020-03-25 14:37:50 · 7230 阅读 · 3 评论 -
【CNN调参】目标检测算法优化技巧
上次bbuf分享了亚马逊团队的用于分类模型的bag of tricks, 详见:链接, 本文继续梳理一下目标检测trick, 解读这篇19年同样由亚马逊团队发表的《Bag of Freebies for Training Object Detection Neural Networks》。先来看看效果,在使用了trick后,Faster R-CNN能提高1-2个百分点,而YOLOv3则提高了5个百...原创 2020-03-22 09:19:00 · 1581 阅读 · 0 评论 -
【从零开始学习YOLOv3】1. cfg文件解析
前言: 与其他框架不同,Darknet构建网络架构不是通过代码直接堆叠,而是通过解析cfg文件进行生成的。cfg文件格式是有一定规则,虽然比较简单,但是有些地方需要对yolov3有一定程度的熟悉,才能正确设置。下边以yolov3.cfg为例进行讲解。1. Net层[net]#Testing#batch=1 #subdivisions=1#在测试的时候,设置batch=1,subd...原创 2020-03-21 17:05:58 · 3783 阅读 · 8 评论 -
【综述】神经网络中不同类型的卷积层
在计算机视觉中,卷积是最重要的概念之一。同时研究人员也提出了各种新的卷积或者卷积组合来进行改进,其中有的改进是针对速度、有的是为了加深模型、有的是为了对速度和准确率的trade-off。本文将简单梳理一下卷积神经网络中用到的各种卷积核以及改进版本。文章主要是进行一个梳理,着重讲其思路以及作用。文章目录1. Convolution2. 1x1/Pointwise Convolutions3. Sp...原创 2020-03-14 19:53:10 · 952 阅读 · 0 评论 -
【综述】CNN中的池化操作-你见过的没见过的池化这里都有
池化操作(Pooling)是CNN中非常常见的一种操作,Pooling层是模仿人的视觉系统对数据进行降维,池化操作通常也叫做子采样(Subsampling)或降采样(Downsampling),在构建卷积神经网络时,往往会用在卷积层之后,通过池化来降低卷积层输出的特征维度,有效减少网络参数的同时还可以防止过拟合现象。主要功能有以下几点:抑制噪声,降低信息冗余提升模型的尺度不变性、旋转不变形...原创 2020-03-10 16:19:00 · 2986 阅读 · 3 评论 -
【从零开始学习YOLOv3】5. 网络模型的构建
前言:之前几篇讲了cfg文件的理解、数据集的构建、数据加载机制和超参数进化机制,本文将讲解YOLOv3如何从cfg文件构造模型。本文涉及到一个比较有用的部分就是bias的设置,可以提升mAP、F1、P、R等指标,还能让训练过程更加平滑。1. cfg文件在YOLOv3中,修改网络结构很容易,只需要修改cfg文件即可。目前,cfg文件支持convolutional, maxpool, unsa...原创 2020-03-07 09:24:46 · 3004 阅读 · 0 评论 -
【从零开始学习YOLOv3】4. YOLOv3中的参数搜索
前言:YOLOv3代码中也提供了参数搜索,可以为对应的数据集进化一套合适的超参数。本文建档分析一下有关这部分的操作方法以及其参数的具体进化方法。1. 超参数YOLOv3中的 超参数在train.py中提供,其中包含了一些数据增强参数设置,具体内容如下:hyp = {'giou': 3.54, # giou loss gain 'cls': 37.4, # cls los...原创 2020-03-07 09:16:23 · 2108 阅读 · 17 评论