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 __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 __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")
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")
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)}"')
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()