model.py
model=None
def load_model():
global model
# 定义模型
model = MaskRCNN(mode='inference', model_dir='./', config=PredictionConfig())
# 加载模型权重
model.load_weights(model_path, by_name=True)
def get_model()
global model
return model
utils.py
from model import get_model
model = get_model()
#-------
#使用model,函数编写
#------
main.py
from model import load_model
from utils import *
load_model()
#-------
#函数使用
#-------
这里如果直接在utils.py里import model.py 的model参数,因为是在utils.py初始化的时候导入的,此时main.py还没有运行load_model(),model是None,就会导致这个导入的值是None,即使之后main.py运行了load_model(),utils.py里的model也会一直是最初导入的值None,不会改变,从而使utils.py里面编辑的函数都因为model是None而不能正常使用。
所有要在utils.py使用get_model()动态获取model参数,这里获取的model是最新的值,main.py运行load_model()会改变model.py 的全局变量model,但因为utils.py是动态获取,所以会获得最新的model值,从而可以正常使用编辑的函数。