示例#1
0
 def __init__(self, **args):
     self.dataset_dir = os.path.join(Config.Dir.DATASET_DIR,
                                     args.get('dataset_id'))
     self.annotation_dir = os.path.join(Config.Dir.ANNOTATION_DIR,
                                        args.get('dataset_id'))
     create_if_not_exist(self.dataset_dir)
     create_if_not_exist(self.annotation_dir)
示例#2
0
    def __init__(self,
                 frame_reader,
                 thread_lock=threading.Lock(),
                 max_queue_size=Config.Frame.FRAME_QUEUE_SIZE,
                 max_frame_on_disk=Config.Frame.MAX_FRAME_ON_DISK,
                 on_disk_save_path=Config.Frame.FRAME_ON_DISK):

        threading.Thread.__init__(self)

        self.frame_reader = frame_reader
        self.max_queue_size = max_queue_size
        self.max_frame_on_disk = max_frame_on_disk
        self.thread_lock = thread_lock
        self.stream_time = time.time()

        self.queue = []
        self.on_disk_save_path = on_disk_save_path
        self.queue_on_disk = []
        self.frame_number = 0
        # if queue on disk is just full, need to process all the images before running again
        self.queue_on_disk_is_just_full = False
        self.running = True

        # remove old local cache
        self.clear_queue_on_disk()
        create_if_not_exist(self.on_disk_save_path)
示例#3
0
 def __init__(self, **kwargs):
     self.fps = kwargs.get('fps')
     self.video_dim = kwargs.get('video_dim')
     self.fourcc = cv2.VideoWriter_fourcc(*'XVID')
     self.camera_id = kwargs.get('camera_id')
     self.rel_video_dir = '%s/%s' % (Config.Dir.VIDEO, self.camera_id)
     abs_video_dir = '%s/%s' % (Config.Dir.DATA_DIR, self.rel_video_dir)
     create_if_not_exist(Config.Dir.VIDEO_DIR)
     create_if_not_exist(abs_video_dir)
示例#4
0
    def __init__(self, mean, covariance, track_id, n_init=3, max_age=30):
        self.track_id = track_id
        self.track_id_path = os.path.join(Config.Dir.TRACKING_DIR,
                                          str(self.track_id))
        # below is attribute for kalman filer tracker
        self._n_init = n_init
        self._max_age = max_age
        self.state = TrackState.Tentative

        self.mean = mean
        self.covariance = covariance
        self.hits = 1
        self.age = 1
        self.time_since_update = 0

        create_if_not_exist(self.track_id_path)
示例#5
0
    def doFaceTask(self, _task):
        data = _task.depackage()
        task_name = data['type']
        if task_name != Config.Worker.TASK_TRACKER:
            return

        deleted_trackers = data['trackers']
        for tracker in deleted_trackers:
            track_id_path = os.path.join(self.tracking_dir,
                                         str(tracker.track_id))
            create_if_not_exist(track_id_path)
            for tracker_element in tracker.elements:
                save_image = tracker_element.display_image
                image_id = '{}_{}'.format(tracker.track_id,
                                          tracker_element.str_info())
                image_name = image_id + '.jpg'
                image_path = os.path.join(track_id_path, image_name)
                if os.path.exists:
                    # path exist if have dump in realtime
                    continue
                misc.imsave(image_path, save_image)
                logger.debug('Save image: %s' % image_id)
示例#6
0
    def __init__(self,
                 mean,
                 covariance,
                 track_id,
                 n_init=3,
                 max_age=30,
                 _use_direction=Config.Track.USE_DIRECTION):
        self.track_id = track_id
        self.elements = []
        self.face_id = Config.Track.INIT_FACE_ID
        self.represent_image_id = None
        self.is_registered = True
        self.track_id_path = os.path.join(Config.Dir.TRACKING_DIR,
                                          str(self.track_id))
        self.use_direction = _use_direction

        # Here is the new attribute added this time
        # Since now we keep bad detections low coeff to track by iou
        # so we need to keep track of good faces to send
        self.nrof_good_faces = 0
        # This attribute to serve RealTime tracker - we send tracker to matching two times: t1 and t2
        # t1 is send when we we have n if good face, so t2 don't need to resend what t1 is already do
        self.sent_elements_index = 0

        # below is attribute for kalman filer tracker
        self.state = TrackState.Tentative

        self.hits = 1
        self.age = 1
        self.time_since_update = 0
        self.directions = []

        super(FaceTracker, self).__init__(mean,
                                          covariance,
                                          track_id,
                                          n_init=3,
                                          max_age=30)
        create_if_not_exist(self.track_id_path)
示例#7
0
    def init(self):
        rtsp = self.database.get_rtsp_link()
        # rtsp = '/iq_facial_recognition/source/prod/unilever_alert/Timeline_1.mp4'
        print(rtsp)
        self.frame_reader = frame_reader.URLFrameReader(rtsp, convert_color=False, re_source=True)
        self.frame_queue = frame_queue.FrameQueue(self.frame_reader)
        self.points = [(578, 93), (853, 509)]

        self.messenger = messenger.SocketMessenger(Config.Socket.HOST, Config.Socket.PORT)
        self.snapshot_cache = queue.Queue(maxsize=Config.ViolationAlert.NROF_SNAPSHOT)
        self.statistic_queue = queue.Queue()

        self.rel_snapshot_dir = '%s/%s' % (Config.Dir.SNAPSHOT, self.camera_id)
        abs_snapshot_dir = '%s/%s' % (Config.Dir.DATA_DIR, self.rel_snapshot_dir)
        snapshot_dir = '%s/%s' % (Config.Dir.DATA_DIR, Config.Dir.SNAPSHOT)
        create_if_not_exist(Config.Dir.DATA_DIR)
        create_if_not_exist(snapshot_dir)
        create_if_not_exist(abs_snapshot_dir)

        stat_thread = Thread(target=self.statistic_collector)
        process_thread = Thread(target=self.do_process)
        stat_thread.start()
        process_thread.start()
示例#8
0
 def __init__(self, **args):
     self.tracking_dir = args.get('tracking_dir,', Config.Dir.TRACKING_DIR)
     create_if_not_exist(self.tracking_dir)
示例#9
0
 def create_dir(self):
     create_if_not_exist(Config.Dir.DATASET_DIR)
     create_if_not_exist(Config.Dir.MATCHER_DIR)
     create_if_not_exist(Config.Dir.ANNOTATION_DIR)
     create_if_not_exist(Config.Dir.LOG_DIR)
示例#10
0
 def create_data_dir(self):
     dataset_path = os.path.join(Config.Dir.DATASET_DIR, self.dataset_id)
     annotaion_path = os.path.join(Config.Dir.ANNOTATION_DIR,
                                   self.dataset_id)
     create_if_not_exist(dataset_path)
     create_if_not_exist(annotaion_path)
示例#11
0
import sys
import logging
from logging.config import fileConfig
from logging.handlers import RotatingFileHandler
from config import Config
from core.cv_utils import create_if_not_exist


# add checking before run
create_if_not_exist(Config.Dir.DATA_DIR)
create_if_not_exist(Config.Dir.LOG_DIR)

logger = logging.getLogger(Config.LogFile.LOG_NAME)
if Config.Mode.PRODUCTION:
    handler = RotatingFileHandler(Config.LogFile.LOG_FILE)
else:
    handler = logging.StreamHandler(sys.stdout)
formatter = logging.Formatter(
    fmt='[%(asctime)s] [%(levelname)s] %(name)s - %(processName)s: %(message)s',
    datefmt='%Y-%m-%dT%H:%M:%S')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.INFO)