39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
# Copyright (c) OpenMMLab. All rights reserved.
|
|
import glob
|
|
import os.path as osp
|
|
import warnings
|
|
|
|
|
|
def find_latest_checkpoint(path, suffix='pth'):
|
|
"""Find the latest checkpoint from the working directory.
|
|
|
|
Args:
|
|
path(str): The path to find checkpoints.
|
|
suffix(str): File extension.
|
|
Defaults to pth.
|
|
|
|
Returns:
|
|
latest_path(str | None): File path of the latest checkpoint.
|
|
References:
|
|
.. [1] https://github.com/microsoft/SoftTeacher
|
|
/blob/main/ssod/utils/patch.py
|
|
"""
|
|
if not osp.exists(path):
|
|
warnings.warn('The path of checkpoints does not exist.')
|
|
return None
|
|
if osp.exists(osp.join(path, f'latest.{suffix}')):
|
|
return osp.join(path, f'latest.{suffix}')
|
|
|
|
checkpoints = glob.glob(osp.join(path, f'*.{suffix}'))
|
|
if len(checkpoints) == 0:
|
|
warnings.warn('There are no checkpoints in the path.')
|
|
return None
|
|
latest = -1
|
|
latest_path = None
|
|
for checkpoint in checkpoints:
|
|
count = int(osp.basename(checkpoint).split('_')[-1].split('.')[0])
|
|
if count > latest:
|
|
latest = count
|
|
latest_path = checkpoint
|
|
return latest_path
|