Full Code of buptxyb666/AdaptivePose for AI

master 5d13d81a100a cached
277 files
18.9 MB
2.1M tokens
2165 symbols
1 requests
Download .txt
Showing preview only (8,286K chars total). Download the full file or copy to clipboard to get everything.
Repository: buptxyb666/AdaptivePose
Branch: master
Commit: 5d13d81a100a
Files: 277
Total size: 18.9 MB

Directory structure:
gitextract_94jvm1ku/

├── CrowdPose/
│   ├── README.md
│   └── crowdpose-api/
│       ├── PythonAPI/
│       │   ├── build/
│       │   │   ├── common/
│       │   │   │   └── maskApi.o
│       │   │   ├── lib.linux-x86_64-3.7/
│       │   │   │   └── crowdposetools/
│       │   │   │       ├── __init__.py
│       │   │   │       ├── coco.py
│       │   │   │       ├── cocoeval.py
│       │   │   │       └── mask.py
│       │   │   └── temp.linux-x86_64-3.7/
│       │   │       └── crowdposetools/
│       │   │           └── _mask.o
│       │   ├── crowdposetools/
│       │   │   ├── __init__.py
│       │   │   ├── _mask.c
│       │   │   ├── _mask.pyx
│       │   │   ├── coco.py
│       │   │   ├── cocoeval.py
│       │   │   └── mask.py
│       │   ├── install
│       │   ├── install.sh
│       │   └── setup.py
│       ├── README.md
│       ├── annotations/
│       │   ├── crowdpose_val.json
│       │   └── preds.json
│       ├── common/
│       │   ├── gason.cpp
│       │   ├── gason.h
│       │   ├── maskApi.c
│       │   └── maskApi.h
│       └── demo.py
├── LICENSE
├── NOTICE
├── README.md
├── cocoapi/
│   ├── .travis.yml
│   ├── LuaAPI/
│   │   ├── CocoApi.lua
│   │   ├── MaskApi.lua
│   │   ├── cocoDemo.lua
│   │   ├── env.lua
│   │   ├── init.lua
│   │   └── rocks/
│   │       └── coco-scm-1.rockspec
│   ├── MatlabAPI/
│   │   ├── CocoApi.m
│   │   ├── CocoEval.m
│   │   ├── CocoUtils.m
│   │   ├── MaskApi.m
│   │   ├── cocoDemo.m
│   │   ├── evalDemo.m
│   │   ├── gason.m
│   │   └── private/
│   │       ├── gasonMex.cpp
│   │       ├── gasonMex.mexa64
│   │       ├── gasonMex.mexmaci64
│   │       ├── getPrmDflt.m
│   │       └── maskApiMex.c
│   ├── PythonAPI/
│   │   ├── Makefile
│   │   ├── build/
│   │   │   ├── common/
│   │   │   │   └── maskApi.o
│   │   │   ├── lib.linux-x86_64-3.7/
│   │   │   │   └── pycocotools/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── coco.py
│   │   │   │       ├── cocoeval.py
│   │   │   │       └── mask.py
│   │   │   └── temp.linux-x86_64-3.7/
│   │   │       └── pycocotools/
│   │   │           └── _mask.o
│   │   ├── dist/
│   │   │   ├── pycocotools-2.0-py3.6-linux-x86_64.egg
│   │   │   ├── pycocotools-2.0-py3.7-linux-x86_64.egg
│   │   │   └── pycocotools-2.0-py3.9-linux-x86_64.egg
│   │   ├── pycocoDemo.ipynb
│   │   ├── pycocoEvalDemo.ipynb
│   │   ├── pycocotools/
│   │   │   ├── __init__.py
│   │   │   ├── _mask.c
│   │   │   ├── _mask.pyx
│   │   │   ├── coco.py
│   │   │   ├── cocoeval.py
│   │   │   └── mask.py
│   │   ├── pycocotools.egg-info/
│   │   │   ├── PKG-INFO
│   │   │   ├── SOURCES.txt
│   │   │   ├── dependency_links.txt
│   │   │   ├── requires.txt
│   │   │   └── top_level.txt
│   │   └── setup.py
│   ├── README.txt
│   ├── common/
│   │   ├── gason.cpp
│   │   ├── gason.h
│   │   ├── maskApi.c
│   │   └── maskApi.h
│   ├── license.txt
│   └── results/
│       ├── captions_val2014_fakecap_results.json
│       ├── instances_val2014_fakebbox100_results.json
│       ├── instances_val2014_fakesegm100_results.json
│       ├── person_keypoints_val2014_fakekeypoints100_results.json
│       └── val2014_fake_eval_res.txt
├── models/
│   └── .gitignore
├── prepare_data.sh
├── prepare_env.sh
├── prepare_env2.sh
├── readme/
│   ├── DATA.md
│   └── DEVELOP.md
├── requirements.txt
└── src/
    ├── demo.py
    ├── flops_counter.py
    ├── init_paths.py
    ├── lib/
    │   ├── datasets/
    │   │   ├── dataset/
    │   │   │   ├── coco.py
    │   │   │   ├── coco_hp_wodet.py
    │   │   │   ├── crowdpose.py
    │   │   │   ├── kitti.py
    │   │   │   └── pascal.py
    │   │   ├── dataset_factory.py
    │   │   └── sample/
    │   │       ├── ctdet.py
    │   │       ├── ddd.py
    │   │       ├── exdet.py
    │   │       ├── multi_pose_crowdpose.py
    │   │       └── multi_pose_wodet.py
    │   ├── detectors/
    │   │   ├── base_detector.py
    │   │   ├── ctdet.py
    │   │   ├── ddd.py
    │   │   ├── detector_factory.py
    │   │   ├── exdet.py
    │   │   ├── multi_pose.py
    │   │   ├── multi_pose_crowdpose.py
    │   │   └── multi_pose_wodet.py
    │   ├── external/
    │   │   ├── .gitignore
    │   │   ├── Makefile
    │   │   ├── __init__.py
    │   │   ├── nms.pyx
    │   │   └── setup.py
    │   ├── logger.py
    │   ├── models/
    │   │   ├── GCN_utils/
    │   │   │   ├── __init__.py
    │   │   │   ├── gcn2.py
    │   │   │   ├── graph.py
    │   │   │   └── tools.py
    │   │   ├── __init__.py
    │   │   ├── data_parallel.py
    │   │   ├── decode.py
    │   │   ├── flops_counter.py
    │   │   ├── losses.py
    │   │   ├── model.py
    │   │   ├── networks/
    │   │   │   ├── DCNv2/
    │   │   │   │   ├── DCNv2.egg-info/
    │   │   │   │   │   ├── PKG-INFO
    │   │   │   │   │   ├── SOURCES.txt
    │   │   │   │   │   ├── dependency_links.txt
    │   │   │   │   │   └── top_level.txt
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── README.md
    │   │   │   │   ├── __init__.py
    │   │   │   │   ├── build/
    │   │   │   │   │   ├── temp.linux-x86_64-3.6/
    │   │   │   │   │   │   └── home/
    │   │   │   │   │   │       └── dell/
    │   │   │   │   │   │           └── xyb/
    │   │   │   │   │   │               └── individual_xyb/
    │   │   │   │   │   │                   └── xyb_AAAI_code/
    │   │   │   │   │   │                       └── CNet_v2/
    │   │   │   │   │   │                           └── src/
    │   │   │   │   │   │                               └── lib/
    │   │   │   │   │   │                                   └── models/
    │   │   │   │   │   │                                       └── networks/
    │   │   │   │   │   │                                           └── DCNv2/
    │   │   │   │   │   │                                               └── src/
    │   │   │   │   │   │                                                   ├── cpu/
    │   │   │   │   │   │                                                   │   ├── dcn_v2_cpu.o
    │   │   │   │   │   │                                                   │   ├── dcn_v2_im2col_cpu.o
    │   │   │   │   │   │                                                   │   └── dcn_v2_psroi_pooling_cpu.o
    │   │   │   │   │   │                                                   ├── cuda/
    │   │   │   │   │   │                                                   │   ├── dcn_v2_cuda.o
    │   │   │   │   │   │                                                   │   ├── dcn_v2_im2col_cuda.o
    │   │   │   │   │   │                                                   │   └── dcn_v2_psroi_pooling_cuda.o
    │   │   │   │   │   │                                                   └── vision.o
    │   │   │   │   │   └── temp.linux-x86_64-3.7/
    │   │   │   │   │       └── home/
    │   │   │   │   │           └── users/
    │   │   │   │   │               └── yabo.xiao/
    │   │   │   │   │                   └── CenterNet/
    │   │   │   │   │                       └── src/
    │   │   │   │   │                           └── lib/
    │   │   │   │   │                               └── models/
    │   │   │   │   │                                   └── networks/
    │   │   │   │   │                                       └── DCNv2/
    │   │   │   │   │                                           └── src/
    │   │   │   │   │                                               ├── cpu/
    │   │   │   │   │                                               │   ├── dcn_v2_cpu.o
    │   │   │   │   │                                               │   ├── dcn_v2_im2col_cpu.o
    │   │   │   │   │                                               │   └── dcn_v2_psroi_pooling_cpu.o
    │   │   │   │   │                                               ├── cuda/
    │   │   │   │   │                                               │   ├── dcn_v2_cuda.o
    │   │   │   │   │                                               │   ├── dcn_v2_im2col_cuda.o
    │   │   │   │   │                                               │   └── dcn_v2_psroi_pooling_cuda.o
    │   │   │   │   │                                               └── vision.o
    │   │   │   │   ├── dcn_v2.py
    │   │   │   │   ├── make.sh
    │   │   │   │   ├── setup.py
    │   │   │   │   ├── src/
    │   │   │   │   │   ├── cpu/
    │   │   │   │   │   │   ├── dcn_v2_cpu.cpp
    │   │   │   │   │   │   ├── dcn_v2_im2col_cpu.cpp
    │   │   │   │   │   │   ├── dcn_v2_im2col_cpu.h
    │   │   │   │   │   │   ├── dcn_v2_psroi_pooling_cpu.cpp
    │   │   │   │   │   │   └── vision.h
    │   │   │   │   │   ├── cuda/
    │   │   │   │   │   │   ├── dcn_v2_cuda.cu
    │   │   │   │   │   │   ├── dcn_v2_im2col_cuda.cu
    │   │   │   │   │   │   ├── dcn_v2_im2col_cuda.h
    │   │   │   │   │   │   ├── dcn_v2_psroi_pooling_cuda.cu
    │   │   │   │   │   │   └── vision.h
    │   │   │   │   │   ├── dcn_v2.h
    │   │   │   │   │   └── vision.cpp
    │   │   │   │   ├── testcpu.py
    │   │   │   │   └── testcuda.py
    │   │   │   ├── dlav0.py
    │   │   │   ├── hrnet.py
    │   │   │   ├── hrnet_config/
    │   │   │   │   ├── hrnet32.yaml
    │   │   │   │   └── hrnet48.yaml
    │   │   │   ├── large_hourglass.py
    │   │   │   ├── msra_resnet.py
    │   │   │   ├── pose_dla_dcn.py
    │   │   │   ├── pose_dla_dcn_v2.py
    │   │   │   └── resnet_dcn.py
    │   │   ├── oks_loss.py
    │   │   ├── predictor.py
    │   │   ├── py_utils/
    │   │   │   ├── __init__.py
    │   │   │   ├── _cpools/
    │   │   │   │   ├── .gitignore
    │   │   │   │   ├── __init__.py
    │   │   │   │   ├── setup.py
    │   │   │   │   └── src/
    │   │   │   │       ├── bottom_pool.cpp
    │   │   │   │       ├── left_pool.cpp
    │   │   │   │       ├── right_pool.cpp
    │   │   │   │       └── top_pool.cpp
    │   │   │   ├── data_parallel.py
    │   │   │   ├── kp.py
    │   │   │   ├── kp_utils.py
    │   │   │   ├── scatter_gather.py
    │   │   │   └── utils.py
    │   │   ├── resample2d_package/
    │   │   │   ├── __init__.py
    │   │   │   ├── build/
    │   │   │   │   ├── temp.linux-x86_64-3.6/
    │   │   │   │   │   ├── resample2d_cuda.o
    │   │   │   │   │   └── resample2d_kernel.o
    │   │   │   │   └── temp.linux-x86_64-3.7/
    │   │   │   │       ├── resample2d_cuda.o
    │   │   │   │       └── resample2d_kernel.o
    │   │   │   ├── dist/
    │   │   │   │   ├── resample2d_cuda-0.0.0-py3.6-linux-x86_64.egg
    │   │   │   │   └── resample2d_cuda-0.0.0-py3.7-linux-x86_64.egg
    │   │   │   ├── resample2d.py
    │   │   │   ├── resample2d_cuda.cc
    │   │   │   ├── resample2d_cuda.egg-info/
    │   │   │   │   ├── PKG-INFO
    │   │   │   │   ├── SOURCES.txt
    │   │   │   │   ├── dependency_links.txt
    │   │   │   │   └── top_level.txt
    │   │   │   ├── resample2d_kernel.cu
    │   │   │   ├── resample2d_kernel.cuh
    │   │   │   └── setup.py
    │   │   ├── scatter_gather.py
    │   │   └── utils.py
    │   ├── opts.py
    │   ├── trains/
    │   │   ├── base_trainer.py
    │   │   ├── ctdet.py
    │   │   ├── ddd.py
    │   │   ├── exdet.py
    │   │   ├── multi_pose.py
    │   │   ├── multi_pose_crowdpose.py
    │   │   ├── multi_pose_wodet.py
    │   │   └── train_factory.py
    │   └── utils/
    │       ├── __init__.py
    │       ├── ddd_utils.py
    │       ├── debugger.py
    │       ├── image.py
    │       ├── oracle_utils.py
    │       ├── post_process.py
    │       └── utils.py
    ├── main.py
    ├── main_dla34_coco512.sh
    ├── main_dla34_coco640.sh
    ├── main_hrnet32_coco512.sh
    ├── main_hrnet32_crowdpose512.sh
    ├── main_hrnet48_coco640.sh
    ├── main_hrnet48_coco800.sh
    ├── main_hrnet48_crowdpose640.sh
    ├── test.py
    └── tools/
        ├── _init_paths.py
        ├── calc_coco_overlap.py
        ├── convert_hourglass_weight.py
        ├── convert_kitti_to_coco.py
        ├── eval_coco.py
        ├── eval_coco_hp.py
        ├── get_kitti.sh
        ├── get_pascal_voc.sh
        ├── kitti_eval/
        │   ├── README.md
        │   ├── evaluate_object_3d.cpp
        │   ├── evaluate_object_3d_offline
        │   ├── evaluate_object_3d_offline.cpp
        │   └── mail.h
        ├── merge_pascal_json.py
        ├── reval.py
        ├── vis_pred.py
        └── voc_eval_lib/
            ├── LICENSE
            ├── Makefile
            ├── __init__.py
            ├── datasets/
            │   ├── __init__.py
            │   ├── bbox.pyx
            │   ├── ds_utils.py
            │   ├── imdb.py
            │   ├── pascal_voc.py
            │   └── voc_eval.py
            ├── model/
            │   ├── __init__.py
            │   ├── bbox_transform.py
            │   ├── config.py
            │   ├── nms_wrapper.py
            │   └── test.py
            ├── nms/
            │   ├── .gitignore
            │   ├── __init__.py
            │   ├── cpu_nms.c
            │   ├── cpu_nms.pyx
            │   ├── gpu_nms.cpp
            │   ├── gpu_nms.hpp
            │   ├── gpu_nms.pyx
            │   ├── nms_kernel.cu
            │   └── py_cpu_nms.py
            ├── setup.py
            └── utils/
                ├── .gitignore
                ├── __init__.py
                ├── bbox.pyx
                ├── blob.py
                ├── timer.py
                └── visualization.py

================================================
FILE CONTENTS
================================================

================================================
FILE: CrowdPose/README.md
================================================
## CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark

<p align='center'>
    <img src="crowdpose.gif", width="360">
</p>

## Citation
If you find our works useful in your reasearch, please consider citing:

    @article{li2018crowdpose,
      title={CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark},
      author={Li, Jiefeng and Wang, Can and Zhu, Hao and Mao, Yihuan and Fang, Hao-Shu and Lu, Cewu},
      journal={arXiv preprint arXiv:1812.00324},
      year={2018}
    }


## Introduction
This is the official repo of **CVPR2019** paper [*CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark*](https://arxiv.org/abs/1812.00324). Our proposed method surpasses the state-of-the-art methods on CrowdPose dataset by **5** mAP and results on MSCOCO dataset demonstrate the generalization ability of our method (comparatively **0.8** mAP higher). Images in our proposed CrowdPose dataset have a uniform distribution of *Crowd Index* among \[0, 1\].

## Code
We provide [evaluation tools](crowdpose-api) for CrowdPose dataset. Our evaluation tools is developed based on [@cocodataset/cocoapi](https://github.com/cocodataset/cocoapi). The source code of our model has been integrated into [AlphaPose](https://github.com/MVIG-SJTU/AlphaPose/tree/pytorch).

## Dataset
[Train + Validation + Test Images](https://drive.google.com/file/d/1VprytECcLtU4tKP32SYi_7oDRbw7yUTL/view?usp=sharing) (Google Drive)

[Annotations](https://drive.google.com/drive/folders/1Ch1Cobe-6byB7sLhy8XRzOGCGTW2ssFv?usp=sharing) (Google Drive)

## Results

**Results on CrowdPose Validation:**

*Compare with state-of-the-art methods*
<center>

| Method | AP @0.5:0.95 | AP @0.5 | AP @0.75 | AR @0.5:0.95 | AR @0.5 | AR @0.75 |
|:-------|:-----:|:-------:|:-------:|:-------:|:-------:|:-------:|
| Detectron (Mask R-CNN) | 57.2 | 83.5 | 60.3 | 65.9 | 89.3 | 69.4 |
| Simple Pose (Xiao *et al.*) | 60.8 | 81.4 | 65.7 | 67.3 | 86.3 | 71.8 |
| **Ours** | **66.0** | **84.2** | **71.5** | **72.7** | **89.5** | **77.5** |

</center>

*Compare with open-source systems*
<center>

| Method | AP @*Easy* | AP @*Medium* | AP @*Hard* | FPS |
|:-------|:-----:|:-------:|:-------:|:-------:|
| OpenPose (CMU-Pose) | 62.7 | 48.7 | 32.3 | 5.3 |
| Detectron (Mask R-CNN) | 69.4 | 57.9 | 45.8 | 2.9 |
| **Ours** | **75.5** | **66.3** | **57.4** | **10.1** |

</center>

**Results on MSCOCO Validation:**
<center>

| Method | AP @0.5:0.95 | AR @0.5:0.95 |
|:-------|:-----:|:-------:|
| Detectron (Mask R-CNN) | 64.8 | 71.1 |
| Simple Pose (Xiao *et al.*) | 69.8 | 74.1 |
| **AlphaPose** | **70.9** | **76.4** |

</center>

## Contributors
 CrowdPose is authored by [Jiefeng Li](http://jeff-leaf.site/), [Can Wang](https://github.com/Canwang-sjtu), [Hao Zhu](https://github.com/BernieZhu), [Yihuan Mao](), [Hao-Shu Fang](https://fang-haoshu.github.io/), and [Cewu Lu](http://www.mvig.org/).


================================================
FILE: CrowdPose/crowdpose-api/PythonAPI/build/lib.linux-x86_64-3.7/crowdposetools/__init__.py
================================================
__author__ = 'tylin'


================================================
FILE: CrowdPose/crowdpose-api/PythonAPI/build/lib.linux-x86_64-3.7/crowdposetools/coco.py
================================================
__author__ = 'tylin'
__version__ = '2.0'
# Interface for accessing the Microsoft COCO dataset.

# Microsoft COCO is a large image dataset designed for object detection,
# segmentation, and caption generation. pycocotools is a Python API that
# assists in loading, parsing and visualizing the annotations in COCO.
# Please visit http://mscoco.org/ for more information on COCO, including
# for the data, paper, and tutorials. The exact format of the annotations
# is also described on the COCO website. For example usage of the pycocotools
# please see pycocotools_demo.ipynb. In addition to this API, please download both
# the COCO images and annotations in order to run the demo.

# An alternative to using the API is to load the annotations directly
# into Python dictionary
# Using the API provides additional utility functions. Note that this API
# supports both *instance* and *caption* annotations. In the case of
# captions not all functions are defined (e.g. categories are undefined).

# The following API functions are defined:
#  COCO       - COCO api class that loads COCO annotation file and prepare data structures.
#  decodeMask - Decode binary mask M encoded via run-length encoding.
#  encodeMask - Encode binary mask M using run-length encoding.
#  getAnnIds  - Get ann ids that satisfy given filter conditions.
#  getCatIds  - Get cat ids that satisfy given filter conditions.
#  getImgIds  - Get img ids that satisfy given filter conditions.
#  loadAnns   - Load anns with the specified ids.
#  loadCats   - Load cats with the specified ids.
#  loadImgs   - Load imgs with the specified ids.
#  annToMask  - Convert segmentation in an annotation to binary mask.
#  showAnns   - Display the specified annotations.
#  loadRes    - Load algorithm results and create API for accessing them.
#  download   - Download COCO images from mscoco.org server.
# Throughout the API "ann"=annotation, "cat"=category, and "img"=image.
# Help on each functions can be accessed by: "help COCO>function".

# See also COCO>decodeMask,
# COCO>encodeMask, COCO>getAnnIds, COCO>getCatIds,
# COCO>getImgIds, COCO>loadAnns, COCO>loadCats,
# COCO>loadImgs, COCO>annToMask, COCO>showAnns

# Microsoft COCO Toolbox.      version 2.0
# Data, paper, and tutorials available at:  http://mscoco.org/
# Code written by Piotr Dollar and Tsung-Yi Lin, 2014.
# Licensed under the Simplified BSD License [see bsd.txt]

import json
import time
import matplotlib.pyplot as plt
from matplotlib.collections import PatchCollection
from matplotlib.patches import Polygon
import numpy as np
import copy
import itertools
from . import mask as maskUtils
import os
from collections import defaultdict
import sys
PYTHON_VERSION = sys.version_info[0]
if PYTHON_VERSION == 2:
    from urllib import urlretrieve
elif PYTHON_VERSION == 3:
    from urllib.request import urlretrieve


def _isArrayLike(obj):
    return hasattr(obj, '__iter__') and hasattr(obj, '__len__')


class COCO:
    def __init__(self, annotation_file=None):
        """
        Constructor of Microsoft COCO helper class for reading and visualizing annotations.
        :param annotation_file (str): location of annotation file
        :param image_folder (str): location to the folder that hosts images.
        :return:
        """
        # load dataset
        self.dataset, self.anns, self.cats, self.imgs = dict(), dict(), dict(), dict()
        self.imgToAnns, self.catToImgs = defaultdict(list), defaultdict(list)
        self.anno_file = [annotation_file]
        if not annotation_file == None:
            print('loading annotations into memory...')
            tic = time.time()
            dataset = json.load(open(annotation_file, 'r'))
            assert type(dataset) == dict, 'annotation file format {} not supported'.format(
                type(dataset))
            print('Done (t={:0.2f}s)'.format(time.time() - tic))
            self.dataset = dataset
            self.createIndex()

    def createIndex(self):
        # create index
        print('creating index...')
        anns, cats, imgs = {}, {}, {}
        imgToAnns, catToImgs = defaultdict(list), defaultdict(list)
        if 'annotations' in self.dataset:
            for ann in self.dataset['annotations']:

                imgToAnns[ann['image_id']].append(ann)
                anns[ann['id']] = ann

        if 'images' in self.dataset:
            for img in self.dataset['images']:
                imgs[img['id']] = img


        if 'categories' in self.dataset:
            for cat in self.dataset['categories']:
                cats[cat['id']] = cat

        if 'annotations' in self.dataset and 'categories' in self.dataset:
            for ann in self.dataset['annotations']:
                catToImgs[ann['category_id']].append(ann['image_id'])

        print('index created!')

        # create class members
        self.anns = anns
        self.imgToAnns = imgToAnns
        self.catToImgs = catToImgs
        self.imgs = imgs
        self.cats = cats

    def info(self):
        """
        Print information about the annotation file.
        :return:
        """
        for key, value in self.dataset['info'].items():
            print('{}: {}'.format(key, value))

    def getAnnIds(self, imgIds=[], catIds=[], areaRng=[], iscrowd=None):
        """
        Get ann ids that satisfy given filter conditions. default skips that filter
        :param imgIds  (int array)     : get anns for given imgs
               catIds  (int array)     : get anns for given cats
               areaRng (float array)   : get anns for given area range (e.g. [0 inf])
               iscrowd (boolean)       : get anns for given crowd label (False or True)
        :return: ids (int array)       : integer array of ann ids
        """
        imgIds = imgIds if _isArrayLike(imgIds) else [imgIds]
        catIds = catIds if _isArrayLike(catIds) else [catIds]

        if len(imgIds) == len(catIds) == len(areaRng) == 0:
            anns = self.dataset['annotations']
        else:
            if not len(imgIds) == 0:
                lists = [self.imgToAnns[imgId]
                         for imgId in imgIds if imgId in self.imgToAnns]
                anns = list(itertools.chain.from_iterable(lists))
            else:
                anns = self.dataset['annotations']
            anns = anns if len(catIds) == 0 else [
                ann for ann in anns if ann['category_id'] in catIds]
            anns = anns if len(areaRng) == 0 else [
                ann for ann in anns if ann['area'] > areaRng[0] and ann['area'] < areaRng[1]]
        if not iscrowd == None:
            ids = [ann['id'] for ann in anns if ann['iscrowd'] == iscrowd]
        else:
            ids = [ann['id'] for ann in anns]
        return ids

    def getCatIds(self, catNms=[], supNms=[], catIds=[]):
        """
        filtering parameters. default skips that filter.
        :param catNms (str array)  : get cats for given cat names
        :param supNms (str array)  : get cats for given supercategory names
        :param catIds (int array)  : get cats for given cat ids
        :return: ids (int array)   : integer array of cat ids
        """
        catNms = catNms if _isArrayLike(catNms) else [catNms]
        supNms = supNms if _isArrayLike(supNms) else [supNms]
        catIds = catIds if _isArrayLike(catIds) else [catIds]

        if len(catNms) == len(supNms) == len(catIds) == 0:
            cats = self.dataset['categories']
        else:
            cats = self.dataset['categories']
            cats = cats if len(catNms) == 0 else [
                cat for cat in cats if cat['name'] in catNms]
            cats = cats if len(supNms) == 0 else [
                cat for cat in cats if cat['supercategory'] in supNms]
            cats = cats if len(catIds) == 0 else [
                cat for cat in cats if cat['id'] in catIds]
        ids = [cat['id'] for cat in cats]
        return ids

    def getImgIds(self, imgIds=[], catIds=[]):
        '''
        Get img ids that satisfy given filter conditions.
        :param imgIds (int array) : get imgs for given ids
        :param catIds (int array) : get imgs with all given cats
        :return: ids (int array)  : integer array of img ids
        '''
        imgIds = imgIds if _isArrayLike(imgIds) else [imgIds]
        catIds = catIds if _isArrayLike(catIds) else [catIds]

        if len(imgIds) == len(catIds) == 0:
            ids = self.imgs.keys()
        else:
            ids = set(imgIds)
            for i, catId in enumerate(catIds):
                if i == 0 and len(ids) == 0:
                    ids = set(self.catToImgs[catId])
                else:
                    ids &= set(self.catToImgs[catId])
        return list(ids)

    def loadAnns(self, ids=[]):
        """
        Load anns with the specified ids.
        :param ids (int array)       : integer ids specifying anns
        :return: anns (object array) : loaded ann objects
        """
        if _isArrayLike(ids):
            return [self.anns[id] for id in ids]
        elif type(ids) == int:
            return [self.anns[ids]]

    def loadCats(self, ids=[]):
        """
        Load cats with the specified ids.
        :param ids (int array)       : integer ids specifying cats
        :return: cats (object array) : loaded cat objects
        """
        if _isArrayLike(ids):
            return [self.cats[id] for id in ids]
        elif type(ids) == int:
            return [self.cats[ids]]

    def loadImgs(self, ids=[]):
        """
        Load anns with the specified ids.
        :param ids (int array)       : integer ids specifying img
        :return: imgs (object array) : loaded img objects
        """
        if _isArrayLike(ids):
            return [self.imgs[id] for id in ids]
        elif type(ids) == int:
            return [self.imgs[ids]]

    def loadRes(self, resFile):
        """
        Load result file and return a result api object.
        :param   resFile (str)     : file name of result file
        :return: res (obj)         : result api object
        """
        res = COCO()
        res.dataset['images'] = [img for img in self.dataset['images']]
        self.anno_file.append(resFile)
        print('Loading and preparing results...')
        tic = time.time()
        if type(resFile) == str or type(resFile) == unicode:
            anns = json.load(open(resFile))
        elif type(resFile) == np.ndarray:
            anns = self.loadNumpyAnnotations(resFile)
        else:
            anns = resFile
        assert type(anns) == list, 'results in not an array of objects'
        annsImgIds = [ann['image_id'] for ann in anns]

        assert set(annsImgIds) == (set(annsImgIds) & set(self.getImgIds())), \
            'Results do not correspond to current coco set'
        if 'caption' in anns[0]:
            imgIds = set([img['id'] for img in res.dataset['images']]) & set(
                [ann['image_id'] for ann in anns])
            res.dataset['images'] = [
                img for img in res.dataset['images'] if img['id'] in imgIds]
            for id, ann in enumerate(anns):
                ann['id'] = id+1
        elif 'bbox' in anns[0] and not anns[0]['bbox'] == []:
            res.dataset['categories'] = copy.deepcopy(
                self.dataset['categories'])
            for id, ann in enumerate(anns):
                bb = ann['bbox']
                x1, x2, y1, y2 = [bb[0], bb[0]+bb[2], bb[1], bb[1]+bb[3]]
                if not 'segmentation' in ann:
                    ann['segmentation'] = [[x1, y1, x1, y2, x2, y2, x2, y1]]
                ann['area'] = bb[2]*bb[3]
                ann['id'] = id+1
                ann['iscrowd'] = 0
        elif 'segmentation' in anns[0]:
            res.dataset['categories'] = copy.deepcopy(
                self.dataset['categories'])
            for id, ann in enumerate(anns):
                # now only support compressed RLE format as segmentation results
                ann['area'] = maskUtils.area(ann['segmentation'])
                if not 'bbox' in ann:
                    ann['bbox'] = maskUtils.toBbox(ann['segmentation'])
                ann['id'] = id+1
                ann['iscrowd'] = 0
        elif 'keypoints' in anns[0]:
            res.dataset['categories'] = copy.deepcopy(
                self.dataset['categories'])
            for id, ann in enumerate(anns):
                s = ann['keypoints']
                x = s[0::3]
                y = s[1::3]
                x0, x1, y0, y1 = np.min(x), np.max(x), np.min(y), np.max(y)
                ann['area'] = (x1-x0)*(y1-y0)
                ann['id'] = id + 1
                ann['bbox'] = [x0, y0, x1-x0, y1-y0]
        print('DONE (t={:0.2f}s)'.format(time.time() - tic))

        res.dataset['annotations'] = anns
        res.createIndex()
        return res

    def download(self, tarDir=None, imgIds=[]):
        '''
        Download COCO images from mscoco.org server.
        :param tarDir (str): COCO results directory name
               imgIds (list): images to be downloaded
        :return:
        '''
        if tarDir is None:
            print('Please specify target directory')
            return -1
        if len(imgIds) == 0:
            imgs = self.imgs.values()
        else:
            imgs = self.loadImgs(imgIds)
        N = len(imgs)
        if not os.path.exists(tarDir):
            os.makedirs(tarDir)
        for i, img in enumerate(imgs):
            tic = time.time()
            fname = os.path.join(tarDir, img['file_name'])
            if not os.path.exists(fname):
                urlretrieve(img['coco_url'], fname)
            print('downloaded {}/{} images (t={:0.1f}s)'.format(i, N, time.time() - tic))

    def loadNumpyAnnotations(self, data):
        """
        Convert result data from a numpy array [Nx7] where each row contains {imageID,x1,y1,w,h,score,class}
        :param  data (numpy.ndarray)
        :return: annotations (python nested list)
        """
        print('Converting ndarray to lists...')
        assert(type(data) == np.ndarray)
        print(data.shape)
        assert(data.shape[1] == 7)
        N = data.shape[0]
        ann = []
        for i in range(N):
            if i % 1000000 == 0:
                print('{}/{}'.format(i, N))
            ann += [{
                'image_id': int(data[i, 0]),
                'bbox': [data[i, 1], data[i, 2], data[i, 3], data[i, 4]],
                'score': data[i, 5],
                'category_id': int(data[i, 6]),
            }]
        return ann

    def annToRLE(self, ann):
        """
        Convert annotation which can be polygons, uncompressed RLE to RLE.
        :return: binary mask (numpy 2D array)
        """
        t = self.imgs[ann['image_id']]
        h, w = t['height'], t['width']
        segm = ann['segmentation']
        if type(segm) == list:
            # polygon -- a single object might consist of multiple parts
            # we merge all parts into one mask rle code
            rles = maskUtils.frPyObjects(segm, h, w)
            rle = maskUtils.merge(rles)
        elif type(segm['counts']) == list:
            # uncompressed RLE
            rle = maskUtils.frPyObjects(segm, h, w)
        else:
            # rle
            rle = ann['segmentation']
        return rle

    def annToMask(self, ann):
        """
        Convert annotation which can be polygons, uncompressed RLE, or RLE to binary mask.
        :return: binary mask (numpy 2D array)
        """
        rle = self.annToRLE(ann)
        m = maskUtils.decode(rle)
        return m


================================================
FILE: CrowdPose/crowdpose-api/PythonAPI/build/lib.linux-x86_64-3.7/crowdposetools/cocoeval.py
================================================
__author__ = 'tsungyi'

import numpy as np
import datetime
import time
from collections import defaultdict
from . import mask as maskUtils
import copy
import sys


class NullWriter(object):

    def write(self, arg):
        pass

    def flush(self):
        pass


class COCOeval:
    # Interface for evaluating detection on the Microsoft COCO dataset.
    # #
    # The usage for CocoEval is as follows:
    #  cocoGt=..., cocoDt=...       # load dataset and results
    #  E = CocoEval(cocoGt,cocoDt); # initialize CocoEval object
    #  E.params.recThrs = ...;      # set parameters as desired
    #  E.evaluate();                # run per image evaluation
    #  E.accumulate();              # accumulate per image results
    #  E.summarize();               # display summary metrics of results
    # For example usage see evalDemo.m and http://mscoco.org/.
    #
    # The evaluation parameters are as follows (defaults in brackets):
    #  imgIds     - [all] N img ids to use for evaluation
    #  catIds     - [all] K cat ids to use for evaluation
    #  iouThrs    - [.5:.05:.95] T=10 IoU thresholds for evaluation
    #  recThrs    - [0:.01:1] R=101 recall thresholds for evaluation
    #  areaRng    - [...] A=4 object area ranges for evaluation
    #  maxDets    - [1 10 100] M=3 thresholds on max detections per image
    #  iouType    - ['segm'] set iouType to 'segm', 'bbox' or 'keypoints'
    #  iouType replaced the now DEPRECATED useSegm parameter.
    #  useCats    - [1] if true use category labels for evaluation
    # Note: if useCats=0 category labels are ignored as in proposal scoring.
    # Note: multiple areaRngs [Ax2] and maxDets [Mx1] can be specified.
    #
    # evaluate(): evaluates detections on every image and every category and
    # concats the results into the "evalImgs" with fields:
    #  dtIds      - [1xD] id for each of the D detections (dt)
    #  gtIds      - [1xG] id for each of the G ground truths (gt)
    #  dtMatches  - [TxD] matching gt id at each IoU or 0
    #  gtMatches  - [TxG] matching dt id at each IoU or 0
    #  dtScores   - [1xD] confidence of each dt
    #  gtIgnore   - [1xG] ignore flag for each gt
    #  dtIgnore   - [TxD] ignore flag for each dt at each IoU
    #
    # accumulate(): accumulates the per-image, per-category evaluation
    # results in "evalImgs" into the dictionary "eval" with fields:
    #  params     - parameters used for evaluation
    #  date       - date evaluation was performed
    #  counts     - [T,R,K,A,M] parameter dimensions (see above)
    #  precision  - [TxRxKxAxM] precision for every evaluation setting
    #  recall     - [TxKxAxM] max recall for every evaluation setting
    # Note: precision and recall==-1 for settings with no gt objects.
    #
    # See also coco, mask, pycocoDemo, pycocoEvalDemo
    #
    # Microsoft COCO Toolbox.      version 2.0
    # Data, paper, and tutorials available at:  http://mscoco.org/
    # Code written by Piotr Dollar and Tsung-Yi Lin, 2015.
    # Licensed under the Simplified BSD License [see coco/license.txt]
    def __init__(self, cocoGt=None, cocoDt=None, iouType='segm'):
        '''
        Initialize CocoEval using coco APIs for gt and dt
        :param cocoGt: coco object with ground truth annotations
        :param cocoDt: coco object with detection results
        :return: None
        '''
        if not iouType:
            print('iouType not specified. use default iouType segm')
        self.cocoGt = cocoGt              # ground truth COCO API
        self.cocoDt = cocoDt              # detections COCO API
        self.params = {}                  # evaluation parameters
        # per-image per-category evaluation results [KxAxI] elements
        self.evalImgs = defaultdict(list)
        self.eval = {}                  # accumulated evaluation results
        self._gts = defaultdict(list)       # gt for evaluation
        self._dts = defaultdict(list)       # dt for evaluation
        self.params = Params(iouType=iouType)  # parameters
        self._paramsEval = {}               # parameters for evaluation
        self.stats = []                     # result summarization
        self.ious = {}                      # ious between all gts and dts
        if not cocoGt is None:
            self.params.imgIds = sorted(cocoGt.getImgIds())
            self.params.catIds = sorted(cocoGt.getCatIds())
        self.anno_file = cocoGt.anno_file

    def _prepare(self):
        '''
        Prepare ._gts and ._dts for evaluation based on params
        :return: None
        '''
        def _toMask(anns, coco):
            # modify ann['segmentation'] by reference
            for ann in anns:
                rle = coco.annToRLE(ann)
                ann['segmentation'] = rle
        p = self.params
        if p.useCats:
            gts = self.cocoGt.loadAnns(self.cocoGt.getAnnIds(
                imgIds=p.imgIds, catIds=p.catIds))
            dts = self.cocoDt.loadAnns(self.cocoDt.getAnnIds(
                imgIds=p.imgIds, catIds=p.catIds))
        else:
            gts = self.cocoGt.loadAnns(self.cocoGt.getAnnIds(imgIds=p.imgIds))
            dts = self.cocoDt.loadAnns(self.cocoDt.getAnnIds(imgIds=p.imgIds))

        # convert ground truth to mask if iouType == 'segm'
        if p.iouType == 'segm':
            _toMask(gts, self.cocoGt)
            _toMask(dts, self.cocoDt)
        # set ignore flag
        for gt in gts:
            gt['ignore'] = gt['ignore'] if 'ignore' in gt else 0
            gt['ignore'] = 'iscrowd' in gt and gt['iscrowd']
            if p.iouType == 'keypoints':
                gt['ignore'] = (gt['num_keypoints'] == 0) or gt['ignore']
        self._gts = defaultdict(list)       # gt for evaluation
        self._dts = defaultdict(list)       # dt for evaluation
        for gt in gts:
            self._gts[gt['image_id'], gt['category_id']].append(gt)
        for dt in dts:
            self._dts[dt['image_id'], dt['category_id']].append(dt)
        # per-image per-category evaluation results
        self.evalImgs = defaultdict(list)
        self.eval = {}                  # accumulated evaluation results

    def evaluate(self):
        '''
        Run per image evaluation on given images and store results (a list of dict) in self.evalImgs
        :return: None
        '''
        tic = time.time()
        print('Running per image evaluation...')
        p = self.params
        # add backward compatibility if useSegm is specified in params
        if not p.useSegm is None:
            p.iouType = 'segm' if p.useSegm == 1 else 'bbox'
            print(
                'useSegm (deprecated) is not None. Running {} evaluation'.format(p.iouType))
        print('Evaluate annotation type *{}*'.format(p.iouType))
        p.imgIds = list(np.unique(p.imgIds))
        if p.useCats:
            p.catIds = list(np.unique(p.catIds))
        p.maxDets = sorted(p.maxDets)
        self.params = p

        self._prepare()
        # loop through images, area range, max detection number
        catIds = p.catIds if p.useCats else [-1]

        if p.iouType == 'segm' or p.iouType == 'bbox':
            computeIoU = self.computeIoU
        elif p.iouType == 'keypoints':
            computeIoU = self.computeOks
        self.ious = {(imgId, catId): computeIoU(imgId, catId)
                     for imgId in p.imgIds
                     for catId in catIds}

        evaluateImg = self.evaluateImg
        maxDet = p.maxDets[-1]
        self.evalImgs = [evaluateImg(imgId, catId, areaRng, maxDet)
                         for catId in catIds
                         for areaRng in p.areaRng
                         for imgId in p.imgIds
                         ]
        self._paramsEval = copy.deepcopy(self.params)
        toc = time.time()
        print('DONE (t={:0.2f}s).'.format(toc-tic))

    def computeIoU(self, imgId, catId):
        p = self.params
        if p.useCats:
            gt = self._gts[imgId, catId]
            dt = self._dts[imgId, catId]
        else:
            gt = [_ for cId in p.catIds for _ in self._gts[imgId, cId]]
            dt = [_ for cId in p.catIds for _ in self._dts[imgId, cId]]
        if len(gt) == 0 and len(dt) == 0:
            return []
        inds = np.argsort([-d['score'] for d in dt], kind='mergesort')
        dt = [dt[i] for i in inds]
        if len(dt) > p.maxDets[-1]:
            dt = dt[0:p.maxDets[-1]]

        if p.iouType == 'segm':
            g = [g['segmentation'] for g in gt]
            d = [d['segmentation'] for d in dt]
        elif p.iouType == 'bbox':
            g = [g['bbox'] for g in gt]
            d = [d['bbox'] for d in dt]
        else:
            raise Exception('unknown iouType for iou computation')

        # compute iou between each dt and gt region
        iscrowd = [int(o['iscrowd']) for o in gt]
        ious = maskUtils.iou(d, g, iscrowd)
        return ious

    def computeOks(self, imgId, catId):
        p = self.params
        # dimention here should be Nxm
        # print imgId, catId
        gts = self._gts[imgId, catId]
        dts = self._dts[imgId, catId]
        inds = np.argsort([-d['score'] for d in dts], kind='mergesort')
        dts = [dts[i] for i in inds]
        if len(dts) > p.maxDets[-1]:
            dts = dts[0:p.maxDets[-1]]
        if len(gts) == 0 or len(dts) == 0:
            return []
        ious = np.zeros((len(dts), len(gts)))

        sigmas = np.array(
            [.79, .79, .72, .72, .62, .62, 1.07, 1.07, .87, .87, .89, .89, .79, .79])/10.0

        vars = (sigmas * 2)**2
        k = len(sigmas)
        # compute oks between each detection and ground truth object
        for j, gt in enumerate(gts):
            # create bounds for ignore regions(double the gt bbox)
            g = np.array(gt['keypoints'])
            xg = g[0::3]
            yg = g[1::3]
            vg = g[2::3]
            k1 = np.count_nonzero(vg > 0)
            bb = gt['bbox']
            x0 = bb[0] - bb[2]
            x1 = bb[0] + bb[2] * 2
            y0 = bb[1] - bb[3]
            y1 = bb[1] + bb[3] * 2
            for i, dt in enumerate(dts):
                d = np.array(dt['keypoints'])
                xd = d[0::3]
                yd = d[1::3]
                if k1 > 0:
                    # measure the per-keypoint distance if keypoints visible
                    dx = xd - xg
                    dy = yd - yg
                else:
                    # measure minimum distance to keypoints in (x0,y0) & (x1,y1)
                    # print 'k', k
                    z = np.zeros((k))

                    dx = np.max((z, x0-xd), axis=0) + \
                        np.max((z, xd-x1), axis=0)
                    dy = np.max((z, y0-yd), axis=0)+np.max((z, yd-y1), axis=0)

                tmparea = gt['bbox'][3] * gt['bbox'][2] * 0.53
                e = (dx**2 + dy**2) / vars / (tmparea+np.spacing(1)) / 2

                if k1 > 0:
                    e = e[vg > 0]
                ious[i, j] = np.sum(np.exp(-e)) / e.shape[0]
        return ious

    def evaluateImg(self, imgId, catId, aRng, maxDet):
        '''
        perform evaluation for single category and image
        :return: dict (single image results)
        '''
        p = self.params
        if p.useCats:
            gt = self._gts[imgId, catId]
            dt = self._dts[imgId, catId]
        else:
            gt = [_ for cId in p.catIds for _ in self._gts[imgId, cId]]
            dt = [_ for cId in p.catIds for _ in self._dts[imgId, cId]]
        if len(gt) == 0 and len(dt) == 0:
            return None

        for g in gt:
            tmp_area = g['bbox'][2] * g['bbox'][3] * 0.53
            if g['ignore'] or (tmp_area < aRng[0] or tmp_area > aRng[1]):
                g['_ignore'] = 1
            else:
                g['_ignore'] = 0

        # sort dt highest score first, sort gt ignore last
        gtind = np.argsort([g['_ignore'] for g in gt], kind='mergesort')
        gt = [gt[i] for i in gtind]
        dtind = np.argsort([-d['score'] for d in dt], kind='mergesort')
        dt = [dt[i] for i in dtind[0:maxDet]]
        iscrowd = [int(o['iscrowd']) for o in gt]
        # load computed ious
        ious = self.ious[imgId, catId][:, gtind] if len(
            self.ious[imgId, catId]) > 0 else self.ious[imgId, catId]

        T = len(p.iouThrs)
        G = len(gt)
        D = len(dt)
        gtm = np.zeros((T, G))
        dtm = np.zeros((T, D))
        gtIg = np.array([g['_ignore'] for g in gt])
        dtIg = np.zeros((T, D))
        if not len(ious) == 0:
            for tind, t in enumerate(p.iouThrs):
                for dind, d in enumerate(dt):
                    # information about best match so far (m=-1 -> unmatched)
                    iou = min([t, 1-1e-10])
                    m = -1
                    for gind, g in enumerate(gt):
                        # if this gt already matched, and not a crowd, continue
                        if gtm[tind, gind] > 0 and not iscrowd[gind]:
                            continue
                        # if dt matched to reg gt, and on ignore gt, stop
                        if m > -1 and gtIg[m] == 0 and gtIg[gind] == 1:
                            break
                        # continue to next gt unless better match made
                        if ious[dind, gind] < iou:
                            continue
                        # if match successful and best so far, store appropriately
                        iou = ious[dind, gind]
                        m = gind
                    # if match made store id of match for both dt and gt
                    if m == -1:
                        continue
                    dtIg[tind, dind] = gtIg[m]
                    dtm[tind, dind] = gt[m]['id']
                    gtm[tind, m] = d['id']
        # set unmatched detections outside of area range to ignore
        a = np.array([d['area'] < aRng[0] or d['area'] > aRng[1]
                      for d in dt]).reshape((1, len(dt)))
        dtIg = np.logical_or(dtIg, np.logical_and(
            dtm == 0, np.repeat(a, T, 0)))
        # store results for given image and category
        return {
            'image_id':     imgId,
            'category_id':  catId,
            'aRng':         aRng,
            'maxDet':       maxDet,
            'dtIds':        [d['id'] for d in dt],
            'gtIds':        [g['id'] for g in gt],
            'dtMatches':    dtm,
            'gtMatches':    gtm,
            'dtScores':     [d['score'] for d in dt],
            'gtIgnore':     gtIg,
            'dtIgnore':     dtIg,
        }

    def accumulate(self, p=None):
        '''
        Accumulate per image evaluation results and store the result in self.eval
        :param p: input params for evaluation
        :return: None
        '''
        print('Accumulating evaluation results...')
        tic = time.time()
        if not self.evalImgs:
            print('Please run evaluate() first')
        # allows input customized parameters
        if p is None:
            p = self.params
        p.catIds = p.catIds if p.useCats == 1 else [-1]
        T = len(p.iouThrs)
        R = len(p.recThrs)
        K = len(p.catIds) if p.useCats else 1
        A = len(p.areaRng)
        M = len(p.maxDets)
        # -1 for the precision of absent categories
        precision = -np.ones((T, R, K, A, M))
        recall = -np.ones((T, K, A, M))
        scores = -np.ones((T, R, K, A, M))

        # create dictionary for future indexing
        _pe = self._paramsEval
        catIds = _pe.catIds if _pe.useCats else [-1]
        setK = set(catIds)
        setA = set(map(tuple, _pe.areaRng))
        setM = set(_pe.maxDets)
        setI = set(_pe.imgIds)
        # get inds to evaluate
        k_list = [n for n, k in enumerate(p.catIds) if k in setK]
        m_list = [m for n, m in enumerate(p.maxDets) if m in setM]
        a_list = [n for n, a in enumerate(
            map(lambda x: tuple(x), p.areaRng)) if a in setA]
        i_list = [n for n, i in enumerate(p.imgIds) if i in setI]
        I0 = len(_pe.imgIds)
        A0 = len(_pe.areaRng)
        # retrieve E at each category, area range, and max number of detections
        for k, k0 in enumerate(k_list):
            Nk = k0*A0*I0
            for a, a0 in enumerate(a_list):
                Na = a0*I0
                for m, maxDet in enumerate(m_list):
                    E = [self.evalImgs[Nk + Na + i] for i in i_list]
                    E = [e for e in E if not e is None]
                    if len(E) == 0:
                        continue
                    dtScores = np.concatenate(
                        [e['dtScores'][0:maxDet] for e in E])

                    # different sorting method generates slightly different results.
                    # mergesort is used to be consistent as Matlab implementation.
                    inds = np.argsort(-dtScores, kind='mergesort')
                    dtScoresSorted = dtScores[inds]

                    dtm = np.concatenate([e['dtMatches'][:, 0:maxDet]
                                          for e in E], axis=1)[:, inds]
                    dtIg = np.concatenate(
                        [e['dtIgnore'][:, 0:maxDet] for e in E], axis=1)[:, inds]
                    gtIg = np.concatenate([e['gtIgnore'] for e in E])
                    npig = np.count_nonzero(gtIg == 0)
                    if npig == 0:
                        continue
                    tps = np.logical_and(dtm,  np.logical_not(dtIg))
                    fps = np.logical_and(
                        np.logical_not(dtm), np.logical_not(dtIg))

                    tp_sum = np.cumsum(tps, axis=1).astype(dtype=np.float)
                    fp_sum = np.cumsum(fps, axis=1).astype(dtype=np.float)
                    for t, (tp, fp) in enumerate(zip(tp_sum, fp_sum)):
                        tp = np.array(tp)
                        fp = np.array(fp)
                        nd = len(tp)
                        rc = tp / npig
                        pr = tp / (fp+tp+np.spacing(1))
                        q = np.zeros((R,))
                        ss = np.zeros((R,))

                        if nd:
                            recall[t, k, a, m] = rc[-1]
                        else:
                            recall[t, k, a, m] = 0

                        # numpy is slow without cython optimization for accessing elements
                        # use python array gets significant speed improvement
                        pr = pr.tolist()
                        q = q.tolist()

                        for i in range(nd-1, 0, -1):
                            if pr[i] > pr[i-1]:
                                pr[i-1] = pr[i]

                        inds = np.searchsorted(rc, p.recThrs, side='left')
                        try:
                            for ri, pi in enumerate(inds):
                                q[ri] = pr[pi]
                                ss[ri] = dtScoresSorted[pi]
                        except:
                            pass
                        precision[t, :, k, a, m] = np.array(q)
                        scores[t, :, k, a, m] = np.array(ss)
        self.eval = {
            'params': p,
            'counts': [T, R, K, A, M],
            'date': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
            'precision': precision,
            'recall':   recall,
            'scores': scores,
        }
        toc = time.time()
        print('DONE (t={:0.2f}s).'.format(toc-tic))

    def summarize(self):
        '''
        Compute and display summary metrics for evaluation results.
        Note this functin can *only* be applied on the default parameter setting
        '''
        def _summarize(ap=1, iouThr=None, areaRng='all', maxDets=100, type_score=0):
            p = self.params
            if ap != -1:
                iStr = ' {:<18} {} @[ IoU={:<9} | area={:>6s} | maxDets={:>3d} ] = {:0.3f}'
            else:
                iStr = ' {:<18} {} @[ IoU={:<9} | type={:>6s} | maxDets={:>3d} ] = {:0.3f}'
            titleStr = 'Average Precision' if ap == 1 else 'Average Recall'
            typeStr = '(AR)' if ap != 1 else '(AP)'
            iouStr = '{:0.2f}:{:0.2f}'.format(p.iouThrs[0], p.iouThrs[-1]) \
                if iouThr is None else '{:0.2f}'.format(iouThr)
            # print 'print ioustr' , iouStr
            aind = [i for i, aRng in enumerate(
                p.areaRngLbl) if aRng == areaRng]
            mind = [i for i, mDet in enumerate(p.maxDets) if mDet == maxDets]
            if ap == 1:
                # dimension of precision: [TxRxKxAxM]
                s = self.eval['precision']
                # IoU
                if iouThr is not None:
                    t = np.where(abs(iouThr - p.iouThrs) < 0.01)[0]
                    s = s[t]
                s = s[:, :, :, aind, mind]
            else:
                # dimension of recall: [TxKxAxM]
                s = self.eval['recall']
                if iouThr is not None:
                    t = np.where(iouThr == p.iouThrs)[0]
                    s = s[t]
                s = s[:, :, aind, mind]

            if len(s[s > -1]) == 0:
                mean_s = -1
            else:
                mean_s = np.mean(s[s > -1])
            if ap == -1:
                mean_s = type_score
            print(iStr.format(titleStr, typeStr, iouStr, areaRng, maxDets, mean_s))
            return mean_s

        def _summarizeDets():
            stats = np.zeros((12,))
            stats[0] = _summarize(1)
            stats[1] = _summarize(1, iouThr=.5, maxDets=self.params.maxDets[2])
            stats[2] = _summarize(
                1, iouThr=.75, maxDets=self.params.maxDets[2])
            stats[3] = _summarize(1, areaRng='small',
                                  maxDets=self.params.maxDets[2])
            stats[4] = _summarize(1, areaRng='medium',
                                  maxDets=self.params.maxDets[2])
            stats[5] = _summarize(1, areaRng='large',
                                  maxDets=self.params.maxDets[2])
            stats[6] = _summarize(0, maxDets=self.params.maxDets[0])
            stats[7] = _summarize(0, maxDets=self.params.maxDets[1])
            stats[8] = _summarize(0, maxDets=self.params.maxDets[2])
            stats[9] = _summarize(0, areaRng='small',
                                  maxDets=self.params.maxDets[2])
            stats[10] = _summarize(0, areaRng='medium',
                                   maxDets=self.params.maxDets[2])
            stats[11] = _summarize(
                0, areaRng='large', maxDets=self.params.maxDets[2])
            return stats

        def _summarizeKps():
            
            stats = np.zeros((11,))
            # print '-----------------------------------------------'
            stats[0] = _summarize(1, maxDets=20)
            stats[1] = _summarize(1, maxDets=20, iouThr=.5)
            stats[2] = _summarize(1, maxDets=20, iouThr=.75)
            stats[5] = _summarize(0, maxDets=20)
            stats[6] = _summarize(0, maxDets=20, iouThr=.5)
            stats[7] = _summarize(0, maxDets=20, iouThr=.75)
            type_result = self.get_type_result(first=0.2, second=0.8)
            stats[8] = _summarize(-1, maxDets=20,
                                  areaRng='easy', type_score=type_result[0])
            stats[9] = _summarize(-1, maxDets=20,
                     areaRng='medium', type_score=type_result[1])
            stats[10]=_summarize(-1, maxDets=20,
                                areaRng='hard', type_score=type_result[2]) 
            return stats
        if not self.eval:
            raise Exception('Please run accumulate() first')
        iouType = self.params.iouType
        if iouType == 'segm' or iouType == 'bbox':
            summarize = _summarizeDets
        elif iouType == 'keypoints':
            summarize = _summarizeKps
        self.stats = summarize()

    def __str__(self):
        self.summarize()

    def get_type_result(self,  first=0.01, second=0.85):
        gt_file = self.anno_file[0]
        easy, mid, hard = self.split(gt_file, first, second)
        # print (len(easy), len(mid), len(hard))
        res = []
        nullwrite = NullWriter()
        oldstdout = sys.stdout
        sys.stdout = nullwrite
        for curr_type in [easy, mid, hard]:
            curr_list = curr_type
            self.params.imgIds = curr_list
            self.evaluate()
            self.accumulate()
            score = self.eval['precision'][:, :, :, 0, :]
            res.append(round(np.mean(score), 4))
        sys.stdout = oldstdout
        return res


    def split(serlf, gt_file, first=0.01, second=0.85):
        import json
        data = json.load(
            open(gt_file, 'r'))
        easy = []
        mid = []
        hard = []
        for item in data['images']:
            if item['crowdIndex'] < first:
                easy.append(item['id'])
            elif item['crowdIndex'] < second:
                mid.append(item['id'])
            else:
                hard.append(item['id'])
        return easy, mid, hard


class Params:
    '''
    Params for coco evaluation api
    '''

    def setDetParams(self):
        self.imgIds = []
        self.catIds = []
        # np.arange causes trouble.  the data point on arange is slightly larger than the true value
        self.iouThrs = np.linspace(.5, 0.95, int(np.round(
            (0.95 - .5) / .05) + 1), endpoint=True)
        self.recThrs = np.linspace(.0, 1.00, int(np.round(
            (1.00 - .0) / .01) + 1), endpoint=True)
        self.maxDets = [1, 10, 100]
        self.areaRng = [[0 ** 2, 1e5 ** 2], [0 ** 2, 32 ** 2],
                        [32 ** 2, 96 ** 2], [96 ** 2, 1e5 ** 2]]
        self.areaRngLbl = ['all', 'small', 'medium', 'large']
        self.useCats = 1

    def setKpParams(self):
        self.imgIds = []
        self.catIds = []
        # np.arange causes trouble.  the data point on arange is slightly larger than the true value
        self.iouThrs = np.linspace(.5, 0.95, int(np.round(
            (0.95 - .5) / .05) + 1), endpoint=True)
        self.recThrs = np.linspace(.0, 1.00, int(np.round(
            (1.00 - .0) / .01) + 1), endpoint=True)
        self.maxDets = [20]
        self.areaRng = [[0 ** 2, 1e5 ** 2],
                        [32 ** 2, 96 ** 2], [96 ** 2, 1e5 ** 2]]
        self.areaRngLbl = ['all', 'medium', 'large']
        self.useCats = 1

    def __init__(self, iouType='segm'):
        if iouType == 'segm' or iouType == 'bbox':
            self.setDetParams()
        elif iouType == 'keypoints':
            self.setKpParams()
        else:
            raise Exception('iouType not supported')
        self.iouType = iouType
        # useSegm is deprecated
        self.useSegm = None


================================================
FILE: CrowdPose/crowdpose-api/PythonAPI/build/lib.linux-x86_64-3.7/crowdposetools/mask.py
================================================
__author__ = 'tsungyi'

import crowdposetools._mask as _mask

# Interface for manipulating masks stored in RLE format.
#
# RLE is a simple yet efficient format for storing binary masks. RLE
# first divides a vector (or vectorized image) into a series of piecewise
# constant regions and then for each piece simply stores the length of
# that piece. For example, given M=[0 0 1 1 1 0 1] the RLE counts would
# be [2 3 1 1], or for M=[1 1 1 1 1 1 0] the counts would be [0 6 1]
# (note that the odd counts are always the numbers of zeros). Instead of
# storing the counts directly, additional compression is achieved with a
# variable bitrate representation based on a common scheme called LEB128.
#
# Compression is greatest given large piecewise constant regions.
# Specifically, the size of the RLE is proportional to the number of
# *boundaries* in M (or for an image the number of boundaries in the y
# direction). Assuming fairly simple shapes, the RLE representation is
# O(sqrt(n)) where n is number of pixels in the object. Hence space usage
# is substantially lower, especially for large simple objects (large n).
#
# Many common operations on masks can be computed directly using the RLE
# (without need for decoding). This includes computations such as area,
# union, intersection, etc. All of these operations are linear in the
# size of the RLE, in other words they are O(sqrt(n)) where n is the area
# of the object. Computing these operations on the original mask is O(n).
# Thus, using the RLE can result in substantial computational savings.
#
# The following API functions are defined:
#  encode         - Encode binary masks using RLE.
#  decode         - Decode binary masks encoded via RLE.
#  merge          - Compute union or intersection of encoded masks.
#  iou            - Compute intersection over union between masks.
#  area           - Compute area of encoded masks.
#  toBbox         - Get bounding boxes surrounding encoded masks.
#  frPyObjects    - Convert polygon, bbox, and uncompressed RLE to encoded RLE mask.
#
# Usage:
#  Rs     = encode( masks )
#  masks  = decode( Rs )
#  R      = merge( Rs, intersect=false )
#  o      = iou( dt, gt, iscrowd )
#  a      = area( Rs )
#  bbs    = toBbox( Rs )
#  Rs     = frPyObjects( [pyObjects], h, w )
#
# In the API the following formats are used:
#  Rs      - [dict] Run-length encoding of binary masks
#  R       - dict Run-length encoding of binary mask
#  masks   - [hxwxn] Binary mask(s) (must have type np.ndarray(dtype=uint8) in column-major order)
#  iscrowd - [nx1] list of np.ndarray. 1 indicates corresponding gt image has crowd region to ignore
#  bbs     - [nx4] Bounding box(es) stored as [x y w h]
#  poly    - Polygon stored as [[x1 y1 x2 y2...],[x1 y1 ...],...] (2D list)
#  dt,gt   - May be either bounding boxes or encoded masks
# Both poly and bbs are 0-indexed (bbox=[0 0 1 1] encloses first pixel).
#
# Finally, a note about the intersection over union (iou) computation.
# The standard iou of a ground truth (gt) and detected (dt) object is
#  iou(gt,dt) = area(intersect(gt,dt)) / area(union(gt,dt))
# For "crowd" regions, we use a modified criteria. If a gt object is
# marked as "iscrowd", we allow a dt to match any subregion of the gt.
# Choosing gt' in the crowd gt that best matches the dt can be done using
# gt'=intersect(dt,gt). Since by definition union(gt',dt)=dt, computing
#  iou(gt,dt,iscrowd) = iou(gt',dt) = area(intersect(gt,dt)) / area(dt)
# For crowd gt regions we use this modified criteria above for the iou.
#
# To compile run "python setup.py build_ext --inplace"
# Please do not contact us for help with compiling.
#
# Microsoft COCO Toolbox.      version 2.0
# Data, paper, and tutorials available at:  http://mscoco.org/
# Code written by Piotr Dollar and Tsung-Yi Lin, 2015.
# Licensed under the Simplified BSD License [see coco/license.txt]

iou         = _mask.iou
merge       = _mask.merge
frPyObjects = _mask.frPyObjects

def encode(bimask):
    if len(bimask.shape) == 3:
        return _mask.encode(bimask)
    elif len(bimask.shape) == 2:
        h, w = bimask.shape
        return _mask.encode(bimask.reshape((h, w, 1), order='F'))[0]

def decode(rleObjs):
    if type(rleObjs) == list:
        return _mask.decode(rleObjs)
    else:
        return _mask.decode([rleObjs])[:,:,0]

def area(rleObjs):
    if type(rleObjs) == list:
        return _mask.area(rleObjs)
    else:
        return _mask.area([rleObjs])[0]

def toBbox(rleObjs):
    if type(rleObjs) == list:
        return _mask.toBbox(rleObjs)
    else:
        return _mask.toBbox([rleObjs])[0]

================================================
FILE: CrowdPose/crowdpose-api/PythonAPI/crowdposetools/__init__.py
================================================
__author__ = 'tylin'


================================================
FILE: CrowdPose/crowdpose-api/PythonAPI/crowdposetools/_mask.c
================================================
/* Generated by Cython 0.28.5 */

/* BEGIN: Cython Metadata
{
    "distutils": {
        "depends": [
            "../common/maskApi.h",
            "/home/wangcan/anaconda3/envs/py0/lib/python3.6/site-packages/numpy/core/include/numpy/arrayobject.h",
            "/home/wangcan/anaconda3/envs/py0/lib/python3.6/site-packages/numpy/core/include/numpy/ufuncobject.h"
        ],
        "extra_compile_args": [
            "-Wno-cpp",
            "-Wno-unused-function",
            "-std=c99"
        ],
        "include_dirs": [
            "/home/wangcan/anaconda3/envs/py0/lib/python3.6/site-packages/numpy/core/include",
            "../common"
        ],
        "language": "c",
        "name": "crowdposetools._mask",
        "sources": [
            "crowdposetools/_mask.pyx",
            "../common/maskApi.c"
        ]
    },
    "module_name": "crowdposetools._mask"
}
END: Cython Metadata */

#define PY_SSIZE_T_CLEAN
#include "Python.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
    #error Cython requires Python 2.6+ or Python 3.3+.
#else
#define CYTHON_ABI "0_28_5"
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif
#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#define __PYX_COMMA ,
#ifndef HAVE_LONG_LONG
  #if PY_VERSION_HEX >= 0x02070000
    #define HAVE_LONG_LONG
  #endif
#endif
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#ifdef PYPY_VERSION
  #define CYTHON_COMPILING_IN_PYPY 1
  #define CYTHON_COMPILING_IN_PYSTON 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
#elif defined(PYSTON_VERSION)
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_PYSTON 1
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_ASYNC_SLOTS
  #define CYTHON_USE_ASYNC_SLOTS 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
#else
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_PYSTON 0
  #define CYTHON_COMPILING_IN_CPYTHON 1
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #if PY_VERSION_HEX < 0x02070000
    #undef CYTHON_USE_PYTYPE_LOOKUP
    #define CYTHON_USE_PYTYPE_LOOKUP 0
  #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
    #define CYTHON_USE_PYTYPE_LOOKUP 1
  #endif
  #if PY_MAJOR_VERSION < 3
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #if PY_VERSION_HEX < 0x02070000
    #undef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 0
  #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
    #define CYTHON_USE_PYLONG_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_PYLIST_INTERNALS
    #define CYTHON_USE_PYLIST_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #if PY_VERSION_HEX < 0x030300F0
    #undef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #elif !defined(CYTHON_USE_UNICODE_WRITER)
    #define CYTHON_USE_UNICODE_WRITER 1
  #endif
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #ifndef CYTHON_FAST_THREAD_STATE
    #define CYTHON_FAST_THREAD_STATE 1
  #endif
  #ifndef CYTHON_FAST_PYCALL
    #define CYTHON_FAST_PYCALL 1
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
  #endif
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
  #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif
#if CYTHON_USE_PYLONG_INTERNALS
  #include "longintrepr.h"
  #undef SHIFT
  #undef BASE
  #undef MASK
#endif
#ifndef __has_attribute
  #define __has_attribute(x) 0
#endif
#ifndef __has_cpp_attribute
  #define __has_cpp_attribute(x) 0
#endif
#ifndef CYTHON_RESTRICT
  #if defined(__GNUC__)
    #define CYTHON_RESTRICT __restrict__
  #elif defined(_MSC_VER) && _MSC_VER >= 1400
    #define CYTHON_RESTRICT __restrict
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_RESTRICT restrict
  #else
    #define CYTHON_RESTRICT
  #endif
#endif
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_MAYBE_UNUSED_VAR
#  if defined(__cplusplus)
     template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
#  else
#    define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
#  endif
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
#  define CYTHON_NCP_UNUSED
# else
#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifdef _MSC_VER
    #ifndef _MSC_STDINT_H_
        #if _MSC_VER < 1300
           typedef unsigned char     uint8_t;
           typedef unsigned int      uint32_t;
        #else
           typedef unsigned __int8   uint8_t;
           typedef unsigned __int32  uint32_t;
        #endif
    #endif
#else
   #include <stdint.h>
#endif
#ifndef CYTHON_FALLTHROUGH
  #if defined(__cplusplus) && __cplusplus >= 201103L
    #if __has_cpp_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH [[fallthrough]]
    #elif __has_cpp_attribute(clang::fallthrough)
      #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
    #elif __has_cpp_attribute(gnu::fallthrough)
      #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
    #endif
  #endif
  #ifndef CYTHON_FALLTHROUGH
    #if __has_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
    #else
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
  #if defined(__clang__ ) && defined(__apple_build_version__)
    #if __apple_build_version__ < 7000000
      #undef  CYTHON_FALLTHROUGH
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
#endif

#ifndef CYTHON_INLINE
  #if defined(__clang__)
    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
  #elif defined(__GNUC__)
    #define CYTHON_INLINE __inline__
  #elif defined(_MSC_VER)
    #define CYTHON_INLINE __inline
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_INLINE inline
  #else
    #define CYTHON_INLINE
  #endif
#endif

#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
  #define Py_OptimizeFlag 0
#endif
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
  #define __Pyx_DefaultClassType PyClass_Type
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
  #define __Pyx_DefaultClassType PyType_Type
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
  #define Py_TPFLAGS_CHECKTYPES 0
#endif
#ifndef Py_TPFLAGS_HAVE_INDEX
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif
#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
#ifndef Py_TPFLAGS_HAVE_FINALIZE
  #define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
  #ifndef METH_FASTCALL
     #define METH_FASTCALL 0x80
  #endif
  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
                                                          Py_ssize_t nargs, PyObject *kwnames);
#else
  #define __Pyx_PyCFunctionFast _PyCFunctionFast
  #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
    ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
  #define PyObject_Malloc(s)   PyMem_Malloc(s)
  #define PyObject_Free(p)     PyMem_Free(p)
  #define PyObject_Realloc(p)  PyMem_Realloc(p)
#endif
#if CYTHON_COMPILING_IN_PYSTON
  #define __Pyx_PyCode_HasFreeVars(co)  PyCode_HasFreeVars(co)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
#else
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
#endif
#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#elif PY_VERSION_HEX >= 0x03060000
  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#elif PY_VERSION_HEX >= 0x03000000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#else
  #define __Pyx_PyThreadState_Current _PyThreadState_Current
#endif
#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
#include "pythread.h"
#define Py_tss_NEEDS_INIT 0
typedef int Py_tss_t;
static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
  *key = PyThread_create_key();
  return 0; // PyThread_create_key reports success always
}
static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
  *key = Py_tss_NEEDS_INIT;
  return key;
}
static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
  PyObject_Free(key);
}
static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
  return *key != Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
  PyThread_delete_key(*key);
  *key = Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
  return PyThread_set_key_value(*key, value);
}
static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
  return PyThread_get_key_value(*key);
}
#endif // TSS (Thread Specific Storage) API
#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n)  PyDict_New()
#endif
#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
#define __Pyx_PyDict_GetItemStr(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
#else
#define __Pyx_PyDict_GetItemStr(dict, name)  PyDict_GetItem(dict, name)
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
  #define CYTHON_PEP393_ENABLED 1
  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                              0 : _PyUnicode_Ready((PyObject *)(op)))
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
  #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, ch)
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
#else
  #define CYTHON_PEP393_ENABLED 0
  #define PyUnicode_1BYTE_KIND  1
  #define PyUnicode_2BYTE_KIND  2
  #define PyUnicode_4BYTE_KIND  4
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
  #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
#else
  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
  #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
  #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
  #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
#define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
#else
  #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
#endif
#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
  #define PyObject_ASCII(o)            PyObject_Repr(o)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyStringObject               PyUnicodeObject
  #define PyString_Type                PyUnicode_Type
  #define PyString_Check               PyUnicode_Check
  #define PyString_CheckExact          PyUnicode_CheckExact
  #define PyObject_Unicode             PyObject_Str
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
#else
  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
#endif
#if CYTHON_ASSUME_SAFE_MACROS
  #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
#else
  #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyIntObject                  PyLongObject
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
  #define PyNumber_Int                 PyNumber_Long
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBoolObject                 PyLongObject
#endif
#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
  #ifndef PyUnicode_InternFromString
    #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
  #endif
#endif
#if PY_VERSION_HEX < 0x030200A4
  typedef long Py_hash_t;
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
#else
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func))
#else
  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
#endif
#if CYTHON_USE_ASYNC_SLOTS
  #if PY_VERSION_HEX >= 0x030500B1
    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
    #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
  #else
    #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
  #endif
#else
  #define __Pyx_PyType_AsAsync(obj) NULL
#endif
#ifndef __Pyx_PyAsyncMethodsStruct
    typedef struct {
        unaryfunc am_await;
        unaryfunc am_aiter;
        unaryfunc am_anext;
    } __Pyx_PyAsyncMethodsStruct;
#endif

#if defined(WIN32) || defined(MS_WINDOWS)
  #define _USE_MATH_DEFINES
#endif
#include <math.h>
#ifdef NAN
#define __PYX_NAN() ((float) NAN)
#else
static CYTHON_INLINE float __PYX_NAN() {
  float value;
  memset(&value, 0xFF, sizeof(value));
  return value;
}
#endif
#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
#define __Pyx_truncl trunc
#else
#define __Pyx_truncl truncl
#endif


#define __PYX_ERR(f_index, lineno, Ln_error) \
{ \
  __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \
}

#ifndef __PYX_EXTERN_C
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#define __PYX_HAVE__crowdposetools___mask
#define __PYX_HAVE_API__crowdposetools___mask
/* Early includes */
#include <string.h>
#include <stdio.h>
#include "numpy/arrayobject.h"
#include "numpy/ufuncobject.h"
#include <stdlib.h>
#include "maskApi.h"
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
#define CYTHON_WITHOUT_ASSERTIONS
#endif

typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;

#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
#define __PYX_DEFAULT_STRING_ENCODING ""
#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#define __Pyx_uchar_cast(c) ((unsigned char)c)
#define __Pyx_long_cast(x) ((long)x)
#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
    (sizeof(type) < sizeof(Py_ssize_t))  ||\
    (sizeof(type) > sizeof(Py_ssize_t) &&\
          likely(v < (type)PY_SSIZE_T_MAX ||\
                 v == (type)PY_SSIZE_T_MAX)  &&\
          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
                                v == (type)PY_SSIZE_T_MIN)))  ||\
    (sizeof(type) == sizeof(Py_ssize_t) &&\
          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
                               v == (type)PY_SSIZE_T_MAX)))  )
#if defined (__cplusplus) && __cplusplus >= 201103L
    #include <cstdlib>
    #define __Pyx_sst_abs(value) std::abs(value)
#elif SIZEOF_INT >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) abs(value)
#elif SIZEOF_LONG >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) labs(value)
#elif defined (_MSC_VER)
    #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define __Pyx_sst_abs(value) llabs(value)
#elif defined (__GNUC__)
    #define __Pyx_sst_abs(value) __builtin_llabs(value)
#else
    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString        PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#if PY_MAJOR_VERSION < 3
    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#else
    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
#endif
#define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyObject_AsWritableString(s)    ((char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
#define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
#define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
    const Py_UNICODE *u_end = u;
    while (*u_end++) ;
    return (size_t)(u_end - u - 1);
}
#define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
    (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
#if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else
#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#endif
#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#else
#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
#endif
#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
static int __Pyx_sys_getdefaultencoding_not_ascii;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    PyObject* ascii_chars_u = NULL;
    PyObject* ascii_chars_b = NULL;
    const char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    if (strcmp(default_encoding_c, "ascii") == 0) {
        __Pyx_sys_getdefaultencoding_not_ascii = 0;
    } else {
        char ascii_chars[128];
        int c;
        for (c = 0; c < 128; c++) {
            ascii_chars[c] = c;
        }
        __Pyx_sys_getdefaultencoding_not_ascii = 1;
        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
        if (!ascii_chars_u) goto bad;
        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
        if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
            PyErr_Format(
                PyExc_ValueError,
                "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
                default_encoding_c);
            goto bad;
        }
        Py_DECREF(ascii_chars_u);
        Py_DECREF(ascii_chars_b);
    }
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    Py_XDECREF(ascii_chars_u);
    Py_XDECREF(ascii_chars_b);
    return -1;
}
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
static char* __PYX_DEFAULT_STRING_ENCODING;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
    if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    return -1;
}
#endif
#endif


/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }

static PyObject *__pyx_m = NULL;
static PyObject *__pyx_d;
static PyObject *__pyx_b;
static PyObject *__pyx_cython_runtime = NULL;
static PyObject *__pyx_empty_tuple;
static PyObject *__pyx_empty_bytes;
static PyObject *__pyx_empty_unicode;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;

/* Header.proto */
#if !defined(CYTHON_CCOMPLEX)
  #if defined(__cplusplus)
    #define CYTHON_CCOMPLEX 1
  #elif defined(_Complex_I)
    #define CYTHON_CCOMPLEX 1
  #else
    #define CYTHON_CCOMPLEX 0
  #endif
#endif
#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    #include <complex>
  #else
    #include <complex.h>
  #endif
#endif
#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__)
  #undef _Complex_I
  #define _Complex_I 1.0fj
#endif


static const char *__pyx_f[] = {
  "crowdposetools/_mask.pyx",
  "stringsource",
  "__init__.pxd",
  "type.pxd",
};
/* BufferFormatStructs.proto */
#define IS_UNSIGNED(type) (((type) -1) > 0)
struct __Pyx_StructField_;
#define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0)
typedef struct {
  const char* name;
  struct __Pyx_StructField_* fields;
  size_t size;
  size_t arraysize[8];
  int ndim;
  char typegroup;
  char is_unsigned;
  int flags;
} __Pyx_TypeInfo;
typedef struct __Pyx_StructField_ {
  __Pyx_TypeInfo* type;
  const char* name;
  size_t offset;
} __Pyx_StructField;
typedef struct {
  __Pyx_StructField* field;
  size_t parent_offset;
} __Pyx_BufFmt_StackElem;
typedef struct {
  __Pyx_StructField root;
  __Pyx_BufFmt_StackElem* head;
  size_t fmt_offset;
  size_t new_count, enc_count;
  size_t struct_alignment;
  int is_complex;
  char enc_type;
  char new_packmode;
  char enc_packmode;
  char is_valid_array;
} __Pyx_BufFmt_Context;


/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":730
 * # in Cython to enable them only on the right systems.
 * 
 * ctypedef npy_int8       int8_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t
 */
typedef npy_int8 __pyx_t_5numpy_int8_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":731
 * 
 * ctypedef npy_int8       int8_t
 * ctypedef npy_int16      int16_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int32      int32_t
 * ctypedef npy_int64      int64_t
 */
typedef npy_int16 __pyx_t_5numpy_int16_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":732
 * ctypedef npy_int8       int8_t
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int64      int64_t
 * #ctypedef npy_int96      int96_t
 */
typedef npy_int32 __pyx_t_5numpy_int32_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":733
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t
 * ctypedef npy_int64      int64_t             # <<<<<<<<<<<<<<
 * #ctypedef npy_int96      int96_t
 * #ctypedef npy_int128     int128_t
 */
typedef npy_int64 __pyx_t_5numpy_int64_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":737
 * #ctypedef npy_int128     int128_t
 * 
 * ctypedef npy_uint8      uint8_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t
 */
typedef npy_uint8 __pyx_t_5numpy_uint8_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":738
 * 
 * ctypedef npy_uint8      uint8_t
 * ctypedef npy_uint16     uint16_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint32     uint32_t
 * ctypedef npy_uint64     uint64_t
 */
typedef npy_uint16 __pyx_t_5numpy_uint16_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":739
 * ctypedef npy_uint8      uint8_t
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint64     uint64_t
 * #ctypedef npy_uint96     uint96_t
 */
typedef npy_uint32 __pyx_t_5numpy_uint32_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":740
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t
 * ctypedef npy_uint64     uint64_t             # <<<<<<<<<<<<<<
 * #ctypedef npy_uint96     uint96_t
 * #ctypedef npy_uint128    uint128_t
 */
typedef npy_uint64 __pyx_t_5numpy_uint64_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":744
 * #ctypedef npy_uint128    uint128_t
 * 
 * ctypedef npy_float32    float32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_float64    float64_t
 * #ctypedef npy_float80    float80_t
 */
typedef npy_float32 __pyx_t_5numpy_float32_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":745
 * 
 * ctypedef npy_float32    float32_t
 * ctypedef npy_float64    float64_t             # <<<<<<<<<<<<<<
 * #ctypedef npy_float80    float80_t
 * #ctypedef npy_float128   float128_t
 */
typedef npy_float64 __pyx_t_5numpy_float64_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":754
 * # The int types are mapped a bit surprising --
 * # numpy.int corresponds to 'l' and numpy.long to 'q'
 * ctypedef npy_long       int_t             # <<<<<<<<<<<<<<
 * ctypedef npy_longlong   long_t
 * ctypedef npy_longlong   longlong_t
 */
typedef npy_long __pyx_t_5numpy_int_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":755
 * # numpy.int corresponds to 'l' and numpy.long to 'q'
 * ctypedef npy_long       int_t
 * ctypedef npy_longlong   long_t             # <<<<<<<<<<<<<<
 * ctypedef npy_longlong   longlong_t
 * 
 */
typedef npy_longlong __pyx_t_5numpy_long_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":756
 * ctypedef npy_long       int_t
 * ctypedef npy_longlong   long_t
 * ctypedef npy_longlong   longlong_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_ulong      uint_t
 */
typedef npy_longlong __pyx_t_5numpy_longlong_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":758
 * ctypedef npy_longlong   longlong_t
 * 
 * ctypedef npy_ulong      uint_t             # <<<<<<<<<<<<<<
 * ctypedef npy_ulonglong  ulong_t
 * ctypedef npy_ulonglong  ulonglong_t
 */
typedef npy_ulong __pyx_t_5numpy_uint_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":759
 * 
 * ctypedef npy_ulong      uint_t
 * ctypedef npy_ulonglong  ulong_t             # <<<<<<<<<<<<<<
 * ctypedef npy_ulonglong  ulonglong_t
 * 
 */
typedef npy_ulonglong __pyx_t_5numpy_ulong_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":760
 * ctypedef npy_ulong      uint_t
 * ctypedef npy_ulonglong  ulong_t
 * ctypedef npy_ulonglong  ulonglong_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_intp       intp_t
 */
typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":762
 * ctypedef npy_ulonglong  ulonglong_t
 * 
 * ctypedef npy_intp       intp_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uintp      uintp_t
 * 
 */
typedef npy_intp __pyx_t_5numpy_intp_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":763
 * 
 * ctypedef npy_intp       intp_t
 * ctypedef npy_uintp      uintp_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_double     float_t
 */
typedef npy_uintp __pyx_t_5numpy_uintp_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":765
 * ctypedef npy_uintp      uintp_t
 * 
 * ctypedef npy_double     float_t             # <<<<<<<<<<<<<<
 * ctypedef npy_double     double_t
 * ctypedef npy_longdouble longdouble_t
 */
typedef npy_double __pyx_t_5numpy_float_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":766
 * 
 * ctypedef npy_double     float_t
 * ctypedef npy_double     double_t             # <<<<<<<<<<<<<<
 * ctypedef npy_longdouble longdouble_t
 * 
 */
typedef npy_double __pyx_t_5numpy_double_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":767
 * ctypedef npy_double     float_t
 * ctypedef npy_double     double_t
 * ctypedef npy_longdouble longdouble_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_cfloat      cfloat_t
 */
typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
/* Declarations.proto */
#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    typedef ::std::complex< float > __pyx_t_float_complex;
  #else
    typedef float _Complex __pyx_t_float_complex;
  #endif
#else
    typedef struct { float real, imag; } __pyx_t_float_complex;
#endif
static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);

/* Declarations.proto */
#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    typedef ::std::complex< double > __pyx_t_double_complex;
  #else
    typedef double _Complex __pyx_t_double_complex;
  #endif
#else
    typedef struct { double real, imag; } __pyx_t_double_complex;
#endif
static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);


/*--- Type declarations ---*/
struct __pyx_obj_14crowdposetools_5_mask_RLEs;
struct __pyx_obj_14crowdposetools_5_mask_Masks;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":769
 * ctypedef npy_longdouble longdouble_t
 * 
 * ctypedef npy_cfloat      cfloat_t             # <<<<<<<<<<<<<<
 * ctypedef npy_cdouble     cdouble_t
 * ctypedef npy_clongdouble clongdouble_t
 */
typedef npy_cfloat __pyx_t_5numpy_cfloat_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":770
 * 
 * ctypedef npy_cfloat      cfloat_t
 * ctypedef npy_cdouble     cdouble_t             # <<<<<<<<<<<<<<
 * ctypedef npy_clongdouble clongdouble_t
 * 
 */
typedef npy_cdouble __pyx_t_5numpy_cdouble_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":771
 * ctypedef npy_cfloat      cfloat_t
 * ctypedef npy_cdouble     cdouble_t
 * ctypedef npy_clongdouble clongdouble_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_cdouble     complex_t
 */
typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;

/* "../../../anaconda3/envs/py0/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":773
 * ctypedef npy_clongdouble clongdouble_t
 * 
 * ctypedef npy_cdouble     complex_t             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew1(a):
 */
typedef npy_cdouble __pyx_t_5numpy_complex_t;

/* "crowdposetools/_mask.pyx":56
 * # python class to wrap RLE array in C
 * # the class handles the memory allocation and deallocation
 * cdef class RLEs:             # <<<<<<<<<<<<<<
 *     cdef RLE *_R
 *     cdef siz _n
 */
struct __pyx_obj_14crowdposetools_5_mask_RLEs {
  PyObject_HEAD
  RLE *_R;
  siz _n;
};


/* "crowdposetools/_mask.pyx":77
 * # python class to wrap Mask array in C
 * # the class handles the memory allocation and deallocation
 * cdef class Masks:             # <<<<<<<<<<<<<<
 *     cdef byte *_mask
 *     cdef siz _h
 */
struct __pyx_obj_14crowdposetools_5_mask_Masks {
  PyObject_HEAD
  byte *_mask;
  siz _h;
  siz _w;
  siz _n;
};


/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, int);
    void (*DECREF)(void*, PyObject*, int);
    void (*GOTREF)(void*, PyObject*, int);
    void (*GIVEREF)(void*, PyObject*, int);
    void* (*SetupContext)(const char*, int, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
#ifdef WITH_THREAD
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          if (acquire_gil) {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
              PyGILState_Release(__pyx_gilstate_save);\
          } else {\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
          }
#else
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
#endif
  #define __Pyx_RefNannyFinishContext()\
          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif
#define __Pyx_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_XDECREF(tmp);\
    } while (0)
#define __Pyx_DECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_DECREF(tmp);\
    } while (0)
#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)

/* PyObjectGetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif

/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);

/* RaiseDoubleKeywords.proto */
static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);

/* ParseKeywords.proto */
static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
    const char* function_name);

/* RaiseArgTupleInvalid.proto */
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);

/* IncludeStringH.proto */
#include <string.h>

/* BytesEquals.proto */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);

/* UnicodeEquals.proto */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);

/* StrEquals.proto */
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
#else
#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
#endif

/* PyCFunctionFastCall.proto */
#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
#else
#define __Pyx_PyCFunction_FastCall(func, args, nargs)  (assert(0), NULL)
#endif

/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
    __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
#if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs);
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
#endif

/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
#else
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif

/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif

/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);

/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
#endif

/* PyErrFetchRestore.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
#else
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#endif
#else
#define __Pyx_PyErr_Clear() PyErr_Clear()
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
#endif

/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);

/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);

/* ArgTypeTest.proto */
#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
    ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\
        __Pyx__ArgTypeTest(obj, type, name, exact))
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);

/* ListAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        Py_SIZE(list) = len+1;
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
#endif

/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
#else
#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\
    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
#endif

/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
#else
#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
    PyObject_RichCompare(op1, op2, Py_EQ)
    #endif

/* GetModuleGlobalName.proto */
static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);

/* DictGetItem.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
#define __Pyx_PyObject_Dict_GetItem(obj, name)\
    (likely(PyDict_CheckExact(obj)) ?\
     __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
#else
#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
#endif

/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
               __Pyx_GetItemInt_Generic(o, to_py_func(i))))
#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                     int is_list, int wraparound, int boundscheck);

/* IsLittleEndian.proto */
static CYTHON_INLINE int __Pyx_Is_Little_Endian(void);

/* BufferFormatCheck.proto */
static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts);
static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
                              __Pyx_BufFmt_StackElem* stack,
                              __Pyx_TypeInfo* type);

/* BufferGetAndValidate.proto */
#define __Pyx_GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)\
    ((obj == Py_None || obj == NULL) ?\
    (__Pyx_ZeroBuffer(buf), 0) :\
    __Pyx__GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack))
static int  __Pyx__GetBufferAndValidate(Py_buffer* buf, PyObject* obj,
    __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack);
static void __Pyx_ZeroBuffer(Py_buffer* buf);
static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info);
static Py_ssize_t __Pyx_minusones[] = { -1, -1, -1, -1, -1, -1, -1, -1 };
static Py_ssize_t __Pyx_zeros[] = { 0, 0, 0, 0, 0, 0, 0, 0 };

/* ListCompAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len)) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        Py_SIZE(list) = len+1;
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
#endif

/* FetchCommonType.proto */
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);

/* CythonFunction.proto */
#define __Pyx_CyFunction_USED 1
#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
#define __Pyx_CYFUNCTION_CCLASS        0x04
#define __Pyx_CyFunction_GetClosure(f)\
    (((__pyx_CyFunctionObject *) (f))->func_closure)
#define __Pyx_CyFunction_GetClassObj(f)\
    (((__pyx_CyFunctionObject *) (f))->func_classobj)
#define __Pyx_CyFunction_Defaults(type, f)\
    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
typedef struct {
    PyCFunctionObject func;
#if PY_VERSION_HEX < 0x030500A0
    PyObject *func_weakreflist;
#endif
    PyObject *func_dict;
    PyObject *func_name;
    PyObject *func_qualname;
    PyObject *func_doc;
    PyObject *func_globals;
    PyObject *func_code;
    PyObject *func_closure;
    PyObject *func_classobj;
    void *defaults;
    int defaults_pyobjects;
    int flags;
    PyObject *defaults_tuple;
    PyObject *defaults_kwdict;
    PyObject *(*defaults_getter)(PyObject *);
    PyObject *func_annotations;
} __pyx_CyFunctionObject;
static PyTypeObject *__pyx_CyFunctionType = 0;
#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
    __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)
static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *self,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
                                                         size_t size,
                                                         int pyobjects);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
                                                            PyObject *tuple);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
                                                             PyObject *dict);
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
                                                              PyObject *dict);
static int __pyx_CyFunction_init(void);

/* BufferFallbackError.proto */
static void __Pyx_RaiseBufferFallbackError(void);

/* None.proto */
static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t);

/* BufferIndexError.proto */
static void __Pyx_RaiseBufferIndexError(int axis);

#define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0)
/* PySequenceContains.proto */
static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
    int result = PySequence_Contains(seq, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* RaiseTooManyValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

/* RaiseNeedMoreValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

/* RaiseNoneIterError.proto */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);

/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
#else
#define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
#define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
#endif

/* PyErrExceptionMatches.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
#else
#define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
#endif

/* GetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* PyObject_GenericGetAttrNoDict.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
#endif

/* PyObject_GenericGetAttr.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
#endif

/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);

/* Import.proto */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);

/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
#else
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
#endif

/* CodeObjectCache.proto */
typedef struct {
    PyCodeObject* code_object;
    int code_line;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
};
static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static PyCodeObject *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);

/* AddTraceback.proto */
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename);

/* BufferStructDeclare.proto */
typedef struct {
  Py_ssize_t shape, strides, suboffsets;
} __Pyx_Buf_DimInfo;
typedef struct {
  size_t refcount;
  Py_buffer pybuffer;
} __Pyx_Buffer;
typedef struct {
  __Pyx_Buffer *rcbuffer;
  char *data;
  __Pyx_Buf_DimInfo diminfo[8];
} __Pyx_LocalBuf_ND;

#if PY_MAJOR_VERSION < 3
    static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags);
    static void __Pyx_ReleaseBuffer(Py_buffer *view);
#else
    #define __Pyx_GetBuffer PyObject_GetBuffer
    #define __Pyx_ReleaseBuffer PyBuffer_Release
#endif


/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_siz(siz value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t value);

/* RealImag.proto */
#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    #define __Pyx_CREAL(z) ((z).real())
    #define __Pyx_CIMAG(z) ((z).imag())
  #else
    #define __Pyx_CREAL(z) (__real__(z))
    #define __Pyx_CIMAG(z) (__imag__(z))
  #endif
#else
    #define __Pyx_CREAL(z) ((z).real)
    #define __Pyx_CIMAG(z) ((z).imag)
#endif
#if defined(__cplusplus) && CYTHON_CCOMPLEX\
        && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
    #define __Pyx_SET_CREAL(z,x) ((z).real(x))
    #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
#else
    #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x)
    #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
#endif

/* Arithmetic.proto */
#if CYTHON_CCOMPLEX
    #define __Pyx_c_eq_float(a, b)   ((a)==(b))
    #define __Pyx_c_sum_float(a, b)  ((a)+(b))
    #define __Pyx_c_diff_float(a, b) ((a)-(b))
    #define __Pyx_c_prod_float(a, b) ((a)*(b))
    #define __Pyx_c_quot_float(a, b) ((a)/(b))
    #define __Pyx_c_neg_float(a)     (-(a))
  #ifdef __cplusplus
    #define __Pyx_c_is_zero_float(z) ((z)==(float)0)
    #define __Pyx_c_conj_float(z)    (::std::conj(z))
    #if 1
        #define __Pyx_c_abs_float(z)     (::std::abs(z))
        #define __Pyx_c_pow_float(a, b)  (::std::pow(a, b))
    #endif
  #else
    #define __Pyx_c_is_zero_float(z) ((z)==0)
    #define __Pyx_c_conj_float(z)    (conjf(z))
    #if 1
        #define __Pyx_c_abs_float(z)     (cabsf(z))
        #define __Pyx_c_pow_float(a, b)  (cpowf(a, b))
    #endif
 #endif
#else
    static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex);
    static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex);
    #if 1
        static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex);
        static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex);
    #endif
#endif

/* Arithmetic.proto */
#if CYTHON_CCOMPLEX
    #define __Pyx_c_eq_double(a, b)   ((a)==(b))
    #define __Pyx_c_sum_double(a, b)  ((a)+(b))
    #define __Pyx_c_diff_double(a, b) ((a)-(b))
    #define __Pyx_c_prod_double(a, b) ((a)*(b))
    #define __Pyx_c_quot_double(a, b) ((a)/(b))
    #define __Pyx_c_neg_double(a)     (-(a))
  #ifdef __cplusplus
    #define __Pyx_c_is_zero_double(z) ((z)==(double)0)
    #define __Pyx_c_conj_double(z)    (::std::conj(z))
    #if 1
        #define __Pyx_c_abs_double(z)     (::std::abs(z))
        #define __Pyx_c_pow_double(a, b)  (::std::pow(a, b))
    #endif
  #else
    #define __Pyx_c_is_zero_double(z) ((z)==0)
    #define __Pyx_c_conj_double(z)    (conj(z))
    #if 1
        #define __Pyx_c_abs_double(z)     (cabs(z))
        #define __Pyx_c_pow_double(a, b)  (cpow(a, b))
    #endif
 #endif
#else
    static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex);
    static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex);
    #if 1
        static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex);
        static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex);
    #endif
#endif

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value);

/* CIntFromPy.proto */
static CYTHON_INLINE siz __Pyx_PyInt_As_siz(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);

/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
#else
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
#endif
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)

/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);

/* PyIdentifierFromString.proto */
#if !defined(__Pyx_PyIdentifier_FromString)
#if PY_MAJOR_VERSION < 3
  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
#else
  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
#endif
#endif

/* ModuleImport.proto */
static PyObject *__Pyx_ImportModule(const char *name);

/* TypeImport.proto */
static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);

/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);


/* Module declarations from 'cpython.buffer' */

/* Module declarations from 'libc.string' */

/* Module declarations from 'libc.stdio' */

/* Module declarations from '__builtin__' */

/* Module declarations from 'cpython.type' */
static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;

/* Module declarations from 'cpython' */

/* Module declarations from 'cpython.object' */

/* Module declarations from 'cpython.ref' */

/* Module declarations from 'cpython.mem' */

/* Module declarations from 'numpy' */

/* Module declarations from 'numpy' */
static PyTypeObject *__pyx_ptype_5numpy_dtype = 0;
static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0;
static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0;
static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0;
static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0;
static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/
static CYTHON_INLINE int __pyx_f_5numpy_import_array(void); /*proto*/

/* Module declarations from 'libc.stdlib' */

/* Module declarations from 'crowdposetools._mask' */
static PyTypeObject *__pyx_ptype_14crowdposetools_5_mask_RLEs = 0;
static PyTypeObject *__pyx_ptype_14crowdposetools_5_mask_Masks = 0;
static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t = { "uint8_t", NULL, sizeof(__pyx_t_5numpy_uint8_t), { 0 }, 0, IS_UNSIGNED(__pyx_t_5numpy_uint8_t) ? 'U' : 'I', IS_UNSIGNED(__pyx_t_5numpy_uint8_t), 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_double_t = { "double_t", NULL, sizeof(__pyx_t_5numpy_double_t), { 0 }, 0, 'R', 0, 0 };
static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t = { "uint32_t", NULL, sizeof(__pyx_t_5numpy_uint32_t), { 0 }, 0, IS_UNSIGNED(__pyx_t_5numpy_uint32_t) ? 'U' : 'I', IS_UNSIGNED(__pyx_t_5numpy_uint32_t), 0 };
#define __Pyx_MODULE_NAME "crowdposetools._mask"
extern int __pyx_module_is_main_crowdposetools___mask;
int __pyx_module_is_main_crowdposetools___mask = 0;

/* Implementation of 'crowdposetools._mask' */
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_AttributeError;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_enumerate;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_ImportError;
static const char __pyx_k_F[] = "F";
static const char __pyx_k_N[] = "N";
static const char __pyx_k_R[] = "R";
static const char __pyx_k_a[] = "_a";
static const char __pyx_k_h[] = "h";
static const char __pyx_k_i[] = "i";
static const char __pyx_k_j[] = "j";
static const char __pyx_k_m[] = "m";
static const char __pyx_k_n[] = "n";
static const char __pyx_k_p[] = "p";
static const char __pyx_k_w[] = "w";
static const char __pyx_k_Rs[] = "Rs";
static const char __pyx_k_bb[] = "bb";
static const char __pyx_k_dt[] = "dt";
static const char __pyx_k_gt[] = "gt";
static const char __pyx_k_np[] = "np";
static const char __pyx_k_a_2[] = "a";
static const char __pyx_k_all[] = "all";
static const char __pyx_k_iou[] = "_iou";
static const char __pyx_k_len[] = "_len";
static const char __pyx_k_obj[] = "obj";
static const char __pyx_k_sys[] = "sys";
static const char __pyx_k_area[] = "area";
static const char __pyx_k_bb_2[] = "_bb";
static const char __pyx_k_cnts[] = "cnts";
static const char __pyx_k_data[] = "data";
static const char __pyx_k_main[] = "__main__";
static const char __pyx_k_mask[] = "mask";
static const char __pyx_k_name[] = "__name__";
static const char __pyx_k_objs[] = "objs";
static const char __pyx_k_poly[] = "poly";
static const char __pyx_k_size[] = "size";
static const char __pyx_k_test[] = "__test__";
static const char __pyx_k_utf8[] = "utf8";
static const char __pyx_k_array[] = "array";
static const char __pyx_k_bbIou[] = "_bbIou";
static const char __pyx_k_dtype[] = "dtype";
static const char __pyx_k_iou_2[] = "iou";
static const char __pyx_k_isbox[] = "isbox";
static const char __pyx_k_isrle[] = "isrle";
static const char __pyx_k_masks[] = "masks";
static const char __pyx_k_merge[] = "merge";
static const char __pyx_k_numpy[] = "numpy";
static const char __pyx_k_order[] = "order";
static const char __pyx_k_pyobj[] = "pyobj";
static const char __pyx_k_range[] = "range";
static const char __pyx_k_shape[] = "shape";
static const char __pyx_k_uint8[] = "uint8";
static const char __pyx_k_zeros[] = "zeros";
static const char __pyx_k_astype[] = "astype";
static const char __pyx_k_author[] = "__author__";
static const char __pyx_k_counts[] = "counts";
static const char __pyx_k_decode[] = "decode";
static const char __pyx_k_double[] = "double";
static const char __pyx_k_encode[] = "encode";
static const char __pyx_k_frBbox[] = "frBbox";
static const char __pyx_k_frPoly[] = "frPoly";
static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_iouFun[] = "_iouFun";
static const char __pyx_k_reduce[] = "__reduce__";
static const char __pyx_k_rleIou[] = "_rleIou";
static const char __pyx_k_toBbox[] = "toBbox";
static const char __pyx_k_ucRles[] = "ucRles";
static const char __pyx_k_uint32[] = "uint32";
static const char __pyx_k_iscrowd[] = "iscrowd";
static const char __pyx_k_np_poly[] = "np_poly";
static const char __pyx_k_preproc[] = "_preproc";
static const char __pyx_k_reshape[] = "reshape";
static const char __pyx_k_rleObjs[] = "rleObjs";
static const char __pyx_k_tsungyi[] = "tsungyi";
static const char __pyx_k_c_string[] = "c_string";
static const char __pyx_k_frString[] = "_frString";
static const char __pyx_k_getstate[] = "__getstate__";
static const char __pyx_k_setstate[] = "__setstate__";
static const char __pyx_k_toString[] = "_toString";
static const char __pyx_k_TypeError[] = "TypeError";
static const char __pyx_k_enumerate[] = "enumerate";
static const char __pyx_k_intersect[] = "intersect";
static const char __pyx_k_py_string[] = "py_string";
static const char __pyx_k_pyiscrowd[] = "pyiscrowd";
static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
static const char __pyx_k_ValueError[] = "ValueError";
static const char __pyx_k_ImportError[] = "ImportError";
static const char __pyx_k_frPyObjects[] = "frPyObjects";
static const char __pyx_k_RuntimeError[] = "RuntimeError";
static const char __pyx_k_version_info[] = "version_info";
static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
static const char __pyx_k_AttributeError[] = "AttributeError";
static const char __pyx_k_PYTHON_VERSION[] = "PYTHON_VERSION";
static const char __pyx_k_iou_locals__len[] = "iou.<locals>._len";
static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
static const char __pyx_k_frUncompressedRLE[] = "frUncompressedRLE";
static const char __pyx_k_iou_locals__bbIou[] = "iou.<locals>._bbIou";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
static const char __pyx_k_iou_locals__rleIou[] = "iou.<locals>._rleIou";
static const char __pyx_k_iou_locals__preproc[] = "iou.<locals>._preproc";
static const char __pyx_k_crowdposetools__mask[] = "crowdposetools._mask";
static const char __pyx_k_crowdposetools__mask_pyx[] = "crowdposetools/_mask.pyx";
static const char __pyx_k_input_data_type_not_allowed[] = "input data type not allowed.";
static const char __pyx_k_input_type_is_not_supported[] = "input type is not supported.";
static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous";
static const char __pyx_k_Python_version_must_be_2_or_3[] = "Python version must be 2 or 3";
static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import";
static const char __pyx_k_numpy_ndarray_input_is_only_for[] = "numpy ndarray input is only for *bounding boxes* and should have Nx4 dimension";
static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)";
static const char __pyx_k_unrecognized_type_The_following[] = "unrecognized type.  The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.";
static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd";
static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported";
static const char __pyx_k_The_dt_and_gt_should_have_the_sa[] = "The dt and gt should have the same data type, either RLEs, list or np.ndarray";
static const char __pyx_k_list_input_can_be_bounding_box_N[] = "list input can be bounding box (Nx4) or RLEs ([RLE])";
static const char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous";
static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import";
static const char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short.";
static PyObject *__pyx_n_s_AttributeError;
static PyObject *__pyx_n_s_F;
static PyObject *__pyx_kp_u_Format_string_allocated_too_shor;
static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2;
static PyObject *__pyx_n_s_ImportError;
static PyObject *__pyx_n_s_N;
static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor;
static PyObject *__pyx_n_s_PYTHON_VERSION;
static PyObject *__pyx_kp_s_Python_version_must_be_2_or_3;
static PyObject *__pyx_n_s_R;
static PyObject *__pyx_n_s_Rs;
static PyObject *__pyx_n_s_RuntimeError;
static PyObject *__pyx_kp_s_The_dt_and_gt_should_have_the_sa;
static PyObject *__pyx_n_s_TypeError;
static PyObject *__pyx_n_s_ValueError;
static PyObject *__pyx_n_s_a;
static PyObject *__pyx_n_s_a_2;
static PyObject *__pyx_n_s_all;
static PyObject *__pyx_n_s_area;
static PyObject *__pyx_n_s_array;
static PyObject *__pyx_n_s_astype;
static PyObject *__pyx_n_s_author;
static PyObject *__pyx_n_s_bb;
static PyObject *__pyx_n_s_bbIou;
static PyObject *__pyx_n_s_bb_2;
static PyObject *__pyx_n_s_c_string;
static PyObject *__pyx_n_s_cline_in_traceback;
static PyObject *__pyx_n_s_cnts;
static PyObject *__pyx_n_s_counts;
static PyObject *__pyx_n_s_crowdposetools__mask;
static PyObject *__pyx_kp_s_crowdposetools__mask_pyx;
static PyObject *__pyx_n_s_data;
static PyObject *__pyx_n_s_decode;
static PyObject *__pyx_n_s_double;
static PyObject *__pyx_n_s_dt;
static PyObject *__pyx_n_s_dtype;
static PyObject *__pyx_n_s_encode;
static PyObject *__pyx_n_s_enumerate;
static PyObject *__pyx_n_s_frBbox;
static PyObject *__pyx_n_s_frPoly;
static PyObject *__pyx_n_s_frPyObjects;
static PyObject *__pyx_n_s_frString;
static PyObject *__pyx_n_s_frUncompressedRLE;
static PyObject *__pyx_n_s_getstate;
static PyObject *__pyx_n_s_gt;
static PyObject *__pyx_n_s_h;
static PyObject *__pyx_n_s_i;
static PyObject *__pyx_n_s_import;
static PyObject *__pyx_kp_s_input_data_type_not_allowed;
static PyObject *__pyx_kp_s_input_type_is_not_supported;
static PyObject *__pyx_n_s_intersect;
static PyObject *__pyx_n_s_iou;
static PyObject *__pyx_n_s_iouFun;
static PyObject *__pyx_n_s_iou_2;
static PyObject *__pyx_n_s_iou_locals__bbIou;
static PyObject *__pyx_n_s_iou_locals__len;
static PyObject *__pyx_n_s_iou_locals__preproc;
static PyObject *__pyx_n_s_iou_locals__rleIou;
static PyObject *__pyx_n_s_isbox;
static PyObject *__pyx_n_s_iscrowd;
static PyObject *__pyx_n_s_isrle;
static PyObject *__pyx_n_s_j;
static PyObject *__pyx_n_s_len;
static PyObject *__pyx_kp_s_list_input_can_be_bounding_box_N;
static PyObject *__pyx_n_s_m;
static PyObject *__pyx_n_s_main;
static PyObject *__pyx_n_s_mask;
static PyObject *__pyx_n_s_masks;
static PyObject *__pyx_n_s_merge;
static PyObject *__pyx_n_s_n;
static PyObject *__pyx_n_s_name;
static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous;
static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou;
static PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
static PyObject *__pyx_n_s_np;
static PyObject *__pyx_n_s_np_poly;
static PyObject *__pyx_n_s_numpy;
static PyObject *__pyx_kp_s_numpy_core_multiarray_failed_to;
static PyObject *__pyx_kp_s_numpy_core_umath_failed_to_impor;
static PyObject *__pyx_kp_s_numpy_ndarray_input_is_only_for;
static PyObject *__pyx_n_s_obj;
static PyObject *__pyx_n_s_objs;
static PyObject *__pyx_n_s_order;
static PyObject *__pyx_n_s_p;
static PyObject *__pyx_n_s_poly;
static PyObject *__pyx_n_s_preproc;
static PyObject *__pyx_n_s_py_string;
static PyObject *__pyx_n_s_pyiscrowd;
static PyObject *__pyx_n_s_pyobj;
static PyObject *__pyx_n_s_range;
static PyObject *__pyx_n_s_reduce;
static PyObject *__pyx_n_s_reduce_cython;
static PyObject *__pyx_n_s_reduce_ex;
static PyObject *__pyx_n_s_reshape;
static PyObject *__pyx_n_s_rleIou;
static PyObject *__pyx_n_s_rleObjs;
static PyObject *__pyx_n_s_setstate;
static PyObject *__pyx_n_s_setstate_cython;
static PyObject *__pyx_n_s_shape;
static PyObject *__pyx_n_s_size;
static PyObject *__pyx_n_s_sys;
static PyObject *__pyx_n_s_test;
static PyObject *__pyx_n_s_toBbox;
static PyObject *__pyx_n_s_toString;
static PyObject *__pyx_n_s_tsungyi;
static PyObject *__pyx_n_s_ucRles;
static PyObject *__pyx_n_s_uint32;
static PyObject *__pyx_n_s_uint8;
static PyObject *__pyx_kp_u_unknown_dtype_code_in_numpy_pxd;
static PyObject *__pyx_kp_s_unrecognized_type_The_following;
static PyObject *__pyx_n_s_utf8;
static PyObject *__pyx_n_s_version_info;
static PyObject *__pyx_n_s_w;
static PyObject *__pyx_n_s_zeros;
static int __pyx_pf_14crowdposetools_5_mask_4RLEs___cinit__(struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_self, siz __pyx_v_n); /* proto */
static void __pyx_pf_14crowdposetools_5_mask_4RLEs_2__dealloc__(struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_4RLEs_4__getattr__(struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_4RLEs_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_4RLEs_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_14crowdposetools_5_mask_5Masks___cinit__(struct __pyx_obj_14crowdposetools_5_mask_Masks *__pyx_v_self, PyObject *__pyx_v_h, PyObject *__pyx_v_w, PyObject *__pyx_v_n); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_5Masks_2__array__(struct __pyx_obj_14crowdposetools_5_mask_Masks *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_5Masks_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_14crowdposetools_5_mask_Masks *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_5Masks_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_14crowdposetools_5_mask_Masks *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask__toString(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_Rs); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_2_frString(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_4encode(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mask); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_6decode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_8merge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs, PyObject *__pyx_v_intersect); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_10area(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_3iou__preproc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_objs); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_3iou_2_rleIou(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_dt, struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_gt, PyArrayObject *__pyx_v_iscrowd, siz __pyx_v_m, siz __pyx_v_n, PyArrayObject *__pyx_v__iou); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_3iou_4_bbIou(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_dt, PyArrayObject *__pyx_v_gt, PyArrayObject *__pyx_v_iscrowd, siz __pyx_v_m, siz __pyx_v_n, PyArrayObject *__pyx_v__iou); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_3iou_6_len(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_12iou(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt, PyObject *__pyx_v_gt, PyObject *__pyx_v_pyiscrowd); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_14toBbox(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_16frBbox(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_bb, siz __pyx_v_h, siz __pyx_v_w); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_18frPoly(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_poly, siz __pyx_v_h, siz __pyx_v_w); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_20frUncompressedRLE(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ucRles, CYTHON_UNUSED siz __pyx_v_h, CYTHON_UNUSED siz __pyx_v_w); /* proto */
static PyObject *__pyx_pf_14crowdposetools_5_mask_22frPyObjects(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_h, PyObject *__pyx_v_w); /* proto */
static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */
static PyObject *__pyx_tp_new_14crowdposetools_5_mask_RLEs(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_14crowdposetools_5_mask_Masks(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_1;
static PyObject *__pyx_int_2;
static PyObject *__pyx_int_3;
static PyObject *__pyx_int_4;
static PyObject *__pyx_tuple_;
static PyObject *__pyx_tuple__2;
static PyObject *__pyx_tuple__3;
static PyObject *__pyx_tuple__4;
static PyObject *__pyx_tuple__5;
static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__13;
static PyObject *__pyx_tuple__15;
static PyObject *__pyx_tuple__17;
static PyObject *__pyx_tuple__19;
static PyObject *__pyx_tuple__20;
static PyObject *__pyx_tuple__21;
static PyObject *__pyx_tuple__22;
static PyObject *__pyx_tuple__23;
static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
static PyObject *__pyx_tuple__27;
static PyObject *__pyx_tuple__28;
static PyObject *__pyx_tuple__29;
static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__31;
static PyObject *__pyx_tuple__32;
static PyObject *__pyx_tuple__34;
static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__38;
static PyObject *__pyx_tuple__40;
static PyObject *__pyx_tuple__42;
static PyObject *__pyx_tuple__44;
static PyObject *__pyx_tuple__46;
static PyObject *__pyx_tuple__48;
static PyObject *__pyx_tuple__50;
static PyObject *__pyx_tuple__52;
static PyObject *__pyx_tuple__54;
static PyObject *__pyx_codeobj__12;
static PyObject *__pyx_codeobj__14;
static PyObject *__pyx_codeobj__16;
static PyObject *__pyx_codeobj__18;
static PyObject *__pyx_codeobj__33;
static PyObject *__pyx_codeobj__35;
static PyObject *__pyx_codeobj__37;
static PyObject *__pyx_codeobj__39;
static PyObject *__pyx_codeobj__41;
static PyObject *__pyx_codeobj__43;
static PyObject *__pyx_codeobj__45;
static PyObject *__pyx_codeobj__47;
static PyObject *__pyx_codeobj__49;
static PyObject *__pyx_codeobj__51;
static PyObject *__pyx_codeobj__53;
static PyObject *__pyx_codeobj__55;
/* Late includes */

/* "crowdposetools/_mask.pyx":60
 *     cdef siz _n
 * 
 *     def __cinit__(self, siz n =0):             # <<<<<<<<<<<<<<
 *         rlesInit(&self._R, n)
 *         self._n = n
 */

/* Python wrapper */
static int __pyx_pw_14crowdposetools_5_mask_4RLEs_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_14crowdposetools_5_mask_4RLEs_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  siz __pyx_v_n;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 60, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_n = __Pyx_PyInt_As_siz(values[0]); if (unlikely((__pyx_v_n == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L3_error)
    } else {
      __pyx_v_n = ((siz)0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 60, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("crowdposetools._mask.RLEs.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_14crowdposetools_5_mask_4RLEs___cinit__(((struct __pyx_obj_14crowdposetools_5_mask_RLEs *)__pyx_v_self), __pyx_v_n);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_14crowdposetools_5_mask_4RLEs___cinit__(struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_self, siz __pyx_v_n) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "crowdposetools/_mask.pyx":61
 * 
 *     def __cinit__(self, siz n =0):
 *         rlesInit(&self._R, n)             # <<<<<<<<<<<<<<
 *         self._n = n
 * 
 */
  rlesInit((&__pyx_v_self->_R), __pyx_v_n);

  /* "crowdposetools/_mask.pyx":62
 *     def __cinit__(self, siz n =0):
 *         rlesInit(&self._R, n)
 *         self._n = n             # <<<<<<<<<<<<<<
 * 
 *     # free the RLE array here
 */
  __pyx_v_self->_n = __pyx_v_n;

  /* "crowdposetools/_mask.pyx":60
 *     cdef siz _n
 * 
 *     def __cinit__(self, siz n =0):             # <<<<<<<<<<<<<<
 *         rlesInit(&self._R, n)
 *         self._n = n
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "crowdposetools/_mask.pyx":65
 * 
 *     # free the RLE array here
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._R is not NULL:
 *             for i in range(self._n):
 */

/* Python wrapper */
static void __pyx_pw_14crowdposetools_5_mask_4RLEs_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_14crowdposetools_5_mask_4RLEs_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_14crowdposetools_5_mask_4RLEs_2__dealloc__(((struct __pyx_obj_14crowdposetools_5_mask_RLEs *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_14crowdposetools_5_mask_4RLEs_2__dealloc__(struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_self) {
  siz __pyx_v_i;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  siz __pyx_t_2;
  siz __pyx_t_3;
  siz __pyx_t_4;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "crowdposetools/_mask.pyx":66
 *     # free the RLE array here
 *     def __dealloc__(self):
 *         if self._R is not NULL:             # <<<<<<<<<<<<<<
 *             for i in range(self._n):
 *                 free(self._R[i].cnts)
 */
  __pyx_t_1 = ((__pyx_v_self->_R != NULL) != 0);
  if (__pyx_t_1) {

    /* "crowdposetools/_mask.pyx":67
 *     def __dealloc__(self):
 *         if self._R is not NULL:
 *             for i in range(self._n):             # <<<<<<<<<<<<<<
 *                 free(self._R[i].cnts)
 *             free(self._R)
 */
    __pyx_t_2 = __pyx_v_self->_n;
    __pyx_t_3 = __pyx_t_2;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_v_i = __pyx_t_4;

      /* "crowdposetools/_mask.pyx":68
 *         if self._R is not NULL:
 *             for i in range(self._n):
 *                 free(self._R[i].cnts)             # <<<<<<<<<<<<<<
 *             free(self._R)
 *     def __getattr__(self, key):
 */
      free((__pyx_v_self->_R[__pyx_v_i]).cnts);
    }

    /* "crowdposetools/_mask.pyx":69
 *             for i in range(self._n):
 *                 free(self._R[i].cnts)
 *             free(self._R)             # <<<<<<<<<<<<<<
 *     def __getattr__(self, key):
 *         if key == 'n':
 */
    free(__pyx_v_self->_R);

    /* "crowdposetools/_mask.pyx":66
 *     # free the RLE array here
 *     def __dealloc__(self):
 *         if self._R is not NULL:             # <<<<<<<<<<<<<<
 *             for i in range(self._n):
 *                 free(self._R[i].cnts)
 */
  }

  /* "crowdposetools/_mask.pyx":65
 * 
 *     # free the RLE array here
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._R is not NULL:
 *             for i in range(self._n):
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "crowdposetools/_mask.pyx":70
 *                 free(self._R[i].cnts)
 *             free(self._R)
 *     def __getattr__(self, key):             # <<<<<<<<<<<<<<
 *         if key == 'n':
 *             return self._n
 */

/* Python wrapper */
static PyObject *__pyx_pw_14crowdposetools_5_mask_4RLEs_5__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static PyObject *__pyx_pw_14crowdposetools_5_mask_4RLEs_5__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_14crowdposetools_5_mask_4RLEs_4__getattr__(((struct __pyx_obj_14crowdposetools_5_mask_RLEs *)__pyx_v_self), ((PyObject *)__pyx_v_key));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_14crowdposetools_5_mask_4RLEs_4__getattr__(struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_self, PyObject *__pyx_v_key) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__getattr__", 0);

  /* "crowdposetools/_mask.pyx":71
 *             free(self._R)
 *     def __getattr__(self, key):
 *         if key == 'n':             # <<<<<<<<<<<<<<
 *             return self._n
 *         raise AttributeError(key)
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_key, __pyx_n_s_n, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 71, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "crowdposetools/_mask.pyx":72
 *     def __getattr__(self, key):
 *         if key == 'n':
 *             return self._n             # <<<<<<<<<<<<<<
 *         raise AttributeError(key)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_From_siz(__pyx_v_self->_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "crowdposetools/_mask.pyx":71
 *             free(self._R)
 *     def __getattr__(self, key):
 *         if key == 'n':             # <<<<<<<<<<<<<<
 *             return self._n
 *         raise AttributeError(key)
 */
  }

  /* "crowdposetools/_mask.pyx":73
 *         if key == 'n':
 *             return self._n
 *         raise AttributeError(key)             # <<<<<<<<<<<<<<
 * 
 * # python class to wrap Mask array in C
 */
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_AttributeError, __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(0, 73, __pyx_L1_error)

  /* "crowdposetools/_mask.pyx":70
 *                 free(self._R[i].cnts)
 *             free(self._R)
 *     def __getattr__(self, key):             # <<<<<<<<<<<<<<
 *         if key == 'n':
 *             return self._n
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("crowdposetools._mask.RLEs.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_14crowdposetools_5_mask_4RLEs_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_14crowdposetools_5_mask_4RLEs_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_14crowdposetools_5_mask_4RLEs_6__reduce_cython__(((struct __pyx_obj_14crowdposetools_5_mask_RLEs *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_14crowdposetools_5_mask_4RLEs_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("crowdposetools._mask.RLEs.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_14crowdposetools_5_mask_4RLEs_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_14crowdposetools_5_mask_4RLEs_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_14crowdposetools_5_mask_4RLEs_8__setstate_cython__(((struct __pyx_obj_14crowdposetools_5_mask_RLEs *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_14crowdposetools_5_mask_4RLEs_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("crowdposetools._mask.RLEs.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "crowdposetools/_mask.pyx":83
 *     cdef siz _n
 * 
 *     def __cinit__(self, h, w, n):             # <<<<<<<<<<<<<<
 *         self._mask = <byte*> malloc(h*w*n* sizeof(byte))
 *         self._h = h
 */

/* Python wrapper */
static int __pyx_pw_14crowdposetools_5_mask_5Masks_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_14crowdposetools_5_mask_5Masks_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_h = 0;
  PyObject *__pyx_v_w = 0;
  PyObject *__pyx_v_n = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_h,&__pyx_n_s_w,&__pyx_n_s_n,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 83, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 83, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 83, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_h = values[0];
    __pyx_v_w = values[1];
    __pyx_v_n = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 83, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("crowdposetools._mask.Masks.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_14crowdposetools_5_mask_5Masks___cinit__(((struct __pyx_obj_14crowdposetools_5_mask_Masks *)__pyx_v_self), __pyx_v_h, __pyx_v_w, __pyx_v_n);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_14crowdposetools_5_mask_5Masks___cinit__(struct __pyx_obj_14crowdposetools_5_mask_Masks *__pyx_v_self, PyObject *__pyx_v_h, PyObject *__pyx_v_w, PyObject *__pyx_v_n) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  siz __pyx_t_5;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "crowdposetools/_mask.pyx":84
 * 
 *     def __cinit__(self, h, w, n):
 *         self._mask = <byte*> malloc(h*w*n* sizeof(byte))             # <<<<<<<<<<<<<<
 *         self._h = h
 *         self._w = w
 */
  __pyx_t_1 = PyNumber_Multiply(__pyx_v_h, __pyx_v_w); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_FromSize_t((sizeof(byte))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_self->_mask = ((byte *)malloc(__pyx_t_4));

  /* "crowdposetools/_mask.pyx":85
 *     def __cinit__(self, h, w, n):
 *         self._mask = <byte*> malloc(h*w*n* sizeof(byte))
 *         self._h = h             # <<<<<<<<<<<<<<
 *         self._w = w
 *         self._n = n
 */
  __pyx_t_5 = __Pyx_PyInt_As_siz(__pyx_v_h); if (unlikely((__pyx_t_5 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 85, __pyx_L1_error)
  __pyx_v_self->_h = __pyx_t_5;

  /* "crowdposetools/_mask.pyx":86
 *         self._mask = <byte*> malloc(h*w*n* sizeof(byte))
 *         self._h = h
 *         self._w = w             # <<<<<<<<<<<<<<
 *         self._n = n
 *     # def __dealloc__(self):
 */
  __pyx_t_5 = __Pyx_PyInt_As_siz(__pyx_v_w); if (unlikely((__pyx_t_5 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 86, __pyx_L1_error)
  __pyx_v_self->_w = __pyx_t_5;

  /* "crowdposetools/_mask.pyx":87
 *         self._h = h
 *         self._w = w
 *         self._n = n             # <<<<<<<<<<<<<<
 *     # def __dealloc__(self):
 *         # the memory management of _mask has been passed to np.ndarray
 */
  __pyx_t_5 = __Pyx_PyInt_As_siz(__pyx_v_n); if (unlikely((__pyx_t_5 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 87, __pyx_L1_error)
  __pyx_v_self->_n = __pyx_t_5;

  /* "crowdposetools/_mask.pyx":83
 *     cdef siz _n
 * 
 *     def __cinit__(self, h, w, n):             # <<<<<<<<<<<<<<
 *         self._mask = <byte*> malloc(h*w*n* sizeof(byte))
 *         self._h = h
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("crowdposetools._mask.Masks.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "crowdposetools/_mask.pyx":93
 * 
 *     # called when passing into np.array() and return an np.ndarray in column-major order
 *     def __array__(self):             # <<<<<<<<<<<<<<
 *         cdef np.npy_intp shape[1]
 *         shape[0] = <np.npy_intp> self._h*self._w*self._n
 */

/* Python wrapper */
static PyObject *__pyx_pw_14crowdposetools_5_mask_5Masks_3__array__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_14crowdposetools_5_mask_5Masks_3__array__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__array__ (wrapper)", 0);
  __pyx_r = __pyx_pf_14crowdposetools_5_mask_5Masks_2__array__(((struct __pyx_obj_14crowdposetools_5_mask_Masks *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_14crowdposetools_5_mask_5Masks_2__array__(struct __pyx_obj_14crowdposetools_5_mask_Masks *__pyx_v_self) {
  npy_intp __pyx_v_shape[1];
  PyObject *__pyx_v_ndarray = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("__array__", 0);

  /* "crowdposetools/_mask.pyx":95
 *     def __array__(self):
 *         cdef np.npy_intp shape[1]
 *         shape[0] = <np.npy_intp> self._h*self._w*self._n             # <<<<<<<<<<<<<<
 *         # Create a 1D array, and reshape it to fortran/Matlab column-major array
 *         ndarray = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT8, self._mask).reshape((self._h, self._w, self._n), order='F')
 */
  (__pyx_v_shape[0]) = ((((npy_intp)__pyx_v_self->_h) * __pyx_v_self->_w) * __pyx_v_self->_n);

  /* "crowdposetools/_mask.pyx":97
 *         shape[0] = <np.npy_intp> self._h*self._w*self._n
 *         # Create a 1D array, and reshape it to fortran/Matlab column-major array
 *         ndarray = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT8, self._mask).reshape((self._h, self._w, self._n), order='F')             # <<<<<<<<<<<<<<
 *         # The _mask allocated by Masks is now handled by ndarray
 *         PyArray_ENABLEFLAGS(ndarray, np.NPY_OWNDATA)
 */
  __pyx_t_1 = PyArray_SimpleNewFromData(1, __pyx_v_shape, NPY_UINT8, __pyx_v_self->_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_siz(__pyx_v_self->_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_From_siz(__pyx_v_self->_w); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_From_siz(__pyx_v_self->_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_F) < 0) __PYX_ERR(0, 97, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_ndarray = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "crowdposetools/_mask.pyx":99
 *         ndarray = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT8, self._mask).reshape((self._h, self._w, self._n), order='F')
 *         # The _mask allocated by Masks is now handled by ndarray
 *         PyArray_ENABLEFLAGS(ndarray, np.NPY_OWNDATA)             # <<<<<<<<<<<<<<
 *         return ndarray
 * 
 */
  if (!(likely(((__pyx_v_ndarray) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_ndarray, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 99, __pyx_L1_error)
  PyArray_ENABLEFLAGS(((PyArrayObject *)__pyx_v_ndarray), NPY_OWNDATA);

  /* "crowdposetools/_mask.pyx":100
 *         # The _mask allocated by Masks is now handled by ndarray
 *         PyArray_ENABLEFLAGS(ndarray, np.NPY_OWNDATA)
 *         return ndarray             # <<<<<<<<<<<<<<
 * 
 * # internal conversion from Python RLEs object to compressed RLE format
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ndarray);
  __pyx_r = __pyx_v_ndarray;
  goto __pyx_L0;

  /* "crowdposetools/_mask.pyx":93
 * 
 *     # called when passing into np.array() and return an np.ndarray in column-major order
 *     def __array__(self):             # <<<<<<<<<<<<<<
 *         cdef np.npy_intp shape[1]
 *         shape[0] = <np.npy_intp> self._h*self._w*self._n
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("crowdposetools._mask.Masks.__array__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ndarray);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_14crowdposetools_5_mask_5Masks_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_14crowdposetools_5_mask_5Masks_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_14crowdposetools_5_mask_5Masks_4__reduce_cython__(((struct __pyx_obj_14crowdposetools_5_mask_Masks *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_14crowdposetools_5_mask_5Masks_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_14crowdposetools_5_mask_Masks *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("crowdposetools._mask.Masks.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_14crowdposetools_5_mask_5Masks_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_14crowdposetools_5_mask_5Masks_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_14crowdposetools_5_mask_5Masks_6__setstate_cython__(((struct __pyx_obj_14crowdposetools_5_mask_Masks *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_14crowdposetools_5_mask_5Masks_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_14crowdposetools_5_mask_Masks *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("crowdposetools._mask.Masks.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "crowdposetools/_mask.pyx":103
 * 
 * # internal conversion from Python RLEs object to compressed RLE format
 * def _toString(RLEs Rs):             # <<<<<<<<<<<<<<
 *     cdef siz n = Rs.n
 *     cdef bytes py_string
 */

/* Python wrapper */
static PyObject *__pyx_pw_14crowdposetools_5_mask_1_toString(PyObject *__pyx_self, PyObject *__pyx_v_Rs); /*proto*/
static PyMethodDef __pyx_mdef_14crowdposetools_5_mask_1_toString = {"_toString", (PyCFunction)__pyx_pw_14crowdposetools_5_mask_1_toString, METH_O, 0};
static PyObject *__pyx_pw_14crowdposetools_5_mask_1_toString(PyObject *__pyx_self, PyObject *__pyx_v_Rs) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_toString (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Rs), __pyx_ptype_14crowdposetools_5_mask_RLEs, 1, "Rs", 0))) __PYX_ERR(0, 103, __pyx_L1_error)
  __pyx_r = __pyx_pf_14crowdposetools_5_mask__toString(__pyx_self, ((struct __pyx_obj_14crowdposetools_5_mask_RLEs *)__pyx_v_Rs));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_14crowdposetools_5_mask__toString(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_Rs) {
  siz __pyx_v_n;
  PyObject *__pyx_v_py_string = 0;
  char *__pyx_v_c_string;
  PyObject *__pyx_v_objs = NULL;
  siz __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  siz __pyx_t_2;
  siz __pyx_t_3;
  siz __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  __Pyx_RefNannySetupContext("_toString", 0);

  /* "crowdposetools/_mask.pyx":104
 * # internal conversion from Python RLEs object to compressed RLE format
 * def _toString(RLEs Rs):
 *     cdef siz n = Rs.n             # <<<<<<<<<<<<<<
 *     cdef bytes py_string
 *     cdef char* c_string
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_Rs), __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_siz(__pyx_t_1); if (unlikely((__pyx_t_2 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;

  /* "crowdposetools/_mask.pyx":107
 *     cdef bytes py_string
 *     cdef char* c_string
 *     objs = []             # <<<<<<<<<<<<<<
 *     for i in range(n):
 *         c_string = rleToString( <RLE*> &Rs._R[i] )
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_objs = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "crowdposetools/_mask.pyx":108
 *     cdef char* c_string
 *     objs = []
 *     for i in range(n):             # <<<<<<<<<<<<<<
 *         c_string = rleToString( <RLE*> &Rs._R[i] )
 *         py_string = c_string
 */
  __pyx_t_2 = __pyx_v_n;
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "crowdposetools/_mask.pyx":109
 *     objs = []
 *     for i in range(n):
 *         c_string = rleToString( <RLE*> &Rs._R[i] )             # <<<<<<<<<<<<<<
 *         py_string = c_string
 *         objs.append({
 */
    __pyx_v_c_string = rleToString(((RLE *)(&(__pyx_v_Rs->_R[__pyx_v_i]))));

    /* "crowdposetools/_mask.pyx":110
 *     for i in range(n):
 *         c_string = rleToString( <RLE*> &Rs._R[i] )
 *         py_string = c_string             # <<<<<<<<<<<<<<
 *         objs.append({
 *             'size': [Rs._R[i].h, Rs._R[i].w],
 */
    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_c_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_py_string, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "crowdposetools/_mask.pyx":112
 *         py_string = c_string
 *         objs.append({
 *             'size': [Rs._R[i].h, Rs._R[i].w],             # <<<<<<<<<<<<<<
 *             'counts': py_string
 *         })
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyInt_From_siz((__pyx_v_Rs->_R[__pyx_v_i]).h); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_From_siz((__pyx_v_Rs->_R[__pyx_v_i]).w); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_5);
    PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_6);
    PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_size, __pyx_t_7) < 0) __PYX_ERR(0, 112, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "crowdposetools/_mask.pyx":113
 *         objs.append({
 *             'size': [Rs._R[i].h, Rs._R[i].w],
 *             'counts': py_string             # <<<<<<<<<<<<<<
 *         })
 *         free(c_string)
 */
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_counts, __pyx_v_py_string) < 0) __PYX_ERR(0, 112, __pyx_L1_error)

    /* "crowdposetools/_mask.pyx":111
 *         c_string = rleToString( <RLE*> &Rs._R[i] )
 *         py_string = c_string
 *         objs.append({             # <<<<<<<<<<<<<<
 *             'size': [Rs._R[i].h, Rs._R[i].w],
 *             'counts': py_string
 */
    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_objs, __pyx_t_1); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 111, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "crowdposetools/_mask.pyx":115
 *             'counts': py_string
 *         })
 *         free(c_string)             # <<<<<<<<<<<<<<
 *     return objs
 * 
 */
    free(__pyx_v_c_string);
  }

  /* "crowdposetools/_mask.pyx":116
 *         })
 *         free(c_string)
 *     return objs             # <<<<<<<<<<<<<<
 * 
 * # internal conversion from compressed RLE format to Python RLEs object
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_objs);
  __pyx_r = __pyx_v_objs;
  goto __pyx_L0;

  /* "crowdposetools/_mask.pyx":103
 * 
 * # internal conversion from Python RLEs object to compressed RLE format
 * def _toString(RLEs Rs):             # <<<<<<<<<<<<<<
 *     cdef siz n = Rs.n
 *     cdef bytes py_string
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("crowdposetools._mask._toString", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_py_string);
  __Pyx_XDECREF(__pyx_v_objs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "crowdposetools/_mask.pyx":119
 * 
 * # internal conversion from compressed RLE format to Python RLEs object
 * def _frString(rleObjs):             # <<<<<<<<<<<<<<
 *     cdef siz n = len(rleObjs)
 *     Rs = RLEs(n)
 */

/* Python wrapper */
static PyObject *__pyx_pw_14crowdposetools_5_mask_3_frString(PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /*proto*/
static PyMethodDef __pyx_mdef_14crowdposetools_5_mask_3_frString = {"_frString", (PyCFunction)__pyx_pw_14crowdposetools_5_mask_3_frString, METH_O, 0};
static PyObject *__pyx_pw_14crowdposetools_5_mask_3_frString(PyObject *__pyx_self, PyObject *__pyx_v_rleObjs) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_frString (wrapper)", 0);
  __pyx_r = __pyx_pf_14crowdposetools_5_mask_2_frString(__pyx_self, ((PyObject *)__pyx_v_rleObjs));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_14crowdposetools_5_mask_2_frString(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs) {
  siz __pyx_v_n;
  struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_Rs = NULL;
  PyObject *__pyx_v_py_string = 0;
  char *__pyx_v_c_string;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_obj = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  char *__pyx_t_12;
  Py_ssize_t __pyx_t_13;
  siz __pyx_t_14;
  siz __pyx_t_15;
  __Pyx_RefNannySetupContext("_frString", 0);

  /* "crowdposetools/_mask.pyx":120
 * # internal conversion from compressed RLE format to Python RLEs object
 * def _frString(rleObjs):
 *     cdef siz n = len(rleObjs)             # <<<<<<<<<<<<<<
 *     Rs = RLEs(n)
 *     cdef bytes py_string
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_rleObjs); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 120, __pyx_L1_error)
  __pyx_v_n = __pyx_t_1;

  /* "crowdposetools/_mask.pyx":121
 * def _frString(rleObjs):
 *     cdef siz n = len(rleObjs)
 *     Rs = RLEs(n)             # <<<<<<<<<<<<<<
 *     cdef bytes py_string
 *     cdef char* c_string
 */
  __pyx_t_2 = __Pyx_PyInt_From_siz(__pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_14crowdposetools_5_mask_RLEs), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_Rs = ((struct __pyx_obj_14crowdposetools_5_mask_RLEs *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "crowdposetools/_mask.pyx":124
 *     cdef bytes py_string
 *     cdef char* c_string
 *     for i, obj in enumerate(rleObjs):             # <<<<<<<<<<<<<<
 *         if PYTHON_VERSION == 2:
 *             py_string = str(obj['counts']).encode('utf8')
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_3 = __pyx_int_0;
  if (likely(PyList_CheckExact(__pyx_v_rleObjs)) || PyTuple_CheckExact(__pyx_v_rleObjs)) {
    __pyx_t_2 = __pyx_v_rleObjs; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_rleObjs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 124, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 124, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 124, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_obj, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
    __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3);
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "crowdposetools/_mask.pyx":125
 *     cdef char* c_string
 *     for i, obj in enumerate(rleObjs):
 *         if PYTHON_VERSION == 2:             # <<<<<<<<<<<<<<
 *             py_string = str(obj['counts']).encode('utf8')
 *         elif PYTHON_VERSION == 3:
 */
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTHON_VERSION); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 125, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_7) {

      /* "crowdposetools/_mask.pyx":126
 *     for i, obj in enumerate(rleObjs):
 *         if PYTHON_VERSION == 2:
 *             py_string = str(obj['counts']).encode('utf8')             # <<<<<<<<<<<<<<
 *         elif PYTHON_VERSION == 3:
 *             py_string = str.encode(obj['counts']) if type(obj['counts']) == str else obj['counts']
 */
      __pyx_t_6 = __Pyx_PyObject_Dict_GetItem(__pyx_v_obj, __pyx_n_s_counts); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 126, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_encode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 126, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 126, __pyx_L1_error)
      __Pyx_XDECREF_SET(__pyx_v_py_string, ((PyObject*)__pyx_t_5));
      __pyx_t_5 = 0;

      /* "crowdposetools/_mask.pyx":125
 *     cdef char* c_string
 *     for i, obj in enumerate(rleObjs):
 *         if PYTHON_VERSION == 2:             # <<<<<<<<<<<<<<
 *             py_string = str(obj['counts']).encode('utf8')
 *         elif PYTHON_VERSION == 3:
 */
      goto __pyx_L5;
    }

    /* "crowdposetools/_mask.pyx":127
 *         if PYTHON_VERSION == 2:
 *             py_string = str(obj['counts']).encode('utf8')
 *         elif PYTHON_VERSION == 3:             # <<<<<<<<<<<<<<
 *             py_string = str.encode(obj['counts']) if type(obj['counts']) == str else obj['counts']
 *         else:
 */
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYTHON_VERSION); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_3, 3, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 127, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (likely(__pyx_t_7)) {

      /* "crowdposetools/_mask.pyx":128
 *             py_string = str(obj['counts']).encode('utf8')
 *         elif PYTHON_VERSION == 3:
 *             py_string = str.encode(obj['counts']) if type(obj['counts']) == str else obj['counts']             # <<<<<<<<<<<<<<
 *         else:
 *             raise Exception('Python version must be 2 or 3')
 */
      __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_obj, __pyx_n_s_counts); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_t_5)), ((PyObject *)(&PyString_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 128, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 128, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (__pyx_t_7) {
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&PyString_Type)), __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 128, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_9 = __Pyx_PyObject_Dict_GetItem(__pyx_v_obj, __pyx_n_s_counts); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 128, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_10 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_10)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_10);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (!__pyx_t_10) {
          __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 128, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_GOTREF(__pyx_t_8);
        } else {
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_5)) {
            PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_9};
            __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 128, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
            PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_9};
            __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 128, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          } else
          #endif
          {
            __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 128, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_11);
            __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
            __Pyx_GIVEREF(__pyx_t_9);
            PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_9);
            __pyx_t_9 = 0;
            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 128, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (!(likely(PyBytes_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_8)->tp_name), 0))) __PYX_ERR(0, 128, __pyx_L1_error)
        __pyx_t_6 = __pyx_t_8;
        __pyx_t_8 = 0;
      } else {
        __pyx_t_8 = __Pyx_PyObject_Dict_GetItem(__pyx_v_obj, __pyx_n_s_counts); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 128, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (!(likely(PyBytes_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_8)->tp_name), 0))) __PYX_ERR(0, 128, __pyx_L1_error)
        __pyx_t_6 = __pyx_t_8;
        __pyx_t_8 = 0;
      }
      __Pyx_XDECREF_SET(__pyx_v_py_string, ((PyObject*)__pyx_t_6));
      __pyx_t_6 = 0;

      /* "crowdposetools/_mask.pyx":127
 *         if PYTHON_VERSION == 2:
 *             py_string = str(obj['counts']).encode('utf8')
 *         elif PYTHON_VERSION == 3:             # <<<<<<<<<<<<<<
 *             py_string = str.encode(obj['counts']) if type(obj['counts']) == str else obj['counts']
 *         else:
 */
      goto __pyx_L5;
    }

    /* "crowdposetools/_mask.pyx":130
 *             py_string = str.encode(obj['counts']) if type(obj['counts']) == str else obj['counts']
 *         else:
 *             raise Exception('Python version must be 2 or 3')             # <<<<<<<<<<<<<<
 *         c_string = py_string
 *         rleFrString( <RLE*> &Rs._R[i], <char*> c_string, obj['size'][0], obj['size'][1] )
 */
    /*else*/ {
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(0, 130, __pyx_L1_error)
    }
    __pyx_L5:;

    /* "crowdposetools/_mask.pyx":131
 *         else:
 *             raise Exception('Python version must be 2 or 3')
 *         c_string = py_string             # <<<<<<<<<<<<<<
 *         rleFrString( <RLE*> &Rs._R[i], <char*> c_string, obj['size'][0], obj['size'][1] )
 *     return Rs
 */
    if (unlikely(__pyx_v_py_string == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
      __PYX_ERR(0, 131, __pyx_L1_error)
    }
    __pyx_t_12 = __Pyx_PyBytes_AsWritableString(__pyx_v_py_string); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 131, __pyx_L1_error)
    __pyx_v_c_string = __pyx_t_12;

    /* "crowdposetools/_mask.pyx":132
 *             raise Exception('Python version must be 2 or 3')
 *         c_string = py_string
 *         rleFrString( <RLE*> &Rs._R[i], <char*> c_string, obj['size'][0], obj['size'][1] )             # <<<<<<<<<<<<<<
 *     return Rs
 * 
 */
    __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_Dict_GetItem(__pyx_v_obj, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_14 = __Pyx_PyInt_As_siz(__pyx_t_8); if (unlikely((__pyx_t_14 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_Dict_GetItem(__pyx_v_obj, __pyx_n_s_size); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_8, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_15 = __Pyx_PyInt_As_siz(__pyx_t_6); if (unlikely((__pyx_t_15 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    rleFrString(((RLE *)(&(__pyx_v_Rs->_R[__pyx_t_13]))), ((char *)__pyx_v_c_string), __pyx_t_14, __pyx_t_15);

    /* "crowdposetools/_mask.pyx":124
 *     cdef bytes py_string
 *     cdef char* c_string
 *     for i, obj in enumerate(rleObjs):             # <<<<<<<<<<<<<<
 *         if PYTHON_VERSION == 2:
 *             py_string = str(obj['counts']).encode('utf8')
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "crowdposetools/_mask.pyx":133
 *         c_string = py_string
 *         rleFrString( <RLE*> &Rs._R[i], <char*> c_string, obj['size'][0], obj['size'][1] )
 *     return Rs             # <<<<<<<<<<<<<<
 * 
 * # encode mask to RLEs objects
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_Rs));
  __pyx_r = ((PyObject *)__pyx_v_Rs);
  goto __pyx_L0;

  /* "crowdposetools/_mask.pyx":119
 * 
 * # internal conversion from compressed RLE format to Python RLEs object
 * def _frString(rleObjs):             # <<<<<<<<<<<<<<
 *     cdef siz n = len(rleObjs)
 *     Rs = RLEs(n)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("crowdposetools._mask._frString", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_Rs);
  __Pyx_XDECREF(__pyx_v_py_string);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "crowdposetools/_mask.pyx":137
 * # encode mask to RLEs objects
 * # list of RLE string can be generated by RLEs member function
 * def encode(np.ndarray[np.uint8_t, ndim=3, mode='fortran'] mask):             # <<<<<<<<<<<<<<
 *     h, w, n = mask.shape[0], mask.shape[1], mask.shape[2]
 *     cdef RLEs Rs = RLEs(n)
 */

/* Python wrapper */
static PyObject *__pyx_pw_14crowdposetools_5_mask_5encode(PyObject *__pyx_self, PyObject *__pyx_v_mask); /*proto*/
static PyMethodDef __pyx_mdef_14crowdposetools_5_mask_5encode = {"encode", (PyCFunction)__pyx_pw_14crowdposetools_5_mask_5encode, METH_O, 0};
static PyObject *__pyx_pw_14crowdposetools_5_mask_5encode(PyObject *__pyx_self, PyObject *__pyx_v_mask) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("encode (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) __PYX_ERR(0, 137, __pyx_L1_error)
  __pyx_r = __pyx_pf_14crowdposetools_5_mask_4encode(__pyx_self, ((PyArrayObject *)__pyx_v_mask));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_14crowdposetools_5_mask_4encode(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mask) {
  npy_intp __pyx_v_h;
  npy_intp __pyx_v_w;
  npy_intp __pyx_v_n;
  struct __pyx_obj_14crowdposetools_5_mask_RLEs *__pyx_v_Rs = 0;
  PyObject *__pyx_v_objs = NULL;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_mask;
  __Pyx_Buffer __pyx_pybuffer_mask;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  npy_intp __pyx_t_1;
  npy_intp __pyx_t_2;
  npy_intp __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("encode", 0);
  __pyx_pybuffer_mask.pybuffer.buf = NULL;
  __pyx_pybuffer_mask.refcount = 0;
  __pyx_pybuffernd_mask.data = NULL;
  __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_F_CONTIGUOUS, 3, 0, __pyx_stack) == -1)) __PYX_ERR(0, 137, __pyx_L1_error)
  }
  __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_mask.diminfo[1].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_mask.diminfo[1].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_mask.diminfo[2].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_mask.diminfo[2].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[2];

  /* "crowdposetools/_mask.pyx":138
 * # list of RLE string can be generated by RLEs member function
 * def encode(np.ndarray[np.uint8_t, ndim=3, mode='fortran'] mask):
 *     h, w, n = mask.shape[0], mask.shape[1], mask.shape[2]             # <<<<<<<<<<<<<<
 *     cdef RLEs Rs = RLEs(n)
 *     rleEncode(Rs._R,<byte*>mask.data,h,w,n)
 */
  __pyx_t_1 = (__pyx_v_mask->dimensions[0]);
  __pyx_t_2 = (__pyx_v_mask->dimensions[1]);
  __pyx_t_3 = (__pyx_v_mask->dimensions[2]);
  __pyx_v_h = __pyx_t_1;
  __pyx_v_w = __pyx_t_2;
  __pyx_v_n = __pyx_t_3;

  /* "crowdposetools/_mask.pyx":139
 * def encode(np.ndarray[np.uint8_t, ndim=3, mode='fortran'] mask):
 *     h, w, n = mask.shape[0], mask.shape[1], mask.shape[2]
 *     cdef RLEs Rs = RLEs(n)             # <<<<<<<<<<<<<<
 *     rleEncode(Rs._R,<byte*>mask.data,h
Download .txt
gitextract_94jvm1ku/

├── CrowdPose/
│   ├── README.md
│   └── crowdpose-api/
│       ├── PythonAPI/
│       │   ├── build/
│       │   │   ├── common/
│       │   │   │   └── maskApi.o
│       │   │   ├── lib.linux-x86_64-3.7/
│       │   │   │   └── crowdposetools/
│       │   │   │       ├── __init__.py
│       │   │   │       ├── coco.py
│       │   │   │       ├── cocoeval.py
│       │   │   │       └── mask.py
│       │   │   └── temp.linux-x86_64-3.7/
│       │   │       └── crowdposetools/
│       │   │           └── _mask.o
│       │   ├── crowdposetools/
│       │   │   ├── __init__.py
│       │   │   ├── _mask.c
│       │   │   ├── _mask.pyx
│       │   │   ├── coco.py
│       │   │   ├── cocoeval.py
│       │   │   └── mask.py
│       │   ├── install
│       │   ├── install.sh
│       │   └── setup.py
│       ├── README.md
│       ├── annotations/
│       │   ├── crowdpose_val.json
│       │   └── preds.json
│       ├── common/
│       │   ├── gason.cpp
│       │   ├── gason.h
│       │   ├── maskApi.c
│       │   └── maskApi.h
│       └── demo.py
├── LICENSE
├── NOTICE
├── README.md
├── cocoapi/
│   ├── .travis.yml
│   ├── LuaAPI/
│   │   ├── CocoApi.lua
│   │   ├── MaskApi.lua
│   │   ├── cocoDemo.lua
│   │   ├── env.lua
│   │   ├── init.lua
│   │   └── rocks/
│   │       └── coco-scm-1.rockspec
│   ├── MatlabAPI/
│   │   ├── CocoApi.m
│   │   ├── CocoEval.m
│   │   ├── CocoUtils.m
│   │   ├── MaskApi.m
│   │   ├── cocoDemo.m
│   │   ├── evalDemo.m
│   │   ├── gason.m
│   │   └── private/
│   │       ├── gasonMex.cpp
│   │       ├── gasonMex.mexa64
│   │       ├── gasonMex.mexmaci64
│   │       ├── getPrmDflt.m
│   │       └── maskApiMex.c
│   ├── PythonAPI/
│   │   ├── Makefile
│   │   ├── build/
│   │   │   ├── common/
│   │   │   │   └── maskApi.o
│   │   │   ├── lib.linux-x86_64-3.7/
│   │   │   │   └── pycocotools/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── coco.py
│   │   │   │       ├── cocoeval.py
│   │   │   │       └── mask.py
│   │   │   └── temp.linux-x86_64-3.7/
│   │   │       └── pycocotools/
│   │   │           └── _mask.o
│   │   ├── dist/
│   │   │   ├── pycocotools-2.0-py3.6-linux-x86_64.egg
│   │   │   ├── pycocotools-2.0-py3.7-linux-x86_64.egg
│   │   │   └── pycocotools-2.0-py3.9-linux-x86_64.egg
│   │   ├── pycocoDemo.ipynb
│   │   ├── pycocoEvalDemo.ipynb
│   │   ├── pycocotools/
│   │   │   ├── __init__.py
│   │   │   ├── _mask.c
│   │   │   ├── _mask.pyx
│   │   │   ├── coco.py
│   │   │   ├── cocoeval.py
│   │   │   └── mask.py
│   │   ├── pycocotools.egg-info/
│   │   │   ├── PKG-INFO
│   │   │   ├── SOURCES.txt
│   │   │   ├── dependency_links.txt
│   │   │   ├── requires.txt
│   │   │   └── top_level.txt
│   │   └── setup.py
│   ├── README.txt
│   ├── common/
│   │   ├── gason.cpp
│   │   ├── gason.h
│   │   ├── maskApi.c
│   │   └── maskApi.h
│   ├── license.txt
│   └── results/
│       ├── captions_val2014_fakecap_results.json
│       ├── instances_val2014_fakebbox100_results.json
│       ├── instances_val2014_fakesegm100_results.json
│       ├── person_keypoints_val2014_fakekeypoints100_results.json
│       └── val2014_fake_eval_res.txt
├── models/
│   └── .gitignore
├── prepare_data.sh
├── prepare_env.sh
├── prepare_env2.sh
├── readme/
│   ├── DATA.md
│   └── DEVELOP.md
├── requirements.txt
└── src/
    ├── demo.py
    ├── flops_counter.py
    ├── init_paths.py
    ├── lib/
    │   ├── datasets/
    │   │   ├── dataset/
    │   │   │   ├── coco.py
    │   │   │   ├── coco_hp_wodet.py
    │   │   │   ├── crowdpose.py
    │   │   │   ├── kitti.py
    │   │   │   └── pascal.py
    │   │   ├── dataset_factory.py
    │   │   └── sample/
    │   │       ├── ctdet.py
    │   │       ├── ddd.py
    │   │       ├── exdet.py
    │   │       ├── multi_pose_crowdpose.py
    │   │       └── multi_pose_wodet.py
    │   ├── detectors/
    │   │   ├── base_detector.py
    │   │   ├── ctdet.py
    │   │   ├── ddd.py
    │   │   ├── detector_factory.py
    │   │   ├── exdet.py
    │   │   ├── multi_pose.py
    │   │   ├── multi_pose_crowdpose.py
    │   │   └── multi_pose_wodet.py
    │   ├── external/
    │   │   ├── .gitignore
    │   │   ├── Makefile
    │   │   ├── __init__.py
    │   │   ├── nms.pyx
    │   │   └── setup.py
    │   ├── logger.py
    │   ├── models/
    │   │   ├── GCN_utils/
    │   │   │   ├── __init__.py
    │   │   │   ├── gcn2.py
    │   │   │   ├── graph.py
    │   │   │   └── tools.py
    │   │   ├── __init__.py
    │   │   ├── data_parallel.py
    │   │   ├── decode.py
    │   │   ├── flops_counter.py
    │   │   ├── losses.py
    │   │   ├── model.py
    │   │   ├── networks/
    │   │   │   ├── DCNv2/
    │   │   │   │   ├── DCNv2.egg-info/
    │   │   │   │   │   ├── PKG-INFO
    │   │   │   │   │   ├── SOURCES.txt
    │   │   │   │   │   ├── dependency_links.txt
    │   │   │   │   │   └── top_level.txt
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── README.md
    │   │   │   │   ├── __init__.py
    │   │   │   │   ├── build/
    │   │   │   │   │   ├── temp.linux-x86_64-3.6/
    │   │   │   │   │   │   └── home/
    │   │   │   │   │   │       └── dell/
    │   │   │   │   │   │           └── xyb/
    │   │   │   │   │   │               └── individual_xyb/
    │   │   │   │   │   │                   └── xyb_AAAI_code/
    │   │   │   │   │   │                       └── CNet_v2/
    │   │   │   │   │   │                           └── src/
    │   │   │   │   │   │                               └── lib/
    │   │   │   │   │   │                                   └── models/
    │   │   │   │   │   │                                       └── networks/
    │   │   │   │   │   │                                           └── DCNv2/
    │   │   │   │   │   │                                               └── src/
    │   │   │   │   │   │                                                   ├── cpu/
    │   │   │   │   │   │                                                   │   ├── dcn_v2_cpu.o
    │   │   │   │   │   │                                                   │   ├── dcn_v2_im2col_cpu.o
    │   │   │   │   │   │                                                   │   └── dcn_v2_psroi_pooling_cpu.o
    │   │   │   │   │   │                                                   ├── cuda/
    │   │   │   │   │   │                                                   │   ├── dcn_v2_cuda.o
    │   │   │   │   │   │                                                   │   ├── dcn_v2_im2col_cuda.o
    │   │   │   │   │   │                                                   │   └── dcn_v2_psroi_pooling_cuda.o
    │   │   │   │   │   │                                                   └── vision.o
    │   │   │   │   │   └── temp.linux-x86_64-3.7/
    │   │   │   │   │       └── home/
    │   │   │   │   │           └── users/
    │   │   │   │   │               └── yabo.xiao/
    │   │   │   │   │                   └── CenterNet/
    │   │   │   │   │                       └── src/
    │   │   │   │   │                           └── lib/
    │   │   │   │   │                               └── models/
    │   │   │   │   │                                   └── networks/
    │   │   │   │   │                                       └── DCNv2/
    │   │   │   │   │                                           └── src/
    │   │   │   │   │                                               ├── cpu/
    │   │   │   │   │                                               │   ├── dcn_v2_cpu.o
    │   │   │   │   │                                               │   ├── dcn_v2_im2col_cpu.o
    │   │   │   │   │                                               │   └── dcn_v2_psroi_pooling_cpu.o
    │   │   │   │   │                                               ├── cuda/
    │   │   │   │   │                                               │   ├── dcn_v2_cuda.o
    │   │   │   │   │                                               │   ├── dcn_v2_im2col_cuda.o
    │   │   │   │   │                                               │   └── dcn_v2_psroi_pooling_cuda.o
    │   │   │   │   │                                               └── vision.o
    │   │   │   │   ├── dcn_v2.py
    │   │   │   │   ├── make.sh
    │   │   │   │   ├── setup.py
    │   │   │   │   ├── src/
    │   │   │   │   │   ├── cpu/
    │   │   │   │   │   │   ├── dcn_v2_cpu.cpp
    │   │   │   │   │   │   ├── dcn_v2_im2col_cpu.cpp
    │   │   │   │   │   │   ├── dcn_v2_im2col_cpu.h
    │   │   │   │   │   │   ├── dcn_v2_psroi_pooling_cpu.cpp
    │   │   │   │   │   │   └── vision.h
    │   │   │   │   │   ├── cuda/
    │   │   │   │   │   │   ├── dcn_v2_cuda.cu
    │   │   │   │   │   │   ├── dcn_v2_im2col_cuda.cu
    │   │   │   │   │   │   ├── dcn_v2_im2col_cuda.h
    │   │   │   │   │   │   ├── dcn_v2_psroi_pooling_cuda.cu
    │   │   │   │   │   │   └── vision.h
    │   │   │   │   │   ├── dcn_v2.h
    │   │   │   │   │   └── vision.cpp
    │   │   │   │   ├── testcpu.py
    │   │   │   │   └── testcuda.py
    │   │   │   ├── dlav0.py
    │   │   │   ├── hrnet.py
    │   │   │   ├── hrnet_config/
    │   │   │   │   ├── hrnet32.yaml
    │   │   │   │   └── hrnet48.yaml
    │   │   │   ├── large_hourglass.py
    │   │   │   ├── msra_resnet.py
    │   │   │   ├── pose_dla_dcn.py
    │   │   │   ├── pose_dla_dcn_v2.py
    │   │   │   └── resnet_dcn.py
    │   │   ├── oks_loss.py
    │   │   ├── predictor.py
    │   │   ├── py_utils/
    │   │   │   ├── __init__.py
    │   │   │   ├── _cpools/
    │   │   │   │   ├── .gitignore
    │   │   │   │   ├── __init__.py
    │   │   │   │   ├── setup.py
    │   │   │   │   └── src/
    │   │   │   │       ├── bottom_pool.cpp
    │   │   │   │       ├── left_pool.cpp
    │   │   │   │       ├── right_pool.cpp
    │   │   │   │       └── top_pool.cpp
    │   │   │   ├── data_parallel.py
    │   │   │   ├── kp.py
    │   │   │   ├── kp_utils.py
    │   │   │   ├── scatter_gather.py
    │   │   │   └── utils.py
    │   │   ├── resample2d_package/
    │   │   │   ├── __init__.py
    │   │   │   ├── build/
    │   │   │   │   ├── temp.linux-x86_64-3.6/
    │   │   │   │   │   ├── resample2d_cuda.o
    │   │   │   │   │   └── resample2d_kernel.o
    │   │   │   │   └── temp.linux-x86_64-3.7/
    │   │   │   │       ├── resample2d_cuda.o
    │   │   │   │       └── resample2d_kernel.o
    │   │   │   ├── dist/
    │   │   │   │   ├── resample2d_cuda-0.0.0-py3.6-linux-x86_64.egg
    │   │   │   │   └── resample2d_cuda-0.0.0-py3.7-linux-x86_64.egg
    │   │   │   ├── resample2d.py
    │   │   │   ├── resample2d_cuda.cc
    │   │   │   ├── resample2d_cuda.egg-info/
    │   │   │   │   ├── PKG-INFO
    │   │   │   │   ├── SOURCES.txt
    │   │   │   │   ├── dependency_links.txt
    │   │   │   │   └── top_level.txt
    │   │   │   ├── resample2d_kernel.cu
    │   │   │   ├── resample2d_kernel.cuh
    │   │   │   └── setup.py
    │   │   ├── scatter_gather.py
    │   │   └── utils.py
    │   ├── opts.py
    │   ├── trains/
    │   │   ├── base_trainer.py
    │   │   ├── ctdet.py
    │   │   ├── ddd.py
    │   │   ├── exdet.py
    │   │   ├── multi_pose.py
    │   │   ├── multi_pose_crowdpose.py
    │   │   ├── multi_pose_wodet.py
    │   │   └── train_factory.py
    │   └── utils/
    │       ├── __init__.py
    │       ├── ddd_utils.py
    │       ├── debugger.py
    │       ├── image.py
    │       ├── oracle_utils.py
    │       ├── post_process.py
    │       └── utils.py
    ├── main.py
    ├── main_dla34_coco512.sh
    ├── main_dla34_coco640.sh
    ├── main_hrnet32_coco512.sh
    ├── main_hrnet32_crowdpose512.sh
    ├── main_hrnet48_coco640.sh
    ├── main_hrnet48_coco800.sh
    ├── main_hrnet48_crowdpose640.sh
    ├── test.py
    └── tools/
        ├── _init_paths.py
        ├── calc_coco_overlap.py
        ├── convert_hourglass_weight.py
        ├── convert_kitti_to_coco.py
        ├── eval_coco.py
        ├── eval_coco_hp.py
        ├── get_kitti.sh
        ├── get_pascal_voc.sh
        ├── kitti_eval/
        │   ├── README.md
        │   ├── evaluate_object_3d.cpp
        │   ├── evaluate_object_3d_offline
        │   ├── evaluate_object_3d_offline.cpp
        │   └── mail.h
        ├── merge_pascal_json.py
        ├── reval.py
        ├── vis_pred.py
        └── voc_eval_lib/
            ├── LICENSE
            ├── Makefile
            ├── __init__.py
            ├── datasets/
            │   ├── __init__.py
            │   ├── bbox.pyx
            │   ├── ds_utils.py
            │   ├── imdb.py
            │   ├── pascal_voc.py
            │   └── voc_eval.py
            ├── model/
            │   ├── __init__.py
            │   ├── bbox_transform.py
            │   ├── config.py
            │   ├── nms_wrapper.py
            │   └── test.py
            ├── nms/
            │   ├── .gitignore
            │   ├── __init__.py
            │   ├── cpu_nms.c
            │   ├── cpu_nms.pyx
            │   ├── gpu_nms.cpp
            │   ├── gpu_nms.hpp
            │   ├── gpu_nms.pyx
            │   ├── nms_kernel.cu
            │   └── py_cpu_nms.py
            ├── setup.py
            └── utils/
                ├── .gitignore
                ├── __init__.py
                ├── bbox.pyx
                ├── blob.py
                ├── timer.py
                └── visualization.py
Download .txt
SYMBOL INDEX (2165 symbols across 124 files)

FILE: CrowdPose/crowdpose-api/PythonAPI/build/lib.linux-x86_64-3.7/crowdposetools/coco.py
  function _isArrayLike (line 66) | def _isArrayLike(obj):
  class COCO (line 70) | class COCO:
    method __init__ (line 71) | def __init__(self, annotation_file=None):
    method createIndex (line 92) | def createIndex(self):
    method info (line 125) | def info(self):
    method getAnnIds (line 133) | def getAnnIds(self, imgIds=[], catIds=[], areaRng=[], iscrowd=None):
    method getCatIds (line 164) | def getCatIds(self, catNms=[], supNms=[], catIds=[]):
    method getImgIds (line 189) | def getImgIds(self, imgIds=[], catIds=[]):
    method loadAnns (line 210) | def loadAnns(self, ids=[]):
    method loadCats (line 221) | def loadCats(self, ids=[]):
    method loadImgs (line 232) | def loadImgs(self, ids=[]):
    method loadRes (line 243) | def loadRes(self, resFile):
    method download (line 310) | def download(self, tarDir=None, imgIds=[]):
    method loadNumpyAnnotations (line 334) | def loadNumpyAnnotations(self, data):
    method annToRLE (line 357) | def annToRLE(self, ann):
    method annToMask (line 378) | def annToMask(self, ann):

FILE: CrowdPose/crowdpose-api/PythonAPI/build/lib.linux-x86_64-3.7/crowdposetools/cocoeval.py
  class NullWriter (line 12) | class NullWriter(object):
    method write (line 14) | def write(self, arg):
    method flush (line 17) | def flush(self):
  class COCOeval (line 21) | class COCOeval:
    method __init__ (line 71) | def __init__(self, cocoGt=None, cocoDt=None, iouType='segm'):
    method _prepare (line 97) | def _prepare(self):
    method evaluate (line 137) | def evaluate(self):
    method computeIoU (line 180) | def computeIoU(self, imgId, catId):
    method computeOks (line 209) | def computeOks(self, imgId, catId):
    method evaluateImg (line 266) | def evaluateImg(self, imgId, catId, aRng, maxDet):
    method accumulate (line 350) | def accumulate(self, p=None):
    method summarize (line 464) | def summarize(self):
    method __str__ (line 558) | def __str__(self):
    method get_type_result (line 561) | def get_type_result(self,  first=0.01, second=0.85):
    method split (line 580) | def split(serlf, gt_file, first=0.01, second=0.85):
  class Params (line 597) | class Params:
    method setDetParams (line 602) | def setDetParams(self):
    method setKpParams (line 616) | def setKpParams(self):
    method __init__ (line 630) | def __init__(self, iouType='segm'):

FILE: CrowdPose/crowdpose-api/PythonAPI/build/lib.linux-x86_64-3.7/crowdposetools/mask.py
  function encode (line 80) | def encode(bimask):
  function decode (line 87) | def decode(rleObjs):
  function area (line 93) | def area(rleObjs):
  function toBbox (line 99) | def toBbox(rleObjs):

FILE: CrowdPose/crowdpose-api/PythonAPI/crowdposetools/_mask.c
  type PyObject (line 343) | typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *co...
  type PyObject (line 344) | typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, ...
  type Py_tss_t (line 380) | typedef int Py_tss_t;
  function CYTHON_INLINE (line 381) | static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
  function CYTHON_INLINE (line 385) | static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
  function CYTHON_INLINE (line 390) | static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
  function CYTHON_INLINE (line 393) | static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
  function CYTHON_INLINE (line 396) | static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
  function CYTHON_INLINE (line 400) | static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
  function CYTHON_INLINE (line 403) | static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
  type Py_hash_t (line 527) | typedef long Py_hash_t;
  type __Pyx_PyAsyncMethodsStruct (line 550) | typedef struct {
  function CYTHON_INLINE (line 564) | static CYTHON_INLINE float __PYX_NAN() {
  type __Pyx_StringTabEntry (line 607) | typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const c...
  function CYTHON_INLINE (line 673) | static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
  function __Pyx_init_sys_getdefaultencoding_params (line 704) | static int __Pyx_init_sys_getdefaultencoding_params(void) {
  function __Pyx_init_sys_getdefaultencoding_params (line 754) | static int __Pyx_init_sys_getdefaultencoding_params(void) {
  function CYTHON_INLINE (line 786) | static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void...
  type __Pyx_StructField_ (line 831) | struct __Pyx_StructField_
  type __Pyx_TypeInfo (line 833) | typedef struct {
  type __Pyx_StructField (line 843) | typedef struct __Pyx_StructField_ {
  type __Pyx_BufFmt_StackElem (line 848) | typedef struct {
  type __Pyx_BufFmt_Context (line 852) | typedef struct {
  type npy_int8 (line 873) | typedef npy_int8 __pyx_t_5numpy_int8_t;
  type npy_int16 (line 882) | typedef npy_int16 __pyx_t_5numpy_int16_t;
  type npy_int32 (line 891) | typedef npy_int32 __pyx_t_5numpy_int32_t;
  type npy_int64 (line 900) | typedef npy_int64 __pyx_t_5numpy_int64_t;
  type npy_uint8 (line 909) | typedef npy_uint8 __pyx_t_5numpy_uint8_t;
  type npy_uint16 (line 918) | typedef npy_uint16 __pyx_t_5numpy_uint16_t;
  type npy_uint32 (line 927) | typedef npy_uint32 __pyx_t_5numpy_uint32_t;
  type npy_uint64 (line 936) | typedef npy_uint64 __pyx_t_5numpy_uint64_t;
  type npy_float32 (line 945) | typedef npy_float32 __pyx_t_5numpy_float32_t;
  type npy_float64 (line 954) | typedef npy_float64 __pyx_t_5numpy_float64_t;
  type npy_long (line 963) | typedef npy_long __pyx_t_5numpy_int_t;
  type npy_longlong (line 972) | typedef npy_longlong __pyx_t_5numpy_long_t;
  type npy_longlong (line 981) | typedef npy_longlong __pyx_t_5numpy_longlong_t;
  type npy_ulong (line 990) | typedef npy_ulong __pyx_t_5numpy_uint_t;
  type npy_ulonglong (line 999) | typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
  type npy_ulonglong (line 1008) | typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
  type npy_intp (line 1017) | typedef npy_intp __pyx_t_5numpy_intp_t;
  type npy_uintp (line 1026) | typedef npy_uintp __pyx_t_5numpy_uintp_t;
  type npy_double (line 1035) | typedef npy_double __pyx_t_5numpy_float_t;
  type npy_double (line 1044) | typedef npy_double __pyx_t_5numpy_double_t;
  type npy_longdouble (line 1053) | typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
  type std (line 1057) | typedef ::std::complex< float > __pyx_t_float_complex;
  type __pyx_t_float_complex (line 1059) | typedef float _Complex __pyx_t_float_complex;
  type __pyx_t_float_complex (line 1062) | typedef struct { float real, imag; } __pyx_t_float_complex;
  type std (line 1069) | typedef ::std::complex< double > __pyx_t_double_complex;
  type __pyx_t_double_complex (line 1071) | typedef double _Complex __pyx_t_double_complex;
  type __pyx_t_double_complex (line 1074) | typedef struct { double real, imag; } __pyx_t_double_complex;
  type __pyx_obj_14crowdposetools_5_mask_RLEs (line 1080) | struct __pyx_obj_14crowdposetools_5_mask_RLEs
  type __pyx_obj_14crowdposetools_5_mask_Masks (line 1081) | struct __pyx_obj_14crowdposetools_5_mask_Masks
  type npy_cfloat (line 1090) | typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
  type npy_cdouble (line 1099) | typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
  type npy_clongdouble (line 1108) | typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
  type npy_cdouble (line 1117) | typedef npy_cdouble __pyx_t_5numpy_complex_t;
  type __pyx_obj_14crowdposetools_5_mask_RLEs (line 1126) | struct __pyx_obj_14crowdposetools_5_mask_RLEs {
  type __pyx_obj_14crowdposetools_5_mask_Masks (line 1140) | struct __pyx_obj_14crowdposetools_5_mask_Masks {
  type __Pyx_RefNannyAPIStruct (line 1155) | typedef struct {
  function CYTHON_INLINE (line 1334) | static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
  function CYTHON_INLINE (line 1424) | static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject*...
  type __pyx_CyFunctionObject (line 1455) | typedef struct {
  function CYTHON_INLINE (line 1506) | static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyO...
  type __Pyx_CodeObjectCacheEntry (line 1575) | typedef struct {
  type __Pyx_CodeObjectCache (line 1579) | struct __Pyx_CodeObjectCache {
  type __Pyx_CodeObjectCache (line 1584) | struct __Pyx_CodeObjectCache
  type __Pyx_Buf_DimInfo (line 1594) | typedef struct {
  type __Pyx_Buffer (line 1597) | typedef struct {
  type __Pyx_LocalBuf_ND (line 1601) | typedef struct {
  type NPY_TYPES (line 1727) | enum NPY_TYPES
  type __pyx_obj_14crowdposetools_5_mask_RLEs (line 2054) | struct __pyx_obj_14crowdposetools_5_mask_RLEs
  type __pyx_obj_14crowdposetools_5_mask_RLEs (line 2055) | struct __pyx_obj_14crowdposetools_5_mask_RLEs
  type __pyx_obj_14crowdposetools_5_mask_RLEs (line 2056) | struct __pyx_obj_14crowdposetools_5_mask_RLEs
  type __pyx_obj_14crowdposetools_5_mask_Masks (line 2059) | struct __pyx_obj_14crowdposetools_5_mask_Masks
  type __pyx_obj_14crowdposetools_5_mask_Masks (line 2060) | struct __pyx_obj_14crowdposetools_5_mask_Masks
  type __pyx_obj_14crowdposetools_5_mask_RLEs (line 2063) | struct __pyx_obj_14crowdposetools_5_mask_RLEs
  type __pyx_obj_14crowdposetools_5_mask_RLEs (line 2070) | struct __pyx_obj_14crowdposetools_5_mask_RLEs
  type __pyx_obj_14crowdposetools_5_mask_RLEs (line 2070) | struct __pyx_obj_14crowdposetools_5_mask_RLEs
  function __pyx_pw_14crowdposetools_5_mask_4RLEs_1__cinit__ (line 2155) | static int __pyx_pw_14crowdposetools_5_mask_4RLEs_1__cinit__(PyObject *_...
  function __pyx_pf_14crowdposetools_5_mask_4RLEs___cinit__ (line 2212) | static int __pyx_pf_14crowdposetools_5_mask_4RLEs___cinit__(struct __pyx...
  function __pyx_pw_14crowdposetools_5_mask_4RLEs_3__dealloc__ (line 2259) | static void __pyx_pw_14crowdposetools_5_mask_4RLEs_3__dealloc__(PyObject...
  function __pyx_pf_14crowdposetools_5_mask_4RLEs_2__dealloc__ (line 2268) | static void __pyx_pf_14crowdposetools_5_mask_4RLEs_2__dealloc__(struct _...
  function PyObject (line 2349) | static PyObject *__pyx_pw_14crowdposetools_5_mask_4RLEs_5__getattr__(PyO...
  function PyObject (line 2360) | static PyObject *__pyx_pf_14crowdposetools_5_mask_4RLEs_4__getattr__(str...
  function PyObject (line 2440) | static PyObject *__pyx_pw_14crowdposetools_5_mask_4RLEs_7__reduce_cython...
  function PyObject (line 2451) | static PyObject *__pyx_pf_14crowdposetools_5_mask_4RLEs_6__reduce_cython...
  function PyObject (line 2494) | static PyObject *__pyx_pw_14crowdposetools_5_mask_4RLEs_9__setstate_cyth...
  function PyObject (line 2505) | static PyObject *__pyx_pf_14crowdposetools_5_mask_4RLEs_8__setstate_cyth...
  function __pyx_pw_14crowdposetools_5_mask_5Masks_1__cinit__ (line 2549) | static int __pyx_pw_14crowdposetools_5_mask_5Masks_1__cinit__(PyObject *...
  function __pyx_pf_14crowdposetools_5_mask_5Masks___cinit__ (line 2619) | static int __pyx_pf_14crowdposetools_5_mask_5Masks___cinit__(struct __py...
  function PyObject (line 2713) | static PyObject *__pyx_pw_14crowdposetools_5_mask_5Masks_3__array__(PyOb...
  function PyObject (line 2724) | static PyObject *__pyx_pf_14crowdposetools_5_mask_5Masks_2__array__(stru...
  function PyObject (line 2844) | static PyObject *__pyx_pw_14crowdposetools_5_mask_5Masks_5__reduce_cytho...
  function PyObject (line 2855) | static PyObject *__pyx_pf_14crowdposetools_5_mask_5Masks_4__reduce_cytho...
  function PyObject (line 2898) | static PyObject *__pyx_pw_14crowdposetools_5_mask_5Masks_7__setstate_cyt...
  function PyObject (line 2909) | static PyObject *__pyx_pf_14crowdposetools_5_mask_5Masks_6__setstate_cyt...
  function PyObject (line 2954) | static PyObject *__pyx_pw_14crowdposetools_5_mask_1_toString(PyObject *_...
  function PyObject (line 2970) | static PyObject *__pyx_pf_14crowdposetools_5_mask__toString(CYTHON_UNUSE...
  function PyObject (line 3146) | static PyObject *__pyx_pw_14crowdposetools_5_mask_3_frString(PyObject *_...
  function PyObject (line 3157) | static PyObject *__pyx_pf_14crowdposetools_5_mask_2_frString(CYTHON_UNUS...
  function PyObject (line 3535) | static PyObject *__pyx_pw_14crowdposetools_5_mask_5encode(PyObject *__py...
  function PyObject (line 3551) | static PyObject *__pyx_pf_14crowdposetools_5_mask_4encode(CYTHON_UNUSED ...
  function PyObject (line 3728) | static PyObject *__pyx_pw_14crowdposetools_5_mask_7decode(PyObject *__py...
  function PyObject (line 3739) | static PyObject *__pyx_pf_14crowdposetools_5_mask_6decode(CYTHON_UNUSED ...
  function PyObject (line 3960) | static PyObject *__pyx_pw_14crowdposetools_5_mask_9merge(PyObject *__pyx...
  function PyObject (line 4023) | static PyObject *__pyx_pf_14crowdposetools_5_mask_8merge(CYTHON_UNUSED P...
  function PyObject (line 4220) | static PyObject *__pyx_pw_14crowdposetools_5_mask_11area(PyObject *__pyx...
  function PyObject (line 4231) | static PyObject *__pyx_pf_14crowdposetools_5_mask_10area(CYTHON_UNUSED P...
  function PyObject (line 4439) | static PyObject *__pyx_pw_14crowdposetools_5_mask_13iou(PyObject *__pyx_...
  function PyObject (line 4520) | static PyObject *__pyx_pw_14crowdposetools_5_mask_3iou_1_preproc(PyObjec...
  function PyObject (line 4531) | static PyObject *__pyx_pf_14crowdposetools_5_mask_3iou__preproc(CYTHON_U...
  function PyObject (line 5490) | static PyObject *__pyx_pw_14crowdposetools_5_mask_3iou_3_rleIou(PyObject...
  function PyObject (line 5601) | static PyObject *__pyx_pf_14crowdposetools_5_mask_3iou_2_rleIou(CYTHON_U...
  function PyObject (line 5679) | static PyObject *__pyx_pw_14crowdposetools_5_mask_3iou_5_bbIou(PyObject ...
  function PyObject (line 5790) | static PyObject *__pyx_pf_14crowdposetools_5_mask_3iou_4_bbIou(CYTHON_UN...
  function PyObject (line 5894) | static PyObject *__pyx_pw_14crowdposetools_5_mask_3iou_7_len(PyObject *_...
  function PyObject (line 5905) | static PyObject *__pyx_pf_14crowdposetools_5_mask_3iou_6_len(CYTHON_UNUS...
  function PyObject (line 6053) | static PyObject *__pyx_pf_14crowdposetools_5_mask_12iou(CYTHON_UNUSED Py...
  function PyObject (line 6644) | static PyObject *__pyx_pw_14crowdposetools_5_mask_15toBbox(PyObject *__p...
  function PyObject (line 6655) | static PyObject *__pyx_pf_14crowdposetools_5_mask_14toBbox(CYTHON_UNUSED...
  function PyObject (line 6940) | static PyObject *__pyx_pw_14crowdposetools_5_mask_17frBbox(PyObject *__p...
  function PyObject (line 7015) | static PyObject *__pyx_pf_14crowdposetools_5_mask_16frBbox(CYTHON_UNUSED...
  function PyObject (line 7182) | static PyObject *__pyx_pw_14crowdposetools_5_mask_19frPoly(PyObject *__p...
  function PyObject (line 7252) | static PyObject *__pyx_pf_14crowdposetools_5_mask_18frPoly(CYTHON_UNUSED...
  function PyObject (line 7562) | static PyObject *__pyx_pw_14crowdposetools_5_mask_21frUncompressedRLE(Py...
  type __pyx_obj_14crowdposetools_5_mask_RLEs (line 7639) | struct __pyx_obj_14crowdposetools_5_mask_RLEs
  type __pyx_obj_14crowdposetools_5_mask_RLEs (line 7714) | struct __pyx_obj_14crowdposetools_5_mask_RLEs
  function PyObject (line 7978) | static PyObject *__pyx_pw_14crowdposetools_5_mask_23frPyObjects(PyObject...
  function PyObject (line 8048) | static PyObject *__pyx_pf_14crowdposetools_5_mask_22frPyObjects(CYTHON_U...
  function CYTHON_UNUSED (line 8850) | static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObjec...
  function __pyx_pf_5numpy_7ndarray___getbuffer__ (line 8861) | static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v...
  function CYTHON_UNUSED (line 9612) | static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(Py...
  function __pyx_pf_5numpy_7ndarray_2__releasebuffer__ (line 9621) | static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *_...
  function CYTHON_INLINE (line 9702) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyOb...
  function CYTHON_INLINE (line 9749) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyOb...
  function CYTHON_INLINE (line 9796) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyOb...
  function CYTHON_INLINE (line 9843) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyOb...
  function CYTHON_INLINE (line 9890) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyOb...
  function CYTHON_INLINE (line 9937) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_D...
  function CYTHON_INLINE (line 10011) | static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Desc...
  function CYTHON_INLINE (line 10757) | static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *_...
  function CYTHON_INLINE (line 10853) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObje...
  function CYTHON_INLINE (line 10926) | static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
  function CYTHON_INLINE (line 11055) | static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
  function CYTHON_INLINE (line 11184) | static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
  function PyObject (line 11302) | static PyObject *__pyx_tp_new_14crowdposetools_5_mask_RLEs(PyTypeObject ...
  function __pyx_tp_dealloc_14crowdposetools_5_mask_RLEs (line 11317) | static void __pyx_tp_dealloc_14crowdposetools_5_mask_RLEs(PyObject *o) {
  function PyObject (line 11334) | static PyObject *__pyx_tp_getattro_14crowdposetools_5_mask_RLEs(PyObject...
  type __pyx_obj_14crowdposetools_5_mask_RLEs (line 11353) | struct __pyx_obj_14crowdposetools_5_mask_RLEs
  function PyObject (line 11408) | static PyObject *__pyx_tp_new_14crowdposetools_5_mask_Masks(PyTypeObject...
  function __pyx_tp_dealloc_14crowdposetools_5_mask_Masks (line 11423) | static void __pyx_tp_dealloc_14crowdposetools_5_mask_Masks(PyObject *o) {
  type __pyx_obj_14crowdposetools_5_mask_Masks (line 11442) | struct __pyx_obj_14crowdposetools_5_mask_Masks
  type PyModuleDef (line 11512) | struct PyModuleDef
  function __Pyx_InitCachedBuiltins (line 11650) | static int __Pyx_InitCachedBuiltins(void) {
  function __Pyx_InitCachedConstants (line 11663) | static int __Pyx_InitCachedConstants(void) {
  function __Pyx_InitGlobals (line 12109) | static int __Pyx_InitGlobals(void) {
  function __Pyx_modinit_global_init_code (line 12129) | static int __Pyx_modinit_global_init_code(void) {
  function __Pyx_modinit_variable_export_code (line 12137) | static int __Pyx_modinit_variable_export_code(void) {
  function __Pyx_modinit_function_export_code (line 12145) | static int __Pyx_modinit_function_export_code(void) {
  function __Pyx_modinit_type_init_code (line 12153) | static int __Pyx_modinit_type_init_code(void) {
  function __Pyx_modinit_type_import_code (line 12177) | static int __Pyx_modinit_type_import_code(void) {
  function __Pyx_modinit_variable_import_code (line 12200) | static int __Pyx_modinit_variable_import_code(void) {
  function __Pyx_modinit_function_import_code (line 12208) | static int __Pyx_modinit_function_import_code(void) {
  function __Pyx_PyMODINIT_FUNC (line 12246) | __Pyx_PyMODINIT_FUNC PyInit__mask(void)
  function __Pyx_copy_spec_to_module (line 12251) | static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, ...
  function PyObject (line 12264) | static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModu...
  function __Pyx_RefNannyAPIStruct (line 12641) | static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modn...
  function CYTHON_INLINE (line 12658) | static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, ...
  function PyObject (line 12671) | static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
  function __Pyx_RaiseDoubleKeywordsError (line 12685) | static void __Pyx_RaiseDoubleKeywordsError(
  function __Pyx_ParseOptionalKeywords (line 12699) | static int __Pyx_ParseOptionalKeywords(
  function __Pyx_RaiseArgtupleInvalid (line 12801) | static void __Pyx_RaiseArgtupleInvalid(
  function CYTHON_INLINE (line 12827) | static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2...
  function CYTHON_INLINE (line 12874) | static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* ...
  function CYTHON_INLINE (line 12977) | static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *fun...
  function PyObject (line 13001) | static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObjec...
  function CYTHON_INLINE (line 13120) | static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObj...
  function CYTHON_INLINE (line 13140) | static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, ...
  function PyObject (line 13160) | static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *ar...
  function CYTHON_INLINE (line 13170) | static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func,...
  function CYTHON_INLINE (line 13188) | static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func,...
  function CYTHON_INLINE (line 13200) | static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate,...
  function CYTHON_INLINE (line 13212) | static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, P...
  function __Pyx_Raise (line 13224) | static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
  function __Pyx_Raise (line 13275) | static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, P...
  function CYTHON_INLINE (line 13382) | static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *typ...
  function __Pyx__ArgTypeTest (line 13395) | static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const c...
  function PyObject (line 13417) | static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHO...
  function PyObject (line 13539) | static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON...
  function PyObject (line 13657) | static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
  function PyObject (line 13675) | static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
  function CYTHON_INLINE (line 13682) | static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, P...
  function CYTHON_INLINE (line 13700) | static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, ...
  function CYTHON_INLINE (line 13718) | static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssi...
  function CYTHON_INLINE (line 13762) | static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
  function __Pyx_BufFmt_Init (line 13773) | static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
  function __Pyx_BufFmt_ParseNumber (line 13800) | static int __Pyx_BufFmt_ParseNumber(const char** ts) {
  function __Pyx_BufFmt_ExpectNumber (line 13815) | static int __Pyx_BufFmt_ExpectNumber(const char **ts) {
  function __Pyx_BufFmt_RaiseUnexpectedChar (line 13822) | static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) {
  function __Pyx_BufFmt_TypeCharToStandardSize (line 13850) | static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_comple...
  function __Pyx_BufFmt_TypeCharToNativeSize (line 13868) | static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) {
  type __Pyx_st_short (line 13887) | typedef struct { char c; short x; } __Pyx_st_short;
  type __Pyx_st_int (line 13888) | typedef struct { char c; int x; } __Pyx_st_int;
  type __Pyx_st_long (line 13889) | typedef struct { char c; long x; } __Pyx_st_long;
  type __Pyx_st_float (line 13890) | typedef struct { char c; float x; } __Pyx_st_float;
  type __Pyx_st_double (line 13891) | typedef struct { char c; double x; } __Pyx_st_double;
  type __Pyx_st_longdouble (line 13892) | typedef struct { char c; long double x; } __Pyx_st_longdouble;
  type __Pyx_st_void_p (line 13893) | typedef struct { char c; void *x; } __Pyx_st_void_p;
  type __Pyx_st_longlong (line 13895) | typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong;
  function __Pyx_BufFmt_TypeCharToAlignment (line 13897) | static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED in...
  type __Pyx_pad_short (line 13919) | typedef struct { short x; char c; } __Pyx_pad_short;
  type __Pyx_pad_int (line 13920) | typedef struct { int x; char c; } __Pyx_pad_int;
  type __Pyx_pad_long (line 13921) | typedef struct { long x; char c; } __Pyx_pad_long;
  type __Pyx_pad_float (line 13922) | typedef struct { float x; char c; } __Pyx_pad_float;
  type __Pyx_pad_double (line 13923) | typedef struct { double x; char c; } __Pyx_pad_double;
  type __Pyx_pad_longdouble (line 13924) | typedef struct { long double x; char c; } __Pyx_pad_longdouble;
  type __Pyx_pad_void_p (line 13925) | typedef struct { void *x; char c; } __Pyx_pad_void_p;
  type __Pyx_pad_longlong (line 13927) | typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong;
  function __Pyx_BufFmt_TypeCharToPadding (line 13929) | static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int ...
  function __Pyx_BufFmt_TypeCharToGroup (line 13947) | static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) {
  function __Pyx_BufFmt_RaiseExpected (line 13968) | static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) {
  function __Pyx_BufFmt_ProcessTypeChunk (line 13992) | static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) {
  function PyObject (line 14094) | static PyObject *
  function CYTHON_INLINE (line 14275) | static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) {
  function __Pyx_ZeroBuffer (line 14280) | static void __Pyx_ZeroBuffer(Py_buffer* buf) {
  function __Pyx__GetBufferAndValidate (line 14287) | static int __Pyx__GetBufferAndValidate(
  function PyTypeObject (line 14322) | static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
  function PyObject (line 14362) | static PyObject *
  function __Pyx_CyFunction_set_doc (line 14382) | static int
  function PyObject (line 14394) | static PyObject *
  function PyObject (line 14428) | static PyObject *
  function PyObject (line 14453) | static PyObject *
  function PyObject (line 14463) | static PyObject *
  function __Pyx_CyFunction_set_dict (line 14474) | static int
  function PyObject (line 14494) | static PyObject *
  function PyObject (line 14500) | static PyObject *
  function PyObject (line 14506) | static PyObject *
  function __Pyx_CyFunction_init_defaults (line 14513) | static int
  function __Pyx_CyFunction_set_defaults (line 14535) | static int
  function PyObject (line 14551) | static PyObject *
  function __Pyx_CyFunction_set_kwdefaults (line 14565) | static int
  function PyObject (line 14581) | static PyObject *
  function __Pyx_CyFunction_set_annotations (line 14595) | static int
  function PyObject (line 14611) | static PyObject *
  function PyObject (line 14647) | static PyObject *
  function PyObject (line 14665) | static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *m...
  function __Pyx_CyFunction_clear (line 14697) | static int
  function __Pyx__CyFunction_dealloc (line 14722) | static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
  function __Pyx_CyFunction_dealloc (line 14729) | static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
  function __Pyx_CyFunction_traverse (line 14734) | static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitpro...
  function PyObject (line 14755) | static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *ob...
  function PyObject (line 14771) | static PyObject*
  function PyObject (line 14782) | static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *...
  function CYTHON_INLINE (line 14836) | static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyO...
  function PyObject (line 14839) | static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject ...
  function __pyx_CyFunction_init (line 14922) | static int __pyx_CyFunction_init(void) {
  function CYTHON_INLINE (line 14929) | static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func,...
  function CYTHON_INLINE (line 14938) | static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *fu...
  function CYTHON_INLINE (line 14943) | static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *f...
  function CYTHON_INLINE (line 14948) | static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *...
  function __Pyx_RaiseBufferFallbackError (line 14955) | static void __Pyx_RaiseBufferFallbackError(void) {
  function CYTHON_INLINE (line 14961) | static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ss...
  function __Pyx_RaiseBufferIndexError (line 14969) | static void __Pyx_RaiseBufferIndexError(int axis) {
  function CYTHON_INLINE (line 14975) | static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expec...
  function CYTHON_INLINE (line 14981) | static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t inde...
  function CYTHON_INLINE (line 14988) | static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
  function CYTHON_INLINE (line 14994) | static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, Py...
  function CYTHON_INLINE (line 15008) | static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, P...
  function __Pyx_PyErr_ExceptionMatchesTuple (line 15033) | static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObjec...
  function CYTHON_INLINE (line 15046) | static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadSta...
  function __Pyx_GetException (line 15060) | static int __Pyx_GetException(PyObject **type, PyObject **value, PyObjec...
  function PyObject (line 15128) | static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, P...
  function CYTHON_INLINE (line 15139) | static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObj...
  function PyObject (line 15168) | static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* ...
  function __Pyx_setup_reduce_is_named (line 15177) | static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
  function __Pyx_setup_reduce (line 15193) | static int __Pyx_setup_reduce(PyObject* type_obj) {
  function PyObject (line 15253) | static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int l...
  function __Pyx_CLineForTraceback (line 15319) | static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, ...
  function __pyx_bisect_code_objects (line 15358) | static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries...
  function PyCodeObject (line 15379) | static PyCodeObject *__pyx_find_code_object(int code_line) {
  function __pyx_insert_code_object (line 15393) | static void __pyx_insert_code_object(int code_line, PyCodeObject* code_o...
  function PyCodeObject (line 15441) | static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
  function __Pyx_AddTraceback (line 15493) | static void __Pyx_AddTraceback(const char *funcname, int c_line,
  function __Pyx_GetBuffer (line 15523) | static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) {
  function __Pyx_ReleaseBuffer (line 15529) | static void __Pyx_ReleaseBuffer(Py_buffer *view) {
  function CYTHON_INLINE (line 15545) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
  function CYTHON_INLINE (line 15598) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_siz(siz value) {
  function CYTHON_INLINE (line 15629) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t ...
  function CYTHON_INLINE (line 15662) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 15666) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 15671) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 15682) | static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx...
  function CYTHON_INLINE (line 15685) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_flo...
  function CYTHON_INLINE (line 15691) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_fl...
  function CYTHON_INLINE (line 15697) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_fl...
  function CYTHON_INLINE (line 15704) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_fl...
  function CYTHON_INLINE (line 15724) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_fl...
  function CYTHON_INLINE (line 15735) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_flo...
  function CYTHON_INLINE (line 15741) | static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) {
  function CYTHON_INLINE (line 15744) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_fl...
  function CYTHON_INLINE (line 15751) | static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) {
  function CYTHON_INLINE (line 15758) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_flo...
  function CYTHON_INLINE (line 15817) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 15821) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 15826) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 15837) | static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __p...
  function CYTHON_INLINE (line 15840) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_d...
  function CYTHON_INLINE (line 15846) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_...
  function CYTHON_INLINE (line 15852) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_...
  function CYTHON_INLINE (line 15859) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_...
  function CYTHON_INLINE (line 15879) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_...
  function CYTHON_INLINE (line 15890) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_d...
  function CYTHON_INLINE (line 15896) | static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) {
  function CYTHON_INLINE (line 15899) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_...
  function CYTHON_INLINE (line 15906) | static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) {
  function CYTHON_INLINE (line 15913) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_d...
  function CYTHON_INLINE (line 15970) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
  function CYTHON_INLINE (line 16001) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY...
  function __Pyx_InBases (line 16789) | static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
  function CYTHON_INLINE (line 16797) | static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *...
  function __Pyx_inner_PyErr_GivenExceptionMatches2 (line 16813) | static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObj...
  function CYTHON_INLINE (line 16835) | static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObje...
  function __Pyx_PyErr_GivenExceptionMatchesTuple (line 16843) | static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, Py...
  function CYTHON_INLINE (line 16864) | static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err...
  function CYTHON_INLINE (line 16876) | static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *er...
  function __Pyx_check_binary_version (line 16888) | static int __Pyx_check_binary_version(void) {
  function PyObject (line 16906) | static PyObject *__Pyx_ImportModule(const char *name) {
  function PyTypeObject (line 16924) | static PyTypeObject *__Pyx_ImportType(const char *module_name, const cha...
  function __Pyx_InitStrings (line 16987) | static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
  function CYTHON_INLINE (line 17019) | static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_...
  function CYTHON_INLINE (line 17022) | static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
  function CYTHON_INLINE (line 17049) | static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObjec...
  function CYTHON_INLINE (line 17091) | static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
  function PyObject (line 17096) | static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* resul...
  function CYTHON_INLINE (line 17165) | static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  function CYTHON_INLINE (line 17227) | static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
  function CYTHON_INLINE (line 17230) | static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {

FILE: CrowdPose/crowdpose-api/PythonAPI/crowdposetools/coco.py
  function _isArrayLike (line 66) | def _isArrayLike(obj):
  class COCO (line 70) | class COCO:
    method __init__ (line 71) | def __init__(self, annotation_file=None):
    method createIndex (line 92) | def createIndex(self):
    method info (line 125) | def info(self):
    method getAnnIds (line 133) | def getAnnIds(self, imgIds=[], catIds=[], areaRng=[], iscrowd=None):
    method getCatIds (line 164) | def getCatIds(self, catNms=[], supNms=[], catIds=[]):
    method getImgIds (line 189) | def getImgIds(self, imgIds=[], catIds=[]):
    method loadAnns (line 210) | def loadAnns(self, ids=[]):
    method loadCats (line 221) | def loadCats(self, ids=[]):
    method loadImgs (line 232) | def loadImgs(self, ids=[]):
    method loadRes (line 243) | def loadRes(self, resFile):
    method download (line 310) | def download(self, tarDir=None, imgIds=[]):
    method loadNumpyAnnotations (line 334) | def loadNumpyAnnotations(self, data):
    method annToRLE (line 357) | def annToRLE(self, ann):
    method annToMask (line 378) | def annToMask(self, ann):

FILE: CrowdPose/crowdpose-api/PythonAPI/crowdposetools/cocoeval.py
  class NullWriter (line 12) | class NullWriter(object):
    method write (line 14) | def write(self, arg):
    method flush (line 17) | def flush(self):
  class COCOeval (line 21) | class COCOeval:
    method __init__ (line 71) | def __init__(self, cocoGt=None, cocoDt=None, iouType='segm'):
    method _prepare (line 97) | def _prepare(self):
    method evaluate (line 137) | def evaluate(self):
    method computeIoU (line 180) | def computeIoU(self, imgId, catId):
    method computeOks (line 209) | def computeOks(self, imgId, catId):
    method evaluateImg (line 266) | def evaluateImg(self, imgId, catId, aRng, maxDet):
    method accumulate (line 350) | def accumulate(self, p=None):
    method summarize (line 464) | def summarize(self):
    method __str__ (line 558) | def __str__(self):
    method get_type_result (line 561) | def get_type_result(self,  first=0.01, second=0.85):
    method split (line 580) | def split(serlf, gt_file, first=0.01, second=0.85):
  class Params (line 597) | class Params:
    method setDetParams (line 602) | def setDetParams(self):
    method setKpParams (line 616) | def setKpParams(self):
    method __init__ (line 630) | def __init__(self, iouType='segm'):

FILE: CrowdPose/crowdpose-api/PythonAPI/crowdposetools/mask.py
  function encode (line 80) | def encode(bimask):
  function decode (line 87) | def decode(rleObjs):
  function area (line 93) | def area(rleObjs):
  function toBbox (line 99) | def toBbox(rleObjs):

FILE: CrowdPose/crowdpose-api/common/gason.cpp
  function isspace (line 52) | static inline bool isspace(char c) {
  function isdelim (line 56) | static inline bool isdelim(char c) {
  function isdigit (line 60) | static inline bool isdigit(char c) {
  function isxdigit (line 64) | static inline bool isxdigit(char c) {
  function char2int (line 68) | static inline int char2int(char c) {
  function string2double (line 74) | static double string2double(char *s, char **endptr) {
  function JsonNode (line 120) | static inline JsonNode *insertAfter(JsonNode *tail, JsonNode *node) {
  function JsonValue (line 128) | static inline JsonValue listToValue(JsonTag tag, JsonNode *tail) {
  function jsonParse (line 137) | int jsonParse(char *s, char **endptr, JsonValue *value, JsonAllocator &a...

FILE: CrowdPose/crowdpose-api/common/gason.h
  type JsonTag (line 8) | enum JsonTag {
  type JsonNode (line 18) | struct JsonNode
  function JsonNode (line 54) | JsonNode *toNode() const {
  type JsonNode (line 60) | struct JsonNode {
  type JsonIterator (line 66) | struct JsonIterator {
  function JsonIterator (line 86) | inline JsonIterator end(JsonValue) {

FILE: CrowdPose/crowdpose-api/common/maskApi.c
  function uint (line 11) | uint umin( uint a, uint b ) { return (a<b) ? a : b; }
  function uint (line 12) | uint umax( uint a, uint b ) { return (a>b) ? a : b; }
  function rleInit (line 14) | void rleInit( RLE *R, siz h, siz w, siz m, uint *cnts ) {
  function rleFree (line 19) | void rleFree( RLE *R ) {
  function rlesInit (line 23) | void rlesInit( RLE **R, siz n ) {
  function rlesFree (line 28) | void rlesFree( RLE **R, siz n ) {
  function rleEncode (line 32) | void rleEncode( RLE *R, const byte *M, siz h, siz w, siz n ) {
  function rleDecode (line 43) | void rleDecode( const RLE *R, byte *M, siz n ) {
  function rleMerge (line 49) | void rleMerge( const RLE *R, RLE *M, siz n, int intersect ) {
  function rleArea (line 72) | void rleArea( const RLE *R, siz n, uint *a ) {
  function rleIou (line 77) | void rleIou( RLE *dt, RLE *gt, siz m, siz n, byte *iscrowd, double *o ) {
  function rleNms (line 98) | void rleNms( RLE *dt, siz n, uint *keep, double thr ) {
  function bbIou (line 109) | void bbIou( BB dt, BB gt, siz m, siz n, byte *iscrowd, double *o ) {
  function bbNms (line 122) | void bbNms( BB dt, siz n, uint *keep, double thr ) {
  function rleToBbox (line 133) | void rleToBbox( const RLE *R, BB bb, siz n ) {
  function rleFrBbox (line 148) | void rleFrBbox( RLE *R, const BB bb, siz h, siz w, siz n ) {
  function uintCompare (line 157) | int uintCompare(const void *a, const void *b) {
  function rleFrPoly (line 161) | void rleFrPoly( RLE *R, const double *xy, siz k, siz h, siz w ) {
  function rleFrString (line 217) | void rleFrString( RLE *R, char *s, siz h, siz w ) {

FILE: CrowdPose/crowdpose-api/common/maskApi.h
  type uint (line 9) | typedef unsigned int uint;
  type siz (line 10) | typedef unsigned long siz;
  type byte (line 11) | typedef unsigned char byte;
  type RLE (line 13) | typedef struct { siz h, w, m; uint *cnts; } RLE;

FILE: cocoapi/MatlabAPI/private/gasonMex.cpp
  function siz (line 18) | siz length( const JsonValue &a ) {
  function isRegularObjArray (line 23) | bool isRegularObjArray( const JsonValue &a ) {
  function mxArray (line 35) | mxArray* json( const JsonValue &o ) {
  function ostrm (line 81) | ostrm& json( ostrm &S, T *A, siz n ) {
  function ostrm (line 88) | ostrm& json( ostrm &S, T *A, siz n ) {
  function ostrm (line 93) | ostrm& json( ostrm &S, const char *A ) {
  function ostrm (line 104) | ostrm& json( ostrm& S, const JsonValue *o ) {
  function ostrm (line 125) | ostrm& json( ostrm& S, const mxArray *M ) {
  function mxArray (line 161) | mxArray* mxCreateStringRobust( const char* str ) {
  function mexFunction (line 176) | void mexFunction( int nl, mxArray *pl[], int nr, const mxArray *pr[] )

FILE: cocoapi/MatlabAPI/private/maskApiMex.c
  function checkType (line 11) | void checkType( const mxArray *M, mxClassID id ) {
  function mxArray (line 15) | mxArray* toMxArray( const RLE *R, siz n ) {
  function RLE (line 27) | RLE* frMxArray( const mxArray *M, siz *n, bool same ) {
  function mexFunction (line 55) | void mexFunction( int nl, mxArray *pl[], int nr, const mxArray *pr[] )

FILE: cocoapi/PythonAPI/build/lib.linux-x86_64-3.7/pycocotools/coco.py
  function _isArrayLike (line 66) | def _isArrayLike(obj):
  class COCO (line 70) | class COCO:
    method __init__ (line 71) | def __init__(self, annotation_file=None):
    method createIndex (line 90) | def createIndex(self):
    method info (line 121) | def info(self):
    method getAnnIds (line 129) | def getAnnIds(self, imgIds=[], catIds=[], areaRng=[], iscrowd=None):
    method getCatIds (line 157) | def getCatIds(self, catNms=[], supNms=[], catIds=[]):
    method getImgIds (line 179) | def getImgIds(self, imgIds=[], catIds=[]):
    method loadAnns (line 200) | def loadAnns(self, ids=[]):
    method loadCats (line 211) | def loadCats(self, ids=[]):
    method loadImgs (line 222) | def loadImgs(self, ids=[]):
    method showAnns (line 233) | def showAnns(self, anns):
    method loadRes (line 297) | def loadRes(self, resFile):
    method download (line 358) | def download(self, tarDir = None, imgIds = [] ):
    method loadNumpyAnnotations (line 382) | def loadNumpyAnnotations(self, data):
    method annToRLE (line 405) | def annToRLE(self, ann):
    method annToMask (line 426) | def annToMask(self, ann):

FILE: cocoapi/PythonAPI/build/lib.linux-x86_64-3.7/pycocotools/cocoeval.py
  class COCOeval (line 10) | class COCOeval:
    method __init__ (line 60) | def __init__(self, cocoGt=None, cocoDt=None, iouType='segm'):
    method _prepare (line 84) | def _prepare(self):
    method evaluate (line 121) | def evaluate(self):
    method computeIoU (line 163) | def computeIoU(self, imgId, catId):
    method computeOks (line 192) | def computeOks(self, imgId, catId):
    method evaluateImg (line 235) | def evaluateImg(self, imgId, catId, aRng, maxDet):
    method accumulate (line 315) | def accumulate(self, p = None):
    method summarize (line 422) | def summarize(self):
    method __str__ (line 495) | def __str__(self):
  class Params (line 498) | class Params:
    method setDetParams (line 502) | def setDetParams(self):
    method setKpParams (line 513) | def setKpParams(self):
    method __init__ (line 525) | def __init__(self, iouType='segm'):

FILE: cocoapi/PythonAPI/build/lib.linux-x86_64-3.7/pycocotools/mask.py
  function encode (line 80) | def encode(bimask):
  function decode (line 87) | def decode(rleObjs):
  function area (line 93) | def area(rleObjs):
  function toBbox (line 99) | def toBbox(rleObjs):

FILE: cocoapi/PythonAPI/pycocotools/_mask.c
  type PyObject (line 341) | typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *co...
  type PyObject (line 342) | typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, ...
  type Py_tss_t (line 383) | typedef int Py_tss_t;
  function CYTHON_INLINE (line 384) | static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
  function CYTHON_INLINE (line 388) | static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
  function CYTHON_INLINE (line 393) | static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
  function CYTHON_INLINE (line 396) | static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
  function CYTHON_INLINE (line 399) | static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
  function CYTHON_INLINE (line 403) | static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
  function CYTHON_INLINE (line 406) | static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
  type Py_hash_t (line 530) | typedef long Py_hash_t;
  type __Pyx_PyAsyncMethodsStruct (line 553) | typedef struct {
  function CYTHON_INLINE (line 567) | static CYTHON_INLINE float __PYX_NAN() {
  type __Pyx_StringTabEntry (line 610) | typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const c...
  function CYTHON_INLINE (line 631) | static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t l...
  function CYTHON_INLINE (line 680) | static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
  function __Pyx_init_sys_getdefaultencoding_params (line 712) | static int __Pyx_init_sys_getdefaultencoding_params(void) {
  function __Pyx_init_sys_getdefaultencoding_params (line 762) | static int __Pyx_init_sys_getdefaultencoding_params(void) {
  function CYTHON_INLINE (line 794) | static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void...
  type __Pyx_StructField_ (line 839) | struct __Pyx_StructField_
  type __Pyx_TypeInfo (line 841) | typedef struct {
  type __Pyx_StructField (line 851) | typedef struct __Pyx_StructField_ {
  type __Pyx_BufFmt_StackElem (line 856) | typedef struct {
  type __Pyx_BufFmt_Context (line 860) | typedef struct {
  type npy_int8 (line 881) | typedef npy_int8 __pyx_t_5numpy_int8_t;
  type npy_int16 (line 890) | typedef npy_int16 __pyx_t_5numpy_int16_t;
  type npy_int32 (line 899) | typedef npy_int32 __pyx_t_5numpy_int32_t;
  type npy_int64 (line 908) | typedef npy_int64 __pyx_t_5numpy_int64_t;
  type npy_uint8 (line 917) | typedef npy_uint8 __pyx_t_5numpy_uint8_t;
  type npy_uint16 (line 926) | typedef npy_uint16 __pyx_t_5numpy_uint16_t;
  type npy_uint32 (line 935) | typedef npy_uint32 __pyx_t_5numpy_uint32_t;
  type npy_uint64 (line 944) | typedef npy_uint64 __pyx_t_5numpy_uint64_t;
  type npy_float32 (line 953) | typedef npy_float32 __pyx_t_5numpy_float32_t;
  type npy_float64 (line 962) | typedef npy_float64 __pyx_t_5numpy_float64_t;
  type npy_long (line 971) | typedef npy_long __pyx_t_5numpy_int_t;
  type npy_longlong (line 980) | typedef npy_longlong __pyx_t_5numpy_long_t;
  type npy_longlong (line 989) | typedef npy_longlong __pyx_t_5numpy_longlong_t;
  type npy_ulong (line 998) | typedef npy_ulong __pyx_t_5numpy_uint_t;
  type npy_ulonglong (line 1007) | typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
  type npy_ulonglong (line 1016) | typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
  type npy_intp (line 1025) | typedef npy_intp __pyx_t_5numpy_intp_t;
  type npy_uintp (line 1034) | typedef npy_uintp __pyx_t_5numpy_uintp_t;
  type npy_double (line 1043) | typedef npy_double __pyx_t_5numpy_float_t;
  type npy_double (line 1052) | typedef npy_double __pyx_t_5numpy_double_t;
  type npy_longdouble (line 1061) | typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
  type std (line 1065) | typedef ::std::complex< float > __pyx_t_float_complex;
  type __pyx_t_float_complex (line 1067) | typedef float _Complex __pyx_t_float_complex;
  type __pyx_t_float_complex (line 1070) | typedef struct { float real, imag; } __pyx_t_float_complex;
  type std (line 1077) | typedef ::std::complex< double > __pyx_t_double_complex;
  type __pyx_t_double_complex (line 1079) | typedef double _Complex __pyx_t_double_complex;
  type __pyx_t_double_complex (line 1082) | typedef struct { double real, imag; } __pyx_t_double_complex;
  type __pyx_obj_11pycocotools_5_mask_RLEs (line 1088) | struct __pyx_obj_11pycocotools_5_mask_RLEs
  type __pyx_obj_11pycocotools_5_mask_Masks (line 1089) | struct __pyx_obj_11pycocotools_5_mask_Masks
  type npy_cfloat (line 1098) | typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
  type npy_cdouble (line 1107) | typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
  type npy_clongdouble (line 1116) | typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
  type npy_cdouble (line 1125) | typedef npy_cdouble __pyx_t_5numpy_complex_t;
  type __pyx_obj_11pycocotools_5_mask_RLEs (line 1134) | struct __pyx_obj_11pycocotools_5_mask_RLEs {
  type __pyx_obj_11pycocotools_5_mask_Masks (line 1148) | struct __pyx_obj_11pycocotools_5_mask_Masks {
  type __Pyx_RefNannyAPIStruct (line 1163) | typedef struct {
  function CYTHON_INLINE (line 1354) | static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
  function CYTHON_INLINE (line 1486) | static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject*...
  type __pyx_CyFunctionObject (line 1517) | typedef struct {
  function CYTHON_INLINE (line 1569) | static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyO...
  type __Pyx_ImportType_CheckSize (line 1635) | enum __Pyx_ImportType_CheckSize {
  type __Pyx_ImportType_CheckSize (line 1640) | enum __Pyx_ImportType_CheckSize
  type __Pyx_CodeObjectCacheEntry (line 1654) | typedef struct {
  type __Pyx_CodeObjectCache (line 1658) | struct __Pyx_CodeObjectCache {
  type __Pyx_CodeObjectCache (line 1663) | struct __Pyx_CodeObjectCache
  type __Pyx_Buf_DimInfo (line 1673) | typedef struct {
  type __Pyx_Buffer (line 1676) | typedef struct {
  type __Pyx_LocalBuf_ND (line 1680) | typedef struct {
  type NPY_TYPES (line 1806) | enum NPY_TYPES
  type __pyx_obj_11pycocotools_5_mask_RLEs (line 2122) | struct __pyx_obj_11pycocotools_5_mask_RLEs
  type __pyx_obj_11pycocotools_5_mask_RLEs (line 2123) | struct __pyx_obj_11pycocotools_5_mask_RLEs
  type __pyx_obj_11pycocotools_5_mask_RLEs (line 2124) | struct __pyx_obj_11pycocotools_5_mask_RLEs
  type __pyx_obj_11pycocotools_5_mask_Masks (line 2127) | struct __pyx_obj_11pycocotools_5_mask_Masks
  type __pyx_obj_11pycocotools_5_mask_Masks (line 2128) | struct __pyx_obj_11pycocotools_5_mask_Masks
  type __pyx_obj_11pycocotools_5_mask_RLEs (line 2131) | struct __pyx_obj_11pycocotools_5_mask_RLEs
  type __pyx_obj_11pycocotools_5_mask_RLEs (line 2138) | struct __pyx_obj_11pycocotools_5_mask_RLEs
  type __pyx_obj_11pycocotools_5_mask_RLEs (line 2138) | struct __pyx_obj_11pycocotools_5_mask_RLEs
  function __pyx_pw_11pycocotools_5_mask_4RLEs_1__cinit__ (line 2219) | static int __pyx_pw_11pycocotools_5_mask_4RLEs_1__cinit__(PyObject *__py...
  function __pyx_pf_11pycocotools_5_mask_4RLEs___cinit__ (line 2276) | static int __pyx_pf_11pycocotools_5_mask_4RLEs___cinit__(struct __pyx_ob...
  function __pyx_pw_11pycocotools_5_mask_4RLEs_3__dealloc__ (line 2323) | static void __pyx_pw_11pycocotools_5_mask_4RLEs_3__dealloc__(PyObject *_...
  function __pyx_pf_11pycocotools_5_mask_4RLEs_2__dealloc__ (line 2332) | static void __pyx_pf_11pycocotools_5_mask_4RLEs_2__dealloc__(struct __py...
  function PyObject (line 2413) | static PyObject *__pyx_pw_11pycocotools_5_mask_4RLEs_5__getattr__(PyObje...
  function PyObject (line 2424) | static PyObject *__pyx_pf_11pycocotools_5_mask_4RLEs_4__getattr__(struct...
  function PyObject (line 2504) | static PyObject *__pyx_pw_11pycocotools_5_mask_4RLEs_7__reduce_cython__(...
  function PyObject (line 2515) | static PyObject *__pyx_pf_11pycocotools_5_mask_4RLEs_6__reduce_cython__(...
  function PyObject (line 2558) | static PyObject *__pyx_pw_11pycocotools_5_mask_4RLEs_9__setstate_cython_...
  function PyObject (line 2569) | static PyObject *__pyx_pf_11pycocotools_5_mask_4RLEs_8__setstate_cython_...
  function __pyx_pw_11pycocotools_5_mask_5Masks_1__cinit__ (line 2613) | static int __pyx_pw_11pycocotools_5_mask_5Masks_1__cinit__(PyObject *__p...
  function __pyx_pf_11pycocotools_5_mask_5Masks___cinit__ (line 2683) | static int __pyx_pf_11pycocotools_5_mask_5Masks___cinit__(struct __pyx_o...
  function PyObject (line 2777) | static PyObject *__pyx_pw_11pycocotools_5_mask_5Masks_3__array__(PyObjec...
  function PyObject (line 2788) | static PyObject *__pyx_pf_11pycocotools_5_mask_5Masks_2__array__(struct ...
  function PyObject (line 2908) | static PyObject *__pyx_pw_11pycocotools_5_mask_5Masks_5__reduce_cython__...
  function PyObject (line 2919) | static PyObject *__pyx_pf_11pycocotools_5_mask_5Masks_4__reduce_cython__...
  function PyObject (line 2962) | static PyObject *__pyx_pw_11pycocotools_5_mask_5Masks_7__setstate_cython...
  function PyObject (line 2973) | static PyObject *__pyx_pf_11pycocotools_5_mask_5Masks_6__setstate_cython...
  function PyObject (line 3018) | static PyObject *__pyx_pw_11pycocotools_5_mask_1_toString(PyObject *__py...
  function PyObject (line 3034) | static PyObject *__pyx_pf_11pycocotools_5_mask__toString(CYTHON_UNUSED P...
  function PyObject (line 3210) | static PyObject *__pyx_pw_11pycocotools_5_mask_3_frString(PyObject *__py...
  function PyObject (line 3221) | static PyObject *__pyx_pf_11pycocotools_5_mask_2_frString(CYTHON_UNUSED ...
  function PyObject (line 3579) | static PyObject *__pyx_pw_11pycocotools_5_mask_5encode(PyObject *__pyx_s...
  function PyObject (line 3595) | static PyObject *__pyx_pf_11pycocotools_5_mask_4encode(CYTHON_UNUSED PyO...
  function PyObject (line 3742) | static PyObject *__pyx_pw_11pycocotools_5_mask_7decode(PyObject *__pyx_s...
  function PyObject (line 3753) | static PyObject *__pyx_pf_11pycocotools_5_mask_6decode(CYTHON_UNUSED PyO...
  function PyObject (line 3918) | static PyObject *__pyx_pw_11pycocotools_5_mask_9merge(PyObject *__pyx_se...
  function PyObject (line 3981) | static PyObject *__pyx_pf_11pycocotools_5_mask_8merge(CYTHON_UNUSED PyOb...
  function PyObject (line 4120) | static PyObject *__pyx_pw_11pycocotools_5_mask_11area(PyObject *__pyx_se...
  function PyObject (line 4131) | static PyObject *__pyx_pf_11pycocotools_5_mask_10area(CYTHON_UNUSED PyOb...
  function PyObject (line 4311) | static PyObject *__pyx_pw_11pycocotools_5_mask_13iou(PyObject *__pyx_sel...
  function PyObject (line 4392) | static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_1_preproc(PyObject *...
  function PyObject (line 4403) | static PyObject *__pyx_pf_11pycocotools_5_mask_3iou__preproc(CYTHON_UNUS...
  function PyObject (line 5124) | static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_3_rleIou(PyObject *_...
  function PyObject (line 5235) | static PyObject *__pyx_pf_11pycocotools_5_mask_3iou_2_rleIou(CYTHON_UNUS...
  function PyObject (line 5313) | static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_5_bbIou(PyObject *__...
  function PyObject (line 5424) | static PyObject *__pyx_pf_11pycocotools_5_mask_3iou_4_bbIou(CYTHON_UNUSE...
  function PyObject (line 5528) | static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_7_len(PyObject *__py...
  function PyObject (line 5539) | static PyObject *__pyx_pf_11pycocotools_5_mask_3iou_6_len(CYTHON_UNUSED ...
  function PyObject (line 5687) | static PyObject *__pyx_pf_11pycocotools_5_mask_12iou(CYTHON_UNUSED PyObj...
  function PyObject (line 6278) | static PyObject *__pyx_pw_11pycocotools_5_mask_15toBbox(PyObject *__pyx_...
  function PyObject (line 6289) | static PyObject *__pyx_pf_11pycocotools_5_mask_14toBbox(CYTHON_UNUSED Py...
  function PyObject (line 6516) | static PyObject *__pyx_pw_11pycocotools_5_mask_17frBbox(PyObject *__pyx_...
  function PyObject (line 6591) | static PyObject *__pyx_pf_11pycocotools_5_mask_16frBbox(CYTHON_UNUSED Py...
  function PyObject (line 6728) | static PyObject *__pyx_pw_11pycocotools_5_mask_19frPoly(PyObject *__pyx_...
  function PyObject (line 6798) | static PyObject *__pyx_pf_11pycocotools_5_mask_18frPoly(CYTHON_UNUSED Py...
  function PyObject (line 7080) | static PyObject *__pyx_pw_11pycocotools_5_mask_21frUncompressedRLE(PyObj...
  type __pyx_obj_11pycocotools_5_mask_RLEs (line 7157) | struct __pyx_obj_11pycocotools_5_mask_RLEs
  type __pyx_obj_11pycocotools_5_mask_RLEs (line 7232) | struct __pyx_obj_11pycocotools_5_mask_RLEs
  function PyObject (line 7468) | static PyObject *__pyx_pw_11pycocotools_5_mask_23frPyObjects(PyObject *_...
  function PyObject (line 7538) | static PyObject *__pyx_pf_11pycocotools_5_mask_22frPyObjects(CYTHON_UNUS...
  function CYTHON_UNUSED (line 8340) | static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObjec...
  function __pyx_pf_5numpy_7ndarray___getbuffer__ (line 8351) | static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v...
  function CYTHON_UNUSED (line 9104) | static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(Py...
  function __pyx_pf_5numpy_7ndarray_2__releasebuffer__ (line 9113) | static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *_...
  function CYTHON_INLINE (line 9194) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyOb...
  function CYTHON_INLINE (line 9241) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyOb...
  function CYTHON_INLINE (line 9288) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyOb...
  function CYTHON_INLINE (line 9335) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyOb...
  function CYTHON_INLINE (line 9382) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyOb...
  function CYTHON_INLINE (line 9429) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_D...
  function CYTHON_INLINE (line 9503) | static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Desc...
  function CYTHON_INLINE (line 10249) | static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *_...
  function CYTHON_INLINE (line 10291) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObje...
  function CYTHON_INLINE (line 10372) | static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
  function CYTHON_INLINE (line 10501) | static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
  function CYTHON_INLINE (line 10630) | static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
  function PyObject (line 10748) | static PyObject *__pyx_tp_new_11pycocotools_5_mask_RLEs(PyTypeObject *t,...
  function __pyx_tp_dealloc_11pycocotools_5_mask_RLEs (line 10763) | static void __pyx_tp_dealloc_11pycocotools_5_mask_RLEs(PyObject *o) {
  function PyObject (line 10780) | static PyObject *__pyx_tp_getattro_11pycocotools_5_mask_RLEs(PyObject *o...
  type __pyx_obj_11pycocotools_5_mask_RLEs (line 10799) | struct __pyx_obj_11pycocotools_5_mask_RLEs
  function PyObject (line 10865) | static PyObject *__pyx_tp_new_11pycocotools_5_mask_Masks(PyTypeObject *t...
  function __pyx_tp_dealloc_11pycocotools_5_mask_Masks (line 10880) | static void __pyx_tp_dealloc_11pycocotools_5_mask_Masks(PyObject *o) {
  type __pyx_obj_11pycocotools_5_mask_Masks (line 10899) | struct __pyx_obj_11pycocotools_5_mask_Masks
  type PyModuleDef (line 10980) | struct PyModuleDef
  function CYTHON_SMALL_CODE (line 11129) | static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
  function CYTHON_SMALL_CODE (line 11142) | static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
  function CYTHON_SMALL_CODE (line 11546) | static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
  function __Pyx_modinit_global_init_code (line 11566) | static int __Pyx_modinit_global_init_code(void) {
  function __Pyx_modinit_variable_export_code (line 11574) | static int __Pyx_modinit_variable_export_code(void) {
  function __Pyx_modinit_function_export_code (line 11582) | static int __Pyx_modinit_function_export_code(void) {
  function __Pyx_modinit_type_init_code (line 11590) | static int __Pyx_modinit_type_init_code(void) {
  function __Pyx_modinit_type_import_code (line 11618) | static int __Pyx_modinit_type_import_code(void) {
  function __Pyx_modinit_variable_import_code (line 11655) | static int __Pyx_modinit_variable_import_code(void) {
  function __Pyx_modinit_function_import_code (line 11663) | static int __Pyx_modinit_function_import_code(void) {
  function __Pyx_PyMODINIT_FUNC (line 11692) | __Pyx_PyMODINIT_FUNC PyInit__mask(void)
  function CYTHON_SMALL_CODE (line 11697) | static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
  function CYTHON_SMALL_CODE (line 11720) | static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, P...
  function CYTHON_SMALL_CODE (line 11735) | static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CY...
  function __Pyx_RefNannyAPIStruct (line 12120) | static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modn...
  function CYTHON_INLINE (line 12137) | static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, ...
  function PyObject (line 12150) | static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
  function __Pyx_RaiseDoubleKeywordsError (line 12164) | static void __Pyx_RaiseDoubleKeywordsError(
  function __Pyx_ParseOptionalKeywords (line 12178) | static int __Pyx_ParseOptionalKeywords(
  function __Pyx_RaiseArgtupleInvalid (line 12280) | static void __Pyx_RaiseArgtupleInvalid(
  function CYTHON_INLINE (line 12306) | static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2...
  function CYTHON_INLINE (line 12353) | static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* ...
  function CYTHON_INLINE (line 12456) | static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *fun...
  function PyObject (line 12479) | static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObjec...
  function CYTHON_INLINE (line 12598) | static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObj...
  function CYTHON_INLINE (line 12618) | static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, ...
  function PyObject (line 12638) | static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *ar...
  function CYTHON_INLINE (line 12648) | static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func,...
  function CYTHON_INLINE (line 12666) | static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func,...
  function CYTHON_INLINE (line 12678) | static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate,...
  function CYTHON_INLINE (line 12690) | static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, P...
  function __Pyx_Raise (line 12702) | static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
  function __Pyx_Raise (line 12753) | static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, P...
  function CYTHON_INLINE (line 12860) | static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *typ...
  function __Pyx__ArgTypeTest (line 12873) | static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const c...
  function PyObject (line 12895) | static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHO...
  function CYTHON_INLINE (line 13018) | static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObjec...
  function CYTHON_INLINE (line 13086) | static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
  function CYTHON_INLINE (line 13090) | static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject ...
  function CYTHON_INLINE (line 13102) | static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj...
  function CYTHON_INLINE (line 13114) | static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
  function PyObject (line 13147) | static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
  function CYTHON_UNUSED (line 13170) | static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* functi...
  function PyObject (line 13199) | static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
  function CYTHON_INLINE (line 13206) | static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, P...
  function CYTHON_INLINE (line 13224) | static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, ...
  function CYTHON_INLINE (line 13242) | static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssi...
  function CYTHON_INLINE (line 13286) | static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
  function __Pyx_BufFmt_Init (line 13297) | static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
  function __Pyx_BufFmt_ParseNumber (line 13324) | static int __Pyx_BufFmt_ParseNumber(const char** ts) {
  function __Pyx_BufFmt_ExpectNumber (line 13339) | static int __Pyx_BufFmt_ExpectNumber(const char **ts) {
  function __Pyx_BufFmt_RaiseUnexpectedChar (line 13346) | static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) {
  function __Pyx_BufFmt_TypeCharToStandardSize (line 13375) | static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_comple...
  function __Pyx_BufFmt_TypeCharToNativeSize (line 13393) | static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) {
  type __Pyx_st_short (line 13412) | typedef struct { char c; short x; } __Pyx_st_short;
  type __Pyx_st_int (line 13413) | typedef struct { char c; int x; } __Pyx_st_int;
  type __Pyx_st_long (line 13414) | typedef struct { char c; long x; } __Pyx_st_long;
  type __Pyx_st_float (line 13415) | typedef struct { char c; float x; } __Pyx_st_float;
  type __Pyx_st_double (line 13416) | typedef struct { char c; double x; } __Pyx_st_double;
  type __Pyx_st_longdouble (line 13417) | typedef struct { char c; long double x; } __Pyx_st_longdouble;
  type __Pyx_st_void_p (line 13418) | typedef struct { char c; void *x; } __Pyx_st_void_p;
  type __Pyx_st_longlong (line 13420) | typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong;
  function __Pyx_BufFmt_TypeCharToAlignment (line 13422) | static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED in...
  type __Pyx_pad_short (line 13444) | typedef struct { short x; char c; } __Pyx_pad_short;
  type __Pyx_pad_int (line 13445) | typedef struct { int x; char c; } __Pyx_pad_int;
  type __Pyx_pad_long (line 13446) | typedef struct { long x; char c; } __Pyx_pad_long;
  type __Pyx_pad_float (line 13447) | typedef struct { float x; char c; } __Pyx_pad_float;
  type __Pyx_pad_double (line 13448) | typedef struct { double x; char c; } __Pyx_pad_double;
  type __Pyx_pad_longdouble (line 13449) | typedef struct { long double x; char c; } __Pyx_pad_longdouble;
  type __Pyx_pad_void_p (line 13450) | typedef struct { void *x; char c; } __Pyx_pad_void_p;
  type __Pyx_pad_longlong (line 13452) | typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong;
  function __Pyx_BufFmt_TypeCharToPadding (line 13454) | static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int ...
  function __Pyx_BufFmt_TypeCharToGroup (line 13472) | static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) {
  function __Pyx_BufFmt_RaiseExpected (line 13493) | static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) {
  function __Pyx_BufFmt_ProcessTypeChunk (line 13517) | static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) {
  function PyObject (line 13619) | static PyObject *
  function CYTHON_INLINE (line 13800) | static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) {
  function __Pyx_ZeroBuffer (line 13805) | static void __Pyx_ZeroBuffer(Py_buffer* buf) {
  function __Pyx__GetBufferAndValidate (line 13812) | static int __Pyx__GetBufferAndValidate(
  function PyTypeObject (line 13847) | static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
  function PyObject (line 13887) | static PyObject *
  function __Pyx_CyFunction_set_doc (line 13907) | static int
  function PyObject (line 13919) | static PyObject *
  function __Pyx_CyFunction_set_name (line 13934) | static int
  function PyObject (line 13954) | static PyObject *
  function __Pyx_CyFunction_set_qualname (line 13960) | static int
  function PyObject (line 13980) | static PyObject *
  function PyObject (line 13990) | static PyObject *
  function __Pyx_CyFunction_set_dict (line 14001) | static int
  function PyObject (line 14021) | static PyObject *
  function PyObject (line 14027) | static PyObject *
  function PyObject (line 14033) | static PyObject *
  function __Pyx_CyFunction_init_defaults (line 14040) | static int
  function __Pyx_CyFunction_set_defaults (line 14062) | static int
  function PyObject (line 14078) | static PyObject *
  function __Pyx_CyFunction_set_kwdefaults (line 14092) | static int
  function PyObject (line 14108) | static PyObject *
  function __Pyx_CyFunction_set_annotations (line 14122) | static int
  function PyObject (line 14138) | static PyObject *
  function PyObject (line 14174) | static PyObject *
  function PyObject (line 14192) | static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *m...
  function __Pyx_CyFunction_clear (line 14224) | static int
  function __Pyx__CyFunction_dealloc (line 14249) | static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
  function __Pyx_CyFunction_dealloc (line 14256) | static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
  function __Pyx_CyFunction_traverse (line 14261) | static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitpro...
  function PyObject (line 14282) | static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *ob...
  function PyObject (line 14298) | static PyObject*
  function PyObject (line 14309) | static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *...
  function CYTHON_INLINE (line 14363) | static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyO...
  function PyObject (line 14366) | static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject ...
  function __pyx_CyFunction_init (line 14455) | static int __pyx_CyFunction_init(void) {
  function CYTHON_INLINE (line 14462) | static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func,...
  function CYTHON_INLINE (line 14471) | static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *fu...
  function CYTHON_INLINE (line 14476) | static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *f...
  function CYTHON_INLINE (line 14481) | static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *...
  function __Pyx_RaiseBufferFallbackError (line 14488) | static void __Pyx_RaiseBufferFallbackError(void) {
  function CYTHON_INLINE (line 14494) | static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ss...
  function __Pyx_RaiseBufferIndexError (line 14502) | static void __Pyx_RaiseBufferIndexError(int axis) {
  function CYTHON_INLINE (line 14508) | static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expec...
  function CYTHON_INLINE (line 14514) | static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t inde...
  function CYTHON_INLINE (line 14521) | static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
  function _PyErr_StackItem (line 14527) | static _PyErr_StackItem *
  function CYTHON_INLINE (line 14542) | static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, Py...
  function CYTHON_INLINE (line 14557) | static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, P...
  function __Pyx_PyErr_ExceptionMatchesTuple (line 14583) | static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObjec...
  function CYTHON_INLINE (line 14596) | static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadSta...
  function __Pyx_GetException (line 14610) | static int __Pyx_GetException(PyObject **type, PyObject **value, PyObjec...
  function PyObject (line 14682) | static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, P...
  function CYTHON_INLINE (line 14693) | static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObj...
  function PyObject (line 14722) | static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* ...
  function __Pyx_setup_reduce_is_named (line 14731) | static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
  function __Pyx_setup_reduce (line 14747) | static int __Pyx_setup_reduce(PyObject* type_obj) {
  function PyTypeObject (line 14809) | static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *modu...
  function PyObject (line 14868) | static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int l...
  function __Pyx_CLineForTraceback (line 14934) | static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
  function __pyx_bisect_code_objects (line 14975) | static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries...
  function PyCodeObject (line 14996) | static PyCodeObject *__pyx_find_code_object(int code_line) {
  function __pyx_insert_code_object (line 15010) | static void __pyx_insert_code_object(int code_line, PyCodeObject* code_o...
  function PyCodeObject (line 15058) | static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
  function __Pyx_AddTraceback (line 15110) | static void __Pyx_AddTraceback(const char *funcname, int c_line,
  function __Pyx_GetBuffer (line 15140) | static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) {
  function __Pyx_ReleaseBuffer (line 15146) | static void __Pyx_ReleaseBuffer(Py_buffer *view) {
  function CYTHON_INLINE (line 15162) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
  function CYTHON_INLINE (line 15215) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_siz(siz value) {
  function CYTHON_INLINE (line 15246) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t ...
  function CYTHON_INLINE (line 15279) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 15283) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 15288) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 15299) | static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx...
  function CYTHON_INLINE (line 15302) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_flo...
  function CYTHON_INLINE (line 15308) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_fl...
  function CYTHON_INLINE (line 15314) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_fl...
  function CYTHON_INLINE (line 15321) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_fl...
  function CYTHON_INLINE (line 15341) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_fl...
  function CYTHON_INLINE (line 15352) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_flo...
  function CYTHON_INLINE (line 15358) | static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) {
  function CYTHON_INLINE (line 15361) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_fl...
  function CYTHON_INLINE (line 15368) | static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) {
  function CYTHON_INLINE (line 15375) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_flo...
  function CYTHON_INLINE (line 15433) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 15437) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 15442) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 15453) | static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __p...
  function CYTHON_INLINE (line 15456) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_d...
  function CYTHON_INLINE (line 15462) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_...
  function CYTHON_INLINE (line 15468) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_...
  function CYTHON_INLINE (line 15475) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_...
  function CYTHON_INLINE (line 15495) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_...
  function CYTHON_INLINE (line 15506) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_d...
  function CYTHON_INLINE (line 15512) | static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) {
  function CYTHON_INLINE (line 15515) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_...
  function CYTHON_INLINE (line 15522) | static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) {
  function CYTHON_INLINE (line 15529) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_d...
  function CYTHON_INLINE (line 15585) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
  function CYTHON_INLINE (line 15616) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY...
  function __Pyx_InBases (line 16404) | static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
  function CYTHON_INLINE (line 16412) | static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *...
  function __Pyx_inner_PyErr_GivenExceptionMatches2 (line 16428) | static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObj...
  function CYTHON_INLINE (line 16450) | static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObje...
  function __Pyx_PyErr_GivenExceptionMatchesTuple (line 16458) | static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, Py...
  function CYTHON_INLINE (line 16479) | static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err...
  function CYTHON_INLINE (line 16491) | static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *er...
  function __Pyx_check_binary_version (line 16503) | static int __Pyx_check_binary_version(void) {
  function __Pyx_InitStrings (line 16519) | static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
  function CYTHON_INLINE (line 16551) | static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_...
  function CYTHON_INLINE (line 16554) | static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
  function CYTHON_INLINE (line 16581) | static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObjec...
  function CYTHON_INLINE (line 16623) | static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
  function CYTHON_INLINE (line 16628) | static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
  function PyObject (line 16635) | static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* resul...
  function CYTHON_INLINE (line 16704) | static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  function CYTHON_INLINE (line 16766) | static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
  function CYTHON_INLINE (line 16769) | static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {

FILE: cocoapi/PythonAPI/pycocotools/coco.py
  function _isArrayLike (line 66) | def _isArrayLike(obj):
  class COCO (line 70) | class COCO:
    method __init__ (line 71) | def __init__(self, annotation_file=None):
    method createIndex (line 90) | def createIndex(self):
    method info (line 121) | def info(self):
    method getAnnIds (line 129) | def getAnnIds(self, imgIds=[], catIds=[], areaRng=[], iscrowd=None):
    method getCatIds (line 157) | def getCatIds(self, catNms=[], supNms=[], catIds=[]):
    method getImgIds (line 179) | def getImgIds(self, imgIds=[], catIds=[]):
    method loadAnns (line 200) | def loadAnns(self, ids=[]):
    method loadCats (line 211) | def loadCats(self, ids=[]):
    method loadImgs (line 222) | def loadImgs(self, ids=[]):
    method showAnns (line 233) | def showAnns(self, anns):
    method loadRes (line 297) | def loadRes(self, resFile):
    method download (line 358) | def download(self, tarDir = None, imgIds = [] ):
    method loadNumpyAnnotations (line 382) | def loadNumpyAnnotations(self, data):
    method annToRLE (line 405) | def annToRLE(self, ann):
    method annToMask (line 426) | def annToMask(self, ann):

FILE: cocoapi/PythonAPI/pycocotools/cocoeval.py
  class COCOeval (line 10) | class COCOeval:
    method __init__ (line 60) | def __init__(self, cocoGt=None, cocoDt=None, iouType='segm'):
    method _prepare (line 84) | def _prepare(self):
    method evaluate (line 121) | def evaluate(self):
    method computeIoU (line 163) | def computeIoU(self, imgId, catId):
    method computeOks (line 192) | def computeOks(self, imgId, catId):
    method evaluateImg (line 235) | def evaluateImg(self, imgId, catId, aRng, maxDet):
    method accumulate (line 315) | def accumulate(self, p = None):
    method summarize (line 422) | def summarize(self):
    method __str__ (line 495) | def __str__(self):
  class Params (line 498) | class Params:
    method setDetParams (line 502) | def setDetParams(self):
    method setKpParams (line 513) | def setKpParams(self):
    method __init__ (line 525) | def __init__(self, iouType='segm'):

FILE: cocoapi/PythonAPI/pycocotools/mask.py
  function encode (line 80) | def encode(bimask):
  function decode (line 87) | def decode(rleObjs):
  function area (line 93) | def area(rleObjs):
  function toBbox (line 99) | def toBbox(rleObjs):

FILE: cocoapi/common/gason.cpp
  function isspace (line 52) | static inline bool isspace(char c) {
  function isdelim (line 56) | static inline bool isdelim(char c) {
  function isdigit (line 60) | static inline bool isdigit(char c) {
  function isxdigit (line 64) | static inline bool isxdigit(char c) {
  function char2int (line 68) | static inline int char2int(char c) {
  function string2double (line 74) | static double string2double(char *s, char **endptr) {
  function JsonNode (line 120) | static inline JsonNode *insertAfter(JsonNode *tail, JsonNode *node) {
  function JsonValue (line 128) | static inline JsonValue listToValue(JsonTag tag, JsonNode *tail) {
  function jsonParse (line 137) | int jsonParse(char *s, char **endptr, JsonValue *value, JsonAllocator &a...

FILE: cocoapi/common/gason.h
  type JsonTag (line 8) | enum JsonTag {
  type JsonNode (line 18) | struct JsonNode
  function JsonNode (line 54) | JsonNode *toNode() const {
  type JsonNode (line 60) | struct JsonNode {
  type JsonIterator (line 66) | struct JsonIterator {
  function JsonIterator (line 86) | inline JsonIterator end(JsonValue) {

FILE: cocoapi/common/maskApi.c
  function uint (line 11) | uint umin( uint a, uint b ) { return (a<b) ? a : b; }
  function uint (line 12) | uint umax( uint a, uint b ) { return (a>b) ? a : b; }
  function rleInit (line 14) | void rleInit( RLE *R, siz h, siz w, siz m, uint *cnts ) {
  function rleFree (line 19) | void rleFree( RLE *R ) {
  function rlesInit (line 23) | void rlesInit( RLE **R, siz n ) {
  function rlesFree (line 28) | void rlesFree( RLE **R, siz n ) {
  function rleEncode (line 32) | void rleEncode( RLE *R, const byte *M, siz h, siz w, siz n ) {
  function rleDecode (line 43) | void rleDecode( const RLE *R, byte *M, siz n ) {
  function rleMerge (line 49) | void rleMerge( const RLE *R, RLE *M, siz n, int intersect ) {
  function rleArea (line 72) | void rleArea( const RLE *R, siz n, uint *a ) {
  function rleIou (line 77) | void rleIou( RLE *dt, RLE *gt, siz m, siz n, byte *iscrowd, double *o ) {
  function rleNms (line 98) | void rleNms( RLE *dt, siz n, uint *keep, double thr ) {
  function bbIou (line 109) | void bbIou( BB dt, BB gt, siz m, siz n, byte *iscrowd, double *o ) {
  function bbNms (line 122) | void bbNms( BB dt, siz n, uint *keep, double thr ) {
  function rleToBbox (line 133) | void rleToBbox( const RLE *R, BB bb, siz n ) {
  function rleFrBbox (line 149) | void rleFrBbox( RLE *R, const BB bb, siz h, siz w, siz n ) {
  function uintCompare (line 158) | int uintCompare(const void *a, const void *b) {
  function rleFrPoly (line 162) | void rleFrPoly( RLE *R, const double *xy, siz k, siz h, siz w ) {
  function rleFrString (line 218) | void rleFrString( RLE *R, char *s, siz h, siz w ) {

FILE: cocoapi/common/maskApi.h
  type uint (line 9) | typedef unsigned int uint;
  type siz (line 10) | typedef unsigned long siz;
  type byte (line 11) | typedef unsigned char byte;
  type RLE (line 13) | typedef struct { siz h, w, m; uint *cnts; } RLE;

FILE: src/demo.py
  function demo (line 17) | def demo(opt):

FILE: src/flops_counter.py
  function get_model_complexity_info (line 5) | def get_model_complexity_info(model, input_res, print_per_layer_stat=Tru...
  function flops_to_string (line 24) | def flops_to_string(flops, units='GMac', precision=2):
  function params_to_string (line 44) | def params_to_string(params_num):
  function print_model_with_flops (line 50) | def print_model_with_flops(model, units='GMac', precision=3):
  function get_model_parameters_number (line 87) | def get_model_parameters_number(model):
  function add_flops_counting_methods (line 91) | def add_flops_counting_methods(net_main_module):
  function compute_average_flops_cost (line 107) | def compute_average_flops_cost(self):
  function start_flops_count (line 123) | def start_flops_count(self):
  function stop_flops_count (line 134) | def stop_flops_count(self):
  function reset_flops_count (line 145) | def reset_flops_count(self):
  function add_flops_mask (line 155) | def add_flops_mask(module, mask):
  function remove_flops_mask (line 162) | def remove_flops_mask(module):
  function is_supported_instance (line 167) | def is_supported_instance(module):
  function empty_flops_counter_hook (line 177) | def empty_flops_counter_hook(module, input, output):
  function upsample_flops_counter_hook (line 181) | def upsample_flops_counter_hook(module, input, output):
  function relu_flops_counter_hook (line 190) | def relu_flops_counter_hook(module, input, output):
  function linear_flops_counter_hook (line 195) | def linear_flops_counter_hook(module, input, output):
  function pool_flops_counter_hook (line 201) | def pool_flops_counter_hook(module, input, output):
  function bn_flops_counter_hook (line 205) | def bn_flops_counter_hook(module, input, output):
  function conv_flops_counter_hook (line 214) | def conv_flops_counter_hook(conv_module, input, output):
  function batch_counter_hook (line 249) | def batch_counter_hook(module, input, output):
  function add_batch_counter_variables_or_reset (line 256) | def add_batch_counter_variables_or_reset(module):
  function add_batch_counter_hook_function (line 261) | def add_batch_counter_hook_function(module):
  function remove_batch_counter_hook_function (line 269) | def remove_batch_counter_hook_function(module):
  function add_flops_counter_variable_or_reset (line 275) | def add_flops_counter_variable_or_reset(module):
  function add_flops_counter_hook_function (line 280) | def add_flops_counter_hook_function(module):
  function remove_flops_counter_hook_function (line 304) | def remove_flops_counter_hook_function(module):
  function add_flops_mask_variable_or_reset (line 313) | def add_flops_mask_variable_or_reset(module):

FILE: src/init_paths.py
  function add_path (line 4) | def add_path(path):

FILE: src/lib/datasets/dataset/coco.py
  class COCO (line 13) | class COCO(data.Dataset):
    method __init__ (line 21) | def __init__(self, opt, split):
    method _to_float (line 86) | def _to_float(self, x):
    method convert_eval_format (line 89) | def convert_eval_format(self, all_bboxes):
    method __len__ (line 113) | def __len__(self):
    method save_results (line 116) | def save_results(self, results, save_dir):
    method run_eval (line 120) | def run_eval(self, results, save_dir):

FILE: src/lib/datasets/dataset/coco_hp_wodet.py
  class COCOHP_wodet (line 13) | class COCOHP_wodet(data.Dataset):
    method __init__ (line 23) | def __init__(self, opt, split):
    method _to_float (line 69) | def _to_float(self, x):
    method kps_to_bbox (line 72) | def kps_to_bbox(self, kps, mode='max'):
    method convert_eval_format (line 84) | def convert_eval_format(self, all_bboxes, MS=False):
    method __len__ (line 116) | def __len__(self):
    method save_results (line 119) | def save_results(self, results, save_dir,MS=False):
    method run_eval (line 124) | def run_eval(self, results, save_dir, MS=False):

FILE: src/lib/datasets/dataset/crowdpose.py
  class CrowdPose (line 15) | class CrowdPose(data.Dataset):
    method __init__ (line 26) | def __init__(self, opt, split):
    method _to_float (line 74) | def _to_float(self, x):
    method convert_eval_format (line 89) | def convert_eval_format(self, all_bboxes, MS=False):
    method __len__ (line 120) | def __len__(self):
    method save_results (line 123) | def save_results(self, results, save_dir,MS=False):
    method run_eval (line 128) | def run_eval(self, results, save_dir, MS=False):

FILE: src/lib/datasets/dataset/kitti.py
  class KITTI (line 17) | class KITTI(data.Dataset):
    method __init__ (line 23) | def __init__(self, opt, split):
    method __len__ (line 59) | def __len__(self):
    method _to_float (line 62) | def _to_float(self, x):
    method convert_eval_format (line 65) | def convert_eval_format(self, all_bboxes):
    method save_results (line 68) | def save_results(self, results, save_dir):
    method run_eval (line 84) | def run_eval(self, results, save_dir):

FILE: src/lib/datasets/dataset/pascal.py
  class PascalVOC (line 13) | class PascalVOC(data.Dataset):
    method __init__ (line 21) | def __init__(self, opt, split):
    method _to_float (line 54) | def _to_float(self, x):
    method convert_eval_format (line 57) | def convert_eval_format(self, all_bboxes):
    method __len__ (line 69) | def __len__(self):
    method save_results (line 72) | def save_results(self, results, save_dir):
    method run_eval (line 76) | def run_eval(self, results, save_dir):

FILE: src/lib/datasets/dataset_factory.py
  function get_dataset (line 25) | def get_dataset(dataset, task):

FILE: src/lib/datasets/sample/ctdet.py
  class CTDetDataset (line 17) | class CTDetDataset(data.Dataset):
    method _coco_box_to_bbox (line 18) | def _coco_box_to_bbox(self, box):
    method _get_border (line 23) | def _get_border(self, border, size):
    method __getitem__ (line 29) | def __getitem__(self, index):

FILE: src/lib/datasets/sample/ddd.py
  class DddDataset (line 18) | class DddDataset(data.Dataset):
    method _coco_box_to_bbox (line 19) | def _coco_box_to_bbox(self, box):
    method _convert_alpha (line 24) | def _convert_alpha(self, alpha):
    method __getitem__ (line 27) | def __getitem__(self, index):
    method _alpha_to_8 (line 159) | def _alpha_to_8(self, alpha):

FILE: src/lib/datasets/sample/exdet.py
  class EXDetDataset (line 18) | class EXDetDataset(data.Dataset):
    method _coco_box_to_bbox (line 19) | def _coco_box_to_bbox(self, box):
    method _get_border (line 24) | def _get_border(self, border, size):
    method __getitem__ (line 30) | def __getitem__(self, index):

FILE: src/lib/datasets/sample/multi_pose_crowdpose.py
  class MultiPoseCrowdpose (line 17) | class MultiPoseCrowdpose(data.Dataset):
    method _coco_box_to_bbox (line 18) | def _coco_box_to_bbox(self, box):
    method _get_border (line 23) | def _get_border(self, border, size):
    method __getitem__ (line 29) | def __getitem__(self, index):

FILE: src/lib/datasets/sample/multi_pose_wodet.py
  class MultiPoseDataset_wodet (line 17) | class MultiPoseDataset_wodet(data.Dataset):
    method _coco_box_to_bbox (line 18) | def _coco_box_to_bbox(self, box):
    method _get_border (line 23) | def _get_border(self, border, size):
    method __getitem__ (line 29) | def __getitem__(self, index):

FILE: src/lib/detectors/base_detector.py
  class BaseDetector (line 16) | class BaseDetector(object):
    method __init__ (line 17) | def __init__(self, opt):
    method keep_aspect_resize (line 40) | def keep_aspect_resize(self, image,scale, input_res):
    method pre_process (line 57) | def pre_process(self, image, scale, meta=None):
    method process (line 92) | def process(self, images, return_time=False):
    method post_process (line 95) | def post_process(self, dets, meta, scale=1):
    method merge_outputs (line 98) | def merge_outputs(self, detections):
    method debug (line 101) | def debug(self, debugger, images, dets, output, scale=1):
    method show_results (line 104) | def show_results(self, debugger, image, results):
    method run (line 107) | def run(self, image_or_path_or_tensor, meta=None):

FILE: src/lib/detectors/ctdet.py
  class CtdetDetector (line 24) | class CtdetDetector(BaseDetector):
    method __init__ (line 25) | def __init__(self, opt):
    method process (line 28) | def process(self, images, return_time=False):
    method post_process (line 47) | def post_process(self, dets, meta, scale=1):
    method merge_outputs (line 58) | def merge_outputs(self, detections):
    method debug (line 75) | def debug(self, debugger, images, dets, output, scale=1):
    method show_results (line 90) | def show_results(self, debugger, image, results):

FILE: src/lib/detectors/ddd.py
  class DddDetector (line 22) | class DddDetector(BaseDetector):
    method __init__ (line 23) | def __init__(self, opt):
    method pre_process (line 30) | def pre_process(self, image, scale, calib=None):
    method process (line 57) | def process(self, images, return_time=False):
    method post_process (line 75) | def post_process(self, dets, meta, scale=1):
    method merge_outputs (line 82) | def merge_outputs(self, detections):
    method debug (line 90) | def debug(self, debugger, images, dets, output, scale=1):
    method show_results (line 100) | def show_results(self, debugger, image, results):

FILE: src/lib/detectors/exdet.py
  class ExdetDetector (line 23) | class ExdetDetector(BaseDetector):
    method __init__ (line 24) | def __init__(self, opt):
    method process (line 28) | def process(self, images, return_time=False):
    method debug (line 57) | def debug(self, debugger, images, dets, output, scale=1):
    method post_process (line 85) | def post_process(self, dets, meta, scale=1):
    method merge_outputs (line 97) | def merge_outputs(self, detections):
    method show_results (line 125) | def show_results(self, debugger, image, results):

FILE: src/lib/detectors/multi_pose.py
  class MultiPoseDetector (line 24) | class MultiPoseDetector(BaseDetector):
    method __init__ (line 25) | def __init__(self, opt):
    method process (line 29) | def process(self, images, return_time=False):
    method post_process (line 62) | def post_process(self, dets, meta, scale=1):
    method merge_outputs (line 74) | def merge_outputs(self, detections):
    method debug (line 83) | def debug(self, debugger, images, dets, output, scale=1):
    method show_results (line 97) | def show_results(self, debugger, image, results):

FILE: src/lib/detectors/multi_pose_crowdpose.py
  class MultiPoseDetector_crowdpose (line 24) | class MultiPoseDetector_crowdpose(BaseDetector):
    method __init__ (line 25) | def __init__(self, opt):
    method process (line 29) | def process(self, images, return_time=False):
    method post_process (line 74) | def post_process(self, dets, meta, scale=1):
    method kps_to_bbox (line 92) | def kps_to_bbox(self, det, mode='max'):
    method merge_outputs (line 104) | def merge_outputs(self, detections):
    method debug (line 117) | def debug(self, debugger, images, dets, output, scale=1):
    method show_results (line 131) | def show_results(self, debugger, image, results, adapt_pts, image_path):

FILE: src/lib/detectors/multi_pose_wodet.py
  class MultiPoseDetector_wodet (line 24) | class MultiPoseDetector_wodet(BaseDetector):
    method __init__ (line 25) | def __init__(self, opt):
    method process (line 30) | def process(self, images, return_time=False):
    method post_process (line 77) | def post_process(self, dets, meta, scale=1):
    method kps_to_bbox (line 94) | def kps_to_bbox(self, det, mode='max'):
    method merge_outputs (line 106) | def merge_outputs(self, detections):
    method debug (line 118) | def debug(self, debugger, images, dets, output, scale=1):
    method show_results (line 132) | def show_results(self, debugger, image, results, adapt_pts, save_path,...

FILE: src/lib/logger.py
  class Logger (line 17) | class Logger(object):
    method __init__ (line 18) | def __init__(self, opt):
    method write (line 55) | def write(self, txt):
    method close (line 66) | def close(self):
    method scalar_summary (line 69) | def scalar_summary(self, tag, value, step):

FILE: src/lib/models/GCN_utils/gcn2.py
  function import_class (line 10) | def import_class(name):
  function conv_branch_init (line 18) | def conv_branch_init(conv, branches):
  function conv_init (line 27) | def conv_init(conv):
  function bn_init (line 32) | def bn_init(bn, scale):
  class change_channels (line 37) | class change_channels(nn.Module):
    method __init__ (line 38) | def __init__(self, in_channels, out_channels):
    method forward (line 46) | def forward(self, x):
  class unit_gcn (line 51) | class unit_gcn(nn.Module):
    method __init__ (line 52) | def __init__(self, in_channels, out_channels, A, coff_embedding=4, num...
    method forward (line 93) | def forward(self, x):
  class GCN_unit (line 116) | class GCN_unit(nn.Module):
    method __init__ (line 117) | def __init__(self, in_channels, out_channels, A, residual=True):
    method forward (line 128) | def forward(self, x):
  class GCN (line 133) | class GCN(nn.Module):
    method __init__ (line 134) | def __init__(self, in_channels, num_point=7):
    method forward (line 149) | def forward(self, x):

FILE: src/lib/models/GCN_utils/graph.py
  class Graph (line 12) | class Graph:
    method __init__ (line 13) | def __init__(self):
    method get_adjacency_matrix (line 21) | def get_adjacency_matrix(self):

FILE: src/lib/models/GCN_utils/tools.py
  function edge2mat (line 4) | def edge2mat(link, num_node):
  function normalize_digraph (line 11) | def normalize_digraph(A):  # 除以每列的和
  function get_spatial_graph (line 22) | def get_spatial_graph(num_node, self_link, inward, outward):

FILE: src/lib/models/data_parallel.py
  class _DataParallel (line 10) | class _DataParallel(Module):
    method __init__ (line 44) | def __init__(self, module, device_ids=None, output_device=None, dim=0,...
    method forward (line 64) | def forward(self, *inputs, **kwargs):
    method replicate (line 74) | def replicate(self, module, device_ids):
    method scatter (line 77) | def scatter(self, inputs, kwargs, device_ids, chunk_sizes):
    method parallel_apply (line 80) | def parallel_apply(self, replicas, inputs, kwargs):
    method gather (line 83) | def gather(self, outputs, output_device):
  function data_parallel (line 87) | def data_parallel(module, inputs, device_ids=None, output_device=None, d...
  function DataParallel (line 119) | def DataParallel(module, device_ids=None, output_device=None, dim=0, chu...

FILE: src/lib/models/decode.py
  function _nms (line 9) | def _nms(heat, kernel=5):
  function _left_aggregate (line 17) | def _left_aggregate(heat):
  function _right_aggregate (line 30) | def _right_aggregate(heat):
  function _top_aggregate (line 43) | def _top_aggregate(heat):
  function _bottom_aggregate (line 57) | def _bottom_aggregate(heat):
  function _h_aggregate (line 71) | def _h_aggregate(heat, aggr_weight=0.1):
  function _v_aggregate (line 75) | def _v_aggregate(heat, aggr_weight=0.1):
  function _topk_channel (line 92) | def _topk_channel(scores, K=40):
  function _topk (line 103) | def _topk(scores, K=40):
  function agnex_ct_decode (line 123) | def agnex_ct_decode(
  function exct_decode (line 274) | def exct_decode(
  function ddd_decode (line 427) | def ddd_decode(heat, rot, depth, dim, wh=None, reg=None, K=40):
  function ctdet_decode (line 465) | def ctdet_decode(heat, wh, reg=None, cat_spec_wh=False, K=100):
  function multi_pose_decode (line 498) | def multi_pose_decode(
  function multi_pose_decode_wodet (line 583) | def multi_pose_decode_wodet(
  function multi_pose_decode_wodet_vis (line 607) | def multi_pose_decode_wodet_vis(

FILE: src/lib/models/flops_counter.py
  function get_model_complexity_info (line 5) | def get_model_complexity_info(model, input_res, print_per_layer_stat=Tru...
  function flops_to_string (line 24) | def flops_to_string(flops, units='GMac', precision=2):
  function params_to_string (line 44) | def params_to_string(params_num):
  function print_model_with_flops (line 50) | def print_model_with_flops(model, units='GMac', precision=3):
  function get_model_parameters_number (line 87) | def get_model_parameters_number(model):
  function add_flops_counting_methods (line 91) | def add_flops_counting_methods(net_main_module):
  function compute_average_flops_cost (line 107) | def compute_average_flops_cost(self):
  function start_flops_count (line 123) | def start_flops_count(self):
  function stop_flops_count (line 134) | def stop_flops_count(self):
  function reset_flops_count (line 145) | def reset_flops_count(self):
  function add_flops_mask (line 155) | def add_flops_mask(module, mask):
  function remove_flops_mask (line 162) | def remove_flops_mask(module):
  function is_supported_instance (line 167) | def is_supported_instance(module):
  function empty_flops_counter_hook (line 177) | def empty_flops_counter_hook(module, input, output):
  function upsample_flops_counter_hook (line 181) | def upsample_flops_counter_hook(module, input, output):
  function relu_flops_counter_hook (line 190) | def relu_flops_counter_hook(module, input, output):
  function linear_flops_counter_hook (line 195) | def linear_flops_counter_hook(module, input, output):
  function pool_flops_counter_hook (line 201) | def pool_flops_counter_hook(module, input, output):
  function bn_flops_counter_hook (line 205) | def bn_flops_counter_hook(module, input, output):
  function conv_flops_counter_hook (line 214) | def conv_flops_counter_hook(conv_module, input, output):
  function batch_counter_hook (line 249) | def batch_counter_hook(module, input, output):
  function add_batch_counter_variables_or_reset (line 256) | def add_batch_counter_variables_or_reset(module):
  function add_batch_counter_hook_function (line 261) | def add_batch_counter_hook_function(module):
  function remove_batch_counter_hook_function (line 269) | def remove_batch_counter_hook_function(module):
  function add_flops_counter_variable_or_reset (line 275) | def add_flops_counter_variable_or_reset(module):
  function add_flops_counter_hook_function (line 280) | def add_flops_counter_hook_function(module):
  function remove_flops_counter_hook_function (line 304) | def remove_flops_counter_hook_function(module):
  function add_flops_mask_variable_or_reset (line 313) | def add_flops_mask_variable_or_reset(module):

FILE: src/lib/models/losses.py
  function bboxes_giou (line 19) | def bboxes_giou(boxes1,boxes2):
  function off_to_pose (line 101) | def off_to_pose(output, inds):
  function kps_to_pseudo (line 116) | def kps_to_pseudo(pose, is_valid):
  class Giou (line 138) | class Giou(nn.Module):
    method __init__ (line 139) | def __init__(self):
    method forward (line 142) | def forward(self, output, kps_mask, inst_mask, ind, gt_pseudo):
  function _slow_neg_loss (line 153) | def _slow_neg_loss(pred, gt):
  function _neg_loss (line 178) | def _neg_loss(pred, gt):
  function _not_faster_neg_loss (line 205) | def _not_faster_neg_loss(pred, gt):
  function _slow_reg_loss (line 222) | def _slow_reg_loss(regr, gt_regr, mask):
  function _reg_loss (line 233) | def _reg_loss(regr, gt_regr, mask):
  class FocalLoss (line 250) | class FocalLoss(nn.Module):
    method __init__ (line 252) | def __init__(self):
    method forward (line 256) | def forward(self, out, target):
  class RegLoss (line 259) | class RegLoss(nn.Module):
    method __init__ (line 267) | def __init__(self):
    method forward (line 270) | def forward(self, output, mask, ind, target):
  class RegL1Loss (line 275) | class RegL1Loss(nn.Module):
    method __init__ (line 276) | def __init__(self):
    method forward (line 279) | def forward(self, output, mask, ind, target):
  class NormRegL1Loss (line 287) | class NormRegL1Loss(nn.Module):
    method __init__ (line 288) | def __init__(self):
    method forward (line 291) | def forward(self, output, mask, ind, target):
  class RegWeightedL1Loss (line 301) | class RegWeightedL1Loss(nn.Module):
    method __init__ (line 302) | def __init__(self):
    method forward (line 305) | def forward(self, output, mask, ind, target):
  class RegWeightedL1Loss_coco (line 313) | class RegWeightedL1Loss_coco(nn.Module):
    method __init__ (line 314) | def __init__(self, with_bone=False):
    method forward (line 326) | def forward(self, output, mask, ind, target):
  class RegWeightedL1Loss_crowdpose (line 350) | class RegWeightedL1Loss_crowdpose(nn.Module):
    method __init__ (line 351) | def __init__(self, with_bone=True):
    method forward (line 360) | def forward(self, output, mask, ind, target):
  class L1Loss (line 385) | class L1Loss(nn.Module):
    method __init__ (line 386) | def __init__(self):
    method forward (line 389) | def forward(self, output, mask, ind, target):
  class BinRotLoss (line 395) | class BinRotLoss(nn.Module):
    method __init__ (line 396) | def __init__(self):
    method forward (line 399) | def forward(self, output, mask, ind, rotbin, rotres):
  function compute_res_loss (line 404) | def compute_res_loss(output, target):
  function compute_bin_loss (line 408) | def compute_bin_loss(output, target, mask):
  function compute_rot_loss (line 413) | def compute_rot_loss(output, target_bin, target_res, mask):

FILE: src/lib/models/model.py
  function create_model (line 26) | def create_model(arch, heads, head_conv, is_train=True):
  function load_model (line 33) | def load_model(model, model_path, optimizer=None, resume=False,
  function save_model (line 88) | def save_model(path, epoch, model, optimizer=None):

FILE: src/lib/models/networks/DCNv2/dcn_v2.py
  class _DCNv2 (line 16) | class _DCNv2(Function):
    method forward (line 18) | def forward(ctx, input, offset, mask, weight, bias,
    method backward (line 37) | def backward(ctx, grad_output):
  class DCNv2 (line 57) | class DCNv2(nn.Module):
    method __init__ (line 59) | def __init__(self, in_channels, out_channels,
    method reset_parameters (line 75) | def reset_parameters(self):
    method forward (line 83) | def forward(self, input, offset, mask):
  class DCN (line 97) | class DCN(DCNv2):
    method __init__ (line 99) | def __init__(self, in_channels, out_channels,
    method init_offset (line 114) | def init_offset(self):
    method forward (line 118) | def forward(self, input):
  class _DCNv2Pooling (line 132) | class _DCNv2Pooling(Function):
    method forward (line 134) | def forward(ctx, input, rois, offset,
    method backward (line 163) | def backward(ctx, grad_output):
  class DCNv2Pooling (line 187) | class DCNv2Pooling(nn.Module):
    method __init__ (line 189) | def __init__(self,
    method forward (line 208) | def forward(self, input, rois, offset):
  class DCNPooling (line 223) | class DCNPooling(DCNv2Pooling):
    method __init__ (line 225) | def __init__(self,
    method forward (line 259) | def forward(self, input, rois):

FILE: src/lib/models/networks/DCNv2/setup.py
  function get_extensions (line 18) | def get_extensions():

FILE: src/lib/models/networks/DCNv2/src/cpu/dcn_v2_cpu.cpp
  function dcn_v2_cpu_forward (line 17) | at::Tensor
  function dcn_v2_cpu_backward (line 109) | std::vector<at::Tensor> dcn_v2_cpu_backward(const at::Tensor &input,

FILE: src/lib/models/networks/DCNv2/src/cpu/dcn_v2_im2col_cpu.cpp
  function dmcn_im2col_bilinear_cpu (line 27) | float dmcn_im2col_bilinear_cpu(const float *bottom_data, const int data_...
  function dmcn_get_gradient_weight_cpu (line 58) | float dmcn_get_gradient_weight_cpu(float argmax_h, float argmax_w,
  function dmcn_get_coordinate_weight_cpu (line 84) | float dmcn_get_coordinate_weight_cpu(float argmax_h, float argmax_w,
  function modulated_deformable_im2col_cpu_kernel (line 127) | void modulated_deformable_im2col_cpu_kernel(const int n, const float *da...
  function modulated_deformable_col2im_cpu_kernel (line 198) | void modulated_deformable_col2im_cpu_kernel(const int n, const float *da...
  function modulated_deformable_col2im_coord_cpu_kernel (line 259) | void modulated_deformable_col2im_coord_cpu_kernel(const int n, const flo...
  function modulated_deformable_im2col_cpu (line 331) | void modulated_deformable_im2col_cpu(const float* data_im, const float* ...
  function modulated_deformable_col2im_cpu (line 353) | void modulated_deformable_col2im_cpu(const float* data_col, const float*...
  function modulated_deformable_col2im_coord_cpu (line 375) | void modulated_deformable_col2im_coord_cpu(const float* data_col, const ...

FILE: src/lib/models/networks/DCNv2/src/cpu/dcn_v2_psroi_pooling_cpu.cpp
  function T (line 34) | T bilinear_interp_cpu(
  function DeformablePSROIPoolForwardKernelCpu (line 59) | void DeformablePSROIPoolForwardKernelCpu(
  function DeformablePSROIPoolBackwardAccKernelCpu (line 149) | void DeformablePSROIPoolBackwardAccKernelCpu(
  function dcn_v2_psroi_pooling_cpu_forward (line 278) | std::tuple<at::Tensor, at::Tensor>
  function dcn_v2_psroi_pooling_cpu_backward (line 350) | std::tuple<at::Tensor, at::Tensor>

FILE: src/lib/models/networks/DCNv2/src/vision.cpp
  function PYBIND11_MODULE (line 4) | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {

FILE: src/lib/models/networks/DCNv2/testcpu.py
  function conv_identify (line 20) | def conv_identify(weight, bias):
  function check_zero_offset (line 32) | def check_zero_offset():
  function check_gradient_dconv (line 69) | def check_gradient_dconv():
  function check_pooling_zero_offset (line 100) | def check_pooling_zero_offset():
  function check_gradient_dpooling (line 134) | def check_gradient_dpooling():
  function example_dconv (line 169) | def example_dconv():
  function example_dpooling (line 183) | def example_dpooling():
  function example_mdpooling (line 226) | def example_mdpooling():

FILE: src/lib/models/networks/DCNv2/testcuda.py
  function conv_identify (line 20) | def conv_identify(weight, bias):
  function check_zero_offset (line 32) | def check_zero_offset():
  function check_gradient_dconv (line 69) | def check_gradient_dconv():
  function check_pooling_zero_offset (line 100) | def check_pooling_zero_offset():
  function check_gradient_dpooling (line 134) | def check_gradient_dpooling():
  function example_dconv (line 169) | def example_dconv():
  function example_dpooling (line 183) | def example_dpooling():
  function example_mdpooling (line 226) | def example_mdpooling():

FILE: src/lib/models/networks/dlav0.py
  function get_model_url (line 18) | def get_model_url(data='imagenet', name='dla34', hash='ba72cf86'):
  function conv3x3 (line 22) | def conv3x3(in_planes, out_planes, stride=1):
  class BasicBlock (line 28) | class BasicBlock(nn.Module):
    method __init__ (line 29) | def __init__(self, inplanes, planes, stride=1, dilation=1):
    method forward (line 42) | def forward(self, x, residual=None):
  class Bottleneck (line 59) | class Bottleneck(nn.Module):
    method __init__ (line 62) | def __init__(self, inplanes, planes, stride=1, dilation=1):
    method forward (line 79) | def forward(self, x, residual=None):
  class BottleneckX (line 100) | class BottleneckX(nn.Module):
    method __init__ (line 104) | def __init__(self, inplanes, planes, stride=1, dilation=1):
    method forward (line 123) | def forward(self, x, residual=None):
  class Root (line 144) | class Root(nn.Module):
    method __init__ (line 145) | def __init__(self, in_channels, out_channels, kernel_size, residual):
    method forward (line 154) | def forward(self, *x):
  class Tree (line 165) | class Tree(nn.Module):
    method __init__ (line 166) | def __init__(self, levels, block, in_channels, out_channels, stride=1,
    method forward (line 205) | def forward(self, x, residual=None, children=None):
  class DLA (line 221) | class DLA(nn.Module):
    method __init__ (line 222) | def __init__(self, levels, channels, num_classes=1000,
    method _make_level (line 260) | def _make_level(self, block, inplanes, planes, blocks, stride=1):
    method _make_conv_level (line 277) | def _make_conv_level(self, inplanes, planes, convs, stride=1, dilation...
    method forward (line 289) | def forward(self, x):
    method load_pretrained_model (line 304) | def load_pretrained_model(self,  data='imagenet', name='dla34', hash='...
  function dla34 (line 319) | def dla34(pretrained, **kwargs):  # DLA-34
  function dla46_c (line 328) | def dla46_c(pretrained=None, **kwargs):  # DLA-46-C
  function dla46x_c (line 338) | def dla46x_c(pretrained=None, **kwargs):  # DLA-X-46-C
  function dla60x_c (line 348) | def dla60x_c(pretrained, **kwargs):  # DLA-X-60-C
  function dla60 (line 358) | def dla60(pretrained=None, **kwargs):  # DLA-60
  function dla60x (line 368) | def dla60x(pretrained=None, **kwargs):  # DLA-X-60
  function dla102 (line 378) | def dla102(pretrained=None, **kwargs):  # DLA-102
  function dla102x (line 387) | def dla102x(pretrained=None, **kwargs):  # DLA-X-102
  function dla102x2 (line 396) | def dla102x2(pretrained=None, **kwargs):  # DLA-X-102 64
  function dla169 (line 405) | def dla169(pretrained=None, **kwargs):  # DLA-169
  function set_bn (line 414) | def set_bn(bn):
  class Identity (line 420) | class Identity(nn.Module):
    method __init__ (line 421) | def __init__(self):
    method forward (line 424) | def forward(self, x):
  function fill_up_weights (line 428) | def fill_up_weights(up):
  class IDAUp (line 440) | class IDAUp(nn.Module):
    method __init__ (line 441) | def __init__(self, node_kernel, out_dim, channels, up_factors):
    method forward (line 482) | def forward(self, layers):
  class DLAUp (line 499) | class DLAUp(nn.Module):
    method __init__ (line 500) | def __init__(self, channels, scales=(1, 2, 4, 8, 16), in_channels=None):
    method forward (line 515) | def forward(self, layers):
  function fill_fc_weights (line 524) | def fill_fc_weights(layers):
  class DLASeg (line 533) | class DLASeg(nn.Module):
    method __init__ (line 534) | def __init__(self, base_name, heads,
    method forward (line 600) | def forward(self, x):
  function get_pose_net (line 642) | def get_pose_net(num_layers, heads, head_conv=256, down_ratio=4):

FILE: src/lib/models/networks/hrnet.py
  function conv3x3 (line 24) | def conv3x3(in_planes, out_planes, stride=1):
  class BasicBlock (line 30) | class BasicBlock(nn.Module):
    method __init__ (line 33) | def __init__(self, inplanes, planes, stride=1, downsample=None):
    method forward (line 43) | def forward(self, x):
  class Bottleneck (line 62) | class Bottleneck(nn.Module):
    method __init__ (line 65) | def __init__(self, inplanes, planes, stride=1, downsample=None):
    method forward (line 80) | def forward(self, x):
  class HighResolutionModule (line 103) | class HighResolutionModule(nn.Module):
    method __init__ (line 104) | def __init__(self, num_branches, blocks, num_blocks, num_inchannels,
    method _check_branches (line 121) | def _check_branches(self, num_branches, blocks, num_blocks,
    method _make_one_branch (line 141) | def _make_one_branch(self, branch_index, block, num_blocks, num_channels,
    method _make_branches (line 179) | def _make_branches(self, num_branches, block, num_blocks, num_channels):
    method _make_fuse_layers (line 189) | def _make_fuse_layers(self):
    method get_num_inchannels (line 246) | def get_num_inchannels(self):
    method forward (line 249) | def forward(self, x):
  class PoseHighResolutionNet (line 276) | class PoseHighResolutionNet(nn.Module):
    method __init__ (line 278) | def __init__(self, cfg, heads, head_conv, **kwargs):
    method _make_transition_layer (line 374) | def _make_transition_layer(
    method _make_layer (line 415) | def _make_layer(self, block, planes, blocks, stride=1):
    method _make_stage (line 434) | def _make_stage(self, layer_config, num_inchannels,
    method _make_transition_for_head (line 466) | def _make_transition_for_head(self, inplanes, outplanes, kernel=1):
    method forward (line 478) | def forward(self, x):
    method load_weights (line 530) | def load_weights(self, pretrained=''):
    method fill_fc_weights (line 546) | def fill_fc_weights(self, layers):
    method fill_kps_weights (line 553) | def fill_kps_weights(self, layers):
  function get_pose_net (line 568) | def get_pose_net(num_layers, heads, head_conv, **kwargs):

FILE: src/lib/models/networks/large_hourglass.py
  class convolution (line 18) | class convolution(nn.Module):
    method __init__ (line 19) | def __init__(self, k, inp_dim, out_dim, stride=1, with_bn=True):
    method forward (line 27) | def forward(self, x):
  class fully_connected (line 33) | class fully_connected(nn.Module):
    method __init__ (line 34) | def __init__(self, inp_dim, out_dim, with_bn=True):
    method forward (line 43) | def forward(self, x):
  class residual (line 49) | class residual(nn.Module):
    method __init__ (line 50) | def __init__(self, k, inp_dim, out_dim, stride=1, with_bn=True):
    method forward (line 66) | def forward(self, x):
  function make_layer (line 77) | def make_layer(k, inp_dim, out_dim, modules, layer=convolution, **kwargs):
  function make_layer_revr (line 83) | def make_layer_revr(k, inp_dim, out_dim, modules, layer=convolution, **k...
  class MergeUp (line 90) | class MergeUp(nn.Module):
    method forward (line 91) | def forward(self, up1, up2):
  function make_merge_layer (line 94) | def make_merge_layer(dim):
  function make_pool_layer (line 100) | def make_pool_layer(dim):
  function make_unpool_layer (line 103) | def make_unpool_layer(dim):
  function make_kp_layer (line 106) | def make_kp_layer(cnv_dim, curr_dim, out_dim):
  function make_inter_layer (line 112) | def make_inter_layer(dim):
  function make_cnv_layer (line 115) | def make_cnv_layer(inp_dim, out_dim):
  class kp_module (line 118) | class kp_module(nn.Module):
    method __init__ (line 119) | def __init__(
    method forward (line 168) | def forward(self, x):
  class exkp (line 178) | class exkp(nn.Module):
    method __init__ (line 179) | def __init__(
    method fill_kps_weights (line 303) | def fill_kps_weights(self, layers):
    method fill_fc_weights (line 323) | def fill_fc_weights(self, layers):
    method forward (line 329) | def forward(self, image):
  function make_hg_layer (line 357) | def make_hg_layer(kernel, dim0, dim1, mod, layer=convolution, **kwargs):
  class HourglassNet (line 363) | class HourglassNet(exkp):
    method __init__ (line 364) | def __init__(self, heads, num_stacks=2):
  function get_large_hourglass_net (line 378) | def get_large_hourglass_net(num_layers, heads, head_conv):

FILE: src/lib/models/networks/msra_resnet.py
  function conv3x3 (line 36) | def conv3x3(in_planes, out_planes, stride=1):
  class BasicBlock (line 42) | class BasicBlock(nn.Module):
    method __init__ (line 45) | def __init__(self, inplanes, planes, stride=1, downsample=None):
    method forward (line 55) | def forward(self, x):
  class Bottleneck (line 74) | class Bottleneck(nn.Module):
    method __init__ (line 77) | def __init__(self, inplanes, planes, stride=1, downsample=None):
    method forward (line 92) | def forward(self, x):
  class PoseResNet (line 115) | class PoseResNet(nn.Module):
    method __init__ (line 117) | def __init__(self, block, layers, heads, head_conv, **kwargs):
    method _make_layer (line 174) | def _make_layer(self, block, planes, blocks, stride=1):
    method _get_deconv_cfg (line 191) | def _get_deconv_cfg(self, deconv_kernel, index):
    method _make_deconv_layer (line 204) | def _make_deconv_layer(self, num_layers, num_filters, num_kernels):
    method forward (line 231) | def forward(self, x):
    method init_weights (line 254) | def init_weights(self, num_layers, pretrained=True):
  function get_pose_net (line 322) | def get_pose_net(num_layers, heads, head_conv):

FILE: src/lib/models/networks/pose_dla_dcn.py
  function get_model_url (line 21) | def get_model_url(data='imagenet', name='dla34', hash='ba72cf86'):
  function conv3x3 (line 25) | def conv3x3(in_planes, out_planes, stride=1):
  class BasicBlock (line 31) | class BasicBlock(nn.Module):
    method __init__ (line 32) | def __init__(self, inplanes, planes, stride=1, dilation=1):
    method forward (line 45) | def forward(self, x, residual=None):
  class Bottleneck (line 62) | class Bottleneck(nn.Module):
    method __init__ (line 65) | def __init__(self, inplanes, planes, stride=1, dilation=1):
    method forward (line 82) | def forward(self, x, residual=None):
  class BottleneckX (line 103) | class BottleneckX(nn.Module):
    method __init__ (line 107) | def __init__(self, inplanes, planes, stride=1, dilation=1):
    method forward (line 126) | def forward(self, x, residual=None):
  class Root (line 147) | class Root(nn.Module):
    method __init__ (line 148) | def __init__(self, in_channels, out_channels, kernel_size, residual):
    method forward (line 157) | def forward(self, *x):
  class Tree (line 168) | class Tree(nn.Module):
    method __init__ (line 169) | def __init__(self, levels, block, in_channels, out_channels, stride=1,
    method forward (line 208) | def forward(self, x, residual=None, children=None):
  class DLA (line 224) | class DLA(nn.Module):
    method __init__ (line 225) | def __init__(self, levels, channels, num_classes=1000,
    method _make_level (line 257) | def _make_level(self, block, inplanes, planes, blocks, stride=1):
    method _make_conv_level (line 274) | def _make_conv_level(self, inplanes, planes, convs, stride=1, dilation...
    method forward (line 286) | def forward(self, x):
    method load_pretrained_model (line 294) | def load_pretrained_model(self, data='imagenet', name='dla34', hash='b...
  function dla34 (line 312) | def dla34(pretrained=True, **kwargs):  # DLA-34
  class Identity (line 320) | class Identity(nn.Module):
    method __init__ (line 322) | def __init__(self):
    method forward (line 325) | def forward(self, x):
  function fill_fc_weights (line 329) | def fill_fc_weights(layers):
  function fill_up_weights (line 336) | def fill_up_weights(up):
  class DeformConv (line 348) | class DeformConv(nn.Module):
    method __init__ (line 349) | def __init__(self, chi, cho):
    method forward (line 357) | def forward(self, x):
  class IDAUp (line 363) | class IDAUp(nn.Module):
    method __init__ (line 365) | def __init__(self, o, channels, up_f):
    method forward (line 383) | def forward(self, layers, startp, endp):
  class DLAUp (line 393) | class DLAUp(nn.Module):
    method __init__ (line 394) | def __init__(self, startp, channels, scales, in_channels=None):
    method forward (line 410) | def forward(self, layers):
  class Interpolate (line 419) | class Interpolate(nn.Module):
    method __init__ (line 420) | def __init__(self, scale, mode):
    method forward (line 425) | def forward(self, x):
  class DLASeg (line 430) | class DLASeg(nn.Module):
    method __init__ (line 431) | def __init__(self, base_name, heads, pretrained, down_ratio, final_ker...
    method forward (line 473) | def forward(self, x):
  function get_pose_net (line 488) | def get_pose_net(num_layers, heads, head_conv=256, down_ratio=4):

FILE: src/lib/models/networks/pose_dla_dcn_v2.py
  function get_model_url (line 24) | def get_model_url(data='imagenet', name='dla34', hash='ba72cf86'):
  function conv3x3 (line 28) | def conv3x3(in_planes, out_planes, stride=1):
  class BasicBlock (line 34) | class BasicBlock(nn.Module):
    method __init__ (line 35) | def __init__(self, inplanes, planes, stride=1, dilation=1):
    method forward (line 48) | def forward(self, x, residual=None):
  class Bottleneck (line 65) | class Bottleneck(nn.Module):
    method __init__ (line 68) | def __init__(self, inplanes, planes, stride=1, dilation=1):
    method forward (line 85) | def forward(self, x, residual=None):
  class BottleneckX (line 106) | class BottleneckX(nn.Module):
    method __init__ (line 110) | def __init__(self, inplanes, planes, stride=1, dilation=1):
    method forward (line 129) | def forward(self, x, residual=None):
  class Root (line 150) | class Root(nn.Module):
    method __init__ (line 151) | def __init__(self, in_channels, out_channels, kernel_size, residual):
    method forward (line 160) | def forward(self, *x):
  class Tree (line 171) | class Tree(nn.Module):
    method __init__ (line 172) | def __init__(self, levels, block, in_channels, out_channels, stride=1,
    method forward (line 211) | def forward(self, x, residual=None, children=None):
  class DLA (line 227) | class DLA(nn.Module):
    method __init__ (line 228) | def __init__(self, levels, channels, num_classes=1000,
    method _make_level (line 260) | def _make_level(self, block, inplanes, planes, blocks, stride=1):
    method _make_conv_level (line 277) | def _make_conv_level(self, inplanes, planes, convs, stride=1, dilation...
    method forward (line 289) | def forward(self, x):
    method load_pretrained_model (line 297) | def load_pretrained_model(self, data='imagenet', name='dla34', hash='b...
  function dla34 (line 316) | def dla34(pretrained=True, **kwargs):  # DLA-34
  class Identity (line 324) | class Identity(nn.Module):
    method __init__ (line 326) | def __init__(self):
    method forward (line 329) | def forward(self, x):
  function fill_fc_weights (line 333) | def fill_fc_weights(layers):
  function fill_kps_weights (line 339) | def fill_kps_weights(layers):
  function fill_up_weights (line 359) | def fill_up_weights(up):
  class DeformConv (line 371) | class DeformConv(nn.Module):
    method __init__ (line 372) | def __init__(self, chi, cho):
    method forward (line 380) | def forward(self, x):
  class IDAUp (line 386) | class IDAUp(nn.Module):
    method __init__ (line 388) | def __init__(self, o, channels, up_f):
    method forward (line 406) | def forward(self, layers, startp, endp):
  class DLAUp (line 416) | class DLAUp(nn.Module):
    method __init__ (line 417) | def __init__(self, startp, channels, scales, in_channels=None):
    method forward (line 433) | def forward(self, layers):
  class Interpolate (line 442) | class Interpolate(nn.Module):
    method __init__ (line 443) | def __init__(self, scale, mode):
    method forward (line 448) | def forward(self, x):
  class DLASeg (line 453) | class DLASeg(nn.Module):
    method __init__ (line 454) | def __init__(self, base_name, heads, pretrained, down_ratio, final_ker...
    method forward (line 532) | def forward(self, x):
  function get_model_parameters_number (line 551) | def get_model_parameters_number(model):
  function get_pose_net (line 555) | def get_pose_net(num_layers, heads, head_conv=256, down_ratio=4):

FILE: src/lib/models/networks/resnet_dcn.py
  function conv3x3 (line 32) | def conv3x3(in_planes, out_planes, stride=1):
  class BasicBlock (line 38) | class BasicBlock(nn.Module):
    method __init__ (line 41) | def __init__(self, inplanes, planes, stride=1, downsample=None):
    method forward (line 51) | def forward(self, x):
  class Bottleneck (line 70) | class Bottleneck(nn.Module):
    method __init__ (line 73) | def __init__(self, inplanes, planes, stride=1, downsample=None):
    method forward (line 88) | def forward(self, x):
  function fill_up_weights (line 110) | def fill_up_weights(up):
  function fill_fc_weights (line 121) | def fill_fc_weights(layers):
  class PoseResNet (line 130) | class PoseResNet(nn.Module):
    method __init__ (line 132) | def __init__(self, block, layers, heads, head_conv):
    method _make_layer (line 179) | def _make_layer(self, block, planes, blocks, stride=1):
    method _get_deconv_cfg (line 196) | def _get_deconv_cfg(self, deconv_kernel, index):
    method _make_deconv_layer (line 209) | def _make_deconv_layer(self, num_layers, num_filters, num_kernels):
    method forward (line 248) | def forward(self, x):
    method init_weights (line 265) | def init_weights(self, num_layers):
  function get_pose_net (line 285) | def get_pose_net(num_layers, heads, head_conv=256):

FILE: src/lib/models/oks_loss.py
  function off_to_pose (line 6) | def off_to_pose(output, target, inds):
  function oks_overlaps (line 24) | def oks_overlaps(kpt_preds, kpt_gts, kpt_valids, kpt_areas, ind, sigmas):
  function oks_loss (line 60) | def oks_loss(pred,
  class OKSLoss (line 92) | class OKSLoss(nn.Module):
    method __init__ (line 105) | def __init__(self,
    method forward (line 129) | def forward(self,

FILE: src/lib/models/predictor.py
  class conv_bn_relu (line 10) | class conv_bn_relu(nn.Module):
    method __init__ (line 11) | def __init__(self, inp_dim, out_dim, k, stride=1, with_bn=True):
    method forward (line 19) | def forward(self, x):
  class Feat_sampler (line 27) | class Feat_sampler(nn.Module):
    method __init__ (line 28) | def __init__(self,head_conv, hps_channel, moudling=False):
    method feat_sampler (line 82) | def feat_sampler(self, kps_feat, ct_feat, offset1):
    method post_process (line 104) | def post_process(self,res_dict):
    method forward (line 127) | def forward(self, kps_feat, ct_feat):

FILE: src/lib/models/py_utils/_cpools/__init__.py
  class TopPoolFunction (line 8) | class TopPoolFunction(Function):
    method forward (line 10) | def forward(ctx, input):
    method backward (line 16) | def backward(ctx, grad_output):
  class BottomPoolFunction (line 21) | class BottomPoolFunction(Function):
    method forward (line 23) | def forward(ctx, input):
    method backward (line 29) | def backward(ctx, grad_output):
  class LeftPoolFunction (line 34) | class LeftPoolFunction(Function):
    method forward (line 36) | def forward(ctx, input):
    method backward (line 42) | def backward(ctx, grad_output):
  class RightPoolFunction (line 47) | class RightPoolFunction(Function):
    method forward (line 49) | def forward(ctx, input):
    method backward (line 55) | def backward(ctx, grad_output):
  class TopPool (line 60) | class TopPool(nn.Module):
    method forward (line 61) | def forward(self, x):
  class BottomPool (line 64) | class BottomPool(nn.Module):
    method forward (line 65) | def forward(self, x):
  class LeftPool (line 68) | class LeftPool(nn.Module):
    method forward (line 69) | def forward(self, x):
  class RightPool (line 72) | class RightPool(nn.Module):
    method forward (line 73) | def forward(self, x):

FILE: src/lib/models/py_utils/_cpools/src/bottom_pool.cpp
  function pool_forward (line 5) | std::vector<at::Tensor> pool_forward(
  function pool_backward (line 33) | std::vector<at::Tensor> pool_backward(
  function PYBIND11_MODULE (line 76) | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {

FILE: src/lib/models/py_utils/_cpools/src/left_pool.cpp
  function pool_forward (line 5) | std::vector<at::Tensor> pool_forward(
  function pool_backward (line 33) | std::vector<at::Tensor> pool_backward(
  function PYBIND11_MODULE (line 76) | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {

FILE: src/lib/models/py_utils/_cpools/src/right_pool.cpp
  function pool_forward (line 5) | std::vector<at::Tensor> pool_forward(
  function pool_backward (line 33) | std::vector<at::Tensor> pool_backward(
  function PYBIND11_MODULE (line 76) | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {

FILE: src/lib/models/py_utils/_cpools/src/top_pool.cpp
  function top_pool_forward (line 5) | std::vector<at::Tensor> top_pool_forward(
  function top_pool_backward (line 33) | std::vector<at::Tensor> top_pool_backward(
  function PYBIND11_MODULE (line 76) | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {

FILE: src/lib/models/py_utils/data_parallel.py
  class DataParallel (line 9) | class DataParallel(Module):
    method __init__ (line 43) | def __init__(self, module, device_ids=None, output_device=None, dim=0,...
    method forward (line 63) | def forward(self, *inputs, **kwargs):
    method replicate (line 73) | def replicate(self, module, device_ids):
    method scatter (line 76) | def scatter(self, inputs, kwargs, device_ids, chunk_sizes):
    method parallel_apply (line 79) | def parallel_apply(self, replicas, inputs, kwargs):
    method gather (line 82) | def gather(self, outputs, output_device):
  function data_parallel (line 86) | def data_parallel(module, inputs, device_ids=None, output_device=None, d...

FILE: src/lib/models/py_utils/kp.py
  class kp_module (line 14) | class kp_module(nn.Module):
    method __init__ (line 15) | def __init__(
    method forward (line 64) | def forward(self, x):
  class kp (line 73) | class kp(nn.Module):
    method __init__ (line 74) | def __init__(
    method _train (line 166) | def _train(self, *xs):
    method _test (line 211) | def _test(self, *xs, **kwargs):
    method forward (line 251) | def forward(self, *xs, **kwargs):
  class AELoss (line 256) | class AELoss(nn.Module):
    method __init__ (line 257) | def __init__(self, pull_weight=1, push_weight=1, regr_weight=1, focal_...
    method forward (line 267) | def forward(self, outs, targets):

FILE: src/lib/models/py_utils/kp_utils.py
  class MergeUp (line 6) | class MergeUp(nn.Module):
    method forward (line 7) | def forward(self, up1, up2):
  function make_merge_layer (line 10) | def make_merge_layer(dim):
  function make_tl_layer (line 13) | def make_tl_layer(dim):
  function make_br_layer (line 16) | def make_br_layer(dim):
  function make_pool_layer (line 19) | def make_pool_layer(dim):
  function make_unpool_layer (line 22) | def make_unpool_layer(dim):
  function make_kp_layer (line 25) | def make_kp_layer(cnv_dim, curr_dim, out_dim):
  function make_inter_layer (line 31) | def make_inter_layer(dim):
  function make_cnv_layer (line 34) | def make_cnv_layer(inp_dim, out_dim):
  function _gather_feat (line 37) | def _gather_feat(feat, ind, mask=None):
  function _nms (line 47) | def _nms(heat, kernel=1):
  function _tranpose_and_gather_feat (line 54) | def _tranpose_and_gather_feat(feat, ind):
  function _topk (line 60) | def _topk(scores, K=20):
  function _decode (line 72) | def _decode(
  function _neg_loss (line 152) | def _neg_loss(preds, gt):
  function _sigmoid (line 176) | def _sigmoid(x):
  function _ae_loss (line 180) | def _ae_loss(tag0, tag1, mask):
  function _regr_loss (line 206) | def _regr_loss(regr, gt_regr, mask):

FILE: src/lib/models/py_utils/scatter_gather.py
  function scatter (line 6) | def scatter(inputs, target_gpus, dim=0, chunk_sizes=None):
  function scatter_kwargs (line 28) | def scatter_kwargs(inputs, kwargs, target_gpus, dim=0, chunk_sizes=None):

FILE: src/lib/models/py_utils/utils.py
  class convolution (line 4) | class convolution(nn.Module):
    method __init__ (line 5) | def __init__(self, k, inp_dim, out_dim, stride=1, with_bn=True):
    method forward (line 13) | def forward(self, x):
  class fully_connected (line 19) | class fully_connected(nn.Module):
    method __init__ (line 20) | def __init__(self, inp_dim, out_dim, with_bn=True):
    method forward (line 29) | def forward(self, x):
  class residual (line 35) | class residual(nn.Module):
    method __init__ (line 36) | def __init__(self, k, inp_dim, out_dim, stride=1, with_bn=True):
    method forward (line 52) | def forward(self, x):
  function make_layer (line 63) | def make_layer(k, inp_dim, out_dim, modules, layer=convolution, **kwargs):
  function make_layer_revr (line 69) | def make_layer_revr(k, inp_dim, out_dim, modules, layer=convolution, **k...

FILE: src/lib/models/resample2d_package/resample2d.py
  class Resample2dFunction (line 5) | class Resample2dFunction(Function):
    method forward (line 8) | def forward(ctx, input1, input2, kernel_size=1, bilinear= True):
    method backward (line 25) | def backward(ctx, grad_output):
  class Resample2d (line 40) | class Resample2d(Module):
    method __init__ (line 42) | def __init__(self, kernel_size=1, bilinear = True):
    method forward (line 47) | def forward(self, input1, input2):

FILE: src/lib/models/resample2d_package/resample2d_cuda.cc
  function resample2d_cuda_forward (line 6) | int resample2d_cuda_forward(
  function resample2d_cuda_backward (line 15) | int resample2d_cuda_backward(
  function PYBIND11_MODULE (line 28) | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {

FILE: src/lib/models/scatter_gather.py
  function scatter (line 6) | def scatter(inputs, target_gpus, dim=0, chunk_sizes=None):
  function scatter_kwargs (line 28) | def scatter_kwargs(inputs, kwargs, target_gpus, dim=0, chunk_sizes=None):

FILE: src/lib/models/utils.py
  function _sigmoid (line 8) | def _sigmoid(x):
  function _gather_feat (line 12) | def _gather_feat(feat, ind, mask=None):
  function _transpose_and_gather_feat (line 22) | def _transpose_and_gather_feat(feat, ind):
  function flip_tensor (line 29) | def flip_tensor(x):
  function flip_lr (line 34) | def flip_lr(x, flip_idx):
  function flip_lr_off (line 42) | def flip_lr_off(x, flip_idx):

FILE: src/lib/opts.py
  class opts (line 9) | class opts(object):
    method __init__ (line 10) | def __init__(self):
    method parse (line 233) | def parse(self, args=''):
    method update_dataset_info_and_set_heads (line 290) | def update_dataset_info_and_set_heads(self, opt, dataset):
    method init (line 360) | def init(self, args=''):

FILE: src/lib/trains/base_trainer.py
  class ModelWithLoss (line 12) | class ModelWithLoss(torch.nn.Module):
    method __init__ (line 13) | def __init__(self, model, loss):
    method forward (line 18) | def forward(self, batch):
  class BaseTrainer (line 23) | class BaseTrainer(object):
    method __init__ (line 24) | def __init__(
    method set_device (line 31) | def set_device(self, gpus, chunk_sizes, device):
    method run_epoch (line 45) | def run_epoch(self, phase, epoch, data_loader):
    method debug (line 111) | def debug(self, batch, output, iter_id):
    method save_result (line 114) | def save_result(self, output, batch, results):
    method _get_losses (line 117) | def _get_losses(self, opt):
    method val (line 120) | def val(self, epoch, data_loader):
    method train (line 123) | def train(self, epoch, data_loader):

FILE: src/lib/trains/ctdet.py
  class CtdetLoss (line 17) | class CtdetLoss(torch.nn.Module):
    method __init__ (line 18) | def __init__(self, opt):
    method forward (line 28) | def forward(self, outputs, batch):
  class CtdetTrainer (line 76) | class CtdetTrainer(BaseTrainer):
    method __init__ (line 77) | def __init__(self, opt, model, optimizer=None):
    method _get_losses (line 80) | def _get_losses(self, opt):
    method debug (line 85) | def debug(self, batch, output, iter_id):
    method save_result (line 122) | def save_result(self, output, batch, results):

FILE: src/lib/trains/ddd.py
  class DddLoss (line 16) | class DddLoss(torch.nn.Module):
    method __init__ (line 17) | def __init__(self, opt):
    method forward (line 24) | def forward(self, outputs, batch):
  class DddTrainer (line 66) | class DddTrainer(BaseTrainer):
    method __init__ (line 67) | def __init__(self, opt, model, optimizer=None):
    method _get_losses (line 70) | def _get_losses(self, opt):
    method debug (line 76) | def debug(self, batch, output, iter_id):
    method save_result (line 137) | def save_result(self, output, batch, results):

FILE: src/lib/trains/exdet.py
  class ExdetLoss (line 17) | class ExdetLoss(torch.nn.Module):
    method __init__ (line 18) | def __init__(self, opt):
    method forward (line 25) | def forward(self, outputs, batch):
  class ExdetTrainer (line 43) | class ExdetTrainer(BaseTrainer):
    method __init__ (line 44) | def __init__(self, opt, model, optimizer=None):
    method _get_losses (line 48) | def _get_losses(self, opt):
    method debug (line 53) | def debug(self, batch, output, iter_id):

FILE: src/lib/trains/multi_pose.py
  class MultiPoseLoss (line 16) | class MultiPoseLoss(torch.nn.Module):
    method __init__ (line 17) | def __init__(self, opt):
    method forward (line 27) | def forward(self, outputs, batch):
  class MultiPoseTrainer (line 88) | class MultiPoseTrainer(BaseTrainer):
    method __init__ (line 89) | def __init__(self, opt, model, optimizer=None):
    method _get_losses (line 92) | def _get_losses(self, opt):
    method debug (line 98) | def debug(self, batch, output, iter_id):
    method save_result (line 149) | def save_result(self, output, batch, results):

FILE: src/lib/trains/multi_pose_crowdpose.py
  class MultiPoseLoss (line 17) | class MultiPoseLoss(torch.nn.Module):
    method __init__ (line 18) | def __init__(self, opt):
    method forward (line 31) | def forward(self, outputs, batch):
  class MultiPoseTrainer_crowdpose (line 97) | class MultiPoseTrainer_crowdpose(BaseTrainer):
    method __init__ (line 98) | def __init__(self, opt, model, optimizer=None):
    method _get_losses (line 101) | def _get_losses(self, opt):
    method debug (line 106) | def debug(self, batch, output, iter_id):
    method save_result (line 157) | def save_result(self, output, batch, results):

FILE: src/lib/trains/multi_pose_wodet.py
  class MultiPoseLoss (line 17) | class MultiPoseLoss(torch.nn.Module):
    method __init__ (line 18) | def __init__(self, opt):
    method forward (line 30) | def forward(self, outputs, batch):
  class MultiPoseTrainer_wodet (line 96) | class MultiPoseTrainer_wodet(BaseTrainer):
    method __init__ (line 97) | def __init__(self, opt, model, optimizer=None):
    method _get_losses (line 100) | def _get_losses(self, opt):
    method debug (line 105) | def debug(self, batch, output, iter_id):
    method save_result (line 156) | def save_result(self, output, batch, results):

FILE: src/lib/utils/ddd_utils.py
  function compute_box_3d (line 8) | def compute_box_3d(dim, location, rotation_y):
  function project_to_image (line 25) | def project_to_image(pts_3d, P):
  function compute_orientation_3d (line 36) | def compute_orientation_3d(dim, location, rotation_y):
  function draw_box_3d (line 49) | def draw_box_3d(image, corners, c=(0, 0, 255)):
  function unproject_2d_to_3d (line 66) | def unproject_2d_to_3d(pt_2d, depth, P):
  function alpha2rot_y (line 77) | def alpha2rot_y(alpha, x, cx, fx):
  function rot_y2alpha (line 91) | def rot_y2alpha(rot_y, x, cx, fx):
  function ddd2locrot (line 106) | def ddd2locrot(center, alpha, dim, depth, calib):
  function project_3d_bbox (line 113) | def project_3d_bbox(location, dim, rotation_y, calib):

FILE: src/lib/utils/debugger.py
  class Debugger (line 9) | class Debugger(object):
    method __init__ (line 10) | def __init__(self, ipynb=False, theme='black',
    method add_img (line 105) | def add_img(self, img, img_id='default', revert_color=False):
    method add_mask (line 110) | def add_mask(self, mask, bg, imgId = 'default', trans = 0.8):
    method show_img (line 115) | def show_img(self, pause = False, imgId = 'default'):
    method add_blend_img (line 120) | def add_blend_img(self, back, fore, img_id='blend', trans=0.7):
    method gen_colormap (line 151) | def gen_colormap(self, img, output_res=None):
    method gen_colormap_hp (line 182) | def gen_colormap_hp(self, img, output_res=None):
    method add_rect (line 196) | def add_rect(self, rect1, rect2, c, conf=1, img_id='default'):
    method add_coco_bbox (line 205) | def add_coco_bbox(self, bbox, cat, conf=1, show_txt=True, img_id='defa...
    method add_coco_hp_with_ap (line 236) | def add_coco_hp_with_ap(self, points, adapt_pts, save_path, img_name, ...
    method show_all_imgs (line 268) | def show_all_imgs(self, pause=False, time=0):
    method save_img (line 292) | def save_img(self, imgId='default', save_path='./cache/debug/',img_nam...
    method save_all_imgs (line 296) | def save_all_imgs(self, path='./cache/debug/', prefix='', genID=False):
    method remove_side (line 307) | def remove_side(self, img_id, img):
    method project_3d_to_bird (line 326) | def project_3d_to_bird(self, pt):
    method add_ct_detection (line 332) | def add_ct_detection(
    method add_3d_detection (line 368) | def add_3d_detection(
    method compose_vis_add (line 389) | def compose_vis_add(
    method add_2d_detection (line 417) | def add_2d_detection(
    method add_bird_view (line 430) | def add_bird_view(self, dets, center_thresh=0.3, img_id='bird'):
    method add_bird_views (line 454) | def add_bird_views(self, dets_dt, dets_gt, center_thresh=0.3, img_id='...

FILE: src/lib/utils/image.py
  function flip (line 16) | def flip(img):
  function transform_preds (line 19) | def transform_preds(coords, center, scale, output_size):
  function get_affine_transform (line 27) | def get_affine_transform(center,
  function affine_transform (line 63) | def affine_transform(pt, t):
  function get_3rd_point (line 69) | def get_3rd_point(a, b):
  function get_dir (line 74) | def get_dir(src_point, rot_rad):
  function crop (line 84) | def crop(img, center, scale, output_size, rot=0):
  function gaussian_radius (line 95) | def gaussian_radius(det_size, min_overlap=0.7):
  function gaussian2D (line 118) | def gaussian2D(shape, sigma=1):
  function draw_umich_gaussian (line 126) | def draw_umich_gaussian(heatmap, center, radius, k=1):
  function draw_dense_reg (line 143) | def draw_dense_reg(regmap, heatmap, center, value, radius, is_offset=Fal...
  function draw_msra_gaussian (line 175) | def draw_msra_gaussian(heatmap, center, sigma):
  function grayscale (line 198) | def grayscale(image):
  function lighting_ (line 201) | def lighting_(data_rng, image, alphastd, eigval, eigvec):
  function blend_ (line 205) | def blend_(alpha, image1, image2):
  function saturation_ (line 210) | def saturation_(data_rng, image, gs, gs_mean, var):
  function brightness_ (line 214) | def brightness_(data_rng, image, gs, gs_mean, var):
  function contrast_ (line 218) | def contrast_(data_rng, image, gs, gs_mean, var):
  function color_aug (line 222) | def color_aug(data_rng, image, eig_val, eig_vec):

FILE: src/lib/utils/oracle_utils.py
  function gen_oracle_map (line 9) | def gen_oracle_map(feat, ind, w, h):

FILE: src/lib/utils/post_process.py
  function get_pred_depth (line 10) | def get_pred_depth(depth):
  function get_alpha (line 13) | def get_alpha(rot):
  function ddd_post_process_2d (line 23) | def ddd_post_process_2d(dets, c, s, opt):
  function ddd_post_process_3d (line 49) | def ddd_post_process_3d(dets, calibs):
  function ddd_post_process (line 75) | def ddd_post_process(dets, c, s, calibs, opt):
  function ctdet_post_process (line 83) | def ctdet_post_process(dets, c, s, h, w, num_classes):
  function multi_pose_post_process (line 103) | def multi_pose_post_process(dets, c, s, h, w):
  function multi_pose_wodet_post_process (line 117) | def multi_pose_wodet_post_process(dets, c, s, h, w):
  function multi_pose_crowdpose_post_process (line 130) | def multi_pose_crowdpose_post_process(dets, c, s, h, w):
  function multi_pose_wodet_post_process_vis (line 143) | def multi_pose_wodet_post_process_vis(dets, c, s, h, w):
  function multi_pose_crowdpose_post_process_vis (line 159) | def multi_pose_crowdpose_post_process_vis(dets, c, s, h, w):

FILE: src/lib/utils/utils.py
  class AverageMeter (line 7) | class AverageMeter(object):
    method __init__ (line 9) | def __init__(self):
    method reset (line 12) | def reset(self):
    method update (line 18) | def update(self, val, n=1):

FILE: src/main.py
  function main (line 19) | def main(opt):

FILE: src/test.py
  class PrefetchDataset (line 22) | class PrefetchDataset(torch.utils.data.Dataset):
    method __init__ (line 23) | def __init__(self, opt, dataset, pre_process_func):
    method __getitem__ (line 30) | def __getitem__(self, index):
    method __len__ (line 44) | def __len__(self):
  function prefetch_test (line 47) | def prefetch_test(opt):
  function test (line 85) | def test(opt):

FILE: src/tools/_init_paths.py
  function add_path (line 4) | def add_path(path):

FILE: src/tools/calc_coco_overlap.py
  function iou (line 32) | def iou(box1, box2):
  function generate_anchors (line 40) | def generate_anchors(
  function _generate_anchors (line 54) | def _generate_anchors(base_size, scales, aspect_ratios):
  function _whctrs (line 66) | def _whctrs(anchor):
  function _mkanchors (line 75) | def _mkanchors(ws, hs, x_ctr, y_ctr):
  function _ratio_enum (line 92) | def _ratio_enum(anchor, ratios):
  function _scale_enum (line 103) | def _scale_enum(anchor, scales):
  function _coco_box_to_bbox (line 112) | def _coco_box_to_bbox(box):
  function count_agnostic (line 117) | def count_agnostic(split):
  function count (line 135) | def count(split):
  function count_iou (line 168) | def count_iou(split):
  function count_anchor (line 201) | def count_anchor(split):
  function count_size (line 284) | def count_size(split):

FILE: src/tools/convert_kitti_to_coco.py
  function _bbox_to_coco_bbox (line 39) | def _bbox_to_coco_bbox(bbox):
  function read_clib (line 43) | def read_clib(calib_path):

FILE: src/tools/kitti_eval/evaluate_object_3d.cpp
  type DIFFICULTY (line 38) | enum DIFFICULTY{EASY=0, MODERATE=1, HARD=2}
  type METRIC (line 41) | enum METRIC{IMAGE=0, GROUND=1, BOX3D=2}
  type CLASSES (line 49) | enum CLASSES{CAR=0, PEDESTRIAN=1, CYCLIST=2}
  function initGlobals (line 62) | void initGlobals () {
  type tPrData (line 73) | struct tPrData {
    method tPrData (line 79) | tPrData () :
  type tBox (line 84) | struct tBox {
    method tBox (line 91) | tBox (string type, double x1,double y1,double x2,double y2,double alph...
  type tGroundtruth (line 96) | struct tGroundtruth {
    method tGroundtruth (line 103) | tGroundtruth () :
    method tGroundtruth (line 105) | tGroundtruth (tBox box,double truncation,int32_t occlusion) :
    method tGroundtruth (line 107) | tGroundtruth (string type,double x1,double y1,double x2,double y2,doub...
  type tDetection (line 112) | struct tDetection {
    method tDetection (line 118) | tDetection ():
    method tDetection (line 120) | tDetection (tBox box,double thresh) :
    method tDetection (line 122) | tDetection (string type,double x1,double y1,double x2,double y2,double...
  function loadDetections (line 132) | vector<tDetection> loadDetections(string file_name, bool &compute_aos,
  function loadGroundtruth (line 179) | vector<tGroundtruth> loadGroundtruth(string file_name,bool &success) {
  function saveStats (line 205) | void saveStats (const vector<double> &precision, const vector<double> &a...
  function imageBoxOverlap (line 228) | inline double imageBoxOverlap(tBox a, tBox b, int32_t criterion=-1){
  function imageBoxOverlap (line 264) | inline double imageBoxOverlap(tDetection a, tGroundtruth b, int32_t crit...
  function Polygon (line 270) | Polygon toPolygon(const T& g) {
  function groundBoxOverlap (line 295) | inline double groundBoxOverlap(tDetection d, tGroundtruth g, int32_t cri...
  function box3DOverlap (line 318) | inline double box3DOverlap(tDetection d, tGroundtruth g, int32_t criteri...
  function getThresholds (line 347) | vector<double> getThresholds(vector<double> &v, double n_groundtruth){
  function cleanData (line 382) | void cleanData(CLASSES current_class, const vector<tGroundtruth> &gt, co...
  function tPrData (line 456) | tPrData computeStatistics(CLASSES current_class, const vector<tGroundtru...
    method tPrData (line 79) | tPrData () :
  function eval_class (line 620) | bool eval_class (FILE *fp_det, FILE *fp_ori, CLASSES current_class,
  function saveAndPlotPlots (line 706) | void saveAndPlotPlots(string dir_name,string file_name,string obj_type,v...
  function eval (line 769) | bool eval(string result_sha,Mail* mail){
  function main (line 888) | int32_t main (int32_t argc,char *argv[]) {

FILE: src/tools/kitti_eval/evaluate_object_3d_offline.cpp
  type DIFFICULTY (line 37) | enum DIFFICULTY{EASY=0, MODERATE=1, HARD=2}
  type METRIC (line 40) | enum METRIC{IMAGE=0, GROUND=1, BOX3D=2}
  type CLASSES (line 48) | enum CLASSES{CAR=0, PEDESTRIAN=1, CYCLIST=2}
  function initGlobals (line 62) | void initGlobals () {
  type tPrData (line 73) | struct tPrData {
    method tPrData (line 79) | tPrData () :
  type tBox (line 84) | struct tBox {
    method tBox (line 91) | tBox (string type, double x1,double y1,double x2,double y2,double alph...
  type tGroundtruth (line 96) | struct tGroundtruth {
    method tGroundtruth (line 103) | tGroundtruth () :
    method tGroundtruth (line 105) | tGroundtruth (tBox box,double truncation,int32_t occlusion) :
    method tGroundtruth (line 107) | tGroundtruth (string type,double x1,double y1,double x2,double y2,doub...
  type tDetection (line 112) | struct tDetection {
    method tDetection (line 118) | tDetection ():
    method tDetection (line 120) | tDetection (tBox box,double thresh) :
    method tDetection (line 122) | tDetection (string type,double x1,double y1,double x2,double y2,double...
  function loadDetections (line 132) | vector<tDetection> loadDetections(string file_name, bool &compute_aos,
  function loadGroundtruth (line 179) | vector<tGroundtruth> loadGroundtruth(string file_name,bool &success) {
  function saveStats (line 205) | void saveStats (const vector<double> &precision, const vector<double> &a...
  function imageBoxOverlap (line 228) | inline double imageBoxOverlap(tBox a, tBox b, int32_t criterion=-1){
  function imageBoxOverlap (line 264) | inline double imageBoxOverlap(tDetection a, tGroundtruth b, int32_t crit...
  function Polygon (line 270) | Polygon toPolygon(const T& g) {
  function groundBoxOverlap (line 295) | inline double groundBoxOverlap(tDetection d, tGroundtruth g, int32_t cri...
  function box3DOverlap (line 318) | inline double box3DOverlap(tDetection d, tGroundtruth g, int32_t criteri...
  function getThresholds (line 347) | vector<double> getThresholds(vector<double> &v, double n_groundtruth){
  function cleanData (line 382) | void cleanData(CLASSES current_class, const vector<tGroundtruth> &gt, co...
  function tPrData (line 457) | tPrData computeStatistics(CLASSES current_class, const vector<tGroundtru...
    method tPrData (line 79) | tPrData () :
  function eval_class (line 621) | bool eval_class (FILE *fp_det, FILE *fp_ori, CLASSES current_class,
  function saveAndPlotPlots (line 707) | void saveAndPlotPlots(string dir_name,string file_name,string obj_type,v...
  function getEvalIndices (line 777) | vector<int32_t> getEvalIndices(const string& result_dir) {
  function eval (line 794) | bool eval(string gt_dir, string result_dir, Mail* mail){
  function main (line 916) | int32_t main (int32_t argc,char *argv[]) {

FILE: src/tools/kitti_eval/mail.h
  function class (line 8) | class Mail {

FILE: src/tools/reval.py
  function parse_args (line 27) | def parse_args():
  function from_dets (line 53) | def from_dets(imdb_name, detection_file, args):

FILE: src/tools/vis_pred.py
  function _coco_box_to_bbox (line 11) | def _coco_box_to_bbox(box):
  function add_box (line 38) | def add_box(image, bbox, sc, cat_id):

FILE: src/tools/voc_eval_lib/datasets/ds_utils.py
  function unique_boxes (line 13) | def unique_boxes(boxes, scale=1.0):
  function xywh_to_xyxy (line 21) | def xywh_to_xyxy(boxes):
  function xyxy_to_xywh (line 26) | def xyxy_to_xywh(boxes):
  function validate_boxes (line 31) | def validate_boxes(boxes, width=0, height=0):
  function filter_small_boxes (line 45) | def filter_small_boxes(boxes, min_size):

FILE: src/tools/voc_eval_lib/datasets/imdb.py
  function bbox_overlaps (line 20) | def bbox_overlaps(box1, box2):
  class imdb (line 28) | class imdb(object):
    method __init__ (line 31) | def __init__(self, name, classes=None):
    method name (line 46) | def name(self):
    method num_classes (line 50) | def num_classes(self):
    method classes (line 54) | def classes(self):
    method image_index (line 58) | def image_index(self):
    method roidb_handler (line 62) | def roidb_handler(self):
    method roidb_handler (line 66) | def roidb_handler(self, val):
    method set_proposal_method (line 69) | def set_proposal_method(self, method):
    method roidb (line 74) | def roidb(self):
    method cache_path (line 86) | def cache_path(self):
    method num_images (line 93) | def num_images(self):
    method image_path_at (line 96) | def image_path_at(self, i):
    method default_roidb (line 99) | def default_roidb(self):
    method evaluate_detections (line 102) | def evaluate_detections(self, all_boxes, output_dir=None):
    method _get_widths (line 113) | def _get_widths(self):
    method append_flipped_images (line 117) | def append_flipped_images(self):
    method evaluate_recall (line 134) | def evaluate_recall(self, candidate_boxes=None, thresholds=None,
    method create_roidb_from_box_list (line 224) | def create_roidb_from_box_list(self, box_list, gt_roidb):
    method merge_roidbs (line 254) | def merge_roidbs(a, b):
    method competition_mode (line 266) | def competition_mode(self, on):

FILE: src/tools/voc_eval_lib/datasets/pascal_voc.py
  class pascal_voc (line 26) | class pascal_voc(imdb):
    method __init__ (line 27) | def __init__(self, image_set, year, use_diff=False):
    method image_path_at (line 62) | def image_path_at(self, i):
    method image_path_from_index (line 68) | def image_path_from_index(self, index):
    method _load_image_set_index (line 78) | def _load_image_set_index(self):
    method _get_default_path (line 92) | def _get_default_path(self):
    method gt_roidb (line 98) | def gt_roidb(self):
    method rpn_roidb (line 122) | def rpn_roidb(self):
    method _load_rpn_roidb (line 132) | def _load_rpn_roidb(self, gt_roidb):
    method _load_pascal_annotation (line 141) | def _load_pascal_annotation(self, index):
    method _get_comp_id (line 187) | def _get_comp_id(self):
    method _get_voc_results_file_template (line 192) | def _get_voc_results_file_template(self):
    method _write_voc_results_file (line 203) | def _write_voc_results_file(self, all_boxes):
    method _do_python_eval (line 222) | def _do_python_eval(self, output_dir=None):
    method _do_matlab_eval (line 270) | def _do_matlab_eval(self, output_dir='output'):
    method evaluate_detections (line 285) | def evaluate_detections(self, all_boxes, output_dir=None):
    method competition_mode (line 297) | def competition_mode(self, on):

FILE: src/tools/voc_eval_lib/datasets/voc_eval.py
  function parse_rec (line 15) | def parse_rec(filename):
  function voc_ap (line 35) | def voc_ap(rec, prec, use_07_metric=False):
  function voc_eval (line 70) | def voc_eval(detpath,

FILE: src/tools/voc_eval_lib/model/bbox_transform.py
  function bbox_transform (line 13) | def bbox_transform(ex_rois, gt_rois):
  function bbox_transform_inv (line 34) | def bbox_transform_inv(boxes, deltas):
  function clip_boxes (line 67) | def clip_boxes(boxes, im_shape):

FILE: src/tools/voc_eval_lib/model/config.py
  function get_output_dir (line 293) | def get_output_dir(imdb, weights_filename):
  function get_output_tb_dir (line 309) | def get_output_tb_dir(imdb, weights_filename):
  function _merge_a_into_b (line 325) | def _merge_a_into_b(a, b):
  function cfg_from_file (line 358) | def cfg_from_file(filename):
  function cfg_from_list (line 367) | def cfg_from_list(cfg_list):

FILE: src/tools/voc_eval_lib/model/nms_wrapper.py
  function nms (line 15) | def nms(dets, thresh, force_cpu=False):

FILE: src/tools/voc_eval_lib/model/test.py
  function _get_image_blob (line 27) | def _get_image_blob(im):
  function _get_blobs (line 61) | def _get_blobs(im):
  function _clip_boxes (line 68) | def _clip_boxes(boxes, im_shape):
  function _rescale_boxes (line 80) | def _rescale_boxes(boxes, inds, scales):
  function im_detect (line 87) | def im_detect(sess, net, im):
  function apply_nms (line 110) | def apply_nms(all_boxes, thresh):
  function test_net (line 139) | def test_net(sess, net, imdb, weights_filename, max_per_image=100, thres...

FILE: src/tools/voc_eval_lib/nms/cpu_nms.c
  type Py_ssize_t (line 61) | typedef int Py_ssize_t;
  type Py_buffer (line 89) | typedef struct {
  type Py_hash_t (line 241) | typedef long Py_hash_t;
  function CYTHON_INLINE (line 310) | static CYTHON_INLINE float __PYX_NAN() {
  type __Pyx_StringTabEntry (line 369) | typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* e...
  function CYTHON_INLINE (line 409) | static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
  function __Pyx_init_sys_getdefaultencoding_params (line 435) | static int __Pyx_init_sys_getdefaultencoding_params(void) {
  function __Pyx_init_sys_getdefaultencoding_params (line 484) | static int __Pyx_init_sys_getdefaultencoding_params(void) {
  type __Pyx_StructField_ (line 559) | struct __Pyx_StructField_
  type __Pyx_TypeInfo (line 561) | typedef struct {
  type __Pyx_StructField (line 571) | typedef struct __Pyx_StructField_ {
  type __Pyx_BufFmt_StackElem (line 576) | typedef struct {
  type __Pyx_BufFmt_Context (line 580) | typedef struct {
  type npy_int8 (line 601) | typedef npy_int8 __pyx_t_5numpy_int8_t;
  type npy_int16 (line 610) | typedef npy_int16 __pyx_t_5numpy_int16_t;
  type npy_int32 (line 619) | typedef npy_int32 __pyx_t_5numpy_int32_t;
  type npy_int64 (line 628) | typedef npy_int64 __pyx_t_5numpy_int64_t;
  type npy_uint8 (line 637) | typedef npy_uint8 __pyx_t_5numpy_uint8_t;
  type npy_uint16 (line 646) | typedef npy_uint16 __pyx_t_5numpy_uint16_t;
  type npy_uint32 (line 655) | typedef npy_uint32 __pyx_t_5numpy_uint32_t;
  type npy_uint64 (line 664) | typedef npy_uint64 __pyx_t_5numpy_uint64_t;
  type npy_float32 (line 673) | typedef npy_float32 __pyx_t_5numpy_float32_t;
  type npy_float64 (line 682) | typedef npy_float64 __pyx_t_5numpy_float64_t;
  type npy_long (line 691) | typedef npy_long __pyx_t_5numpy_int_t;
  type npy_longlong (line 700) | typedef npy_longlong __pyx_t_5numpy_long_t;
  type npy_longlong (line 709) | typedef npy_longlong __pyx_t_5numpy_longlong_t;
  type npy_ulong (line 718) | typedef npy_ulong __pyx_t_5numpy_uint_t;
  type npy_ulonglong (line 727) | typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
  type npy_ulonglong (line 736) | typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
  type npy_intp (line 745) | typedef npy_intp __pyx_t_5numpy_intp_t;
  type npy_uintp (line 754) | typedef npy_uintp __pyx_t_5numpy_uintp_t;
  type npy_double (line 763) | typedef npy_double __pyx_t_5numpy_float_t;
  type npy_double (line 772) | typedef npy_double __pyx_t_5numpy_double_t;
  type npy_longdouble (line 781) | typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
  type std (line 784) | typedef ::std::complex< float > __pyx_t_float_complex;
  type __pyx_t_float_complex (line 786) | typedef float _Complex __pyx_t_float_complex;
  type __pyx_t_float_complex (line 789) | typedef struct { float real, imag; } __pyx_t_float_complex;
  type std (line 794) | typedef ::std::complex< double > __pyx_t_double_complex;
  type __pyx_t_double_complex (line 796) | typedef double _Complex __pyx_t_double_complex;
  type __pyx_t_double_complex (line 799) | typedef struct { double real, imag; } __pyx_t_double_complex;
  type npy_cfloat (line 812) | typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
  type npy_cdouble (line 821) | typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
  type npy_clongdouble (line 830) | typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
  type npy_cdouble (line 839) | typedef npy_cdouble __pyx_t_5numpy_complex_t;
  type __Pyx_RefNannyAPIStruct (line 844) | typedef struct {
  function CYTHON_INLINE (line 903) | static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, ...
  function CYTHON_INLINE (line 949) | static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
  type __Pyx_Buf_DimInfo (line 979) | typedef struct {
  type __Pyx_Buffer (line 982) | typedef struct {
  type __Pyx_LocalBuf_ND (line 986) | typedef struct {
  type __Pyx_CodeObjectCacheEntry (line 1126) | typedef struct {
  type __Pyx_CodeObjectCache (line 1130) | struct __Pyx_CodeObjectCache {
  type __Pyx_CodeObjectCache (line 1135) | struct __Pyx_CodeObjectCache
  function CYTHON_INLINE (line 1341) | static CYTHON_INLINE __pyx_t_5numpy_float32_t __pyx_f_3nms_7cpu_nms_max(...
  function CYTHON_INLINE (line 1384) | static CYTHON_INLINE __pyx_t_5numpy_float32_t __pyx_f_3nms_7cpu_nms_min(...
  function PyObject (line 1430) | static PyObject *__pyx_pw_3nms_7cpu_nms_1cpu_nms(PyObject *__pyx_self, P...
  function PyObject (line 1495) | static PyObject *__pyx_pf_3nms_7cpu_nms_cpu_nms(CYTHON_UNUSED PyObject *...
  function CYTHON_UNUSED (line 2348) | static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObjec...
  function __pyx_pf_5numpy_7ndarray___getbuffer__ (line 2359) | static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v...
  function CYTHON_UNUSED (line 3144) | static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(Py...
  function __pyx_pf_5numpy_7ndarray_2__releasebuffer__ (line 3153) | static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *_...
  function CYTHON_INLINE (line 3222) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyOb...
  function CYTHON_INLINE (line 3272) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyOb...
  function CYTHON_INLINE (line 3322) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyOb...
  function CYTHON_INLINE (line 3372) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyOb...
  function CYTHON_INLINE (line 3422) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyOb...
  function CYTHON_INLINE (line 3472) | static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Desc...
  function CYTHON_INLINE (line 4176) | static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *_...
  function CYTHON_INLINE (line 4264) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObje...
  type PyModuleDef (line 4325) | struct PyModuleDef
  function __Pyx_InitCachedBuiltins (line 4397) | static int __Pyx_InitCachedBuiltins(void) {
  function __Pyx_InitCachedConstants (line 4406) | static int __Pyx_InitCachedConstants(void) {
  function __Pyx_InitGlobals (line 4575) | static int __Pyx_InitGlobals(void) {
  function PyMODINIT_FUNC (line 4593) | PyMODINIT_FUNC PyInit_cpu_nms(void)
  function __Pyx_RefNannyAPIStruct (line 4746) | static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modn...
  function PyObject (line 4761) | static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
  function __Pyx_RaiseArgtupleInvalid (line 4774) | static void __Pyx_RaiseArgtupleInvalid(
  function __Pyx_RaiseDoubleKeywordsError (line 4799) | static void __Pyx_RaiseDoubleKeywordsError(
  function __Pyx_ParseOptionalKeywords (line 4812) | static int __Pyx_ParseOptionalKeywords(
  function __Pyx_RaiseArgumentTypeInvalid (line 4913) | static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *o...
  function CYTHON_INLINE (line 4918) | static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *...
  function CYTHON_INLINE (line 4939) | static CYTHON_INLINE int __Pyx_IsLittleEndian(void) {
  function __Pyx_BufFmt_Init (line 4943) | static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
  function __Pyx_BufFmt_ParseNumber (line 4970) | static int __Pyx_BufFmt_ParseNumber(const char** ts) {
  function __Pyx_BufFmt_ExpectNumber (line 4985) | static int __Pyx_BufFmt_ExpectNumber(const char **ts) {
  function __Pyx_BufFmt_RaiseUnexpectedChar (line 4992) | static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) {
  function __Pyx_BufFmt_TypeCharToStandardSize (line 5020) | static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_comple...
  function __Pyx_BufFmt_TypeCharToNativeSize (line 5038) | static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) {
  type __Pyx_st_short (line 5057) | typedef struct { char c; short x; } __Pyx_st_short;
  type __Pyx_st_int (line 5058) | typedef struct { char c; int x; } __Pyx_st_int;
  type __Pyx_st_long (line 5059) | typedef struct { char c; long x; } __Pyx_st_long;
  type __Pyx_st_float (line 5060) | typedef struct { char c; float x; } __Pyx_st_float;
  type __Pyx_st_double (line 5061) | typedef struct { char c; double x; } __Pyx_st_double;
  type __Pyx_st_longdouble (line 5062) | typedef struct { char c; long double x; } __Pyx_st_longdouble;
  type __Pyx_st_void_p (line 5063) | typedef struct { char c; void *x; } __Pyx_st_void_p;
  type __Pyx_st_longlong (line 5065) | typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong;
  function __Pyx_BufFmt_TypeCharToAlignment (line 5067) | static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED in...
  type __Pyx_pad_short (line 5089) | typedef struct { short x; char c; } __Pyx_pad_short;
  type __Pyx_pad_int (line 5090) | typedef struct { int x; char c; } __Pyx_pad_int;
  type __Pyx_pad_long (line 5091) | typedef struct { long x; char c; } __Pyx_pad_long;
  type __Pyx_pad_float (line 5092) | typedef struct { float x; char c; } __Pyx_pad_float;
  type __Pyx_pad_double (line 5093) | typedef struct { double x; char c; } __Pyx_pad_double;
  type __Pyx_pad_longdouble (line 5094) | typedef struct { long double x; char c; } __Pyx_pad_longdouble;
  type __Pyx_pad_void_p (line 5095) | typedef struct { void *x; char c; } __Pyx_pad_void_p;
  type __Pyx_pad_longlong (line 5097) | typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong;
  function __Pyx_BufFmt_TypeCharToPadding (line 5099) | static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int ...
  function __Pyx_BufFmt_TypeCharToGroup (line 5117) | static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) {
  function __Pyx_BufFmt_RaiseExpected (line 5138) | static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) {
  function __Pyx_BufFmt_ProcessTypeChunk (line 5162) | static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) {
  function CYTHON_INLINE (line 5264) | static CYTHON_INLINE PyObject *
  function CYTHON_INLINE (line 5437) | static CYTHON_INLINE void __Pyx_ZeroBuffer(Py_buffer* buf) {
  function CYTHON_INLINE (line 5444) | static CYTHON_INLINE int __Pyx_GetBufferAndValidate(
  function CYTHON_INLINE (line 5478) | static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) {
  function CYTHON_INLINE (line 5484) | static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *typ...
  function CYTHON_INLINE (line 5497) | static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObj...
  function __Pyx_RaiseBufferIndexError (line 5536) | static void __Pyx_RaiseBufferIndexError(int axis) {
  function CYTHON_INLINE (line 5541) | static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *val...
  function CYTHON_INLINE (line 5558) | static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **val...
  function CYTHON_INLINE (line 5737) | static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expec...
  function CYTHON_INLINE (line 5742) | static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t inde...
  function CYTHON_INLINE (line 5748) | static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
  function __Pyx_GetBuffer (line 5753) | static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) {
  function __Pyx_ReleaseBuffer (line 5779) | static void __Pyx_ReleaseBuffer(Py_buffer *view) {
  function PyObject (line 5817) | static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int l...
  function CYTHON_INLINE (line 5899) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
  function CYTHON_INLINE (line 5946) | static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
  function CYTHON_INLINE (line 6041) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
  function CYTHON_INLINE (line 6069) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 6073) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 6078) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 6088) | static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex a, __pyx_t_fl...
  function CYTHON_INLINE (line 6091) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sumf(__pyx_t_float_co...
  function CYTHON_INLINE (line 6097) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_difff(__pyx_t_float_c...
  function CYTHON_INLINE (line 6103) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prodf(__pyx_t_float_c...
  function CYTHON_INLINE (line 6109) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quotf(__pyx_t_float_c...
  function CYTHON_INLINE (line 6116) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_negf(__pyx_t_float_co...
  function CYTHON_INLINE (line 6122) | static CYTHON_INLINE int __Pyx_c_is_zerof(__pyx_t_float_complex a) {
  function CYTHON_INLINE (line 6125) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conjf(__pyx_t_float_c...
  function CYTHON_INLINE (line 6132) | static CYTHON_INLINE float __Pyx_c_absf(__pyx_t_float_complex z) {
  function CYTHON_INLINE (line 6139) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_powf(__pyx_t_float_co...
  function CYTHON_INLINE (line 6189) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 6193) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 6198) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 6208) | static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex a, __pyx_t_do...
  function CYTHON_INLINE (line 6211) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum(__pyx_t_double_c...
  function CYTHON_INLINE (line 6217) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff(__pyx_t_double_...
  function CYTHON_INLINE (line 6223) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod(__pyx_t_double_...
  function CYTHON_INLINE (line 6229) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot(__pyx_t_double_...
  function CYTHON_INLINE (line 6236) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg(__pyx_t_double_c...
  function CYTHON_INLINE (line 6242) | static CYTHON_INLINE int __Pyx_c_is_zero(__pyx_t_double_complex a) {
  function CYTHON_INLINE (line 6245) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj(__pyx_t_double_...
  function CYTHON_INLINE (line 6252) | static CYTHON_INLINE double __Pyx_c_abs(__pyx_t_double_complex z) {
  function CYTHON_INLINE (line 6259) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow(__pyx_t_double_c...
  function __Pyx_PyInt_As_long (line 6312) | static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
  function __Pyx_check_binary_version (line 6407) | static int __Pyx_check_binary_version(void) {
  function PyObject (line 6428) | static PyObject *__Pyx_ImportModule(const char *name) {
  function PyTypeObject (line 6445) | static PyTypeObject *__Pyx_ImportType(const char *module_name, const cha...
  function __pyx_bisect_code_objects (line 6511) | static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries...
  function PyCodeObject (line 6532) | static PyCodeObject *__pyx_find_code_object(int code_line) {
  function __pyx_insert_code_object (line 6546) | static void __pyx_insert_code_object(int code_line, PyCodeObject* code_o...
  function PyCodeObject (line 6593) | static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
  function __Pyx_AddTraceback (line 6645) | static void __Pyx_AddTraceback(const char *funcname, int c_line,
  function __Pyx_InitStrings (line 6673) | static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
  function CYTHON_INLINE (line 6703) | static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char* c_str) {
  function CYTHON_INLINE (line 6706) | static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
  function CYTHON_INLINE (line 6770) | static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
  function CYTHON_INLINE (line 6825) | static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  function CYTHON_INLINE (line 6854) | static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {

FILE: src/tools/voc_eval_lib/nms/gpu_nms.cpp
  function CYTHON_INLINE (line 310) | static CYTHON_INLINE float __PYX_NAN() {
  function CYTHON_INLINE (line 410) | static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
  function __Pyx_init_sys_getdefaultencoding_params (line 436) | static int __Pyx_init_sys_getdefaultencoding_params(void) {
  function __Pyx_init_sys_getdefaultencoding_params (line 485) | static int __Pyx_init_sys_getdefaultencoding_params(void) {
  type __Pyx_StructField_ (line 560) | struct __Pyx_StructField_
  type __Pyx_StructField_ (line 564) | struct __Pyx_StructField_
  type __Pyx_StructField_ (line 572) | struct __Pyx_StructField_ {
  function CYTHON_INLINE (line 920) | static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, ...
  type __Pyx_CodeObjectCache (line 1121) | struct __Pyx_CodeObjectCache {
  type __Pyx_CodeObjectCache (line 1126) | struct __Pyx_CodeObjectCache
  function PyObject (line 1287) | static PyObject *__pyx_pw_3nms_7gpu_nms_1gpu_nms(PyObject *__pyx_self, P...
  function PyObject (line 1367) | static PyObject *__pyx_pf_3nms_7gpu_nms_gpu_nms(CYTHON_UNUSED PyObject *...
  function CYTHON_UNUSED (line 1720) | static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObjec...
  function __pyx_pf_5numpy_7ndarray___getbuffer__ (line 1731) | static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v...
  function CYTHON_UNUSED (line 2516) | static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(Py...
  function __pyx_pf_5numpy_7ndarray_2__releasebuffer__ (line 2525) | static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *_...
  function CYTHON_INLINE (line 2594) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyOb...
  function CYTHON_INLINE (line 2644) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyOb...
  function CYTHON_INLINE (line 2694) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyOb...
  function CYTHON_INLINE (line 2744) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyOb...
  function CYTHON_INLINE (line 2794) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyOb...
  function CYTHON_INLINE (line 2844) | static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Desc...
  function CYTHON_INLINE (line 3548) | static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *_...
  function CYTHON_INLINE (line 3636) | static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObje...
  type PyModuleDef (line 3697) | struct PyModuleDef
  function __Pyx_InitCachedBuiltins (line 3750) | static int __Pyx_InitCachedBuiltins(void) {
  function __Pyx_InitCachedConstants (line 3759) | static int __Pyx_InitCachedConstants(void) {
  function __Pyx_InitGlobals (line 3883) | static int __Pyx_InitGlobals(void) {
  function PyMODINIT_FUNC (line 3897) | PyMODINIT_FUNC PyInit_gpu_nms(void)
  function __Pyx_RefNannyAPIStruct (line 4066) | static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modn...
  function __Pyx_RaiseArgtupleInvalid (line 4081) | static void __Pyx_RaiseArgtupleInvalid(
  function __Pyx_RaiseDoubleKeywordsError (line 4106) | static void __Pyx_RaiseDoubleKeywordsError(
  function __Pyx_ParseOptionalKeywords (line 4119) | static int __Pyx_ParseOptionalKeywords(
  function __Pyx_RaiseArgumentTypeInvalid (line 4220) | static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *o...
  function CYTHON_INLINE (line 4225) | static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *...
  function CYTHON_INLINE (line 4246) | static CYTHON_INLINE int __Pyx_IsLittleEndian(void) {
  function __Pyx_BufFmt_Init (line 4250) | static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
  function __Pyx_BufFmt_ParseNumber (line 4277) | static int __Pyx_BufFmt_ParseNumber(const char** ts) {
  function __Pyx_BufFmt_ExpectNumber (line 4292) | static int __Pyx_BufFmt_ExpectNumber(const char **ts) {
  function __Pyx_BufFmt_RaiseUnexpectedChar (line 4299) | static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) {
  function __Pyx_BufFmt_TypeCharToStandardSize (line 4327) | static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_comple...
  function __Pyx_BufFmt_TypeCharToNativeSize (line 4345) | static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) {
  function __Pyx_BufFmt_TypeCharToAlignment (line 4374) | static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED in...
  function __Pyx_BufFmt_TypeCharToPadding (line 4406) | static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int ...
  function __Pyx_BufFmt_TypeCharToGroup (line 4424) | static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) {
  function __Pyx_BufFmt_RaiseExpected (line 4445) | static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) {
  function __Pyx_BufFmt_ProcessTypeChunk (line 4469) | static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) {
  function CYTHON_INLINE (line 4571) | static CYTHON_INLINE PyObject *
  function CYTHON_INLINE (line 4744) | static CYTHON_INLINE void __Pyx_ZeroBuffer(Py_buffer* buf) {
  function CYTHON_INLINE (line 4751) | static CYTHON_INLINE int __Pyx_GetBufferAndValidate(
  function CYTHON_INLINE (line 4785) | static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) {
  function PyObject (line 4791) | static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
  function CYTHON_INLINE (line 4822) | static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObj...
  function CYTHON_INLINE (line 4844) | static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *typ...
  function __Pyx_RaiseBufferIndexError (line 4856) | static void __Pyx_RaiseBufferIndexError(int axis) {
  function CYTHON_INLINE (line 4861) | static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
  function __Pyx_RaiseBufferFallbackError (line 4958) | static void __Pyx_RaiseBufferFallbackError(void) {
  function CYTHON_INLINE (line 4963) | static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *val...
  function CYTHON_INLINE (line 4980) | static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **val...
  function CYTHON_INLINE (line 5159) | static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expec...
  function CYTHON_INLINE (line 5164) | static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t inde...
  function CYTHON_INLINE (line 5170) | static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
  function __Pyx_GetBuffer (line 5175) | static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) {
  function __Pyx_ReleaseBuffer (line 5201) | static void __Pyx_ReleaseBuffer(Py_buffer *view) {
  function PyObject (line 5239) | static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int l...
  function CYTHON_INLINE (line 5342) | static CYTHON_INLINE npy_int32 __Pyx_PyInt_As_npy_int32(PyObject *x) {
  function CYTHON_INLINE (line 5437) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
  function CYTHON_INLINE (line 5465) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 5469) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 5474) | static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_pa...
  function CYTHON_INLINE (line 5484) | static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex a, __pyx_t_fl...
  function CYTHON_INLINE (line 5487) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sumf(__pyx_t_float_co...
  function CYTHON_INLINE (line 5493) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_difff(__pyx_t_float_c...
  function CYTHON_INLINE (line 5499) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prodf(__pyx_t_float_c...
  function CYTHON_INLINE (line 5505) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quotf(__pyx_t_float_c...
  function CYTHON_INLINE (line 5512) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_negf(__pyx_t_float_co...
  function CYTHON_INLINE (line 5518) | static CYTHON_INLINE int __Pyx_c_is_zerof(__pyx_t_float_complex a) {
  function CYTHON_INLINE (line 5521) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conjf(__pyx_t_float_c...
  function CYTHON_INLINE (line 5528) | static CYTHON_INLINE float __Pyx_c_absf(__pyx_t_float_complex z) {
  function CYTHON_INLINE (line 5535) | static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_powf(__pyx_t_float_co...
  function CYTHON_INLINE (line 5585) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 5589) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 5594) | static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_...
  function CYTHON_INLINE (line 5604) | static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex a, __pyx_t_do...
  function CYTHON_INLINE (line 5607) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum(__pyx_t_double_c...
  function CYTHON_INLINE (line 5613) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff(__pyx_t_double_...
  function CYTHON_INLINE (line 5619) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod(__pyx_t_double_...
  function CYTHON_INLINE (line 5625) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot(__pyx_t_double_...
  function CYTHON_INLINE (line 5632) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg(__pyx_t_double_c...
  function CYTHON_INLINE (line 5638) | static CYTHON_INLINE int __Pyx_c_is_zero(__pyx_t_double_complex a) {
  function CYTHON_INLINE (line 5641) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj(__pyx_t_double_...
  function CYTHON_INLINE (line 5648) | static CYTHON_INLINE double __Pyx_c_abs(__pyx_t_double_complex z) {
  function CYTHON_INLINE (line 5655) | static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow(__pyx_t_double_c...
  function CYTHON_INLINE (line 5708) | static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
  function CYTHON_INLINE (line 5803) | static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
  function __Pyx_PyInt_As_long (line 5834) | static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
  function __Pyx_check_binary_version (line 5929) | static int __Pyx_check_binary_version(void) {
  function PyObject (line 5950) | static PyObject *__Pyx_ImportModule(const char *name) {
  function PyTypeObject (line 5967) | static PyTypeObject *__Pyx_ImportType(const char *module_name, const cha...
  function __pyx_bisect_code_objects (line 6033) | static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries...
  function PyCodeObject (line 6054) | static PyCodeObject *__pyx_find_code_object(int code_line) {
  function __pyx_insert_code_object (line 6068) | static void __pyx_insert_code_object(int code_line, PyCodeObject* code_o...
  function PyCodeObject (line 6115) | static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
  function __Pyx_AddTraceback (line 6167) | static void __Pyx_AddTraceback(const char *funcname, int c_line,
  function __Pyx_InitStrings (line 6195) | static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
  function CYTHON_INLINE (line 6225) | static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char* c_str) {
  function CYTHON_INLINE (line 6228) | static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
  function CYTHON_INLINE (line 6292) | static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
  function CYTHON_INLINE (line 6347) | static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  function CYTHON_INLINE (line 6376) | static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {

FILE: src/tools/voc_eval_lib/nms/py_cpu_nms.py
  function py_cpu_nms (line 10) | def py_cpu_nms(dets, thresh):

FILE: src/tools/voc_eval_lib/setup.py
  function find_in_path (line 15) | def find_in_path(name, path):
  function locate_cuda (line 24) | def locate_cuda():
  function customize_compiler_for_nvcc (line 63) | def customize_compiler_for_nvcc(self):
  class custom_build_ext (line 102) | class custom_build_ext(build_ext):
    method build_extensions (line 103) | def build_extensions(self):

FILE: src/tools/voc_eval_lib/utils/blob.py
  function im_list_to_blob (line 17) | def im_list_to_blob(ims):
  function prep_im_for_blob (line 33) | def prep_im_for_blob(im, pixel_means, target_size, max_size):

FILE: src/tools/voc_eval_lib/utils/timer.py
  class Timer (line 10) | class Timer(object):
    method __init__ (line 12) | def __init__(self):
    method tic (line 19) | def tic(self):
    method toc (line 24) | def toc(self, average=True):

FILE: src/tools/voc_eval_lib/utils/visualization.py
  function _draw_single_box (line 50) | def _draw_single_box(image, xmin, ymin, xmax, ymax, display_str, font, c...
  function draw_bounding_boxes (line 71) | def draw_bounding_boxes(image, gt_boxes, im_info):
Condensed preview — 277 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (8,535K chars).
[
  {
    "path": "CrowdPose/README.md",
    "chars": 2911,
    "preview": "## CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark\n\n<p align='center'>\n    <img src=\"crowdpose.g"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/build/lib.linux-x86_64-3.7/crowdposetools/__init__.py",
    "chars": 21,
    "preview": "__author__ = 'tylin'\n"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/build/lib.linux-x86_64-3.7/crowdposetools/coco.py",
    "chars": 15558,
    "preview": "__author__ = 'tylin'\n__version__ = '2.0'\n# Interface for accessing the Microsoft COCO dataset.\n\n# Microsoft COCO is a la"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/build/lib.linux-x86_64-3.7/crowdposetools/cocoeval.py",
    "chars": 26786,
    "preview": "__author__ = 'tsungyi'\n\nimport numpy as np\nimport datetime\nimport time\nfrom collections import defaultdict\nfrom . import"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/build/lib.linux-x86_64-3.7/crowdposetools/mask.py",
    "chars": 4594,
    "preview": "__author__ = 'tsungyi'\n\nimport crowdposetools._mask as _mask\n\n# Interface for manipulating masks stored in RLE format.\n#"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/crowdposetools/__init__.py",
    "chars": 21,
    "preview": "__author__ = 'tylin'\n"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/crowdposetools/_mask.c",
    "chars": 731451,
    "preview": "/* Generated by Cython 0.28.5 */\n\n/* BEGIN: Cython Metadata\n{\n    \"distutils\": {\n        \"depends\": [\n            \"../co"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/crowdposetools/_mask.pyx",
    "chars": 11440,
    "preview": "# distutils: language = c\n# distutils: sources = ../common/maskApi.c\n\n#*************************************************"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/crowdposetools/coco.py",
    "chars": 15558,
    "preview": "__author__ = 'tylin'\n__version__ = '2.0'\n# Interface for accessing the Microsoft COCO dataset.\n\n# Microsoft COCO is a la"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/crowdposetools/cocoeval.py",
    "chars": 26786,
    "preview": "__author__ = 'tsungyi'\n\nimport numpy as np\nimport datetime\nimport time\nfrom collections import defaultdict\nfrom . import"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/crowdposetools/mask.py",
    "chars": 4594,
    "preview": "__author__ = 'tsungyi'\n\nimport crowdposetools._mask as _mask\n\n# Interface for manipulating masks stored in RLE format.\n#"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/install",
    "chars": 23,
    "preview": "python setup.py install"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/install.sh",
    "chars": 23,
    "preview": "python setup.py install"
  },
  {
    "path": "CrowdPose/crowdpose-api/PythonAPI/setup.py",
    "chars": 776,
    "preview": "from distutils.core import setup\r\nfrom Cython.Build import cythonize\r\nfrom distutils.extension import Extension\r\nimport "
  },
  {
    "path": "CrowdPose/crowdpose-api/README.md",
    "chars": 102,
    "preview": "CrowdPose API (based on COCO API)\n\nTo install:\n\n-For Python, run \"sh install.sh\" under coco/PythonAPI\n"
  },
  {
    "path": "CrowdPose/crowdpose-api/annotations/crowdpose_val.json",
    "chars": 2746206,
    "preview": "{\"images\": [{\"file_name\": \"114203.jpg\", \"id\": 114203, \"height\": 1000, \"width\": 795, \"crowdIndex\": 0.76}, {\"file_name\": \""
  },
  {
    "path": "CrowdPose/crowdpose-api/common/gason.cpp",
    "chars": 9540,
    "preview": "// https://github.com/vivkin/gason - pulled January 10, 2016\n#include \"gason.h\"\n#include <stdlib.h>\n\n#define JSON_ZONE_S"
  },
  {
    "path": "CrowdPose/crowdpose-api/common/gason.h",
    "chars": 3483,
    "preview": "// https://github.com/vivkin/gason - pulled January 10, 2016\n#pragma once\n\n#include <stdint.h>\n#include <stddef.h>\n#incl"
  },
  {
    "path": "CrowdPose/crowdpose-api/common/maskApi.c",
    "chars": 8249,
    "preview": "/**************************************************************************\n* Microsoft COCO Toolbox.      version 2.0\n*"
  },
  {
    "path": "CrowdPose/crowdpose-api/common/maskApi.h",
    "chars": 2176,
    "preview": "/**************************************************************************\n* Microsoft COCO Toolbox.      version 2.0\n*"
  },
  {
    "path": "CrowdPose/crowdpose-api/demo.py",
    "chars": 342,
    "preview": "from crowdposetools.coco import COCO\r\nfrom crowdposetools.cocoeval import COCOeval\r\n\r\ngt_file = './annotations/crowdpose"
  },
  {
    "path": "LICENSE",
    "chars": 1090,
    "preview": "MIT License\n\nCopyright (c) 2019 Xingyi Zhou\nAll rights reserved.\n\nPermission is hereby granted, free of charge, to any p"
  },
  {
    "path": "NOTICE",
    "chars": 7862,
    "preview": "Portions of this software are derived from tf-faster-rcnn.\n\n============================================================"
  },
  {
    "path": "README.md",
    "chars": 7497,
    "preview": "# AdaptivePose\nnew_ops branch can support all pytorch version.\n\nThe current code can achieve the better performance than"
  },
  {
    "path": "cocoapi/.travis.yml",
    "chars": 168,
    "preview": "group: travis_latest\nlanguage: python\ncache: pip\npython:\n    - 2.7\n    - 3.6\ninstall:\n    - pip install --upgrade pip \n "
  },
  {
    "path": "cocoapi/LuaAPI/CocoApi.lua",
    "chars": 10726,
    "preview": "--[[----------------------------------------------------------------------------\n\nInterface for accessing the Common Obj"
  },
  {
    "path": "cocoapi/LuaAPI/MaskApi.lua",
    "chars": 10156,
    "preview": "--[[----------------------------------------------------------------------------\n\nInterface for manipulating masks store"
  },
  {
    "path": "cocoapi/LuaAPI/cocoDemo.lua",
    "chars": 791,
    "preview": "-- Demo for the CocoApi (see CocoApi.lua)\ncoco = require 'coco'\nimage = require 'image'\n\n-- initialize COCO api (please "
  },
  {
    "path": "cocoapi/LuaAPI/env.lua",
    "chars": 436,
    "preview": "--[[----------------------------------------------------------------------------\n\nCommon Objects in COntext (COCO) Toolb"
  },
  {
    "path": "cocoapi/LuaAPI/init.lua",
    "chars": 498,
    "preview": "--[[----------------------------------------------------------------------------\n\nCommon Objects in COntext (COCO) Toolb"
  },
  {
    "path": "cocoapi/LuaAPI/rocks/coco-scm-1.rockspec",
    "chars": 821,
    "preview": "package = \"coco\"\nversion = \"scm-1\"\n\nsource = {\n  url = \"git://github.com/pdollar/coco.git\"\n}\n\ndescription = {\n  summary "
  },
  {
    "path": "cocoapi/MatlabAPI/CocoApi.m",
    "chars": 13117,
    "preview": "classdef CocoApi\n  % Interface for accessing the Microsoft COCO dataset.\n  %\n  % Microsoft COCO is a large image dataset"
  },
  {
    "path": "cocoapi/MatlabAPI/CocoEval.m",
    "chars": 22360,
    "preview": "classdef CocoEval < handle\n  % Interface for evaluating detection on the Microsoft COCO dataset.\n  %\n  % The usage for C"
  },
  {
    "path": "cocoapi/MatlabAPI/CocoUtils.m",
    "chars": 16584,
    "preview": "classdef CocoUtils\n  % Utility functions for testing and validation of COCO code.\n  %\n  % The following utility function"
  },
  {
    "path": "cocoapi/MatlabAPI/MaskApi.m",
    "chars": 4979,
    "preview": "classdef MaskApi\n  % Interface for manipulating masks stored in RLE format.\n  %\n  % RLE is a simple yet efficient format"
  },
  {
    "path": "cocoapi/MatlabAPI/cocoDemo.m",
    "chars": 1204,
    "preview": "%% Demo for the CocoApi (see CocoApi.m)\n\n%% initialize COCO api (please specify dataType/annType below)\nannTypes = { 'in"
  },
  {
    "path": "cocoapi/MatlabAPI/evalDemo.m",
    "chars": 1808,
    "preview": "%% Demo demonstrating the algorithm result formats for COCO\n\n%% select results type for demo (either bbox or segm)\ntype "
  },
  {
    "path": "cocoapi/MatlabAPI/gason.m",
    "chars": 2395,
    "preview": "function out = gason( in )\n% Convert between JSON strings and corresponding JSON objects.\n%\n% This parser is based on Ga"
  },
  {
    "path": "cocoapi/MatlabAPI/private/gasonMex.cpp",
    "chars": 9227,
    "preview": "/**************************************************************************\n* Microsoft COCO Toolbox.      version 2.0\n*"
  },
  {
    "path": "cocoapi/MatlabAPI/private/getPrmDflt.m",
    "chars": 2909,
    "preview": "function varargout = getPrmDflt( prm, dfs, checkExtra )\n% Helper to set default values (if not already set) of parameter"
  },
  {
    "path": "cocoapi/MatlabAPI/private/maskApiMex.c",
    "chars": 5544,
    "preview": "/**************************************************************************\n* Microsoft COCO Toolbox.      version 2.0\n*"
  },
  {
    "path": "cocoapi/PythonAPI/Makefile",
    "chars": 199,
    "preview": "all:\n    # install pycocotools locally\n\tpython setup.py build_ext --inplace\n\trm -rf build\n\ninstall:\n\t# install pycocotoo"
  },
  {
    "path": "cocoapi/PythonAPI/build/lib.linux-x86_64-3.7/pycocotools/__init__.py",
    "chars": 21,
    "preview": "__author__ = 'tylin'\n"
  },
  {
    "path": "cocoapi/PythonAPI/build/lib.linux-x86_64-3.7/pycocotools/coco.py",
    "chars": 18412,
    "preview": "__author__ = 'tylin'\n__version__ = '2.0'\n# Interface for accessing the Microsoft COCO dataset.\n\n# Microsoft COCO is a la"
  },
  {
    "path": "cocoapi/PythonAPI/build/lib.linux-x86_64-3.7/pycocotools/cocoeval.py",
    "chars": 24143,
    "preview": "__author__ = 'tsungyi'\n\nimport numpy as np\nimport datetime\nimport time\nfrom collections import defaultdict\nfrom . import"
  },
  {
    "path": "cocoapi/PythonAPI/build/lib.linux-x86_64-3.7/pycocotools/mask.py",
    "chars": 4591,
    "preview": "__author__ = 'tsungyi'\n\nimport pycocotools._mask as _mask\n\n# Interface for manipulating masks stored in RLE format.\n#\n# "
  },
  {
    "path": "cocoapi/PythonAPI/pycocoDemo.ipynb",
    "chars": 1790308,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outp"
  },
  {
    "path": "cocoapi/PythonAPI/pycocoEvalDemo.ipynb",
    "chars": 4456,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"out"
  },
  {
    "path": "cocoapi/PythonAPI/pycocotools/__init__.py",
    "chars": 21,
    "preview": "__author__ = 'tylin'\n"
  },
  {
    "path": "cocoapi/PythonAPI/pycocotools/_mask.c",
    "chars": 710393,
    "preview": "/* Generated by Cython 0.29.14 */\n\n#define PY_SSIZE_T_CLEAN\n#include \"Python.h\"\n#ifndef Py_PYTHON_H\n    #error Python he"
  },
  {
    "path": "cocoapi/PythonAPI/pycocotools/_mask.pyx",
    "chars": 11440,
    "preview": "# distutils: language = c\n# distutils: sources = ../common/maskApi.c\n\n#*************************************************"
  },
  {
    "path": "cocoapi/PythonAPI/pycocotools/coco.py",
    "chars": 18412,
    "preview": "__author__ = 'tylin'\n__version__ = '2.0'\n# Interface for accessing the Microsoft COCO dataset.\n\n# Microsoft COCO is a la"
  },
  {
    "path": "cocoapi/PythonAPI/pycocotools/cocoeval.py",
    "chars": 24143,
    "preview": "__author__ = 'tsungyi'\n\nimport numpy as np\nimport datetime\nimport time\nfrom collections import defaultdict\nfrom . import"
  },
  {
    "path": "cocoapi/PythonAPI/pycocotools/mask.py",
    "chars": 4591,
    "preview": "__author__ = 'tsungyi'\n\nimport pycocotools._mask as _mask\n\n# Interface for manipulating masks stored in RLE format.\n#\n# "
  },
  {
    "path": "cocoapi/PythonAPI/pycocotools.egg-info/PKG-INFO",
    "chars": 183,
    "preview": "Metadata-Version: 1.0\nName: pycocotools\nVersion: 2.0\nSummary: UNKNOWN\nHome-page: UNKNOWN\nAuthor: UNKNOWN\nAuthor-email: U"
  },
  {
    "path": "cocoapi/PythonAPI/pycocotools.egg-info/SOURCES.txt",
    "chars": 332,
    "preview": "setup.py\n../common/maskApi.c\npycocotools/__init__.py\npycocotools/_mask.c\npycocotools/_mask.pyx\npycocotools/coco.py\npycoc"
  },
  {
    "path": "cocoapi/PythonAPI/pycocotools.egg-info/dependency_links.txt",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "cocoapi/PythonAPI/pycocotools.egg-info/requires.txt",
    "chars": 50,
    "preview": "setuptools>=18.0\ncython>=0.27.3\nmatplotlib>=2.1.0\n"
  },
  {
    "path": "cocoapi/PythonAPI/pycocotools.egg-info/top_level.txt",
    "chars": 12,
    "preview": "pycocotools\n"
  },
  {
    "path": "cocoapi/PythonAPI/setup.py",
    "chars": 762,
    "preview": "from setuptools import setup, Extension\nimport numpy as np\n\n# To compile and install locally run \"python setup.py build_"
  },
  {
    "path": "cocoapi/README.txt",
    "chars": 1282,
    "preview": "COCO API - http://cocodataset.org/\n\nCOCO is a large image dataset designed for object detection, segmentation, person ke"
  },
  {
    "path": "cocoapi/common/gason.cpp",
    "chars": 9540,
    "preview": "// https://github.com/vivkin/gason - pulled January 10, 2016\n#include \"gason.h\"\n#include <stdlib.h>\n\n#define JSON_ZONE_S"
  },
  {
    "path": "cocoapi/common/gason.h",
    "chars": 3483,
    "preview": "// https://github.com/vivkin/gason - pulled January 10, 2016\n#pragma once\n\n#include <stdint.h>\n#include <stddef.h>\n#incl"
  },
  {
    "path": "cocoapi/common/maskApi.c",
    "chars": 8308,
    "preview": "/**************************************************************************\n* Microsoft COCO Toolbox.      version 2.0\n*"
  },
  {
    "path": "cocoapi/common/maskApi.h",
    "chars": 2176,
    "preview": "/**************************************************************************\n* Microsoft COCO Toolbox.      version 2.0\n*"
  },
  {
    "path": "cocoapi/license.txt",
    "chars": 1533,
    "preview": "Copyright (c) 2014, Piotr Dollar and Tsung-Yi Lin\nAll rights reserved.\n\nRedistribution and use in source and binary form"
  },
  {
    "path": "cocoapi/results/captions_val2014_fakecap_results.json",
    "chars": 88987,
    "preview": "[{\"image_id\": 391895, \"caption\": \"Man riding a motor bike on a dirt road on the countryside.\"}, {\"image_id\": 522418, \"ca"
  },
  {
    "path": "cocoapi/results/instances_val2014_fakebbox100_results.json",
    "chars": 60041,
    "preview": "[{\"image_id\":42,\"category_id\":18,\"bbox\":[258.15,41.29,348.26,243.78],\"score\":0.236},{\"image_id\":73,\"category_id\":11,\"bbo"
  },
  {
    "path": "cocoapi/results/instances_val2014_fakesegm100_results.json",
    "chars": 271537,
    "preview": "[{\"image_id\":42,\"category_id\":18,\"segmentation\":{\"size\":[478,640],\"counts\":\"VQi31m>0O2N100O100O2N100O10001N101O1N2O1O2M2"
  },
  {
    "path": "cocoapi/results/person_keypoints_val2014_fakekeypoints100_results.json",
    "chars": 35756,
    "preview": "[{\"image_id\":136,\"category_id\":1,\"keypoints\":[36,181,2,20.25,191,0,35,166,2,20.25,191,0,8,171,2,20.25,191,0,2,246,2,20.2"
  },
  {
    "path": "cocoapi/results/val2014_fake_eval_res.txt",
    "chars": 3278,
    "preview": "------------------------------------------------------------------------------\ntype=segm\nRunning per image evaluation..."
  },
  {
    "path": "models/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "prepare_data.sh",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "prepare_env.sh",
    "chars": 624,
    "preview": "THIS_DIR=\"$( cd \"$( dirname \"$0\"  )\" && pwd  )\"\ncd $THIS_DIR\ntar zxvf torch12.tar.gz\n\ncd $THIS_DIR\nCURRENT_DIR=$(pwd)\n\n#"
  },
  {
    "path": "prepare_env2.sh",
    "chars": 1196,
    "preview": "pip3 install -i https://pypi.douban.com/simple/ numpy\npip3 install -i https://pypi.douban.com/simple/ torch==1.2.0\npip3 "
  },
  {
    "path": "readme/DATA.md",
    "chars": 850,
    "preview": "# Dataset preparation\n\nIf you want to reproduce the results in the paper for benchmark evaluation and training, you will"
  },
  {
    "path": "readme/DEVELOP.md",
    "chars": 1432,
    "preview": "# Develop\n\nThis document provides tutorials to develop AdaptivePose. `lib/src/opts` lists a few more options that the cu"
  },
  {
    "path": "requirements.txt",
    "chars": 77,
    "preview": "\nnumpy==1.16.0\nopencv-python\nCython\nnumba\nprogress\nmatplotlib\neasydict\nscipy\n"
  },
  {
    "path": "src/demo.py",
    "chars": 2095,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport ini"
  },
  {
    "path": "src/flops_counter.py",
    "chars": 10793,
    "preview": "import torch.nn as nn\nimport torch\nimport numpy as np\n\ndef get_model_complexity_info(model, input_res, print_per_layer_s"
  },
  {
    "path": "src/init_paths.py",
    "chars": 285,
    "preview": "import os.path as osp\nimport sys\n\ndef add_path(path):\n    if path not in sys.path:\n        sys.path.insert(0, path)\n#imp"
  },
  {
    "path": "src/lib/datasets/dataset/coco.py",
    "chars": 5214,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport pyc"
  },
  {
    "path": "src/lib/datasets/dataset/coco_hp_wodet.py",
    "chars": 4794,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport pyc"
  },
  {
    "path": "src/lib/datasets/dataset/crowdpose.py",
    "chars": 4928,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\n\nimport cr"
  },
  {
    "path": "src/lib/datasets/dataset/kitti.py",
    "chars": 3058,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/datasets/dataset/pascal.py",
    "chars": 3032,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport pyc"
  },
  {
    "path": "src/lib/datasets/dataset_factory.py",
    "chars": 647,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\n\nfrom .sam"
  },
  {
    "path": "src/lib/datasets/sample/ctdet.py",
    "chars": 5803,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/datasets/sample/ddd.py",
    "chars": 6801,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/datasets/sample/exdet.py",
    "chars": 5722,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/datasets/sample/multi_pose_crowdpose.py",
    "chars": 9052,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/datasets/sample/multi_pose_wodet.py",
    "chars": 9127,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/detectors/base_detector.py",
    "chars": 6933,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport cv2"
  },
  {
    "path": "src/lib/detectors/ctdet.py",
    "chars": 3674,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport cv2"
  },
  {
    "path": "src/lib/detectors/ddd.py",
    "chars": 4013,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport cv2"
  },
  {
    "path": "src/lib/detectors/detector_factory.py",
    "chars": 615,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\n# from .ex"
  },
  {
    "path": "src/lib/detectors/exdet.py",
    "chars": 5064,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\n#import _i"
  },
  {
    "path": "src/lib/detectors/multi_pose.py",
    "chars": 3923,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport cv2"
  },
  {
    "path": "src/lib/detectors/multi_pose_crowdpose.py",
    "chars": 5500,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport cv2"
  },
  {
    "path": "src/lib/detectors/multi_pose_wodet.py",
    "chars": 5497,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport cv2"
  },
  {
    "path": "src/lib/external/.gitignore",
    "chars": 160,
    "preview": "bbox.c\nbbox.cpython-35m-x86_64-linux-gnu.so\nbbox.cpython-36m-x86_64-linux-gnu.so\n\nnms.c\nnms.cpython-35m-x86_64-linux-gnu"
  },
  {
    "path": "src/lib/external/Makefile",
    "chars": 56,
    "preview": "all:\n\tpython setup.py build_ext --inplace\n\trm -rf build\n"
  },
  {
    "path": "src/lib/external/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/lib/external/nms.pyx",
    "chars": 13152,
    "preview": "# --------------------------------------------------------\n# Fast R-CNN\n# Copyright (c) 2015 Microsoft\n# Licensed under "
  },
  {
    "path": "src/lib/external/setup.py",
    "chars": 368,
    "preview": "import numpy\nfrom distutils.core import setup\nfrom distutils.extension import Extension\nfrom Cython.Build import cythoni"
  },
  {
    "path": "src/lib/logger.py",
    "chars": 2230,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\n# Code ref"
  },
  {
    "path": "src/lib/models/GCN_utils/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/lib/models/GCN_utils/gcn2.py",
    "chars": 6100,
    "preview": "import math\r\nimport pdb\r\nimport numpy as np\r\nimport torch\r\nimport torch.nn as nn\r\nfrom torch.autograd import Variable\r\nf"
  },
  {
    "path": "src/lib/models/GCN_utils/graph.py",
    "chars": 661,
    "preview": "import sys\nfrom .tools import get_spatial_graph\n\nnum_node = 7\nself_link = [(i, i) for i in range(num_node)]\ninward_ori_i"
  },
  {
    "path": "src/lib/models/GCN_utils/tools.py",
    "chars": 625,
    "preview": "import numpy as np\n\n\ndef edge2mat(link, num_node):\n    A = np.zeros((num_node, num_node))\n    for i, j in link:\n        "
  },
  {
    "path": "src/lib/models/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/lib/models/data_parallel.py",
    "chars": 5176,
    "preview": "import torch\nfrom torch.nn.modules import Module\nfrom torch.nn.parallel.scatter_gather import gather\nfrom torch.nn.paral"
  },
  {
    "path": "src/lib/models/decode.py",
    "chars": 23893,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/models/flops_counter.py",
    "chars": 11107,
    "preview": "import torch.nn as nn\r\nimport torch\r\nimport numpy as np\r\n\r\ndef get_model_complexity_info(model, input_res, print_per_lay"
  },
  {
    "path": "src/lib/models/losses.py",
    "chars": 15539,
    "preview": "# ------------------------------------------------------------------------------\n# Portions of this code are from\n# Corn"
  },
  {
    "path": "src/lib/models/model.py",
    "chars": 3575,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\n#import to"
  },
  {
    "path": "src/lib/models/networks/DCNv2/DCNv2.egg-info/PKG-INFO",
    "chars": 238,
    "preview": "Metadata-Version: 1.0\nName: DCNv2\nVersion: 0.1\nSummary: deformable convolutional networks\nHome-page: https://github.com/"
  },
  {
    "path": "src/lib/models/networks/DCNv2/DCNv2.egg-info/SOURCES.txt",
    "chars": 718,
    "preview": "LICENSE\nREADME.md\nsetup.py\n/opt/tiger/adaptivepose/src/lib/models/networks/DCNv2/src/vision.cpp\n/opt/tiger/adaptivepose/"
  },
  {
    "path": "src/lib/models/networks/DCNv2/DCNv2.egg-info/dependency_links.txt",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "src/lib/models/networks/DCNv2/DCNv2.egg-info/top_level.txt",
    "chars": 5,
    "preview": "_ext\n"
  },
  {
    "path": "src/lib/models/networks/DCNv2/LICENSE",
    "chars": 1520,
    "preview": "BSD 3-Clause License\n\nCopyright (c) 2019, Charles Shang\nAll rights reserved.\n\nRedistribution and use in source and binar"
  },
  {
    "path": "src/lib/models/networks/DCNv2/README.md",
    "chars": 913,
    "preview": "## Deformable Convolutional Networks V2 with Pytorch 1.X\n\n### Build\n```bash\n    ./make.sh         # build\n    python tes"
  },
  {
    "path": "src/lib/models/networks/DCNv2/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/lib/models/networks/DCNv2/dcn_v2.py",
    "chars": 12081,
    "preview": "#!/usr/bin/env python\nfrom __future__ import absolute_import\nfrom __future__ import print_function\nfrom __future__ impor"
  },
  {
    "path": "src/lib/models/networks/DCNv2/make.sh",
    "chars": 50,
    "preview": "#!/usr/bin/env bash\npython setup.py build develop\n"
  },
  {
    "path": "src/lib/models/networks/DCNv2/setup.py",
    "chars": 2035,
    "preview": "#!/usr/bin/env python\n\nimport os\nimport glob\n\nimport torch\n\nfrom torch.utils.cpp_extension import CUDA_HOME\nfrom torch.u"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/cpu/dcn_v2_cpu.cpp",
    "chars": 10912,
    "preview": "#include <vector>\n#include \"cpu/dcn_v2_im2col_cpu.h\"\n\n#include <ATen/ATen.h>\n//#include <ATen/cuda/CUDAContext.h>\n\n#incl"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/cpu/dcn_v2_im2col_cpu.cpp",
    "chars": 19948,
    "preview": "#include \"dcn_v2_im2col_cpu.h\"\n#include <cstdio>\n#include <algorithm>\n#include <cstring>\n\n#include <ATen/ATen.h>\n//#incl"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/cpu/dcn_v2_im2col_cpu.h",
    "chars": 5105,
    "preview": "\n/*!\n ******************* BEGIN Caffe Copyright Notice and Disclaimer ****************\n *\n * COPYRIGHT\n *\n * All contrib"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/cpu/dcn_v2_psroi_pooling_cpu.cpp",
    "chars": 17007,
    "preview": "/*!\n * Copyright (c) 2017 Microsoft\n * Licensed under The MIT License [see LICENSE for details]\n * \\file deformable_psro"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/cpu/vision.h",
    "chars": 2665,
    "preview": "#pragma once\n#include <torch/extension.h>\n\nat::Tensor\ndcn_v2_cpu_forward(const at::Tensor &input,\n                    co"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/cuda/dcn_v2_cuda.cu",
    "chars": 14773,
    "preview": "#include <vector>\n#include \"cuda/dcn_v2_im2col_cuda.h\"\n\n#include <ATen/ATen.h>\n#include <ATen/cuda/CUDAContext.h>\n\n#incl"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/cuda/dcn_v2_im2col_cuda.cu",
    "chars": 20335,
    "preview": "#include \"dcn_v2_im2col_cuda.h\"\n#include <cstdio>\n#include <algorithm>\n#include <cstring>\n\n#include <ATen/ATen.h>\n#inclu"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/cuda/dcn_v2_im2col_cuda.h",
    "chars": 5226,
    "preview": "\n/*!\n ******************* BEGIN Caffe Copyright Notice and Disclaimer ****************\n *\n * COPYRIGHT\n *\n * All contrib"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/cuda/dcn_v2_psroi_pooling_cuda.cu",
    "chars": 16240,
    "preview": "/*!\n * Copyright (c) 2017 Microsoft\n * Licensed under The MIT License [see LICENSE for details]\n * \\file deformable_psro"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/cuda/vision.h",
    "chars": 2669,
    "preview": "#pragma once\n#include <torch/extension.h>\n\nat::Tensor\ndcn_v2_cuda_forward(const at::Tensor &input,\n                    c"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/dcn_v2.h",
    "chars": 7715,
    "preview": "#pragma once\n\n#include \"cpu/vision.h\"\n\n#ifdef WITH_CUDA\n#include \"cuda/vision.h\"\n#endif\n\nat::Tensor\ndcn_v2_forward(const"
  },
  {
    "path": "src/lib/models/networks/DCNv2/src/vision.cpp",
    "chars": 405,
    "preview": "\n#include \"dcn_v2.h\"\n\nPYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {\n  m.def(\"dcn_v2_forward\", &dcn_v2_forward, \"dcn_v2_forw"
  },
  {
    "path": "src/lib/models/networks/DCNv2/testcpu.py",
    "chars": 8233,
    "preview": "#!/usr/bin/env python\nfrom __future__ import absolute_import\nfrom __future__ import print_function\nfrom __future__ impor"
  },
  {
    "path": "src/lib/models/networks/DCNv2/testcuda.py",
    "chars": 8506,
    "preview": "#!/usr/bin/env python\nfrom __future__ import absolute_import\nfrom __future__ import print_function\nfrom __future__ impor"
  },
  {
    "path": "src/lib/models/networks/dlav0.py",
    "chars": 22682,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\nfrom __future__ import division\nfro"
  },
  {
    "path": "src/lib/models/networks/hrnet.py",
    "chars": 21101,
    "preview": "# ------------------------------------------------------------------------------\n# Copyright (c) Microsoft\n# Licensed un"
  },
  {
    "path": "src/lib/models/networks/hrnet_config/hrnet32.yaml",
    "chars": 914,
    "preview": "MODEL:\n  PRETRAINED: 'hrnetv2_w32_imagenet_pretrained.pth' #'pose_hrnet_w32_384x288.pth'\n  EXTRA:\n    PRETRAINED_LAYERS:"
  },
  {
    "path": "src/lib/models/networks/hrnet_config/hrnet48.yaml",
    "chars": 922,
    "preview": "MODEL:\n  \n  # PRETRAINED: 'hrnet_w48-8ef0771d.pth'   \n  PRETRAINED: 'pose_hrnet_w48_384x288.pth'\n  EXTRA:\n    PRETRAINED"
  },
  {
    "path": "src/lib/models/networks/large_hourglass.py",
    "chars": 13289,
    "preview": "# ------------------------------------------------------------------------------\n# This code is base on \n# CornerNet (ht"
  },
  {
    "path": "src/lib/models/networks/msra_resnet.py",
    "chars": 12044,
    "preview": "# ------------------------------------------------------------------------------\n# Copyright (c) Microsoft\n# Licensed un"
  },
  {
    "path": "src/lib/models/networks/pose_dla_dcn.py",
    "chars": 18272,
    "preview": "from __future__ import absolute_import\r\nfrom __future__ import division\r\nfrom __future__ import print_function\r\n\r\nimport"
  },
  {
    "path": "src/lib/models/networks/pose_dla_dcn_v2.py",
    "chars": 20415,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport os\n"
  },
  {
    "path": "src/lib/models/networks/resnet_dcn.py",
    "chars": 10054,
    "preview": "# ------------------------------------------------------------------------------\n# Copyright (c) Microsoft\n# Licensed un"
  },
  {
    "path": "src/lib/models/oks_loss.py",
    "chars": 6382,
    "preview": "import numpy as np\nimport torch\nimport torch.nn as nn\nfrom .utils import _transpose_and_gather_feat\n\ndef off_to_pose(out"
  },
  {
    "path": "src/lib/models/predictor.py",
    "chars": 6188,
    "preview": "import torch\r\nimport torch.nn as nn\r\nimport collections\r\nfrom torch.nn import functional as F\r\nfrom flops_counter import"
  },
  {
    "path": "src/lib/models/py_utils/__init__.py",
    "chars": 181,
    "preview": "from .kp import kp, AELoss\nfrom .kp_utils import _neg_loss\n\nfrom .utils import convolution, fully_connected, residual\n\nf"
  },
  {
    "path": "src/lib/models/py_utils/_cpools/.gitignore",
    "chars": 30,
    "preview": "build/\ncpools.egg-info/\ndist/\n"
  },
  {
    "path": "src/lib/models/py_utils/_cpools/__init__.py",
    "chars": 1962,
    "preview": "import torch\n\nfrom torch import nn\nfrom torch.autograd import Function\n\nimport top_pool, bottom_pool, left_pool, right_p"
  },
  {
    "path": "src/lib/models/py_utils/_cpools/setup.py",
    "chars": 442,
    "preview": "from setuptools import setup\nfrom torch.utils.cpp_extension import BuildExtension, CppExtension\n\nsetup(\n    name=\"cpools"
  },
  {
    "path": "src/lib/models/py_utils/_cpools/src/bottom_pool.cpp",
    "chars": 2407,
    "preview": "#include <torch/torch.h>\n\n#include <vector>\n\nstd::vector<at::Tensor> pool_forward(\n    at::Tensor input\n) {\n    // Initi"
  },
  {
    "path": "src/lib/models/py_utils/_cpools/src/left_pool.cpp",
    "chars": 2493,
    "preview": "#include <torch/torch.h>\n\n#include <vector>\n\nstd::vector<at::Tensor> pool_forward(\n    at::Tensor input\n) {\n    // Initi"
  },
  {
    "path": "src/lib/models/py_utils/_cpools/src/right_pool.cpp",
    "chars": 2416,
    "preview": "#include <torch/torch.h>\n\n#include <vector>\n\nstd::vector<at::Tensor> pool_forward(\n    at::Tensor input\n) {\n    // Initi"
  },
  {
    "path": "src/lib/models/py_utils/_cpools/src/top_pool.cpp",
    "chars": 2517,
    "preview": "#include <torch/torch.h>\n\n#include <vector>\n\nstd::vector<at::Tensor> top_pool_forward(\n    at::Tensor input\n) {\n    // I"
  },
  {
    "path": "src/lib/models/py_utils/data_parallel.py",
    "chars": 4658,
    "preview": "import torch\nfrom torch.nn.modules import Module\nfrom torch.nn.parallel.scatter_gather import gather\nfrom torch.nn.paral"
  },
  {
    "path": "src/lib/models/py_utils/kp.py",
    "chars": 10480,
    "preview": "import numpy as np\nimport torch\nimport torch.nn as nn\n\nfrom .utils import convolution, residual\nfrom .utils import make_"
  },
  {
    "path": "src/lib/models/py_utils/kp_utils.py",
    "chars": 6517,
    "preview": "import torch\nimport torch.nn as nn\n\nfrom .utils import convolution, residual\n\nclass MergeUp(nn.Module):\n    def forward("
  },
  {
    "path": "src/lib/models/py_utils/scatter_gather.py",
    "chars": 1535,
    "preview": "import torch\nfrom torch.autograd import Variable\nfrom torch.nn.parallel._functions import Scatter, Gather\n\n\ndef scatter("
  },
  {
    "path": "src/lib/models/py_utils/utils.py",
    "chars": 2619,
    "preview": "import torch\nimport torch.nn as nn\n\nclass convolution(nn.Module):\n    def __init__(self, k, inp_dim, out_dim, stride=1, "
  },
  {
    "path": "src/lib/models/resample2d_package/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/lib/models/resample2d_package/resample2d.py",
    "chars": 1597,
    "preview": "from torch.nn.modules.module import Module\nfrom torch.autograd import Function, Variable\nimport resample2d_cuda\n\nclass R"
  },
  {
    "path": "src/lib/models/resample2d_package/resample2d_cuda.cc",
    "chars": 852,
    "preview": "#include <ATen/ATen.h>\n#include <torch/torch.h>\n\n#include \"resample2d_kernel.cuh\"\n\nint resample2d_cuda_forward(\n    at::"
  },
  {
    "path": "src/lib/models/resample2d_package/resample2d_cuda.egg-info/PKG-INFO",
    "chars": 189,
    "preview": "Metadata-Version: 1.0\nName: resample2d-cuda\nVersion: 0.0.0\nSummary: UNKNOWN\nHome-page: UNKNOWN\nAuthor: UNKNOWN\nAuthor-em"
  },
  {
    "path": "src/lib/models/resample2d_package/resample2d_cuda.egg-info/SOURCES.txt",
    "chars": 204,
    "preview": "resample2d_cuda.cc\nresample2d_kernel.cu\nsetup.py\nresample2d_cuda.egg-info/PKG-INFO\nresample2d_cuda.egg-info/SOURCES.txt\n"
  },
  {
    "path": "src/lib/models/resample2d_package/resample2d_cuda.egg-info/dependency_links.txt",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "src/lib/models/resample2d_package/resample2d_cuda.egg-info/top_level.txt",
    "chars": 16,
    "preview": "resample2d_cuda\n"
  },
  {
    "path": "src/lib/models/resample2d_package/resample2d_kernel.cu",
    "chars": 13033,
    "preview": "#include <ATen/ATen.h>\n#include <ATen/Context.h>\n#include <ATen/cuda/CUDAContext.h>\n\n#define CUDA_NUM_THREADS 512 \n#defi"
  },
  {
    "path": "src/lib/models/resample2d_package/resample2d_kernel.cuh",
    "chars": 391,
    "preview": "#pragma once\n\n#include <ATen/ATen.h>\n\nvoid resample2d_kernel_forward(\n    at::Tensor& input1,\n    at::Tensor& input2,\n  "
  },
  {
    "path": "src/lib/models/resample2d_package/setup.py",
    "chars": 772,
    "preview": "#!/usr/bin/env python3\nimport os\nimport torch\n\nfrom setuptools import setup\nfrom torch.utils.cpp_extension import BuildE"
  },
  {
    "path": "src/lib/models/scatter_gather.py",
    "chars": 1535,
    "preview": "import torch\nfrom torch.autograd import Variable\nfrom torch.nn.parallel._functions import Scatter, Gather\n\n\ndef scatter("
  },
  {
    "path": "src/lib/models/utils.py",
    "chars": 1606,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/opts.py",
    "chars": 20027,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport arg"
  },
  {
    "path": "src/lib/trains/base_trainer.py",
    "chars": 4049,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tim"
  },
  {
    "path": "src/lib/trains/ctdet.py",
    "chars": 5518,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/trains/ddd.py",
    "chars": 6919,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/trains/exdet.py",
    "chars": 3605,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/trains/multi_pose.py",
    "chars": 7418,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/trains/multi_pose_crowdpose.py",
    "chars": 7835,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/trains/multi_pose_wodet.py",
    "chars": 7758,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/lib/trains/train_factory.py",
    "chars": 601,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\n# from .ct"
  },
  {
    "path": "src/lib/utils/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/lib/utils/ddd_utils.py",
    "chars": 4548,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport num"
  },
  {
    "path": "src/lib/utils/debugger.py",
    "chars": 24355,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport num"
  },
  {
    "path": "src/lib/utils/image.py",
    "chars": 7692,
    "preview": "# ------------------------------------------------------------------------------\n# Copyright (c) Microsoft\n# Licensed un"
  },
  {
    "path": "src/lib/utils/oracle_utils.py",
    "chars": 1317,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport num"
  },
  {
    "path": "src/lib/utils/post_process.py",
    "chars": 6340,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport num"
  },
  {
    "path": "src/lib/utils/utils.py",
    "chars": 542,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport tor"
  },
  {
    "path": "src/main.py",
    "chars": 3639,
    "preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport ini"
  },
  {
    "path": "src/main_dla34_coco512.sh",
    "chars": 1416,
    "preview": "#!/bin/bash\n\nTHIS_DIR=\"$( cd \"$( dirname \"$0\"  )\" && pwd  )\"\n\ncd $THIS_DIR\nCURRENT_DIR=$(pwd)\n\n\n\ncd $CURRENT_DIR\n\n\nARCNA"
  },
  {
    "path": "src/main_dla34_coco640.sh",
    "chars": 1415,
    "preview": "#!/bin/bash\n\nTHIS_DIR=\"$( cd \"$( dirname \"$0\"  )\" && pwd  )\"\ncd $THIS_DIR\n\nCURRENT_DIR=$(pwd)\n\n\n\n\ncd $CURRENT_DIR\n\n\nARCN"
  },
  {
    "path": "src/main_hrnet32_coco512.sh",
    "chars": 1419,
    "preview": "#!/bin/bash\n\nTHIS_DIR=\"$( cd \"$( dirname \"$0\"  )\" && pwd  )\"\n\n\ncd $THIS_DIR\nCURRENT_DIR=$(pwd)\n\n\n\ncd $CURRENT_DIR\n\n\nARCN"
  },
  {
    "path": "src/main_hrnet32_crowdpose512.sh",
    "chars": 2143,
    "preview": "#!/bin/bash\n\nTHIS_DIR=\"$( cd \"$( dirname \"$0\"  )\" && pwd  )\"\n# cd $THIS_DIR\n# cd /opt/tiger/\n# hdfs dfs -get hdfs://haru"
  },
  {
    "path": "src/main_hrnet48_coco640.sh",
    "chars": 1420,
    "preview": "#!/bin/bash\n\nTHIS_DIR=\"$( cd \"$( dirname \"$0\"  )\" && pwd  )\"\n\n\ncd $THIS_DIR\nCURRENT_DIR=$(pwd)\n\n\ncd $CURRENT_DIR\n\n\nARCNA"
  },
  {
    "path": "src/main_hrnet48_coco800.sh",
    "chars": 1420,
    "preview": "#!/bin/bash\n\nTHIS_DIR=\"$( cd \"$( dirname \"$0\"  )\" && pwd  )\"\n\n\ncd $THIS_DIR\nCURRENT_DIR=$(pwd)\n\n\ncd $CURRENT_DIR\n\n\nARCNA"
  },
  {
    "path": "src/main_hrnet48_crowdpose640.sh",
    "chars": 2142,
    "preview": "#!/bin/bash\n\nTHIS_DIR=\"$( cd \"$( dirname \"$0\"  )\" && pwd  )\"\n# cd $THIS_DIR\n# cd /opt/tiger/\n# hdfs dfs -get hdfs://haru"
  }
]

// ... and 77 more files (download for full content)

About this extraction

This page contains the full source code of the buptxyb666/AdaptivePose GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 277 files (18.9 MB), approximately 2.1M tokens, and a symbol index with 2165 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!