aicenter / GroupAD.jl

Generative Anomaly Detection for Multiple Instance Learning problems.
0 stars 2 forks source link

Add 3D MNIST point cloud. #4

Closed vitskvara closed 3 years ago

vitskvara commented 3 years ago
function load_mnist(dataset::String,anomaly_number::Int;noise=true,normalize=true)
    # load data
    data = BSON.load(datadir("2d_mnist","$dataset.BSON"))
    x = Float32.(data[:data])
    # add uniform noise to dequantize data
    if noise
        x = x .+ rand(Uniform(0,1),size(x))
    end
    bagids = data[:bagids]
    y = data[:labels]
    bag_labels = data[:bag_labels]
    # split to 0/1 classes
    c0 = y .!= anomaly_number
    c1 = y .== anomaly_number
    bags0 = seqids2bags(bagids[c0[:]])
    bags1 = seqids2bags(bagids[c1[:]])
    # bag labels
    l0 = bag_labels .!= anomaly_number
    l1 = bag_labels .== anomaly_number
    l_normal = bag_labels[l0]
    l_anomaly = bag_labels[l1]
    # transform data
    # uniform distribution [0,1]
    if normalize
        x = UCI.normalize(x)
    end
    # return normal and anomalous bags (and their labels)
    (normal = BagNode(ArrayNode(x[:,c0[:]]), bags0), anomaly = BagNode(ArrayNode(x[:,c1[:]]), bags1), l_normal = l_normal, l_anomaly = l_anomaly)
end
vitskvara commented 3 years ago

https://www.kaggle.com/cristiangarcia/pointcloudmnist2d

https://drive.google.com/drive/folders/1G7fgN-KmrqhY4EinOk53OOfV5_nhEjDs?usp=sharing

vitskvara commented 3 years ago

https://github.com/aicenter/GroupAD.jl/pull/6