Ejemplo n.º 1
0
def idp_legacy_xy(legacy_root):
    idp_data_dir = ['idp-ABCDE-rpt10',
                    'idp-ABCDE-rpt2',
                    'idp-FGHIJ-rpt10',
                    'idp-KLMNO-rpt10',
                    'idp-PQRST-rpt10',
                    'idp-UVWXY-rpt10',
                    'idp-ZSpcBspcEnt-rpt10'
                    ]
    idp_data_dir = [os.path.join(legacy_root, x) for x in idp_data_dir]
    num_repeats = [10, 2,
                   10, 10, 10, 10, 10
                   ]
    sample_classes = [['A', 'B', 'C', 'D', 'E'],
                      ['A', 'B', 'C', 'D', 'E'],  # some of the ABCDE data are repeated twice
                      ['F', 'G', 'H', 'I', 'J'],
                      ['K', 'L', 'M', 'N', 'O'],
                      ['P', 'Q', 'R', 'S', 'T'],
                      ['U', 'V', 'W', 'X', 'Y'],
                      ['Z', 'Spc', 'Bspc', 'Ent']
                      ]
    classes = ['A', 'B', 'C', 'D', 'E',
               'F', 'G', 'H', 'I', 'J',
               'K', 'L', 'M', 'N', 'O',
               'P', 'Q', 'R', 'S', 'T',
               'U', 'V', 'W', 'X', 'Y',
               'Z', 'Spc', 'Bspc', 'Ent'
               ]

    assert len(idp_data_dir) == len(num_repeats) == len(sample_classes)  # check the consistency of zip variables
    assert set(classes) == set(
        [item for sublist in sample_classes for item in sublist])  # check categorical consistency

    interval_duration = 4.0  # how long does one writing take
    period = 33.45  # ms

    # classes = set([item for sublist in sample_classes for item in sublist])  # reduce to categorical classes
    ls_dicts = \
        [idp_preprocess_legacy(dr, interval_duration, classes=cs, num_repeat=nr, period=period)
         for dr, nr, cs in zip(idp_data_dir, num_repeats, sample_classes)]

    Y = []
    X_mmw_rD = []
    X_mmw_rA = []

    # add to x and y
    for lsd in ls_dicts:
        for key, value in lsd.items():
            X_mmw_rD += [d for d in value['mmw']['range_doppler']]
            X_mmw_rA += [a for a in value['mmw']['range_azi']]
            Y += [key for i in range(value['mmw']['range_doppler'].shape[0])]
            pass

    X_mmw_rD = np.asarray(X_mmw_rD)
    X_mmw_rA = np.asarray(X_mmw_rA)

    return X_mmw_rD, X_mmw_rA, Y
Ejemplo n.º 2
0
    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'Spc', 'Bspc', 'Ent'
]

assert len(idp_data_dir) == len(num_repeats) == len(
    sample_classes)  # check the consistency of zip variables
assert set(classes) == set([
    item for sublist in sample_classes for item in sublist
])  # check categorical consistency
########################################################################################################################

interval_duration = 4.0  # how long does one writing take
period = 33.45  # ms

# classes = set([item for sublist in sample_classes for item in sublist])  # reduce to categorical classes
ls_dicts = \
    [idp_preprocess_legacy(dr, interval_duration, classes=cs, num_repeat=nr, period=period)
     for dr, nr, cs in zip(idp_data_dir, num_repeats, sample_classes)]
points_per_sample = int(resolve_points_per_sample(period, interval_duration))
'''
This implementation accepts two branches of input: range doppler and range azimuth. Each are put
through feature extractors on their branch respectively.
The flattened output from the two branch meets and are concatenated together then put in LSTM, 
the network is concluded by FC layers. 
'''

# creates the Time Distributed CNN for range Doppler heatmap ##########################
model = make_model_individual(classes,
                              points_per_sample,
                              channel_mode='channels_first')
# create input features
Y = []