I built the tool using pyinstaller=5.13.2. i use yolov8 and ultralytics lib. When running the exe file, the interface is double. And running regular code is fine. I discovered that when debugging, I discovered that when the model was inferred, the same thing happened
pyinstaller --noconfirm --onedir --windowed --clean --add-data "C:/Users/KNT21818/AppData/Roaming/Python/Python39/site-packages/ultralytics;ultralytics/" --add-data "C:/Users/KNT21818/.conda/envs/Ocr/Lib/site-packages/paddleocr;paddleocr/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/OCR_tool/mklml_win_2018.0.3.20180406/lib/mklml.dll;." --hidden-import "imgaug" --hidden-import "pyclipper" --hidden-import "imghdr" --hidden-import "shapely" --hidden-import "skimage" --hidden-import "onnxruntime" --hidden-import "unidecode" --hidden-import "pandas" --hidden-import "torch" --hidden-import "cv2" --hidden-import "PIL" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/common_utils;common_utils/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/config;config/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/data;data/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/log;log/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/mapper;mapper/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/object_models;object_models/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/Ocr;Ocr/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/pipeline;pipeline/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/Templates;Templates/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/yolo_detector;yolo_detector/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/__init__.py;." --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/dconfig.py;." --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/extract_info.py;." --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/log.py;." --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/envs;envs/" --add-data "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/Templates/WindowMain_.ui;." --collect-all "ultralytics" "C:/Users/KNT21818/Documents/WorkSpace/Tool_hyouka_consult_v1/app/main.py"
class YoloRegionTextDetector(BaseDetector):
def __init__(self, config):
self.config = config
self.yolo_model_path = self.choose_model_path()
self.device = self.config["devices"]
self.num_torch_threads = self.config["num_torch_threads"]
self.model = YOLO(self.yolo_model_path, task='detect')
self.conf = self.config["confidence_threshold"]
self.iou = self.config["iou_threshold"]
self.names = self.model.names
def choose_model_path(self):
if self.config["yolo_model_type"] == 'onnx':
yolo_model_path = os.path.join(self.config["model_dir"], "yolo", "best.onnx")
else:
yolo_model_path = os.path.join(self.config["model_dir"], "yolo", "best.pt")
return yolo_model_path
def inference(self, img):
results = self.model.predict(img, imgsz=[640, 640], conf=self.conf, iou=self.iou, device=self.device)
df_result = None
if results:
result = results[0]
# print(result)
result = result.cpu()
result = result.numpy()
df_result = results_to_dataframe(result, self.names)
return df_result
i tried the onnx model. but still the same
This error is a thread conflict error between model yolo and gui .I found a way to fix it by freezing the stream similar to #3997 . but the program will take a little more time the first time it runs. add multiprocessing.freeze_support() exmp: