예제 #1
0
def main():
    params = Params()

    paramparse.process(params, allow_unknown=1)

    params.scp.read_auth()

    if params.working_dir:
        os.chdir(params.working_dir)

    timestamp = datetime.now().strftime("%y%m%d_%H%M%S_%f")

    log_data_all = []
    log_data_dict = {}
    out_dir = linux_path(params.log_dir, 'consolidate_log')
    os.makedirs(out_dir, exist_ok=True)

    for server_id, server_name in enumerate(params.servers):
        log_path = run_scp(params.scp,
                           server_name,
                           params.log_dir,
                           params.log_fname,
                           out_dir,
                           is_file=1,
                           timestamp=timestamp)

        if log_path is None:
            print('log data for server {} not found'.format(server_name))
            continue

        log_data = open(log_path, 'r').readlines()

        if server_id > 0 and params.remove_header:
            log_data = log_data[1:]

        log_data_all += log_data

        log_data_dict[server_name] = log_data

    # out_fname = add_suffix(params.log_fname, '{}'.format(timestamp))
    out_fname = 'consolidated_{}.log'.format(timestamp)
    out_path = linux_path(out_dir, out_fname)

    print('writing consolidated log to {}'.format(out_path))
    os.makedirs(params.log_dir, exist_ok=True)
    with open(out_path, 'w') as fid:
        fid.write(''.join(log_data_all))

    open_cmd = "start {}".format(out_path)
    os.system(open_cmd)

    _ = input('press enter to exit')
예제 #2
0
class Params:
    class SCP:
        auth_path = ""
        url = ""
        user = ""
        pwd = ""
        home_dir = "/home/abhineet"
        code_path = 'deep_mdp/tracking_module'

        show_output = 1
        enable_zipping = 1
        remove_zip = 1
        rename_src = 1

        def read_auth(self):
            if not self.auth_path:
                print("auth_path is not provided")
                return

            auth_data = open(self.auth_path, 'r').readlines()
            auth_data = [k.strip() for k in auth_data]
            self.url, self.user, self.pwd = auth_data[0].split(' ')

    working_dir = ''
    log_dir = 'log'
    log_fname = 'mot_metrics_accumulative_hota.log'

    servers = ['grs', 'orca', 'x99']
    # servers = ['x99', 'orca']
    cmd_in_file = linux_path('log', 'multi_vis_cmd.txt')
    force_download = 0
    remove_header = 1
    scp = SCP()
예제 #3
0
    # app_t = application.Application().start("cmd.exe")
    # app_t = application.Application().start("C:\\Users\\Tommy\\Desktop\\startup_progs\\t.lnk")
    # app_t = application.Application().start("H:\\UofA\\MSc\\Code\\TrackingFramework\\scripts\\t.cmd")
    # app_t = application.Application().start("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe")
    # app_t = application.Application().start("C:\\Essentials\\ConEmu\\ConEmu64.exe")
    # app_t = application.Application().start("C:\\Program Files (x86)\\PowerCmd\\PowerCmd.exe")
    # app_t.window().maximize()

    start_t = time.time()

    # sys.exit()
    assert exe_path, 'Terminal executable path must be provided'

    if not only_git:
        auth_path = linux_path(auth_root, auth_dir, auth_file)
        auth_data = open(auth_path, 'r').readlines()
        auth_data = [k.strip() for k in auth_data]

        dst0_info = auth_data[0].split(' ')
        name00, name01, ecr0, key0 = dst0_info[:4]

        name10, name11, ecr1, key1 = auth_data[1].split(' ')[:4]
        name20, name21, ecr2, key2 = auth_data[2].split(' ')[:4]

        key0_path = linux_path(key_root, key_dir, key0)
        key1_path = linux_path(key_root, key_dir, key1)
        key2_path = linux_path(key_root, key_dir, key2)

        encryption_params = encryption.Params()
        encryption_params.mode = 1
예제 #4
0
def main():
    _params = Params()

    paramparse.process(_params)

    root_dir = _params.root_dir
    start_id = _params.start_id
    end_id = _params.end_id

    write_img = _params.write_img
    write_gt = _params.write_gt

    save_img = _params.save_img
    save_vid = _params.save_vid
    codec = _params.codec

    show_img = _params.show_img
    vis_height = _params.vis_height
    vis_width = _params.vis_width

    # default_obj_size = _params.default_obj_size
    ignore_missing_gt = _params.ignore_missing_gt
    ignore_missing_seg = _params.ignore_missing_seg
    raad_gt = _params.raad_gt

    if save_img:
        if not show_img:
            show_img += 2
    else:
        if show_img > 1:
            save_img = 1

    params = ParamDict()

    actor = 'CTC'
    actor_sequences_dict = params.sequences_ctc

    actor_sequences = list(actor_sequences_dict.keys())

    if end_id <= start_id:
        end_id = len(actor_sequences) - 1

    print('root_dir: {}'.format(root_dir))
    print('start_id: {}'.format(start_id))
    print('end_id: {}'.format(end_id))

    print('actor: {}'.format(actor))
    print('actor_sequences: {}'.format(actor_sequences))
    img_exts = ('.tif', )

    n_frames_list = []
    _pause = 1
    __pause = 1

    ann_cols = ('green', 'blue', 'red', 'cyan', 'magenta', 'gold', 'purple',
                'peach_puff', 'azure', 'dark_slate_gray', 'navy', 'turquoise')

    out_img_tif_root_path = linux_path(root_dir, actor, 'Images_TIF')
    os.makedirs(out_img_tif_root_path, exist_ok=True)

    out_img_jpg_root_path = linux_path(root_dir, actor, 'Images')
    os.makedirs(out_img_jpg_root_path, exist_ok=True)

    if save_img:
        out_vis_root_path = linux_path(root_dir, actor, 'Visualizations')
        os.makedirs(out_vis_root_path, exist_ok=True)

    out_gt_root_path = linux_path(root_dir, actor, 'Annotations')
    os.makedirs(out_gt_root_path, exist_ok=True)

    n_frames_out_file = linux_path(root_dir, actor, 'n_frames.txt')
    n_frames_out_fid = open(n_frames_out_file, 'w')

    _exit = 0
    _pause = 1
    time_stamp = datetime.now().strftime("%y%m%d_%H%M%S")

    log_path = linux_path(root_dir, actor, 'log_{}.log'.format(time_stamp))
    tif_root_dir = linux_path(root_dir, actor, 'tif')
    assert os.path.exists(tif_root_dir), "tif_root_dir does not exist"

    seq_ids = _params.seq_ids
    if not seq_ids:
        seq_ids = list(range(start_id, end_id + 1))

    n_seq = len(seq_ids)
    for __id, seq_id in enumerate(seq_ids):

        seq_name = actor_sequences[seq_id]

        default_obj_size = actor_sequences_dict[seq_name]

        seq_img_path = linux_path(tif_root_dir, seq_name)
        assert os.path.exists(seq_img_path), "seq_img_path does not exist"

        seq_img_src_files = [
            k for k in os.listdir(seq_img_path)
            if os.path.splitext(k.lower())[1] in img_exts
        ]
        seq_img_src_files.sort()

        out_gt_fid = None

        n_frames = len(seq_img_src_files)

        print('seq {} / {}\t{}\t{}\t{} frames'.format(__id + 1, n_seq, seq_id,
                                                      seq_name, n_frames))

        n_frames_out_fid.write("{:d}: ('{:s}', {:d}),\n".format(
            seq_id, seq_name, n_frames))

        n_frames_list.append(n_frames)

        gt_available = 0
        if not raad_gt:
            print('skipping GT reading')
        else:
            seq_gt_path = linux_path(tif_root_dir, seq_name + '_GT', 'TRA')
            if not os.path.exists(seq_gt_path):
                msg = "seq_gt_path does not exist"
                if ignore_missing_gt:
                    print(msg)
                else:
                    raise AssertionError(msg)
            else:
                gt_available = 1
                seq_gt_tra_file = linux_path(seq_gt_path, "man_track.txt")
                if os.path.exists(seq_gt_tra_file):
                    out_tra_file = linux_path(out_gt_root_path,
                                              seq_name + '.tra')
                    print('{} --> {}'.format(seq_gt_tra_file, out_tra_file))
                    if not os.path.exists(out_tra_file):
                        shutil.copy(seq_gt_tra_file, out_tra_file)
                    else:
                        print('skipping existing {}'.format(out_tra_file))
                else:
                    msg = "\nseq_gt_tra_file does not exist: {}".format(
                        seq_gt_tra_file)
                    if ignore_missing_gt:
                        print(msg)
                    else:
                        raise AssertionError(msg)

        if _params.tra_only:
            continue

        seg_available = 0
        if not raad_gt:
            print('skipping segmentation reading')
        else:
            seq_seg_path = linux_path(tif_root_dir, seq_name + '_ST', 'SEG')
            if not os.path.exists(seq_seg_path):
                print("ST seq_seg_path does not exist")
                seq_seg_path = linux_path(tif_root_dir, seq_name + '_GT',
                                          'SEG')
                if not os.path.exists(seq_seg_path):
                    msg = "GT seq_seg_path does not exist"
                    if ignore_missing_seg:
                        print(msg)
                    else:
                        raise AssertionError(msg)
                else:
                    seg_available = 1
            else:
                seg_available = 1

        if write_img:
            out_img_tif_dir_path = linux_path(out_img_tif_root_path, seq_name)
            os.makedirs(out_img_tif_dir_path, exist_ok=True)
            print('copying TIF images to {}'.format(out_img_tif_dir_path))

            out_img_jpg_dir_path = linux_path(out_img_jpg_root_path, seq_name)
            os.makedirs(out_img_jpg_dir_path, exist_ok=True)
            print('Saving jPG images to {}'.format(out_img_jpg_dir_path))

        vid_out = None
        if save_img:
            if save_vid:
                out_vis_path = linux_path(out_vis_root_path, seq_name + '.mkv')
                vid_out = cv2.VideoWriter(out_vis_path,
                                          cv2.VideoWriter_fourcc(*codec), 30,
                                          (vis_width, vis_height))
            else:
                out_vis_path = linux_path(out_vis_root_path, seq_name)
                os.makedirs(out_vis_path, exist_ok=True)
            print('Saving visualizations to {}'.format(out_vis_path))

        from collections import OrderedDict

        file_id_to_gt = OrderedDict()
        obj_id_to_gt_file_ids = OrderedDict()

        if gt_available:
            print('reading GT from {}...'.format(seq_gt_path))

            seq_gt_src_files = [
                k for k in os.listdir(seq_gt_path)
                if os.path.splitext(k.lower())[1] in img_exts
            ]
            seq_gt_src_files.sort()

            assert len(seq_img_src_files) == len(
                seq_gt_src_files
            ), "mismatch between the lengths of seq_img_src_files and seq_gt_src_files"

            for seq_gt_src_file in tqdm(seq_gt_src_files,
                                        disable=_params.disable_tqdm):
                seq_gt_src_file_id = ''.join(k for k in seq_gt_src_file
                                             if k.isdigit())

                file_id_to_gt[seq_gt_src_file_id] = OrderedDict()

                seq_gt_src_path = os.path.join(seq_gt_path, seq_gt_src_file)
                seq_gt_pil = Image.open(seq_gt_src_path)
                seq_gt_np = np.array(seq_gt_pil)

                gt_obj_ids = list(np.unique(seq_gt_np, return_counts=False))
                gt_obj_ids.remove(0)

                for obj_id in gt_obj_ids:
                    obj_locations = np.nonzero(seq_gt_np == obj_id)
                    centroid_y, centroid_x = [
                        np.mean(k) for k in obj_locations
                    ]

                    file_id_to_gt[seq_gt_src_file_id][obj_id] = [
                        obj_locations, centroid_y, centroid_x
                    ]

                    if obj_id not in obj_id_to_gt_file_ids:
                        obj_id_to_gt_file_ids[obj_id] = []

                    obj_id_to_gt_file_ids[obj_id].append(seq_gt_src_file_id)

            if write_gt:
                out_gt_path = linux_path(out_gt_root_path, seq_name + '.txt')
                out_gt_fid = open(out_gt_path, 'w')

        file_id_to_seg = OrderedDict()
        file_id_to_nearest_seg = OrderedDict()

        obj_id_to_seg_file_ids = OrderedDict()
        obj_id_to_seg_sizes = OrderedDict()
        obj_id_to_seg_bboxes = OrderedDict()
        obj_id_to_mean_seg_sizes = OrderedDict()
        obj_id_to_max_seg_sizes = OrderedDict()
        all_seg_sizes = []
        mean_seg_sizes = None
        max_seg_sizes = None

        if seg_available:
            print('reading segmentations from {}...'.format(seq_seg_path))
            seq_seq_src_files = [
                k for k in os.listdir(seq_seg_path)
                if os.path.splitext(k.lower())[1] in img_exts
            ]
            for seq_seq_src_file in tqdm(seq_seq_src_files,
                                         disable=_params.disable_tqdm):

                seq_seq_src_file_id = ''.join(k for k in seq_seq_src_file
                                              if k.isdigit())
                file_gt = file_id_to_gt[seq_seq_src_file_id]

                file_id_to_seg[seq_seq_src_file_id] = OrderedDict()

                seq_seq_src_path = os.path.join(seq_seg_path, seq_seq_src_file)
                seq_seg_pil = Image.open(seq_seq_src_path)
                seq_seg_np = np.array(seq_seg_pil)

                seg_obj_ids = list(np.unique(seq_seg_np, return_counts=False))
                seg_obj_ids.remove(0)

                _gt_obj_ids = list(file_gt.keys())

                if len(_gt_obj_ids) != len(seg_obj_ids):
                    print(
                        "\nmismatch between the number of objects in segmentation: {} and GT: {} in {}"
                        .format(len(seg_obj_ids), len(_gt_obj_ids),
                                seq_seq_src_file))

                from scipy.spatial import distance_matrix

                seg_centroids = []
                seg_id_to_locations = {}

                for seg_obj_id in seg_obj_ids:
                    # obj_id = gt_obj_ids[seg_obj_id - 1]

                    seg_obj_locations = np.nonzero(seq_seg_np == seg_obj_id)
                    seg_centroid_y, seg_centroid_x = [
                        np.mean(k) for k in seg_obj_locations
                    ]

                    seg_centroids.append([seg_centroid_y, seg_centroid_x])

                    seg_id_to_locations[seg_obj_id] = seg_obj_locations

                gt_centroids = [[k[1], k[2]] for k in file_gt.values()]
                gt_centroids = np.asarray(gt_centroids)
                seg_centroids = np.asarray(seg_centroids)

                gt_to_seg_dists = distance_matrix(seg_centroids, gt_centroids)

                # seg_min_dist_ids = np.argmin(gt_to_seg_dists, axis=1)
                # gt_min_dist_ids = np.argmin(gt_to_seg_dists, axis=0)
                # unique_min_dist_ids = np.unique(seg_min_dist_ids)                #
                #
                # assert len(unique_min_dist_ids) == len(seg_min_dist_ids), \
                #     "duplicate matches found between segmentation and GT objects"

                # seg_to_gt_obj_ids = {
                #     seg_obj_id:  _gt_obj_ids[seg_min_dist_ids[_id]] for _id, seg_obj_id in enumerate(seg_obj_ids)
                # }

                from scipy.optimize import linear_sum_assignment

                seg_inds, gt_inds = linear_sum_assignment(gt_to_seg_dists)

                if len(seg_inds) != len(seg_obj_ids):
                    print(
                        "only {} / {} segmentation objects assigned to GT objects"
                        .format(len(seg_inds), len(seg_obj_ids)))

                seg_to_gt_obj_ids = {
                    seg_obj_ids[seg_inds[i]]: _gt_obj_ids[gt_inds[i]]
                    for i in range(len(seg_inds))
                }

                # print()

                for seg_obj_id in seg_obj_ids:
                    seg_obj_locations = seg_id_to_locations[seg_obj_id]
                    _gt_obj_id = seg_to_gt_obj_ids[seg_obj_id]

                    min_y, min_x = [np.amin(k) for k in seg_obj_locations]
                    max_y, max_x = [np.amax(k) for k in seg_obj_locations]

                    size_x, size_y = max_x - min_x, max_y - min_y

                    if _gt_obj_id not in obj_id_to_seg_sizes:
                        obj_id_to_seg_bboxes[_gt_obj_id] = []
                        obj_id_to_seg_sizes[_gt_obj_id] = []
                        obj_id_to_seg_file_ids[_gt_obj_id] = []

                    obj_id_to_seg_file_ids[_gt_obj_id].append(
                        seq_seq_src_file_id)

                    file_id_to_seg[seq_seq_src_file_id][_gt_obj_id] = (
                        seg_obj_locations, [min_x, min_y, max_x, max_y])

                    obj_id_to_seg_bboxes[_gt_obj_id].append(
                        [seq_seq_src_file, min_x, min_y, max_x, max_y])
                    obj_id_to_seg_sizes[_gt_obj_id].append([size_x, size_y])

                    all_seg_sizes.append([size_x, size_y])

            obj_id_to_mean_seg_sizes = OrderedDict({
                k: np.mean(v, axis=0)
                for k, v in obj_id_to_seg_sizes.items()
            })
            obj_id_to_max_seg_sizes = OrderedDict({
                k: np.amax(v, axis=0)
                for k, v in obj_id_to_seg_sizes.items()
            })

            print('segmentations found for {} files'.format(
                len(file_id_to_seg),
                # '\n'.join(file_id_to_seg.keys())
            ))
            print('segmentations include {} objects:\n{}'.format(
                len(obj_id_to_seg_bboxes),
                ', '.join(str(k) for k in obj_id_to_seg_bboxes.keys())))

            mean_seg_sizes = np.mean(all_seg_sizes, axis=0)
            max_seg_sizes = np.amax(all_seg_sizes, axis=0)

            for obj_id in obj_id_to_seg_file_ids:
                seg_file_ids = obj_id_to_seg_file_ids[obj_id]
                seg_file_ids_num = np.asarray(
                    list(int(k) for k in seg_file_ids))
                gt_file_ids = obj_id_to_gt_file_ids[obj_id]
                # gt_file_ids_num = np.asarray(list(int(k) for k in gt_file_ids))
                gt_seg_file_ids_dist = {
                    gt_file_id: np.abs(int(gt_file_id) - seg_file_ids_num)
                    for gt_file_id in gt_file_ids
                }
                file_id_to_nearest_seg[obj_id] = {
                    gt_file_id: seg_file_ids[np.argmin(_dist).item()]
                    for gt_file_id, _dist in gt_seg_file_ids_dist.items()
                }

        nearest_seg_size = OrderedDict()

        for frame_id in tqdm(range(n_frames), disable=_params.disable_tqdm):
            seq_img_src_file = seq_img_src_files[frame_id]

            # assert seq_img_src_file in seq_gt_src_file, \
            #     "mismatch between seq_img_src_file and seq_gt_src_file"

            seq_img_src_file_id = ''.join(k for k in seq_img_src_file
                                          if k.isdigit())

            seq_img_src_path = os.path.join(seq_img_path, seq_img_src_file)

            # seq_img_pil = Image.open(seq_img_src_path)
            # seq_img = np.array(seq_img_pil)

            seq_img = cv2.imread(seq_img_src_path, cv2.IMREAD_UNCHANGED)
            # assert (seq_img == seq_img_cv).all(), "mismatch between PIL and cv2 arrays"
            # seq_img_cv_unique = np.unique(seq_img_cv)
            # n_seq_img_unique_cv = len(seq_img_cv_unique)

            # seq_img_float = seq_img.astype(np.float32) / 65535.

            max_pix, min_pix = np.amax(seq_img), np.amin(seq_img)

            seq_img_float_norm = (seq_img.astype(np.float32) -
                                  min_pix) / (max_pix - min_pix)
            seq_img_uint8 = (seq_img_float_norm * 255.).astype(np.uint8)
            # seq_img_uint8 = (seq_img / 256.).astype(np.uint8)
            max_pix_uint8, min_pix_uint8 = np.amax(seq_img_uint8), np.amin(
                seq_img_uint8)

            seq_img_unique = np.unique(seq_img)
            seq_img_unique_uint8 = np.unique(seq_img_uint8)

            n_seq_img_unique = len(seq_img_unique)
            n_seq_img_unique_uint8 = len(seq_img_unique_uint8)

            if n_seq_img_unique > n_seq_img_unique_uint8:
                # print('{} :: drop in number of unique values from {} ({}, {}) to {} ({}, {})'.format(
                #     seq_img_src_file, n_seq_img_unique, max_pix, min_pix,
                #     n_seq_img_unique_uint8, max_pix_uint8, min_pix_uint8))
                with open(log_path, 'a') as log_fid:
                    log_fid.write('{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\n'.format(
                        seq_name, seq_img_src_file, n_seq_img_unique,
                        n_seq_img_unique_uint8, max_pix, min_pix,
                        max_pix_uint8, min_pix_uint8))
                # print()

            if write_img:
                # out_img_file = os.path.splitext(seq_img_src_file)[0] + '.png'
                # out_img_file_path = linux_path(out_img_tif_dir_path, out_img_file)

                out_img_file_tif = os.path.splitext(
                    seq_img_src_file)[0] + '.tif'
                out_img_file_path_tif = linux_path(out_img_tif_dir_path,
                                                   out_img_file_tif)

                out_img_file_uint8 = os.path.splitext(
                    seq_img_src_file)[0] + '.jpg'
                out_img_file_path_uint8 = linux_path(out_img_jpg_dir_path,
                                                     out_img_file_uint8)

                if not os.path.exists(out_img_file_path_uint8):
                    # cv2.imwrite(out_img_file_path, seq_img)
                    cv2.imwrite(out_img_file_path_uint8, seq_img_uint8)

                if not os.path.exists(out_img_file_path_tif):
                    # print('{} --> {}'.format(seq_img_src_path, out_img_file_path_tif))
                    shutil.copyfile(seq_img_src_path, out_img_file_path_tif)

            if show_img:
                seq_img_col = seq_img_uint8.copy()
                if len(seq_img_col.shape) == 2:
                    seq_img_col = cv2.cvtColor(seq_img_col, cv2.COLOR_GRAY2BGR)

                # seq_img_col2 = seq_img_col.copy()

                seq_img_col3 = seq_img_col.copy()

            if not gt_available:
                if save_img:
                    if vid_out is not None:
                        vid_out.write(seq_img_col)
                continue

            file_gt = file_id_to_gt[seq_img_src_file_id]

            # seq_gt_src_file = seq_gt_src_files[frame_id]
            # assert seq_gt_src_file_id == seq_img_src_file_id, \
            #     "Mismatch between seq_gt_src_file_id and seq_img_src_file_id"

            gt_obj_ids = list(file_gt.keys())
            for obj_id in gt_obj_ids:
                assert obj_id != 0, "invalid object ID"

                try:
                    nearest_seg_file_ids = file_id_to_nearest_seg[obj_id]
                except KeyError:
                    file_seg = {}
                else:
                    nearest_seg_file_id = nearest_seg_file_ids[
                        seq_img_src_file_id]
                    file_seg = file_id_to_seg[nearest_seg_file_id]

                obj_locations, centroid_y, centroid_x = file_gt[obj_id]

                if file_seg:
                    xmin, ymin, xmax, ymax = file_seg[obj_id][1]
                    size_x, size_y = xmax - xmin, ymax - ymin
                    nearest_seg_size[obj_id] = (size_x, size_y)
                else:
                    try:
                        size_x, size_y = nearest_seg_size[obj_id]
                    except KeyError:
                        try:
                            size_x, size_y = obj_id_to_mean_seg_sizes[obj_id]
                        except KeyError:
                            if mean_seg_sizes is not None:
                                size_x, size_y = mean_seg_sizes
                            else:
                                size_x, size_y = default_obj_size, default_obj_size

                    ymin, xmin = centroid_y - size_y / 2.0, centroid_x - size_x / 2.0
                    ymax, xmax = centroid_y + size_y / 2.0, centroid_x + size_x / 2.0

                width = int(xmax - xmin)
                height = int(ymax - ymin)

                if show_img:
                    col_id = (obj_id - 1) % len(ann_cols)

                    col = col_rgb[ann_cols[col_id]]
                    drawBox(seq_img_col,
                            xmin,
                            ymin,
                            xmax,
                            ymax,
                            label=str(obj_id),
                            box_color=col)
                    # seq_img_col2[obj_locations] = col

                    if file_seg:
                        try:
                            locations, bbox = file_seg[obj_id][:2]
                        except KeyError:
                            print('weird stuff going on here')
                        else:
                            seq_img_col3[locations] = col
                            # min_x, min_y, max_x, max_y = bbox
                            # drawBox(seq_img_col3, min_x, min_y, max_x, max_y, label=str(obj_id), box_color=col)

                if write_gt:
                    out_gt_fid.write(
                        '{:d},{:d},{:.3f},{:.3f},{:d},{:d},1,-1,-1,-1\n'.
                        format(frame_id + 1, obj_id, xmin, ymin, width,
                               height))
                # print()
            skip_seq = 0

            if show_img:
                # images_to_stack = [seq_img_col, seq_img_col2]
                images_to_stack = [
                    seq_img_col,
                ]
                if file_seg:
                    images_to_stack.append(seq_img_col3)
                    __pause = _pause
                else:
                    __pause = _pause

                seq_img_vis = stackImages(images_to_stack, sep_size=5)

                seq_img_vis = resizeAR(seq_img_vis,
                                       height=vis_height,
                                       width=vis_width)

                cv2.putText(seq_img_vis,
                            '{}: {}'.format(seq_name,
                                            seq_img_src_file_id), (20, 20),
                            cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1)

                if show_img != 2:
                    cv2.imshow('seq_img_vis', seq_img_vis)
                    k = cv2.waitKey(1 - __pause)
                    if k == 32:
                        _pause = 1 - _pause
                    elif k == 27:
                        skip_seq = 1
                        break
                    elif k == ord('q'):
                        break

                if save_img:
                    if vid_out is not None:
                        vid_out.write(seq_img_vis)
                    else:
                        out_vis_file = os.path.splitext(
                            seq_img_src_file)[0] + '.jpg'
                        out_vis_file_path = linux_path(out_vis_path,
                                                       out_vis_file)
                        cv2.imwrite(out_vis_file_path, seq_img_vis)

            if skip_seq or _exit:
                break
        if vid_out is not None:
            vid_out.release()

        if out_gt_fid is not None:
            out_gt_fid.close()

        if _exit:
            break

    n_frames_out_fid.close()
