a *»´f ã@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úE/data1/chongzheng_p23/Projects/CatVTON-hf/densepose/modeling/build.pyÚbuild_densepose_predictors  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 rZ 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_embedderMs rN)ÚtypingrÚtorchrÚdetectron2.configrZ cse.embedderrÚfilterrÚintrrrrÚModulerrrrrÚs