You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算torchvision预训练FasterRCNNFPN的模型复杂度及正确输入尺寸?

关于FasterRCNN_ResNet50_FPN复杂度计算的输入尺寸说明

官方报告对应的标准输入尺寸

torchvision官方在报告该模型的复杂度指标时,采用的是**(1333, 800)**的输入尺寸(宽×高,通道数固定为3)。这个尺寸是模型在COCO数据集上训练/评估时的默认输入规格:训练阶段会将图像短边缩放到800,长边限制在1333以内以保持比例;官方计算FLOPs时则直接使用固定的(1333, 800)尺寸来统一基准。

224×224输入导致FLOPs不稳定的原因

FasterRCNN包含RPN(区域提议网络)和RoI Head模块,这两部分的计算量会随输入图像尺寸、生成的提议框数量波动。用224×224这类小尺寸输入时,生成的提议框数量少且随机性强,再加上FPN的多尺度特征计算,会直接导致ptflops输出的FLOPs结果不稳定。而1333×800是模型设计时的标准输入尺寸,能保证计算结果和官方报告对齐。

正确计算复杂度的步骤(以ptflops为例)

  1. 导入依赖模块:
import torch
from torchvision.models.detection import fasterrcnn_resnet50_fpn
from ptflops import get_model_complexity_info
  1. 初始化预训练模型并设置为评估模式:
model = fasterrcnn_resnet50_fpn(pretrained=True)
model.eval()
  1. 用官方标准尺寸计算复杂度:
# 输入格式为 (通道数, 高, 宽)
flops, params = get_model_complexity_info(model, (3, 800, 1333), as_strings=True, print_per_layer_stat=True)
print(f"FLOPs: {flops}")
print(f"Params: {params}")

注意:必须将模型设为eval模式,避免训练阶段的随机操作(如随机采样提议框)干扰计算结果的稳定性。

补充说明

  • 参数数量是模型固有属性,与输入尺寸无关,工具计算的参数值应与官方一致(约41M)。
  • 若需验证FLOPs,可直接对比torchvision官方文档给出的数值,确保输入尺寸匹配后结果对齐。

内容的提问来源于stack exchange,提问作者vantienpham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 23:32:55