class_docstr: Lip Reading / Visual Speech Recognition (VSR) ResNet Front-End Network
  
  Paper:
  'Audio-Visual Efficient Conformer for Robust Speech Recognition' by Burchi and Timofte
  https://arxiv.org/abs/2301.01456
  
  Args:
      in_channels: number of inputs video channels, 1 for grayscale and 3 for RGB
      model: model size in ["ResNet18", "ResNet34", "ResNet50", "ResNet101", "ResNet152"]
      dim_output: output feature dimension for linear projection after spacial average pooling
      out_channels_first: Whether outputs should have channels_first format (Batch, Dout, Time) or channels_last (Batch, Time, Dout)
class_docstr_tok: ["Lip","Reading","\/","Visual","Speech","Recognition","(","VSR",")","ResNet","Front-End","Network","Paper",":","'Audio-Visual","Efficient","Conformer","for","Robust","Speech","Recognition","'","by","Burchi","and","Timofte","https",":","\/\/arxiv.org\/abs\/2301.01456","Args",":","in_channels",":","number","of","inputs","video","channels",",","1","for","grayscale","and","3","for","RGB","model",":","model","size","in","[","``","ResNet18","''",",","``","ResNet34","''",",","``","ResNet50","''",",","``","ResNet101","''",",","``","ResNet152","''","]","dim_output",":","output","feature","dimension","for","linear","projection","after","spacial","average","pooling","out_channels_first",":","Whether","outputs","should","have","channels_first","format","(","Batch",",","Dout",",","Time",")","or","channels_last","(","Batch",",","Time",",","Dout",")"]
code: def __init__(
      self,
      in_channels=1,
      model="ResNet18",
      dim_output=256,
      out_channels_first=True,
  ):
      super(ResNetVideoFrontEnd, self).__init__()
  
      self.front_end = nn.Sequential(
          nn.Conv3d(
              in_channels=in_channels,
              out_channels=64,
              kernel_size=(5, 7, 7),
              stride=(1, 2, 2),
              padding=(2, 3, 3),
          ),
          nn.BatchNorm3d(num_features=64),
          nn.ReLU(),
          nn.MaxPool3d(
              kernel_size=(1, 3, 3), stride=(1, 2, 2), padding=(0, 1, 1)
          ),
          ResNet(
              include_stem=False, dim_output=dim_output, model=model
          ),
      )
  
      self.out_channels_first = out_channels_first
  
file_path: NeMo/nemo/collections/multimodal/speech_cv/modules/resnet_video_front_end.py
imports: from collections import OrderedDict
  from torch import nn
  from nemo.collections.multimodal.speech_cv.parts.submodules.resnet import ResNet
  from nemo.core.classes.module import NeuralModule
  from nemo.core.neural_types import LengthsType, NeuralType, VideoSignal
label_desc: Use image node_id 1 to create a new ResNetVideoFrontEnd object from inherited base classes: NeuralModule with example: obj = ResNetVideoFrontEnd(in_channels, model, dim_output, out_channels_first)