- 博客(32)
- 收藏
- 关注
原创 Hunuan-DiT代码阅读
输入x和c,x是上面所有dit block的输出,c是上面的extra_vectors;对于c先进行SILU+Linear,得到(B∗2816B*2816B∗2816),并彩分成shift 和 scale(分别为B∗1408B*1408B∗1408),最终通过x * (1 + scale.unsqueeze(1)) + shift.unsqueeze(1),然后通过Linear,得到最终输出x(B∗4096∗32B*4096*32B∗4096∗32。
2024-10-10 17:10:04
1250
原创 yolov10代码阅读
a. 对于SCDown,是 Spatial-channel decoupled downsampling,主要是针对原始的下采样Conv2d(C,2C,kernel=3,stride=2)的下采集,进行修改成 Conv2d(C,2C,kernel=1,stride=1)加上一个组卷积 Conv2d(2C,2C,kernel=3,stride=2,group=2C);的卷积都替换成了组卷积(depthwise convolution),对于小模型会采用。b. CIB是放在C2f模块中,主要是针对。
2024-06-04 11:47:12
1512
原创 Pytorch中查找不参与损失计算的层及解决方法
在Pytorch中计算loss,如果有些层未参与计算,那么在跑多卡分布式训练的时候,会报错,提示要设置find_unused_parameters=True;
2023-07-17 16:32:33
1729
1
原创 DBnet
二 代码分析整体代码参考https://github.com/BADBADBADBOY/pytorchOCR,主要是参考作者的多标签训练1 数据处理1.1 对于标注的数据,分为标注框polys,标签classes(这里一共分成两类),以及不参与训练的框会有个dontcare去区分;数据增强主要是随机缩放,随机旋转(这里是-10°到10°),随机翻转以及随机裁剪1.2 对于随机裁剪的计算方式,会选取crop的范围(这里的原则是保证crop的范围内有一个完整的care的框就保留该crop,要不就重复直到
2021-09-08 18:21:58
823
原创 VIT和Swin Transformer
一 VIT模型1 代码和模型基础以timm包为代码基础,VIT模型以vit_base_patch16_224作为模型基础2 模型结构2.1 输入的图像B∗3∗224∗224B*3*224*224B∗3∗224∗224,第一步patch_embeding,这里一个patch的对应的像素大小是16∗1616*1616∗16,也就是对输入图像作conv2d,对应的kernel_size=16,stride=16,以及升维为768,最终得到输出feature为B∗14∗14∗768B*14*14*768B∗
2021-08-25 11:54:09
5247
原创 CRNN+WAP模型
目前OCR技术,比较主流的是CRNN模型即CNN+RNN+CTC Loss;还有个就是WAP模型即CNN+Attention+RNNCRNNCRNN论文https://arxiv.org/abs/1507.05717;对应的pytroch github地址https://github.com/meijieru/crnn.pytorch整个模型流程是输入图片,通过CNN提取图片特征,然后经过RNN进行时序增强,最终通过CTC Loss进行优化,具体可以参考https://zhuanlan.zhihu.
2021-04-06 16:13:52
589
原创 Transformer在CV中的应用
本文主要参考https://zhuanlan.zhihu.com/p/308301901Transformer结构1 Transformer靠attention机制,不适用CNN,RNN,抓长距离依赖关系比RNN强;在图像中的应用,就是Transformer可以突破图像的感受野限制,可以计算该像素与全部图像的关系2 结构形式3 其中的位置编码,也是后期研究的一个重点,因为不采用RNN,无法捕获时序的关系,所以加了个位置编码(非常重要,具体可参考这篇文章对后续位置编码的优化https://zhuan
2021-03-23 11:44:06
1665
原创 卷积层梯度反向传播,反卷积,上采样以及反池化
1 卷积层梯度反向传播卷积的前向传播,相对简单Ouput=(Input+2p−k)/s+1Ouput = (Input +2p- k)/s + 1Ouput=(Input+2p−k)/s+1,具体实现,可以参考https://zhuanlan.zhihu.com/p/40951745卷积运算也是转化成矩阵的乘法,如下图上图是个多通道的算例,这里就是先运用img2col(image to column),将图片转化成矩阵,然后kernel reshape成一个矩阵,相乘得到output,然后在resh
2020-10-27 09:45:41
1694
原创 Pytorch中的优化器和学习率调整
优化器和学习率类型官方文档https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate1 使用总结一般优化器建立:# 正常优化器建立optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)optimizer = optim.Adam([var1, var2], lr=0.0001)其中model.parameters()可以根据模型需要,对于
2020-09-08 11:09:37
2439
原创 Weighted Boxes Fusion
Weighted Boxes Fusion: ensembling boxes for object detection models1 简介文章地址https://arxiv.org/abs/1910.13302, 对应的github代码https://github.com/ZFTurbo/Weighted-Boxes-Fusion2 算法模块1 参考代码流程,主函数输入 weighted_boxes_fusion(boxes_list, scores_list, labels_list, wei
2020-06-22 11:47:39
2692
2
原创 Pytorch中加载预训练模型以及冻结层
一、加载预训练模型加载方式有两种,主要是第二种对于模型finetune比较常用1、加载框架已有的模型(如resnet等)代码如下:import torchimport torch.nn as nnfrom torch.utils import model_zooimport torchvision.models as modelsmodel = models.resnet18() model_urls = { 'resnet18': 'https://download.py
2020-05-27 23:06:52
2799
原创 Pytorch中nn.Module模块一些解析
一、 model.state_dict()pytorch 中的 state_dict 是一个简单的python的字典对象,将每一层与它的对应参数建立映射关系.(如model的每一层的weights及偏置等等)注意:(1)只有那些参数可以训练的layer才会被保存到模型的state_dict中,如卷积层,线性层,BN层等等,像什么池化层、激活函数层这些本身没有参数的层是没有在这个字典中的;(2)这个方法的作用一方面是方便查看某一个层的权值和偏置数据,另一方面更多的是在模型保存的时候使用。代码示例i
2020-05-27 22:23:16
1648
原创 Pytorch一些使用总结
1 torch.device用法,device分成‘cuda’和‘cpu’两种模式,可以通过torch.cuda.current_device()查看当前device模式和对应的index,对应的torch.device有两个参数,第一个是str格式,即cuda或者cpu,第二个是对应的index,是个整型格式,如1,2等,使用如下:>>> torch.device('cuda...
2020-04-24 10:54:23
274
原创 BMN算法代码一些解读
1 对于BMN时序点定位算法,原作者知乎解读https://zhuanlan.zhihu.com/p/80333569,对应的官方paddle代码https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/video,对应的pytorch版本https://github.com/JJBOY/BMN-Boundary-Matching-N...
2020-04-09 10:57:54
2189
1
原创 Detectron2(二): Trainer
1 train_net.py中的Trainer是继承了detectron2/engine/defaults.py中的DefaultTrainer类,而该类又是继承了detectron2/engine/train_loog.py中的SimpleTrainer类,而SimpleTrainer又继承了相同文件里面的TrainerBase类a. 在最基础的TrainerBase类中定义了register...
2019-11-19 15:18:59
1143
原创 Detectron2(一): Dataloader
1 detectron2的dataloader主要在detectron2/data/文件夹中:a. 第一个核心函数是根据提供的train.json等进行加载,举例coco.py中的load_coco_json函数,这个是加载json文件的。b. 根据这个函数以及对应的json名字,就可以进行注册DatasetCatalog(这个是主要的)以及MetedataCatalog(主要是一些附加属性)...
2019-11-19 14:40:08
774
原创 计算机视觉注意力机制
注意力机制,就是对学习到的feature进行权重分配,以得到我们最关注的区域特征(包括空域,时域以及通道信息)1 Transformer参考https://zhuanlan.zhihu.com/p/48508221a self-attention在self-attention中,每个输入特征input feature会通过卷积得到3个不同的向量,它们分别是Query向量,Key向量和Va...
2019-10-11 11:52:15
576
原创 行为动作识别(二):SlowFast
1 Slowfast模型,一共有两个通道,一个Slow pathway,一个Fast pathway,其中Slow pathway采用低采样,高通道数主要提取空时特征;Fast pathway用高时间采样,低通道数量(主要为了降低计算量),来提取时域特征,两个通道都是以3Dresnet作为backbone,提取特征的,基础网络图如下:2 对于两个通道都没有采用temporal downsamp...
2019-10-08 16:18:49
6904
原创 行为动作识别模型概览
1 TSN模型,主要对视频段进行间隔采样,并采用2DCNN代替3DCNN2 TRN模型,基于TSN模型,对于采样后的图片,建立有序的different frame relation modules,最后在将这些modules结果合并,进行分类3 TSM模型,也是建立在TSN模型基础上,对于采样后的图片特征,通过shift操作,让当前一帧包含前一帧和后一帧的channel信息,以提高时域的感受...
2019-09-05 17:06:14
1913
原创 行为动作识别(一):TSM 和 TRN
1 TSM算法论文和Github2 参考https://blog.youkuaiyun.com/qq_18644873/article/details/893059283 如今行为动作识别,都是在探讨如何更好的描述时域信息特征。该文章在TSN基础上,提出Temporal Shift Module (TSM),既能保持高效又能有高性能。TSM模块是参考《Shift: A Zero FLOP, Zero Pa...
2019-08-13 16:11:33
7995
4
原创 Resnet结构
1 Resnet网络又叫残差网络,主要是为了解决网络越来越深带来的梯度消失\爆炸(现在可以通过BN解决),还有就是随着网络加深,训练集准确度下降(不是因为过拟合造成的),其主要结构如下图:2 以Resnet50为例,每一个block,有两种形式,一种basic block,一种bottleneck block,第二种纯粹是为了减少网络参数,如下图3 对于从conv2_x到conv3_x,在...
2019-07-16 16:16:09
1179
原创 Pytorch中Tensor的一些操作
1 a = torch.rand(1,10,4),生成的Tensor在0-1之间,且tensor的shape为(1,10,4)2 torch.cat(tensors, dim=0, out=None) → Tensor>>> x = torch.randn(2, 3)>>> xtensor([[ 0.6580, -1.0969, -0.4614], ...
2019-06-19 19:31:46
6243
原创 RetinaNet
整个网络结构采用resnet作为backbone,resnet整个网络结构如下:1 FPN结构,采用conv3_x,conv4_x,conv5_x的结果作为feature pyramid,自上而下进行上采样特征叠加,具体步骤举例:对于conv5_x的feature大小为7∗77*77∗7,采用上采样nn.Upsample(scale_factor=2, mode=‘nearest’),得到14∗...
2019-05-13 16:04:15
267
原创 NMS,SoftNMS以及ROIPooling,ROIAlign
一 NMS参考代码,此为Pytorch版本:def NMS(boxs, scores, nms_threshold): # input boxes(N*4), scores(N,) x1 = boxs[:,0] y1 = boxs[:,1] x2 = boxs[:,2] y2 = boxs[:,3] area = (boxs[:,2]-boxs[...
2019-05-08 11:20:02
659
2
原创 Python 进程池Pool中一些坑
1 from multiprocessing import Pool,Queue。其中Queue在Pool中不起作用,具体原因未明。解决方案:如果要用Pool创建进程,就需要使用multiprocessing.Manager()中的Queue,与multiprocessing中的Queue不同q=Manager().Queue()#Manager中的Queue才能配合Poolpo = P...
2019-04-30 11:36:35
6147
原创 Arcface补充
Arcface中提出cos(θ+m)cos(\theta+m)cos(θ+m),其中θ+m\theta+mθ+m在[0,π][0,\pi][0,π]之间,那么当θ>π−m\theta>\pi-mθ>π−m应该怎么办?(参考issue)1 为了保证在θ\thetaθ属于[0,π][0,\pi][0,π]之间,是单调递减的,当θ>π−m\theta&a...
2019-03-18 20:24:58
351
原创 A Lightened CNN for Deep Face Representation读后感
论文题目 A Light CNN for Deep Face Representation with Noisy Labels1 本文提出一个 LIght CNN结构,可以在有巨大噪声标签的大规模数据集上,学习到compact embedding。提出了一个新型激活函数Max-Feature-Map (MFM),该函数不仅能区分noisy and informative signals,还在特征...
2019-03-04 22:59:41
560
原创 Megaface Challenge1 评测步骤
1 参照论文 The MegaFace Benchmark: 1 Million Faces for Recognition at Scale,主要进行Identification测试。这里包括两部分数据,一部分probe set,一部分distractors,还有个官方给定的评测程序devkit。其中distractors,是megaface官方提供的自己的数据集,有超过百万人脸。另外一个pro...
2019-01-29 09:29:39
3683
4
原创 PCA主成分分析解释及PYTHON代码
1 假设有m个样本,每个样本有n维,则定义输入dataMat为m*n的矩阵2 对输入dataMat矩阵进行均值化处理,就是讲m个样本中每一个维度值进行取平均,然后每个样本的值在减去这个平均值,记为newData,这个新矩阵对应每一维的均值是0,依然是m∗nm*nm∗n矩阵3 进行主成分分析降维,是为了找一个n∗dn*dn∗d矩阵,将newData矩阵进行线性变换成lowData矩阵,降维成d维...
2018-12-19 14:58:57
2941
原创 caffe2多GPU训练模型,保存模型及加载保存的模型
本文主要参考caffe2提供的Multi-GPU_Training.ipynb例子进行模型训练 1 关于生产LMDB数据集,根据caffe2提供的lmdb_create_example.py生成的lmdb,在使用中会发现,得到的数据都是0,参考issue里面提供的的命令行 caffe2/build/bin/make_image_db -color -db lmdb -input_folder ...
2018-08-16 15:09:38
1270
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人