今天在跑yolov7-tiny模型网格训练的时候报错ImportError,主要因为cv2的导入顺序引起
报错详情:
发生异常: ImportError dlopen: cannot load any more object with static TLS
File "/home/xxx/model/yolov7-tiny-pytorch/utils/utils_map.py", line 13, in <module> import cv2
File "/home/xxx/model/yolov7-tiny-pytorch/utils/callbacks.py", line 18, in <module> from .utils_map import get_coco_map, get_map
File "/home/xxx/model/yolov7-tiny-pytorch/train.py", line 19, in <module> from utils.callbacks import EvalCallback, LossHistory
ImportError: dlopen: cannot load any more object with static TLS
解决方法:
查了下大家的方法普遍是更改导入顺序,我在把cv2放在第一个顺序和最后一个顺序导入仍然出错,因为导入的库太多,就没去找正确顺序。
从报错详情可以看出,主要是3个文件中互相导入的库的顺序出了问题,而且出错原因主要在cv2上,除了cv2,常见的这类型错误还会出在tensorflow库等。
解决方法很简单,只需要在每一个文件的开头都导入一遍cv2库,即可解决问题。