项目介绍: resnet18.fb_swsl_ig1b_ft_in1k
项目背景
resnet18.fb_swsl_ig1b_ft_in1k是一个图像分类模型,它属于ResNet-B系列。此模型设计用于从图像中识别和分类出特定的对象类别。它的应用场景十分广泛,例如图像识别、对象检测等领域。
模型特点
该模型具有几个显著的特点:
- 激活函数使用ReLU:ReLU(整流线性单元)是深度学习中常用的激活函数,具有简单高效的特性。
- 单层7x7卷积与池化层:大卷积核结合池化操作,可以有效提取图像中的主要特征。
- 1x1卷积快捷降采样:通过1x1卷积降采样,可以降低信息损失,同时增加模型的效率。
数据集和训练方法
这个模型先在Instagram-1B标签数据集上使用半弱监督学习进行预训练,然后由论文作者在ImageNet-1k数据集上进行了微调。半弱监督学习结合无监督和有监督的优势,使得模型有更好的泛化能力。
模型详细信息
- 模型类型:图像分类/特征骨干网络
- 模型参数:
- 参数数量:11.7百万
- GMACs(每秒十亿次乘加运算):1.8
- 激活量:2.5百万
- 图片尺寸:224 x 224
主要参考论文
- Billion-scale semi-supervised learning for image classification: 查看论文
- Deep Residual Learning for Image Recognition: 查看论文
代码示例
图像分类
以下是一个简单的使用timm库进行图像分类的Python代码示例:
from urllib.request import urlopen
from PIL import Image
import timm
img = Image.open(urlopen('https://example.com/image.png'))
model = timm.create_model('resnet18.fb_swsl_ig1b_ft_in1k', pretrained=True)
model = model.eval()
data_config = timm.data.resolve_model_data_config(model)
transforms = timm.data.create_transform(**data_config, is_training=False)
output = model(transforms(img).unsqueeze(0))
通过此代码,可以使用预训练的resnet18模型对图像进行分类。
特征提取
同样可以提取特征映射,以获取更详细的图像信息。
model = timm.create_model(
'resnet18.fb_swsl_ig1b_ft_in1k',
pretrained=True,
features_only=True
)
output = model(transforms(img).unsqueeze(0))
for o in output:
print(o.shape)
模型比较
可以在timm的模型结果页面中查看这些模型的详细性能数据,包括参数数量、GMACs等指标。这有助于在选择模型时做出更好的决策,具体依据如模型的参数数量和处理速度等。
这种模型在要求高精度和高效能的场景中表现优异,尤其适合在资源受限的硬件上运行。通过模型的预训练和微调,使其在大规模数据集上具有良好的表现,是在计算机视觉领域一种强有力的工具。