Exemple #1
0
    def __init__(self, name, in_video: VideoReader, state: State, video_path,
                 fps, frame_size, coord, answer):
        self.name = name
        self.logger = logging.getLogger(self.name)
        self.state = state
        self.coord = coord
        self.fps = fps
        self.frame_size = tuple(frame_size)

        self.out_video = VideoWriter("VideoWriter", video_path, self.fps,
                                     self.frame_size)
        self.sleep_time_vis = 1. / self.fps
        self.in_video = in_video
        self.stopped = True
        self.visualize_thread = None

        self.predictor = Predictor()

        self.visualizer = Visualizer()

        self.answer = answer
        self.best_accuracy = 0
        self.best_frame = -1
        self.best_result = ''

        self.logger.info("Create VisualizeStream")
Exemple #2
0
    def __init__(self, name, state: State, video_reader: VideoReader):
        self.name = name
        self.logger = logging.getLogger(self.name)
        self.state = state
        self.video_reader = video_reader
        self.ocr_thread = None

        self.predictor = Predictor()

        self.logger.info("Create OcrStream")
Exemple #3
0
 def __init__(self, name, state: State, video_reader: VideoReader):
     self.name = name
     self.logger = logging.getLogger(self.name)
     self.state = state
     self.video_reader = video_reader
     self.ocr_thread = None
     self.predictor = Predictor(
         'C:\\Users\\user\\results\\experiment1\\model-052-1.928074.pth',
         (32, 80))  #TODO: Your Predictor
     self.logger.info("Create OcrStream")
     self.time = None
     self.frame_quantity = 0
    def __init__(self, name, state: State, video_reader: VideoReader, model_path):
        self.name = name
        self.logger = logging.getLogger(self.name)
        self.state = state
        self.video_reader = video_reader
        self.ocr_thread = None
        self.time_start = datetime.now()
        self.stopped = False

        converter = strLabelConverter(CV_CONFIG.get('alphabet'))
        self.predictor = Predictor(model_path, converter) #TODO: Your Predictor


        self.logger.info("Create OcrStream")
Exemple #5
0
class OcrStream:
    def __init__(self, name, state: State, video_reader: VideoReader):
        self.name = name
        self.logger = logging.getLogger(self.name)
        self.state = state
        self.video_reader = video_reader
        self.ocr_thread = None

        self.predictor = Predictor()

        self.logger.info("Create OcrStream")

    def _ocr_loop(self):
        try:
            frame = self.video_reader.read()
            pred = self.predictor.predict([frame])
            self.state.text = pred

        except Exception as e:
            self.logger.exception(e)
            self.state.exit_event.set()

    def _start_ocr(self):
        self.ocr_thread = Thread(target=self._ocr_loop)
        self.ocr_thread.start()

    def start(self):
        self._start_ocr()
        self.logger.info("Start OcrStream")

    def stop(self):
        if self.ocr_thread is not None:
            self.ocr_thread.join()
        self.logger.info("Stop OcrStream")
class OcrStream:
    def __init__(
        self,
        name,
        state: State,
        video_reader: VideoReader,
        model_path='/home/alex/final_version_ocr/project (car numbers)/model/model_crnn.pth'
    ):
        self.name = name
        self.logger = logging.getLogger(self.name)
        self.state = state
        self.video_reader = video_reader
        self.ocr_thread = None
        self.time_start = datetime.now()
        self.stopped = False

        converter = strLabelConverter(CV_CONFIG.get('alphabet'))
        self.predictor = Predictor(model_path, converter)

        self.logger.info("Create OcrStream")

    def _ocr_loop(self):
        try:
            file = open("predictions.txt", "w")
            while True:
                if self.stopped:
                    file.close()
                    return
                frame = self.video_reader.read()

                pred = self.predictor.predict(frame[None])
                file.writelines("%s\n" % pred)
                self.state.text = pred
                self.state.frame = frame
                self.state.frame_id += 1
                if self.state.frame_id % 24 == 0:
                    cur_t = datetime.now()
                    secs = (cur_t - self.time_start).seconds
                    self.logger.info(
                        f"FPS: {self.state.frame_id/secs if secs>0 else 0}")
            file.close()

        except Exception as e:
            self.logger.exception(e)
            self.state.exit_event.set()

    def _start_ocr(self):
        self.ocr_thread = Thread(target=self._ocr_loop)
        self.ocr_thread.start()

    def start(self):
        self._start_ocr()
        self.logger.info("Start OcrStream")

    def stop(self):
        self.stopped = True
        if self.ocr_thread is not None:
            self.ocr_thread.join()
        self.logger.info("Stop OcrStream")
    def __init__(
        self,
        name,
        state: State,
        video_reader: VideoReader,
        model_path='/home/alex/final_version_ocr/project (car numbers)/model/model_crnn.pth'
    ):
        self.name = name
        self.logger = logging.getLogger(self.name)
        self.state = state
        self.video_reader = video_reader
        self.ocr_thread = None
        self.time_start = datetime.now()
        self.stopped = False

        converter = strLabelConverter(CV_CONFIG.get('alphabet'))
        self.predictor = Predictor(model_path, converter)

        self.logger.info("Create OcrStream")
