Skip to content

Commit

Permalink
Add annotations to vision/fair/detectron2/projects/DensePose
Browse files Browse the repository at this point in the history
Reviewed By: shannonzhu

Differential Revision: D33970334

fbshipit-source-id: 629c0b28fb1886bbbee4b30ee33273a644522d73
  • Loading branch information
Pyre Bot Jr authored and facebook-github-bot committed Feb 3, 2022
1 parent 710e779 commit 7cad0a7
Show file tree
Hide file tree
Showing 14 changed files with 38 additions and 38 deletions.
16 changes: 8 additions & 8 deletions projects/DensePose/densepose/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from detectron2.config import CfgNode as CN


def add_dataset_category_config(cfg: CN):
def add_dataset_category_config(cfg: CN) -> None:
"""
Add config for additional category-related dataset options
- category whitelisting
Expand All @@ -18,7 +18,7 @@ def add_dataset_category_config(cfg: CN):
_C.DATASETS.CLASS_TO_MESH_NAME_MAPPING = CN(new_allowed=True)


def add_evaluation_config(cfg: CN):
def add_evaluation_config(cfg: CN) -> None:
_C = cfg
_C.DENSEPOSE_EVALUATION = CN()
# evaluator type, possible values:
Expand Down Expand Up @@ -47,7 +47,7 @@ def add_evaluation_config(cfg: CN):
_C.DENSEPOSE_EVALUATION.MESH_ALIGNMENT_MESH_NAMES = []


def add_bootstrap_config(cfg: CN):
def add_bootstrap_config(cfg: CN) -> None:
""" """
_C = cfg
_C.BOOTSTRAP_DATASETS = []
Expand Down Expand Up @@ -85,7 +85,7 @@ def get_bootstrap_dataset_config() -> CN:
return _C


def load_bootstrap_config(cfg: CN):
def load_bootstrap_config(cfg: CN) -> None:
"""
Bootstrap datasets are given as a list of `dict` that are not automatically
converted into CfgNode. This method processes all bootstrap dataset entries
Expand All @@ -102,7 +102,7 @@ def load_bootstrap_config(cfg: CN):
cfg.BOOTSTRAP_DATASETS = bootstrap_datasets_cfgnodes


def add_densepose_head_cse_config(cfg: CN):
def add_densepose_head_cse_config(cfg: CN) -> None:
"""
Add configuration options for Continuous Surface Embeddings (CSE)
"""
Expand Down Expand Up @@ -155,7 +155,7 @@ def add_densepose_head_cse_config(cfg: CN):
_C.MODEL.ROI_DENSEPOSE_HEAD.CSE.PIX_TO_SHAPE_CYCLE_LOSS.TEMPERATURE_VERTEX_TO_PIXEL = 0.05


def add_densepose_head_config(cfg: CN):
def add_densepose_head_config(cfg: CN) -> None:
"""
Add config for densepose head.
"""
Expand Down Expand Up @@ -234,7 +234,7 @@ def add_densepose_head_config(cfg: CN):
add_densepose_head_cse_config(cfg)


def add_hrnet_config(cfg: CN):
def add_hrnet_config(cfg: CN) -> None:
"""
Add config for HRNet backbone.
"""
Expand Down Expand Up @@ -269,7 +269,7 @@ def add_hrnet_config(cfg: CN):
_C.MODEL.HRNET.HRFPN.OUT_CHANNELS = 256


def add_densepose_config(cfg: CN):
def add_densepose_config(cfg: CN) -> None:
add_densepose_head_config(cfg)
add_hrnet_config(cfg)
add_bootstrap_config(cfg)
Expand Down
16 changes: 8 additions & 8 deletions projects/DensePose/densepose/data/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
InstancePredicate = Callable[[Instance], bool]


