Source code for hello.mmdet.flop
import subprocess
import sys
from pathlib import Path
[docs]
def func(config, shape, cfg_options, mmdet_home="/workspace"):
py_script = str(Path(mmdet_home) / "tools/analysis_tools/get_flops.py")
_optional_args = "--size-divisor -1"
shape = [str(v) for v in shape]
_optional_args = " ".join([_optional_args, "--shape"] + shape)
if cfg_options is not None and len(cfg_options) > 0:
cfg_options = [f"'{v}'" for v in cfg_options]
_optional_args = " ".join([_optional_args, "--cfg-options"] + cfg_options)
command_line = f"python {py_script} {config} {_optional_args}"
result = subprocess.run(command_line, shell=True, stdout=subprocess.PIPE)
if result.returncode != 0:
print(f"[ERR]\n {command_line}")
else:
print(result.stdout.decode("utf-8"))
[docs]
def parse_args(args=None):
from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser
parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
parser.add_argument("config", type=str,
help="config file path")
parser.add_argument("-s", dest="shape", type=int, nargs='+',
default=[512, 512], help="input image size")
parser.add_argument("-e", dest="cfg_options", type=str, nargs='+',
help="override some settings in the used config")
parser.add_argument("-b", dest="mmdet_home", type=str, default="/workspace",
help="specify the mmdet home")
args = parser.parse_args(args=args)
return vars(args)
[docs]
def main(args=None):
kwargs = parse_args(args)
print(f"{__file__}: {kwargs}")
print(func(**kwargs))
return 0
if __name__ == "__main__":
sys.exit(main())