a ùnßeø ã@s’ddlmZddlmZddlmZddlmZddlm Z ee dœdd „Z ed œd d „Z ee dœd d„Z ed œdd„Zeeejdœdd„ZdS)é)ÚOptional)Únn)ÚCfgNodeé)ÚEmbedder©ÚDensePoseDataFilter)ÚcfgÚinput_channelscCs&ddlm}|jjj}| |¡||ƒS)a Create an instance of DensePose predictor based on configuration options. Args: cfg (CfgNode): configuration options input_channels (int): input tensor size along the channel dimension Return: An instance of DensePose predictor r)ÚDENSEPOSE_PREDICTOR_REGISTRY)Z predictorsr ÚMODELÚROI_DENSEPOSE_HEADÚPREDICTOR_NAMEÚget)r r r Zpredictor_name©rúH/home/alin0222/detectron2/projects/DensePose/densepose/modeling/build.pyÚbuild_densepose_predictor s  r©r cCs t|ƒ}|S)an Build DensePose data filter which selects data for training Args: cfg (CfgNode): configuration options Return: Callable: list(Tensor), list(Instances) -> list(Tensor), list(Instances) An instance of DensePose filter, which takes feature tensors and proposals as an input and returns filtered features and proposals r)r Z dp_filterrrrÚbuild_densepose_data_filters rcCs&ddlm}|jjj}| |¡||ƒS)zô Build DensePose head based on configurations options Args: cfg (CfgNode): configuration options input_channels (int): input tensor size along the channel dimension Return: An instance of DensePose head r)ÚROI_DENSEPOSE_HEAD_REGISTRY)Zroi_heads.registryrr r ÚNAMEr)r r rZ head_namerrrÚbuild_densepose_head,s  rcCs$ddlm}|jjj}| |¡|ƒS)z¨ Build DensePose loss based on configurations options Args: cfg (CfgNode): configuration options Return: An instance of DensePose loss r)ÚDENSEPOSE_LOSS_REGISTRY)Úlossesrr r Ú LOSS_NAMEr)r rÚ loss_namerrrÚbuild_densepose_losses<s  r)r ÚreturncCs|jjjjrt|ƒSdS)zå Build embedder used to embed mesh vertices into an embedding space. Embedder contains sub-embedders, one for each mesh ID. Args: cfg (cfgNode): configuration options Return: Embedding module N)r r ÚCSEÚ EMBEDDERSrrrrrÚbuild_densepose_embedderKs r N)ÚtypingrÚtorchrÚdetectron2.configrZ cse.embedderrÚfilterrÚintrrrrÚModuler rrrrÚs