예제 #5
0
def run_scp(params, server_name, log_dir, log_fname, out_dir, is_file,
            timestamp):
    """

    :param Params.SCP params:
    :param server_name:
    :param dst_rel_path:
    :param is_file:
    :return:
    """

    assert params.pwd and params.user and params.url, "auth data not provided"

    print('\n' + server_name)

    if server_name == 'grs':
        server_home = params.home_dir
    elif server_name == 'x99':
        server_home = linux_path(params.home_dir, "samba_x99")
    elif server_name == 'orca':
        server_home = linux_path(params.home_dir, "samba_orca")
    else:
        raise AssertionError('invalid server name: {}'.format(server_name))

    src_root_path = linux_path(server_home, params.code_path, log_dir)

    zip_fname = "consolidate_log_{}_{}.zip".format(server_name, timestamp)
    zip_path = linux_path(params.home_dir, zip_fname)

    remote_cmd = "cd {} && zip -r {} {}".format(src_root_path, zip_path,
                                                log_fname)

    if params.rename_src:
        # log_fname_abs = linux_path(params.home_dir, params.code_path, log_fname)
        # dst_fname_abs = log_fname_abs + '.' + timestamp
        # rename_cmd_abs = 'mv {} {}'.format(log_fname_abs, dst_fname_abs)
        # print('\n' + rename_cmd_abs + '\n')

        log_fname_rel = linux_path(log_dir, log_fname)
        dst_fname_rel = log_fname_rel + '.' + timestamp
        rename_cmd_abs = 'mv {} {}'.format(log_fname_rel, dst_fname_rel)
        print('\n' + rename_cmd_abs + '\n')

        # dst_log_fname = log_fname + '.' + timestamp
        # rename_cmd = 'mv {} {}'.format(log_fname, dst_log_fname)
        # print('\n' + rename_cmd + '\n')

        # print('renaming source to {}'.format(dst_zip_path))
        # remote_cmd = '{} && {}'.format(remote_cmd, rename_cmd)

    if params.show_output == 2:
        print('running {}'.format(remote_cmd))

    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(params.url, username=params.user, password=params.pwd)

    sftp = client.open_sftp()

    log_path = linux_path(src_root_path, log_fname)

    try:
        file_stats = sftp.stat(log_path)
    except IOError:
        print('remote file does not exist: {}'.format(log_path))
        client.close()
        return None

    stdin, stdout, stderr = client.exec_command(remote_cmd)
    stdout = list(stdout)
    stderr = list(stderr)

    if stderr:
        # for line in stderr:
        #     print(line.strip('\n'))
        raise AssertionError('remote command did not work' + '\n' +
                             '\n'.join(stderr))

    if params.show_output:
        for line in stdout:
            print(line.strip('\n'))

    client.close()

    scp_cmd = "pscp -pw {} -r -P 22 {}@{}:{} ./".format(
        params.pwd, params.user, params.url, zip_path)
    if params.show_output == 2:
        print('Running {}'.format(scp_cmd))

    scp_cmd_list = scp_cmd.split(' ')
    try:
        subprocess.check_call(scp_cmd_list)
    except subprocess.CalledProcessError as e:
        print(e)
        return None

    with ZipFile(zip_fname, 'r') as zipObj:
        zipObj.extractall()

    if params.remove_zip:
        subprocess.check_call(['rm', zip_fname])

    server_out_dir = linux_path(out_dir, 'servers')
    os.makedirs(server_out_dir, exist_ok=True)
    out_path = linux_path(
        server_out_dir,
        add_suffix(log_fname, '{}_{}'.format(server_name, timestamp)))

    # if not is_file:
    #     os.makedirs(out_path, exist_ok=True)
    # else:
    #     os.makedirs(os.path.dirname(out_path), exist_ok=True)

    shutil.move(log_fname, out_path)
    return out_path
