Hi,
I’m trying to convert RCNN model from torch vision model. Due to a known issue of jit tracing for RCNN: https://discuss.pytorch.org/t/fasterrcnn-resnet50-jit-trace/62337 we can’t use jit tracing for RCNN model. If I use JIT script, I got a bunch of missing ops:
NotImplementedError: The following operators are not implemented: ['aten::_set_item', 'torchvision::_new_empty_tensor_op', 'prim::dtype', 'aten::__isnot__', 'prim::max', 'torchvision::nms', 'prim::requires_grad', 'aten::index', 'aten::is_scripting', 'prim::DictConstruct', 'aten::uniform_', 'aten::tensor', 'aten::nll_loss2d', 'aten::smooth_l1_loss', 'prim::layout', 'aten::__and__', 'aten::empty', 'aten::__derive_index', 'aten::list', 'aten::__interpolate', 'aten::nonzero', 'aten::new_full', 'aten::index_put_', 'prim::CreateObject', 'aten::items', 'prim::RaiseException', 'prim::shape', 'aten::floordiv', 'aten::warn', 'aten::__or__', 'aten::__is__', 'prim::SetAttr', 'aten::item', 'aten::randperm', 'aten::__not__', 'prim::Uninitialized', 'aten::numel', 'aten::dim', 'aten::new_empty', 'aten::nll_loss', 'aten::unbind', 'aten::append', 'aten::broadcast_tensors', 'aten::is_pinned', 'aten::values', 'prim::unchecked_cast', 'aten::_cast_Float', 'aten::__range_length', 'aten::_cast_Byte', 'prim::min', 'aten::_get_tracing_state', 'aten::update', 'prim::TupleIndex', 'aten::format', 'aten::clear', 'aten::dict', 'aten::copy_', 'aten::scalar_tensor', 'aten::conv2d', 'aten::str', 'aten::__contains__', 'aten::binary_cross_entropy_with_logits', 'aten::remainder', 'aten::keys', 'aten::insert', 'aten::as_tensor', 'torchvision::roi_align', 'aten::l1_loss']
Some of them just op name difference, such as aten::conv2d
.
A simple script to reproduce:
import torch
import torchvision
from tvm import relay
model_name = 'fasterrcnn_resnet50_fpn'
model = getattr(torchvision.models.detection, model_name)(pretrained=True)
model = model.eval()
input_shape = [1, 3, 512, 512]
scripted_model = torch.jit.script(model)
input_name = 'input0'
shape_list = [(input_name, input_shape)]
mod, params = relay.frontend.from_pytorch(scripted_model, shape_list)