I’m going to develop a flask web application using yolov5 trained model. so as described in the doc, it works fine with the command-line argument, what I tried was I tried to apply the oop concept and create a model object for use with every single frame.
class Model(object):
def __init__(self, weights, save_img=False):
self.view_img = True,
self.save_txt = False,
self.imgsz = 640
self.device = select_device()
print(self.device, "llll")
self.output = "output"
if os.path.exists(self.output):
shutil.rmtree(self.output) # delete output folder
os.makedirs(self.output) # make new output folder
self.half = self.device.type != 'cpu' # half precision only supported on CUDA
# Load model
self.model = torch.load(weights, map_location=self.device)['model'].float() # load to FP32
self.model.to(self.device).eval()
if self.half:
self.model.half() # to FP16
In side Camera.py i tried to create model using below line
model = Model('weights/best.pt')
but now I’m getting below error in the stack
File "C:\Users\D.ShaN\Documents\projects\python\fyp\helmet_covers_yolo\flask_app\app.py", line 4, in <module>
from camera import Camera
File "C:\Users\D.ShaN\Documents\projects\python\fyp\helmet_covers_yolo\flask_app\camera.py", line 8, in <module>
from detect_image import detect_image
File "C:\Users\D.ShaN\Documents\projects\python\fyp\helmet_covers_yolo\flask_app\detect_image.py", line 12, in <module>
model = Model("weights/best.pt")
File "C:\Users\D.ShaN\Documents\projects\python\fyp\helmet_covers_yolo\flask_app\model.py", line 27, in __init__
self.model = torch.load(weights, map_location=self.device)['model'].float() # load to FP32
File "C:\Users\D.ShaN\AppData\Local\conda\conda\envs\fyp\lib\site-packages\torch\serialization.py", line 594, in load
return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args)
File "C:\Users\D.ShaN\AppData\Local\conda\conda\envs\fyp\lib\site-packages\torch\serialization.py", line 853, in _load
result = unpickler.load()
ModuleNotFoundError: No module named 'models'
ass describe in Yolo I tried to execute below line in the same manner with the same weight parameters in both cases (command line and model = Model("weights/best.pt")
)
self.model = torch.load(weights, map_location=self.device)['model'].float()
any suggestions or solutions
thank you