File size: 2,756 Bytes
0b7b1cf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
{
  "node_feature_schema": {
    "widget_class": "categorical -> nn.Embedding(num_classes+1[MASK], CLASS_EMBED_DIM), trainable",
    "center_x": "continuous, normalized [0,1]",
    "center_y": "continuous, normalized [0,1]",
    "width": "continuous, normalized [0,1]",
    "height": "continuous, normalized [0,1]",
    "area": "continuous, normalized [0,1]",
    "aspect_ratio": "continuous, width/height",
    "confidence": "continuous, YOLO detection confidence [0,1]"
  },
  "node_feature_dimension": {
    "continuous_features_cached": 7,
    "class_embedding_dim": 32,
    "raw_concat_dimension": 39,
    "gat_input_dimension_after_projection": 64
  },
  "edge_feature_schema": [
    "norm_dx",
    "norm_dy",
    "distance",
    "norm_angle",
    "iou",
    "horizontal_alignment",
    "vertical_alignment",
    "containment_flag",
    "overlap_flag",
    "reading_order_flag",
    "edge_type_id_normalized"
  ],
  "edge_feature_dimension": 11,
  "edge_type_mapping": {
    "LEFT_OF": 0,
    "RIGHT_OF": 1,
    "ABOVE": 2,
    "BELOW": 3,
    "SAME_ROW": 4,
    "SAME_COLUMN": 5,
    "CONTAINS": 6,
    "INSIDE": 7,
    "OVERLAPS": 8,
    "NEAREST_NEIGHBOR": 9,
    "READING_ORDER": 10
  },
  "widget_class_mapping": {
    "Button": 0,
    "Text": 1,
    "Image": 2,
    "TextInput": 3,
    "Checkbox": 4,
    "RadioButton": 5,
    "Switch": 6,
    "Slider": 7,
    "ProgressBar": 8,
    "Toolbar": 9,
    "NavigationBar": 10,
    "RecyclerView": 11,
    "ListView": 12,
    "Card": 13,
    "Container": 14,
    "WebView": 15,
    "FloatingActionButton": 16,
    "Icon": 17,
    "Dropdown": 18,
    "Other": 19
  },
  "mask_class_id": 20,
  "normalization_rules": {
    "center_x_y": "divided by image width/height respectively -> [0,1]",
    "width_height": "divided by image width/height respectively -> [0,1]",
    "area": "normalized width * normalized height",
    "aspect_ratio": "normalized width / normalized height",
    "confidence": "raw YOLO confidence, already in [0,1]",
    "edge_dx_dy": "difference of normalized centers (direction i -> j)",
    "edge_distance": "euclidean distance of normalized centers",
    "edge_angle": "atan2(dy, dx) / pi, in [-1, 1]"
  },
  "graph_construction_thresholds": {
    "align_tolerance": 0.02,
    "containment_threshold": 0.9,
    "overlap_iou_threshold": 0.1,
    "nearest_neighbors_k": 4,
    "distance_threshold": 0.3,
    "add_self_loops": true,
    "connect_components": true,
    "empty_detection_strategy": "skip"
  },
  "yolo_confidence_threshold": 0.25,
  "yolo_iou_threshold": 0.45,
  "yolo_img_size": 640,
  "gat_architecture": {
    "input_dim": 64,
    "hidden_dim": 128,
    "num_layers": 3,
    "heads": 4,
    "dropout": 0.1,
    "edge_dim": 11
  },
  "gat_output_dimension": 256
}