class OcrStream:
    def __init__(self, name, state: State, video_reader: VideoReader, model_path):
        self.name = name
        self.logger = logging.getLogger(self.name)
        self.state = state
        self.video_reader = video_reader
        self.ocr_thread = None
        self.time_start = datetime.now()
        self.stopped = False

        converter = strLabelConverter(CV_CONFIG.get('alphabet'))
        self.predictor = Predictor(model_path, converter) #TODO: Your Predictor


        self.logger.info("Create OcrStream")

    def _ocr_loop(self):
        try:
            while True:
                if self.stopped:
                    return
                frame = self.video_reader.read()

                pred = self.predictor.predict(frame[None])
                self.state.text = pred
                self.state.frame = frame
                self.state.frame_id += 1
                if self.state.frame_id % 24 == 0:
                    cur_t = datetime.now()
                    secs = (cur_t-self.time_start).seconds
                    self.logger.info(f"FPS: {self.state.frame_id/secs if secs>0 else 0}")

        except Exception as e:
            self.logger.exception(e)
            self.state.exit_event.set()

    def _start_ocr(self):
        self.ocr_thread = Thread(target=self._ocr_loop)
        self.ocr_thread.start()

    def start(self):
        self._start_ocr()
        self.logger.info("Start OcrStream")

    def stop(self):
        self.stopped = True
        if self.ocr_thread is not None:
            self.ocr_thread.join()
        self.logger.info("Stop OcrStream")
Exemple #9
0
class OcrStream:
    def __init__(self, name, state: State, video_reader: VideoReader):
        self.name = name
        self.logger = logging.getLogger(self.name)
        self.state = state
        self.video_reader = video_reader
        self.ocr_thread = None
        self.predictor = Predictor(
            'C:\\Users\\user\\results\\experiment1\\model-052-1.928074.pth',
            (32, 80))  #TODO: Your Predictor
        self.logger.info("Create OcrStream")
        self.time = None
        self.frame_quantity = 0

    def _ocr_loop(self):
        try:
            self.start_time = time.time()
            while True:
                frame = self.video_reader.read()
                pred = self.predictor.predict(frame)
                self.state.text = pred
                self.state.frame = frame
                self.frame_quantity += 1
                if self.frame_quantity % 10 == 0:
                    print(self.frame_quantity /
                          (time.time() - self.start_time))

        except Exception as e:
            self.logger.exception(e)
            self.state.exit_event.set()

    def _start_ocr(self):
        self.ocr_thread = Thread(target=self._ocr_loop)
        self.ocr_thread.start()

    def start(self):
        self._start_ocr()
        self.logger.info("Start OcrStream")

    def stop(self):
        if self.ocr_thread is not None:
            self.ocr_thread.join()
        self.logger.info("Stop OcrStream")
    },
    "optimizer": ("Adam", {
        "lr": 0.001
    }),
    # CHANGE DEVICE IF YOU USE GPU
    "device":
    "cpu",
}

if __name__ == "__main__":
    converter = strLabelConverter(MODEL_PARAMS['alphabet'])

    model_path = EXPERIMENT_DIR / sorted(
        os.listdir(EXPERIMENT_DIR))[-1]  # Last saved model
    #print('Model path is', model_path)
    #print('Is it a file?', os.path.isfile(model_path))

    predictor = Predictor(model_path,
                          converter,
                          CV_CONFIG.get('ocr_image_size'),
                          device=MODEL_PARAMS['device'])

    #print('File name', args.file_name)
    #print(os.path.isdir('/workdir/data/CropNumbers'))
    #print(os.path.isfile(args.file_name))
    if os.path.isdir(args.file_name):
        print('DIR Are not supported')
    else:
        img = imageio.imread(args.file_name)
        print(f'Prediction "{predictor.predict(img)}"')
Exemple #11
0
class VisualizeStream:
    def __init__(self, name, in_video: VideoReader, state: State, video_path,
                 fps, frame_size, coord, answer):
        self.name = name
        self.logger = logging.getLogger(self.name)
        self.state = state
        self.coord = coord
        self.fps = fps
        self.frame_size = tuple(frame_size)

        self.out_video = VideoWriter("VideoWriter", video_path, self.fps,
                                     self.frame_size)
        self.sleep_time_vis = 1. / self.fps
        self.in_video = in_video
        self.stopped = True
        self.visualize_thread = None

        self.predictor = Predictor()

        self.visualizer = Visualizer()

        self.answer = answer
        self.best_accuracy = 0
        self.best_frame = -1
        self.best_result = ''

        self.logger.info("Create VisualizeStream")

    def _visualize(self):
        try:

            begin = datetime.now()
            frame_num = 0
            while True:
                if self.stopped:
                    return

                frame = self.in_video.read()
                if frame is None:
                    self.state.exit_event.set()
                    end = datetime.now()
                    print('FRAMES: ', frame_num, end - begin)
                    return
                prediction = self.predictor.predict(frame)

                hits = 0
                for i in range(6):
                    if len(prediction) > i and self.answer[i] == prediction[i]:
                        hits += 1

                if hits > self.best_accuracy:
                    self.best_accuracy = hits
                    self.best_result = prediction
                    self.best_frame = frame_num

                frame = self.visualizer(frame, prediction)
                self.out_video.write(frame)

                time.sleep(self.sleep_time_vis)

                frame_num += 1

        except Exception as e:
            self.logger.exception(e)
            self.state.exit_event.set()

    def start(self):
        self.logger.info("Start VisualizeStream")
        self.stopped = False
        self.visualize_thread = Thread(target=self._visualize, args=())
        self.visualize_thread.start()
        self.in_video.start()

    def stop(self):
        self.logger.info("Stop VisualizeStream")
        self.stopped = True
        self.out_video.stop()
        if self.visualize_thread is not None:
            self.visualize_thread.join()