| | |
| | import functools as func |
| | import glob |
| | import os.path as osp |
| | import re |
| |
|
| | import numpy as np |
| |
|
| | url_prefix = 'https://github.com/open-mmlab/mmsegmentation/blob/master/' |
| |
|
| | files = sorted(glob.glob('../configs/*/README.md')) |
| |
|
| | stats = [] |
| | titles = [] |
| | num_ckpts = 0 |
| |
|
| | for f in files: |
| | url = osp.dirname(f.replace('../', url_prefix)) |
| |
|
| | with open(f, 'r') as content_file: |
| | content = content_file.read() |
| |
|
| | title = content.split('\n')[0].replace('#', '').strip() |
| | ckpts = set(x.lower().strip() |
| | for x in re.findall(r'https?://download.*\.pth', content) |
| | if 'mmsegmentation' in x) |
| | if len(ckpts) == 0: |
| | continue |
| |
|
| | _papertype = [x for x in re.findall(r'\[([A-Z]+)\]', content)] |
| | assert len(_papertype) > 0 |
| | papertype = _papertype[0] |
| |
|
| | paper = set([(papertype, title)]) |
| |
|
| | titles.append(title) |
| | num_ckpts += len(ckpts) |
| | statsmsg = f""" |
| | \t* [{papertype}] [{title}]({url}) ({len(ckpts)} ckpts) |
| | """ |
| | stats.append((paper, ckpts, statsmsg)) |
| |
|
| | allpapers = func.reduce(lambda a, b: a.union(b), [p for p, _, _ in stats]) |
| | msglist = '\n'.join(x for _, _, x in stats) |
| |
|
| | papertypes, papercounts = np.unique([t for t, _ in allpapers], |
| | return_counts=True) |
| | countstr = '\n'.join( |
| | [f' - {t}: {c}' for t, c in zip(papertypes, papercounts)]) |
| |
|
| | modelzoo = f""" |
| | # Model Zoo Statistics |
| | |
| | * Number of papers: {len(set(titles))} |
| | {countstr} |
| | |
| | * Number of checkpoints: {num_ckpts} |
| | {msglist} |
| | """ |
| |
|
| | with open('modelzoo_statistics.md', 'w') as f: |
| | f.write(modelzoo) |
| |
|