timm输出模型中间特征-features_only=True

# 输出模型中间特征

create_model时不止有可以控制head的参数,我们还可以添加参数features_only=True
可以输出模型的中间过程的特征图,方便我们做后续的分割或者其他任务而不仅仅局限于分类任务


但是不是所有模型都支持,比如ViT就没有 qvq,如果创建模型的时候加入此参数,会报错:features_only not implemented for Vision Transformer models.
不过没有也有办法,可以使用hook,这个我们下一节再讲

```
modelconvnext = timm.create_model('convnext_tiny', features_only=True, pretrained=True)
features = modelconvnext(img224)#len(features)#4

for i in features:
    print(i.size())

'''
torch.Size([2, 96, 56, 56])
torch.Size([2, 192, 28, 28])
torch.Size([2, 384, 14, 14])
torch.Size([2, 768, 7, 7])
'''

```
其实不止有features_only=True, 
还有out_indices-索引, output_stride-步幅 可以控制选择
可通过out_indices参数指定从哪个level获取feature
```
feature_extractor = timm.create_model('resnet50', features_only=True, out_indices=[1, 3, 4])
features = feature_extractor(img224)
for a in features:
    print(a.shape)
# Results:
# torch.Size([1, 256, 56, 56])
# torch.Size([1, 1024, 14, 14])
# torch.Size([1, 2048, 7, 7])
```
如何实现的呢?
在build_model_with_cfg创建模型的时候,如果有feature相关的参数,就用FeatureListNet重新包装模型
接下来我们来看一下这些特征提取器究竟是什么类型东西

```
import timm
feature_extractor = timm.create_model('resnet34', features_only=True, out_indices=[3])

print('type:', type(feature_extractor))
print('len: ', len(feature_extractor))
for item in feature_extractor:
    print(item)

```
输出:

type: <class 'timm.models.features.FeatureListNet'>
len:  7
conv1
bn1
act1
maxpool
layer1
layer2
layer3

可以看到,feature_extractor 其实也是一个神经网络,在 timm 中称为 FeatureListNet,而我们通过 out_indices 参数来指定截取到哪一层特征。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个启动参数列表,用于指定 Linux 操作系统的启动选项。其中包含了一些针对特定硬件或软件的优化设置,例如: - stack_depot_disable=on:禁用堆栈存储器。 - kasan.stacktrace=off:禁用 KASan 堆栈跟踪。 - kvm-arm.mode=protected/nvhe:设置 KVM ARM 的虚拟化模式。 - cgroup_disable=pressure:禁用 cgroup 内存压力控制。 - kpti=0:禁用内核页表隔离(KPTI)。 - ssbd=force-off:禁用 Spectre 漏洞的防护措施。 - lpm_levels.sleep_disabled=1:禁用低功耗模式。 - video=vfb:640x400,bpp=32,memsize=3072000:设置虚拟帧缓冲器的分辨率、颜色深度和内存大小。 - msm_rtb.filter=0x237:设置 MSM RTB 过滤器。 - service_locator.enable=1:启用服务定位器。 - swiotlb=4096:设置 I/O 内存管理器的缓冲区大小。 - firmware_class.path=/vendor/firmware_mnt/image:设置固件文件路径。 - loop.max_part=7:设置循环设备的最大分区数。 - hibernate=nocompress:设置休眠时不压缩内存数据。 - noswap_randomize:禁用交换空间的随机化地址。 - pcie_ports=compat:设置 PCIe 接口的兼容性模式。 - console=ttyMSM0,115200n8 earlycon=qcom_geni,0xa90000 qcom_geni_serial.con_enabled=1:设置控制台终端和串口的参数。 - slub_debug=FZPU:启用 SLUB 分配器的调试模式。 - bootconfig:指定使用 Bootconfig 工具进行启动配置。 - buildvariant=userdebug:设置构建变体为用户调试版。 - rootwait ro:等待根文件系统挂载完成,以只读模式启动。 - init=/init:指定 init 进程的路径。 - resume=/dev/sda13:设置恢复分区的设备路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值