예제 #6
0
def run_scp(params):
    """

    :param Params.SCP params:
    :param server_name:
    :param dst_rel_path:
    :param is_file:
    :return:
    """

    assert params.pwd and params.user and params.url, "auth data not provided"

    src_root_path = '/var/mobile/Media/DCIM/100APPLE'

    remote_cmd = "cd {} && ls".format(src_root_path)

    if params.show_output == 2:
        print('running {}'.format(remote_cmd))

    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(params.url, username=params.user, password=params.pwd)

    stdin, stdout, stderr = client.exec_command(remote_cmd)
    stdout = list(stdout)
    stderr = list(stderr)

    if params.show_output:
        for line in stdout:
            print(line.strip('\n'))

    if stderr:
        # for line in stderr:
        #     print(line.strip('\n'))
        raise AssertionError('remote command did not work' + '\n' +
                             '\n'.join(stderr))

    for _file in stdout:
        _file_path = linux_path(src_root_path, _file.strip())
        scp_cmd = "pscp -pw {} -r -P 22 {}@{}:{} ./".format(
            params.pwd, params.user, params.url, _file_path)
        if params.show_output == 2:
            print('Running {}'.format(scp_cmd))

        scp_cmd_list = scp_cmd.split(' ')
        subprocess.check_call(scp_cmd_list)

        if params.remove_src:

            remote_cmd = "rm {}".format(_file_path)

            if params.show_output == 2:
                print('running {}'.format(remote_cmd))

            stdin, stdout, stderr = client.exec_command(remote_cmd)
            stdout = list(stdout)
            stderr = list(stderr)

            if params.show_output:
                for line in stdout:
                    print(line.strip('\n'))

            if stderr:
                raise AssertionError('remote command did not work' + '\n' +
                                     '\n'.join(stderr))
    else:
        print('no images found')

    client.close()