示例#1
0
    def __init__(self, workspace='../', data_type='val'):

        self.workspace = workspace
        self.csvpath = './' + data_type + '_csv/annotations.csv'
        self.data_path = '../nodule_cubes/' + data_type + '_data/'
        self.savepath = self.data_path + 'image/'

        if data_type == 'val':
            self.data = _3D_data(valpath=self.data_path)
            self.labels, self.valdata, self.origins, self.new_spacings, self.old_spacings = self.data.get_val(
            )
        elif data_type == 'test' or data_type == 'new_test':
            self.data = _3D_data(testpath=self.data_path)
            self.labels, self.valdata, self.origins, self.new_spacings, self.old_spacings = self.data.get_test(
            )
        elif data_type == 'train':
            self.data = _3D_data(trainpath=self.data_path)
            self.labels, self.valdata, self.origins, self.new_spacings, self.old_spacings = self.data.get_train(
            )
        else:
            print 'ERROR!'

        self.csv_data = pd.read_csv(self.csvpath)
        names = self.csv_data['seriesuid']
        names = list(names)
        self.index = [self.get_data_posotion(name) for name in names]
    def __init__(self,
                 weights_path,
                 dropout=False,
                 data_type='val',
                 data_path=None,
                 csv=False):
        self.weights_path = weights_path
        self.dropout = dropout
        self.position = []
        self.data_type = data_type
        self.csv = csv
        if data_path is None:
            self.data_path = '../nodule_cubes/' + data_type + '_data/'
        else:
            self.data_path = data_path

        if data_type == 'val':
            self.data = _3D_data(valpath=self.data_path)
            self.labels, self.valdata, self.origins, self.new_spacings, self.old_spacings = self.data.get_val(
            )
        elif data_type == 'test' or data_type == 'new_test':
            self.data = _3D_data(testpath=self.data_path)
            self.labels, self.valdata, self.origins, self.new_spacings, self.old_spacings = self.data.get_test(
            )
        else:
            print 'ERROR!'

        if csv:
            self.csv_data = pd.read_csv(self.data_path + 'csv/annotations.csv')
            names = self.csv_data['seriesuid']
            names = list(names)
            self.index = [self.get_data_posotion(name) for name in names]
        else:
            self.index = range(len(self.valdata))
示例#3
0

def get_data_posotion(labels, key):
    for i in range(len(labels)):
        if key == labels[i]:
            return i
    return None


if __name__ == '__main__':

    model = _3D_CNN_2(weights_path=weights_path, dropout=True, feature=True)
    data_path = '../nodule_cubes/' + data_type + '_data/'

    if data_type == 'val':
        data = _3D_data(valpath=data_path)
        labels, valdata, origins, new_spacings, old_spacings = data.get_val()
    elif data_type == 'test' or data_type == 'new_test':
        data = _3D_data(testpath=data_path)
        labels, valdata, origins, new_spacings, old_spacings = data.get_test()
    elif data_type == 'train':
        data = _3D_data(trainpath=data_path)
        labels, valdata, origins, new_spacings, old_spacings = data.get_train()
    else:
        print 'ERROR!'

    csv_data = pd.read_csv(csv_path)
    names = csv_data['seriesuid']
    names = list(names)
    index = [get_data_posotion(labels, name) for name in names]
        data = data[0]
        new_datas.append([
            data[16 - size[0]:16 + size[0], 16 - size[1]:16 + size[1],
                 16 - size[2]:16 + size[2]]
        ])
    return np.array(new_datas)


def deal_datas(datas):
    datas = np.array(datas, dtype='float32').transpose((0, 2, 3, 4, 1))
    datas = (datas + 1000) / 1400
    return datas


if __name__ == '__main__':
    data = _3D_data(path='../nodule_cubes/')

    K.clear_session()
    weights_path = './weights/weights3.h5'
    model = _3D_CNN_2(dropout=True)
    model.setting(optimizer=SGD(lr=0.017,
                                momentum=0.001,
                                decay=1e-7,
                                nesterov=False),
                  loss=["binary_crossentropy"],
                  metrics=['accuracy'])

    (x_val32, y_val) = data.get_valset()
    x_val16 = (deal_datas(get_data2(x_val32, [16, 16, 16])))
    x_val32 = (deal_datas(x_val32))
    y_val = np.array(y_val, dtype='float32')
示例#5
0
                tmp['coordX'] = center[2]
                tmp['coordY'] = center[1]
                tmp['coordZ'] = center[0]
                tmp['seriesuid'] = val_labels[k]
                tmp['probability'] = y_vals[k, 0]
                position.append(tmp)
                position_num += 1
            else:
                negetive_num += 1

    print '[%d / %d]' % (position_num, negetive_num)
    return position


if __name__ == '__main__':
    data = _3D_data(valpath='../nodule_cubes/val_data/')
    labels, valdata, origins, new_spacings, old_spacings = data.get_val()

    model = _3D_CNN_1(weights_path=weights_path)

    index = range(len(valdata))
    # random.shuffle(index)
    # index = index[0:20]

    position = prec(index, [32, 32, 32],
                    labels,
                    origins,
                    new_spacings,
                    stride=[32, 32, 32])
    position = prec(index, [14, 14, 14],
                    labels,