File size: 3,005 Bytes
60acf32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import random

import matplotlib.pyplot as plt
import pandas as pd
from datasets import load_dataset, ClassLabel, Sequence
import json
import numpy
from transformers import AutoImageProcessor
from torchvision.transforms import RandomResizedCrop, Compose, Normalize, ToTensor
from transformers import DefaultDataCollator
# import evaluate
import numpy as np
from transformers import AutoModelForImageClassification, TrainingArguments, Trainer
from PIL import Image
from matplotlib import cm
from Data_Generation.Shape_Generation_Functions import basic_box, diagonal_box_split, horizontal_vertical_box_split, \
    back_slash_box, forward_slash_box, back_slash_plus_box, forward_slash_plus_box, hot_dog_box, hamburger_box, \
    x_hamburger_box, x_hot_dog_box, x_plus_box

from Data_Generation.Dataset_Generation_Functions import make_boxes



# food = load_dataset("cmudrc/2d-lattices", split="train[:15]")  # Loads the training data samples
food = load_dataset("cmudrc/2d-lattices", split="train+test")  # Loads all of the data, for use after training

# checks to see if the dataset has been assigned a class label
# if type(food.features["label"]) != 'datasets.features.features.ClassLabel': # Cast to ClassLabel
#     food = food.class_encode_column('label')
print(food)
desired_label = 'x_hot_dog_box'
desired_thickness = 1
desired_density = 1

data_frame = pd.DataFrame(food)
# print(data_frame)

shape_rows = data_frame['Shape'] == desired_label
# print(shape_rows)

thickness_rows = data_frame['Thickness'] == desired_thickness
# print(thickness_rows)

density_rows = data_frame['Density'] == desired_density
# print(density_rows)

desired_output = data_frame.loc[shape_rows & thickness_rows & density_rows].iloc[0]['Array']
print(desired_output)
print(type(desired_output))


example_point = numpy.array(json.loads(desired_output))

plt.imshow(example_point)
plt.show()


all_shapes = [basic_box, diagonal_box_split, horizontal_vertical_box_split, back_slash_box, forward_slash_box,
                 back_slash_plus_box, forward_slash_plus_box, hot_dog_box, hamburger_box, x_hamburger_box,
                 x_hot_dog_box, x_plus_box]

base_shapes = [basic_box, back_slash_box, forward_slash_box, hot_dog_box, hamburger_box]
image_size = 11
density = [1]

boxes = make_boxes(image_size, density, all_shapes)


box_arrays, box_shape, box_density, box_thickness,  = list(zip(*boxes))[0], list(zip(*boxes))[1], list(zip(*boxes))[2], list(zip(*boxes))[3]

# indices_1 = [i for i in range(len(boxes)) if boxes[1][i] == str(base_shapes[0]) and boxes[2][i] == density[0] and boxes[3][i] == desired_thickness]
indices_1 = [i for i in range(len(box_arrays)) if box_shape[i] == desired_label and box_density[i] == desired_density and box_thickness[i] == desired_thickness]
print(indices_1)
# indices_1 = random.randint(0, len(box_arrays))


# plt.imshow(box_arrays[indices_1])
plt.imshow(box_arrays[indices_1[0]])
plt.show()


'''trainer.push_to_hub()''' # Need to figure out how to push the model to the hub