本文全部经验来自 目标检测tricks-如何固定随机种子(以yolov7为例)_哔哩哔哩_bilibili
添加固定随机种子代码到yolov7的utils/general.py文件中代码如下:
import pkg_resources as pkg
def check_version(current='0.0.0', minimum='0.0.0', name='version ', pinned=False, hard=False, verbose=False):
# Check version vs. required version
current, minimum = (pkg.parse_version(x) for x in (current, minimum))
result = (current == minimum) if pinned else (current >= minimum) # bool
return result
def set_seeds(seed=0, deterministic=False):
# Initialize random number generator (RNG) seeds https://pytorch.org/docs/stable/notes/randomness.html
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed) # for Multi-GPU, exception safe
# torch.backends.cudnn.benchmark = True # AutoBatch problem https://github.com/ultralytics/yolov5/issues/9287
if deterministic and check_version(torch.__version__, '1.12.0'): # https://github.com/ultralytics/yolov5/pull/8213
torch.use_deterministic_algorithms(True)
torch.backends.cudnn.deterministic = True
os.environ['CUBLAS_WORKSPACE_CONFIG'] = ':4096:8'
os.environ['PYTHONHASHSEED'] = str(seed)
在train,py文件里添加:
1.在import里添加set_seeds导入

2.在train.py文件里把1的位置注释掉,添加2的代码
结束,所有工作添加完成。
本文介绍了如何在目标检测模型Yolov7中添加代码来固定随机种子,确保实验可复现性。通过在utils/general.py文件中添加set_seeds函数,并在train.py文件中调用,结合PyTorch的随机数生成器设置,可以实现训练过程的确定性。此外,还提到了对CUDNN的行为调整以增强一致性。
2413





