- 博客(738)
- 收藏
- 关注
原创 clip_len (int): Frames of each sampled output clip.含义
73 79 83 84 88 92 97 103 105 111 112 119 123 124]总共是32个帧。个采样帧,组成一个子clip。重复这个过程,就可以从整个视频中采样出多个这样的子clip。在"UniformSampleFrames"这个采样方法中,这个参数就代表了要从视频中采样出的每个子clip的帧数。
2024-08-24 14:41:49
70
原创 snipaste截图软件编辑时修改方框粗细
在编辑时,如下图,我们圈出的方框有时候是很粗,有时候很细,其实这个并不是默认的不可修改的,如果你想变细,就在框起来之后按1键或者【键,同样的,如果想变粗就按2键或者】键。
2024-08-23 19:53:36
190
原创 pyskl/models/heads/rgbpose_head.py
【代码】pyskl/models/heads/rgbpose_head.py。
2024-08-23 08:14:21
297
原创 尺寸变化详细解释
这是为了实现 “skip connection” 或 “residual connection”。层输出的通道数,以便进行残差连接。这种设计是 ResNet 系列模型的一个关键特点。这种设计可以更好地保留网络中的低层次特征,提高整体的性能。通道数从 64 变为 256 的过程确实需要进一步解释。层的输入通道数还是 64,而不是 256,因为前面的。总之,通道数从 64 变为 256 的过程是在。的通道数从 64 增加到 256,以匹配。层已经将通道数增加到 256 了。你观察到的问题是,为什么。
2024-08-22 16:40:40
386
原创 x_rgb = self.rgb_path.layer2(x_rgb)计算过程
【代码】x_rgb = self.rgb_path.layer2(x_rgb)计算过程。
2024-08-22 09:46:11
133
原创 三维最大池化计算输出
torch.Size([4, 64, 8, 112, 112])是输入,x_rgb = self.rgb_path.maxpool(x_rgb)是最大池化,MaxPool3d(kernel_size=(1, 3, 3), stride=(1, 2, 2), padding=(0, 1, 1), dilation=1, ceil_mode=False)是结构,输出是多少?综上所述,经过这个最大池化层后,输出特征图的尺寸为。发现手动计算和程序自动计算的是一致的。来计算一下这个最大池化层的输出尺寸。
2024-08-22 09:16:02
194
原创 3D卷积后特征图大小公式
imgs = torch.randn(4, 3, 8, 224, 224)这个是输入。x_rgb = self.rgb_path.conv1(imgs)这个是卷积。根据提供的输入尺寸和卷积层结构,我们可以计算出卷积层的输出尺寸。综上所述,经过这个卷积层后,输出特征图的尺寸为。发现手动计算和程序自动计算是一致的。卷积结构为ConvModule(
2024-08-22 09:03:04
488
原创 tensor([0.3491])和0进行比较可以吗?
在 PyTorch 中,我们可以比较一个张量和一个标量(单个数值)。比较的结果会是一个新的张量,其中每个元素都是布尔值(True 或 False)。这种比较操作在深度学习中很常见,比如用于激活函数、损失函数计算、掩码操作等。只要保证张量和标量的数据类型兼容,就可以进行比较运算。
2024-08-22 08:15:38
204
原创 self.rgb_path = ResNet3dPathway(**rgb_pathway)
输出:['layer2_lateral', 'layer3_lateral']下面这两条语句是不管执行if还是执行else,接下来都会执行下面两句。经过比对发现完全参数和自己手动计算完全一致。输出:(3, 4, 6, 3)这个时候if条件发现成立。
2024-08-21 16:22:04
359
原创 print(ResNet3dPathway(**pose_pathway))
50: (Bottleneck3d, (3, 4, 6, 3))对应下面的stage_blocks=(4, 6, 3),对应stage_blocks=(4, 6, 3)其中的4。对应stage_blocks=(4, 6, 3)其中的6。对应stage_blocks=(4, 6, 3)其中的3。这个可以理解为是Stem Layer。对应下面的num_stages=3。
2024-08-21 09:39:53
512
原创 print(ResNet3dPathway(**rgb_pathway))
对应这里的50这个键的值(Bottleneck3d, (3, 4, 6, 3))其中的最后一个3。这里对应num_stages (int): Resnet stages. Default: 4.对应这里的50这个键的值(Bottleneck3d, (3, 4, 6, 3))其中的第一个3。对应这里的50这个键的值(Bottleneck3d, (3, 4, 6, 3))其中的6。对应这里的50这个键的值(Bottleneck3d, (3, 4, 6, 3))其中的4。这个可以理解为是Stem Layer。
2024-08-21 09:22:17
270
原创 rgb_pathway[‘speed_ratio‘] = speed_ratio
也就是说因为我创建了实例,所以才会导致运行init函数,因为print语句就在init函数里面,所以才会运行print语句。发现经过if判断条件成立之后,字典里的内容新增创建了speed_ratio这个键,还有channel_ratio这个键。果然发现了创建的speed_ratio这个键,还有channel_ratio这个键。然后代码末尾需要加上这一句,得先把类实例化,只有实例化了,init函数才能运行。分析:想要打印看看pose_pathway字典里面都有哪些键,可以这样写。
2024-08-21 08:52:29
583
原创 变量的注意事项
如果发现没有加空格,出现了波浪线,找到这个code,然后找到Reformat Code,就会自动加上空格,于是波浪线就没有了。然后直接print语句print(v1)就同步也都已经修改了。发现编写变量的时候,如果不加空格的话,就会提示有波浪线。比如说想要修改为"中国联通青海集团优秀员工李四"这个时候,就只需要修改v1这个变量的字符串内容即可。写开发比较多的话,不由自主就会加上空格。不能使用Python内置关键字。昵称、外号,由变量来代指数据。也可以通过快捷键自动格式化。需要遵循PEP 8规范。
2024-08-20 15:22:41
103
原创 两个子模块的创建也是初始化
在大型复杂的模型中,这种子模块的创建通常会被进一步拆分到单独的方法中,比如上面提到的。方法中完成的,目的都是为了让这个模型实例能够正常工作。这两种初始化操作都是在。
2024-08-17 10:59:07
165
原创 pretrained2d (bool): Whether to load pretrained 2D model. Default: True.
【代码】pretrained2d (bool): Whether to load pretrained 2D model. Default: True.
2024-08-16 16:13:25
156
原创 stage_blocks=None,什么意思?
当 stage_blocks 参数被设置为 None 时,表示使用 arch_settings 中为当前 depth 设置的默认配置。也就是说,如果你传入一个 ResNet50 模型(depth=50),那么 stage_blocks 参数会被自动设置为 (3, 4, 6, 3)。总之,stage_blocks 的默认值 None 表示使用 arch_settings 中预定义的标准配置,如果需要自定义可以通过设置这个参数来实现。
2024-08-16 16:03:06
153
原创 arch_settings是什么?
类属性通常用于存储与类本身相关的配置信息,而实例属性则用于存储与特定实例相关的数据。相比之下,实例属性(Instance Attribute)是定义在类的实例(对象)上的属性。总之,类定义体就是定义一个类时,在类名与类主体之间的那部分代码。换句话说,类属性是属于类本身的数据,而不是属于类的某个特定实例。类属性(Class Attribute)是定义在类本身上的属性,而不是定义在类的实例(对象)上。类的一个类属性,它为不同深度的 3D ResNet 模型提供了标准化的配置信息。
2024-08-16 15:55:48
370
原创 在 Python 中,(str | None) 类型格式
在 Python 中,使用类型注释是一种可选的做法,它可以帮助开发者和工具(如 IDE 或 linter)更好地理解代码,并在编译或运行时进行类型检查。这种灵活的类型定义可以让函数或方法更加通用,增加其可用性和可扩展性。是一种常见的 Python 类型注释写法,用于表示一个参数可以接受字符串或。来表示"或"的关系,即该参数可以是字符串类型,也可以是。参数可以是一个字符串,表示预训练模型的名称,也可以是。值,而不需要担心类型不匹配的问题。这种类型注释的语法是使用。两种类型中的任意一种。在这个特定的例子中,
2024-08-16 13:42:38
189
原创 在 Python 中, // 表现出的行为
整数除法是一种特殊的除法运算,它将运算结果向下舍入到最接近的整数。与普通的除法运算 (是整数除法运算符,也称为"floor division"。) 不同,整数除法会丢弃小数部分,只返回商的整数部分。在 Python 中,
2024-08-16 10:45:17
205
原创 视频采样方式实现
属于数据增强组件的一部分,源码位于 mmaction.datasets.pipelines.loading.py 中。支持的采样方式包括 SampleFrames 与 DenseSampleFrames 两种。主要参数包括:clip_len, frame_interval, num_clips。clip_len=1, num_clips=x,另外一个参数取值无所谓。普通形式:在连续的帧中,间隔x帧提取帧,一共获取y帧。TSN形式:将视频分为x个部分,每个部分随机取一帧。
2024-08-16 10:28:27
481
原创 UniformSampleFrames类
这种均匀采样的方式,可以很好地保留原始视频的特性,为模型提供有代表性的输入数据。相比于简单地从头或尾采样,UniformSampleFrames 可以更好地涵盖视频的整体内容信息。
2024-08-16 09:16:44
244
原创 configs/rgbpose_conv3d/pose_only.py
分析:直接第一个init函数里面的参数自定义好了就是(1, 7, 7)代入到第二个init函数里面的conv1_kernel=conv1_kernel等号右边这个conv1_kernel。也就是说子类里面只有这两个参数进行了改变,其它的参数都沿用使用父类的。
2024-08-15 16:31:44
232
原创 像素个数多的灰度值
在直方图均衡化中,"展宽"通常指的是将直方图中原本集中的尖锐峰值(即大量像素集中在少数几个灰度级别上)变得更加平坦,从而使得像素的灰度值在整个灰度范围内分布得更加均匀。总之,“展宽”在直方图均衡化中是一个形象的描述,指的是通过重新分配像素的灰度值,减少直方图中的尖锐峰值,实现像素灰度值在整个范围内的更均匀分布,从而提高图像的对比度和清晰度。:在原始图像的直方图中,如果某些灰度值对应的像素数量特别多,这意味着这些灰度值在图像中占据了主导地位,可能是由于图像的光照不均匀或曝光问题导致的。
2024-08-15 10:37:21
181
原创 直方图均衡化的例子
想象一下,你有一堆不同颜色的球,这些球代表图像中的像素。现在,如果大部分球都是深色的,只有很少的浅色球,这就相当于一张对比度低的图像,看起来比较暗淡,细节不够清晰。:经过重新分配后,原本集中在深色的球现在分散到了更多的颜色上,浅色的球也变多了。如果某种颜色的球太多,我们就把它们分散到其他颜色的球堆里,直到每种颜色的球数量都符合我们的新规则。直方图均衡化的过程就像是重新分配这些球,让每种颜色的球数量更加均匀。:首先,我们数一下每种颜色的球有多少个,这就是原始图像的直方图。
2024-08-15 10:15:07
100
原创 一切的基础: 灰度图像
答:彩色图像虽然带来了不必要的复杂性且占用了更多的内存空间,但也不能一棒子打死,在某些分类任务中,彩色图像会非常有用。比如交通道路线(灰色图像)进行分类,该如何区分黄白线呢?
2024-08-15 10:07:30
209
原创 直方图均衡化是一种全局方法
直方图均衡化确实是一种全局方法。它通过对整个图像的直方图进行操作,来增强图像的对比度。这种方法考虑了图像中所有像素的强度分布,而不是只针对图像的某个局部区域。通过重新分配像素的强度值,直方图均衡化能够使图像的直方图更加均匀,从而提高图像的全局对比度。这种方法特别适用于改善那些由于光照不均或曝光问题导致对比度不足的图像。
2024-08-15 09:39:32
56
原创 i.e.,怎么理解?
进一步解释用,意为:也就是)的缩写。目的是用来进一步解释前面所说的观点(不像后文的e.g.那样引入实例来形象化),意思是“那就是说,换句话说”。
2024-08-15 09:26:33
97
原创 in low-level image processing
"In low-level image processing" 这个短语在图像处理领域中具有特定的意义,它指的是在图像处理的初级阶段进行的操作,通常包括但不限于图像的预处理、增强、滤波等。
2024-08-15 09:05:00
265
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人