def _compute_num_images_per_worker(cfg: CfgNode):
def _compute_num_images_per_worker(cfg: CfgNode) -> int:
num_workers = get_world_size()
images_per_batch = cfg.SOLVER.IMS_PER_BATCH
assert (
Expand All @@ -73,7 +73,7 @@ def _compute_num_images_per_worker(cfg: CfgNode):
return images_per_worker


def _map_category_id_to_contiguous_id(dataset_name: str, dataset_dicts: Iterable[Instance]):
def _map_category_id_to_contiguous_id(dataset_name: str, dataset_dicts: Iterable[Instance]) -> None:
meta = MetadataCatalog.get(dataset_name)
for dataset_dict in dataset_dicts:
for ann in dataset_dict["annotations"]:
Expand Down Expand Up @@ -109,7 +109,7 @@ class _DatasetCategory:
_MergedCategoriesT = Dict[int, List[_DatasetCategory]]


def _add_category_id_to_contiguous_id_maps_to_metadata(merged_categories: _MergedCategoriesT):
def _add_category_id_to_contiguous_id_maps_to_metadata(merged_categories: _MergedCategoriesT) -> None:
merged_categories_per_dataset = {}
for contiguous_cat_id, cat_id in enumerate(sorted(merged_categories.keys())):
for cat in merged_categories[cat_id]:
Expand Down Expand Up @@ -266,7 +266,7 @@ def _maybe_filter_and_map_categories(
return filtered_dataset_dicts


def _add_category_whitelists_to_metadata(cfg: CfgNode):
def _add_category_whitelists_to_metadata(cfg: CfgNode) -> None:
for dataset_name, whitelisted_cat_ids in cfg.DATASETS.WHITELISTED_CATEGORIES.items():
meta = MetadataCatalog.get(dataset_name)
meta.whitelisted_categories = whitelisted_cat_ids
Expand All @@ -278,7 +278,7 @@ def _add_category_whitelists_to_metadata(cfg: CfgNode):
)


def _add_category_maps_to_metadata(cfg: CfgNode):
def _add_category_maps_to_metadata(cfg: CfgNode) -> None:
for dataset_name, category_map in cfg.DATASETS.CATEGORY_MAPS.items():
category_map = {
int(cat_id_src): int(cat_id_dst) for cat_id_src, cat_id_dst in category_map.items()
Expand All @@ -289,7 +289,7 @@ def _add_category_maps_to_metadata(cfg: CfgNode):
logger.info("Category maps for dataset {}: {}".format(dataset_name, meta.category_map))


def _add_category_info_to_bootstrapping_metadata(dataset_name: str, dataset_cfg: CfgNode):
def _add_category_info_to_bootstrapping_metadata(dataset_name: str, dataset_cfg: CfgNode) -> None:
meta = MetadataCatalog.get(dataset_name)
meta.category_to_class_mapping = get_category_to_class_mapping(dataset_cfg)
meta.categories = dataset_cfg.CATEGORIES
Expand All @@ -302,7 +302,7 @@ def _add_category_info_to_bootstrapping_metadata(dataset_name: str, dataset_cfg:
)


def _maybe_add_class_to_mesh_name_map_to_metadata(dataset_names: List[str], cfg: CfgNode):
def _maybe_add_class_to_mesh_name_map_to_metadata(dataset_names: List[str], cfg: CfgNode) -> None:
for dataset_name in dataset_names:
meta = MetadataCatalog.get(dataset_name)
if not hasattr(meta, "class_to_mesh_name"):
Expand Down Expand Up @@ -348,7 +348,7 @@ def _merge_categories(dataset_names: Collection[str]) -> _MergedCategoriesT:
return merged_categories


def _warn_if_merged_different_categories(merged_categories: _MergedCategoriesT):
def _warn_if_merged_different_categories(merged_categories: _MergedCategoriesT) -> None:
logger = logging.getLogger(__name__)
for cat_id in merged_categories:
merged_categories_i = merged_categories[cat_id]
Expand Down
2 changes: 1 addition & 1 deletion projects/DensePose/densepose/data/datasets/chimpnsee.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
CHIMPNSEE_DATASET_NAME = "chimpnsee"


def register_dataset(datasets_root: Optional[str] = None):
def register_dataset(datasets_root: Optional[str] = None) -> None:
def empty_load_callback():
pass

Expand Down
16 changes: 8 additions & 8 deletions projects/DensePose/densepose/data/datasets/lvis.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def _load_lvis_annotations(json_file: str):
return lvis_api


def _add_categories_metadata(dataset_name: str):
def _add_categories_metadata(dataset_name: str) -> None:
metadict = get_lvis_instances_meta(dataset_name)
categories = metadict["thing_classes"]
metadata = MetadataCatalog.get(dataset_name)
Expand All @@ -77,21 +77,21 @@ def _add_categories_metadata(dataset_name: str):
logger.info(f"Dataset {dataset_name} has {len(categories)} categories")


def _verify_annotations_have_unique_ids(json_file: str, anns: List[List[Dict[str, Any]]]):
def _verify_annotations_have_unique_ids(json_file: str, anns: List[List[Dict[str, Any]]]) -> None:
ann_ids = [ann["id"] for anns_per_image in anns for ann in anns_per_image]
assert len(set(ann_ids)) == len(ann_ids), "Annotation ids in '{}' are not unique!".format(
json_file
)


def _maybe_add_bbox(obj: Dict[str, Any], ann_dict: Dict[str, Any]):
def _maybe_add_bbox(obj: Dict[str, Any], ann_dict: Dict[str, Any]) -> None:
if "bbox" not in ann_dict:
return
obj["bbox"] = ann_dict["bbox"]
obj["bbox_mode"] = BoxMode.XYWH_ABS


def _maybe_add_segm(obj: Dict[str, Any], ann_dict: Dict[str, Any]):
def _maybe_add_segm(obj: Dict[str, Any], ann_dict: Dict[str, Any]) -> None:
if "segmentation" not in ann_dict:
return
segm = ann_dict["segmentation"]
Expand All @@ -103,7 +103,7 @@ def _maybe_add_segm(obj: Dict[str, Any], ann_dict: Dict[str, Any]):
obj["segmentation"] = segm


def _maybe_add_keypoints(obj: Dict[str, Any], ann_dict: Dict[str, Any]):
def _maybe_add_keypoints(obj: Dict[str, Any], ann_dict: Dict[str, Any]) -> None:
if "keypoints" not in ann_dict:
return
keypts = ann_dict["keypoints"] # list[int]
Expand All @@ -117,7 +117,7 @@ def _maybe_add_keypoints(obj: Dict[str, Any], ann_dict: Dict[str, Any]):
obj["keypoints"] = keypts


def _maybe_add_densepose(obj: Dict[str, Any], ann_dict: Dict[str, Any]):
def _maybe_add_densepose(obj: Dict[str, Any], ann_dict: Dict[str, Any]) -> None:
for key in DENSEPOSE_ALL_POSSIBLE_KEYS:
if key in ann_dict:
obj[key] = ann_dict[key]
Expand Down Expand Up @@ -212,7 +212,7 @@ def load_lvis_json(annotations_json_file: str, image_root: str, dataset_name: st
return dataset_records


def register_dataset(dataset_data: CocoDatasetInfo, datasets_root: Optional[str] = None):
def register_dataset(dataset_data: CocoDatasetInfo, datasets_root: Optional[str] = None) -> None:
"""
Registers provided LVIS DensePose dataset
Expand Down Expand Up @@ -243,7 +243,7 @@ def load_annotations():

def register_datasets(
datasets_data: Iterable[CocoDatasetInfo], datasets_root: Optional[str] = None
):
) -> None:
"""
Registers provided LVIS DensePose datasets
Expand Down
4 changes: 2 additions & 2 deletions projects/DensePose/densepose/data/meshes/catalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def get_mesh_name(self, mesh_id: int) -> str:
MeshCatalog = _MeshCatalog()


def register_mesh(mesh_info: MeshInfo, base_path: Optional[str]):
def register_mesh(mesh_info: MeshInfo, base_path: Optional[str]) -> None:
geodists, symmetry, texcoords = mesh_info.geodists, mesh_info.symmetry, mesh_info.texcoords
if geodists:
geodists = maybe_prepend_base_path(base_path, geodists)
Expand All @@ -66,6 +66,6 @@ def register_mesh(mesh_info: MeshInfo, base_path: Optional[str]):
)


def register_meshes(mesh_infos: Iterable[MeshInfo], base_path: Optional[str]):
def register_meshes(mesh_infos: Iterable[MeshInfo], base_path: Optional[str]) -> None:
for mesh_info in mesh_infos:
register_mesh(mesh_info, base_path)
2 changes: 1 addition & 1 deletion projects/DensePose/densepose/data/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from detectron2.config import CfgNode


def is_relative_local_path(path: str):
def is_relative_local_path(path: str) -> bool:
path_str = os.fsdecode(path)
return ("://" not in path_str) and not os.path.isabs(path)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
)


def _maybe_add_iscrowd_annotations(cocoapi):
def _maybe_add_iscrowd_annotations(cocoapi) -> None:
for ann in cocoapi.dataset["annotations"]:
if "iscrowd" not in ann:
ann["iscrowd"] = 0
Expand Down
6 changes: 3 additions & 3 deletions projects/DensePose/densepose/evaluation/evaluator.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ def _evaluate_predictions_on_coco(
multi_storage=None,
embedder=None,
class_names=None,
min_threshold=0.5,
min_threshold: float=0.5,
img_ids=None,
):
logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -319,7 +319,7 @@ def _evaluate_predictions_on_coco(
return results


def _get_densepose_metrics(min_threshold=0.5):
def _get_densepose_metrics(min_threshold: float=0.5):
metrics = ["AP"]
if min_threshold <= 0.201:
metrics += ["AP20"]
Expand All @@ -332,7 +332,7 @@ def _get_densepose_metrics(min_threshold=0.5):


def _derive_results_from_coco_eval(
coco_eval, eval_mode_name, metrics, class_names, min_threshold, img_ids
coco_eval, eval_mode_name, metrics, class_names, min_threshold: float, img_ids
):
if img_ids is not None:
coco_eval.params.imgIds = img_ids
Expand Down
2 changes: 1 addition & 1 deletion projects/DensePose/densepose/modeling/hrfpn.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ def forward(self, inputs):


@BACKBONE_REGISTRY.register()
def build_hrfpn_backbone(cfg, input_shape: ShapeSpec):
def build_hrfpn_backbone(cfg, input_shape: ShapeSpec) -> HRFPN:

in_channels = cfg.MODEL.HRNET.STAGE4.NUM_CHANNELS
in_features = ["p%d" % (i + 1) for i in range(cfg.MODEL.HRNET.STAGE4.NUM_BRANCHES)]
Expand Down
2 changes: 1 addition & 1 deletion projects/DensePose/densepose/modeling/inference.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from detectron2.structures import Instances


def densepose_inference(densepose_predictor_output: Any, detections: List[Instances]):
def densepose_inference(densepose_predictor_output: Any, detections: List[Instances]) -> None:
"""
Splits DensePose predictor outputs into chunks, each chunk corresponds to
detections on one image. Predictor output chunks are stored in `pred_densepose`
Expand Down
2 changes: 1 addition & 1 deletion projects/DensePose/densepose/modeling/losses/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ def extract_at_points(


def resample_data(
z, bbox_xywh_src, bbox_xywh_dst, wout, hout, mode="nearest", padding_mode="zeros"
z, bbox_xywh_src, bbox_xywh_dst, wout, hout, mode: str="nearest", padding_mode: str="zeros"
):
"""
Args:
Expand Down
2 changes: 1 addition & 1 deletion projects/DensePose/densepose/modeling/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from torch import nn


def initialize_module_params(module: nn.Module):
def initialize_module_params(module: nn.Module) -> None:
for name, param in module.named_parameters():
if "bias" in name:
nn.init.constant_(param, 0)
Expand Down
2 changes: 1 addition & 1 deletion projects/DensePose/densepose/structures/mesh.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,5 +166,5 @@ def load_mesh_symmetry(


@lru_cache()
def create_mesh(mesh_name: str, device: Optional[torch.device] = None):
def create_mesh(mesh_name: str, device: Optional[torch.device] = None) -> Mesh:
return Mesh(mesh_info=MeshCatalog[mesh_name], device=device)
2 changes: 1 addition & 1 deletion projects/DensePose/densepose/utils/logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import logging


def verbosity_to_level(verbosity):
def verbosity_to_level(verbosity) -> int:
if verbosity is not None:
if verbosity == 0:
return logging.WARNING
Expand Down

0 comments on commit 7cad0a7

Please sign in to comment.