ANISH-j commited on
Commit
63843fb
·
verified ·
1 Parent(s): 21a8ce9

Upload 9 files

Browse files
v1/README.md ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SigLIP2 Gardner Grading Project
2
+
3
+ This project implements an AI-based embryo grading system using the SigLIP2 vision-language model for automated Gardner grading in IVF procedures. The system fine-tunes a pre-trained SigLIP2 model on embryo images to classify them into different grade categories.
4
+
5
+ ## Project Structure
6
+
7
+ ```
8
+ siglip2/
9
+ ├── filtered_data.csv # Dataset with image filenames and grades
10
+ ├── finetune.py # Script for fine-tuning the SigLIP2 model
11
+ ├── infer.py # GUI application for single image classification
12
+ ├── inference.py # Alternative GUI application for image classification
13
+ ├── inspect_modules.py # Script to inspect model architecture modules
14
+ ├── Images/ # Directory containing embryo images
15
+ ├── model/ # Pre-trained SigLIP2 model files
16
+ ├── Organized_Images[raw]/ # Raw organized embryo images by experiment
17
+ └── siglip2_finetuned/ # Directory where fine-tuned model is saved
18
+ ```
19
+ ## the main files of model are
20
+ - config.json - Model configuration
21
+ - model.safetensors - Model weights
22
+ - preprocessor_config.json - Image preprocessing settings
23
+ - training_args.bin - Training arguments
24
+
25
+ ## Prerequisites
26
+
27
+ - Python 3.8+
28
+ - PyTorch
29
+ - Transformers library
30
+ - Datasets library
31
+ - PIL (Pillow)
32
+ - scikit-learn
33
+ - imbalanced-learn
34
+ - evaluate
35
+ - tkinter (usually included with Python)
36
+
37
+ ## Installation
38
+
39
+ 1. Clone or download this repository
40
+ 2. Install required packages:
41
+ ```bash
42
+ pip install torch torchvision transformers datasets pillow scikit-learn imbalanced-learn evaluate
43
+ ```
44
+
45
+ ## Data Description
46
+
47
+ ### filtered_data.csv
48
+ - **Purpose**: Contains the training dataset with image filenames and corresponding grades
49
+ - **Columns**:
50
+ - `Image`: Filename of the embryo image (e.g., "0001_03.png")
51
+ - `grade`: Gardner grade classification (e.g., "4BA", "3AB", "5AB")
52
+ - **Size**: 1654 entries (after oversampling for class balance)
53
+
54
+ ### Images/
55
+ - Contains PNG images of embryos used for training and inference
56
+ - Images are named with format: `{experiment}_{image_number}.png`
57
+
58
+ ### Organized_Images[raw]/
59
+ - Raw embryo images organized by experiment folders
60
+ - Includes subfolders like EXP3/, EXP4/, EXP5/, EXP6/
61
+ - Also contains web-sourced embryo pictures for reference
62
+
63
+ ## Scripts Description
64
+
65
+ ### finetune.py
66
+ **Purpose**: Fine-tunes the pre-trained SigLIP2 model on the embryo grading dataset.
67
+
68
+ **Key Features**:
69
+ - Loads and preprocesses the dataset from `filtered_data.csv`
70
+ - Applies oversampling to balance classes using RandomOverSampler
71
+ - Defines data augmentations: rotation, sharpness adjustment, resizing, normalization
72
+ - Uses Hugging Face Trainer for training with mixed precision (FP16)
73
+ - Saves the fine-tuned model to `siglip2_finetuned/`
74
+
75
+ **Usage**:
76
+ ```bash
77
+ python finetune.py
78
+ ```
79
+
80
+ **Configuration**:
81
+ - Learning rate: 2e-5
82
+ - Batch size: 32
83
+ - Epochs: 3
84
+ - Weight decay: 0.02
85
+ - Warmup steps: 50
86
+
87
+ ### infer.py
88
+ **Purpose**: GUI application for classifying individual embryo images using the fine-tuned model.
89
+
90
+ **Features**:
91
+ - Tkinter-based graphical interface
92
+ - File dialog to select PNG/JPG images
93
+ - Displays selected image and predicted grade
94
+ - Explicit preprocessing with size 224x224
95
+ - Error handling for image processing
96
+
97
+ **Usage**:
98
+ ```bash
99
+ python infer.py
100
+ ```
101
+
102
+ **Requirements**: Fine-tuned model in `siglip2_finetuned/` directory
103
+
104
+ ### inference.py
105
+ **Purpose**: Simplified GUI application for embryo image classification.
106
+
107
+ **Features**:
108
+ - Similar to `infer.py` but with minimal preprocessing
109
+ - Tkinter interface for image selection and display
110
+ - Shows predicted Gardner grade
111
+
112
+ **Usage**:
113
+ ```bash
114
+ python inference.py
115
+ ```
116
+
117
+ **Note**: This is a lighter version of `infer.py` with less explicit preprocessing settings.
118
+
119
+ ### inspect_modules.py
120
+ **Purpose**: Utility script to inspect the architecture of the SigLIP2 model.
121
+
122
+ **Features**:
123
+ - Loads the pre-trained SigLIP2 model from `model/` directory
124
+ - Prints vision model modules containing 'proj' or 'attn' (projection/attention layers)
125
+ - Prints text model modules containing 'proj' or 'attn'
126
+
127
+ **Usage**:
128
+ ```bash
129
+ python inspect_modules.py
130
+ ```
131
+
132
+ **Output**: Lists of module names for vision and text components useful for understanding model architecture.
133
+
134
+ ## Model Information
135
+
136
+ ### Pre-trained Model (model/)
137
+ - **Type**: SigLIP2 (SigLIP version 2)
138
+ - **Source**: Hugging Face transformers
139
+ - **Components**: Vision encoder, text encoder, and classification head
140
+ - **Files**: config.json, model.safetensors, preprocessor_config.json, tokenizer files
141
+
142
+ ### Fine-tuned Model (siglip2_finetuned/)
143
+ - **Base**: Pre-trained SigLIP2 adapted for image classification
144
+ - **Classes**: Gardner grading categories (e.g., 3AA, 3AB, 3BA, 4AA, etc.)
145
+ - **Training**: Fine-tuned on embryo images with data augmentation
146
+ - **Output**: Classification logits for grade prediction
147
+
148
+ ## Usage Workflow
149
+
150
+ 1. **Prepare Data**: Ensure `filtered_data.csv` and `Images/` are in place
151
+ 2. **Inspect Model** (optional): Run `inspect_modules.py` to understand architecture
152
+ 3. **Fine-tune Model**: Execute `finetune.py` to train on the dataset
153
+ 4. **Inference**: Use `infer.py` or `inference.py` to classify new embryo images
154
+
155
+ ## Notes
156
+
157
+ - The project uses oversampling to handle class imbalance in the dataset
158
+ - Training includes data augmentations for better generalization
159
+ - GUI applications require a display environment (not suitable for headless servers)
160
+ - Model expects RGB images resized to 224x224 pixels
161
+ - Fine-tuning requires GPU for reasonable training time (FP16 enabled)
162
+
163
+ ## License
164
+
165
+ [Add license information if applicable]
166
+
167
+ ## Contributing
168
+
169
+ [Add contribution guidelines if applicable]
v1/config.json ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "SiglipForImageClassification"
4
+ ],
5
+ "dtype": "float32",
6
+ "id2label": {
7
+ "0": "3AA",
8
+ "1": "3AB",
9
+ "2": "3AC",
10
+ "3": "3BA",
11
+ "4": "3BB",
12
+ "5": "3BC",
13
+ "6": "3CA",
14
+ "7": "3CB",
15
+ "8": "4AA",
16
+ "9": "4AB",
17
+ "10": "4AC",
18
+ "11": "4BA",
19
+ "12": "4BB",
20
+ "13": "4BC",
21
+ "14": "4CA",
22
+ "15": "4CB",
23
+ "16": "5AA",
24
+ "17": "5AB",
25
+ "18": "5AC",
26
+ "19": "5BA",
27
+ "20": "5BB",
28
+ "21": "5BC"
29
+ },
30
+ "initializer_factor": 1.0,
31
+ "label2id": {
32
+ "3AA": 0,
33
+ "3AB": 1,
34
+ "3AC": 2,
35
+ "3BA": 3,
36
+ "3BB": 4,
37
+ "3BC": 5,
38
+ "3CA": 6,
39
+ "3CB": 7,
40
+ "4AA": 8,
41
+ "4AB": 9,
42
+ "4AC": 10,
43
+ "4BA": 11,
44
+ "4BB": 12,
45
+ "4BC": 13,
46
+ "4CA": 14,
47
+ "4CB": 15,
48
+ "5AA": 16,
49
+ "5AB": 17,
50
+ "5AC": 18,
51
+ "5BA": 19,
52
+ "5BB": 20,
53
+ "5BC": 21
54
+ },
55
+ "model_type": "siglip",
56
+ "problem_type": "single_label_classification",
57
+ "text_config": {
58
+ "attention_dropout": 0.0,
59
+ "dtype": "float32",
60
+ "hidden_act": "gelu_pytorch_tanh",
61
+ "hidden_size": 768,
62
+ "intermediate_size": 3072,
63
+ "layer_norm_eps": 1e-06,
64
+ "max_position_embeddings": 64,
65
+ "model_type": "siglip_text_model",
66
+ "num_attention_heads": 12,
67
+ "num_hidden_layers": 12,
68
+ "projection_size": 768,
69
+ "vocab_size": 256000
70
+ },
71
+ "transformers_version": "4.56.1",
72
+ "vision_config": {
73
+ "attention_dropout": 0.0,
74
+ "dtype": "float32",
75
+ "hidden_act": "gelu_pytorch_tanh",
76
+ "hidden_size": 768,
77
+ "image_size": 224,
78
+ "intermediate_size": 3072,
79
+ "layer_norm_eps": 1e-06,
80
+ "model_type": "siglip_vision_model",
81
+ "num_attention_heads": 12,
82
+ "num_channels": 3,
83
+ "num_hidden_layers": 12,
84
+ "patch_size": 16
85
+ }
86
+ }
v1/filtered_data.csv ADDED
@@ -0,0 +1,1653 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Image,grade
2
+ 0001_03.png,4BA
3
+ 0003_01.png,3AB
4
+ 0003_02.png,4AA
5
+ 0003_03.png,4AB
6
+ 0004_01.png,3AA
7
+ 0004_02.png,5AB
8
+ 0005_01.png,4AA
9
+ 0005_02.png,3BA
10
+ 0005_04.png,4AA
11
+ 0005_05.png,4AA
12
+ 0005_06.png,4AA
13
+ 0005_07.png,4BA
14
+ 0007_01.png,4AA
15
+ 0007_02.png,3BA
16
+ 0009_01.png,3BA
17
+ 0009_02.png,3AB
18
+ 0009_03.png,4BB
19
+ 0011_01.png,3BA
20
+ 0012_03.png,4BA
21
+ 0014_01.png,4AB
22
+ 0015_01.png,3BA
23
+ 0016_01.png,3BA
24
+ 0018_02.png,3AB
25
+ 0018_03.png,4AB
26
+ 0019_02.png,3AA
27
+ 0019_03.png,4BB
28
+ 0019_04.png,3BC
29
+ 0023_01.png,4AB
30
+ 0023_02.png,3BB
31
+ 0023_03.png,3BB
32
+ 0023_04.png,3BA
33
+ 0024_01.png,3BB
34
+ 0025_01.png,3BB
35
+ 0025_05.png,4AA
36
+ 0027_01.png,3BA
37
+ 0028_02.png,4BA
38
+ 0031_01.png,3AA
39
+ 0031_03.png,3CB
40
+ 0033_02.png,3BB
41
+ 0034_01.png,4AB
42
+ 0034_02.png,3AA
43
+ 0035_01.png,3AA
44
+ 0036_01.png,3AA
45
+ 0036_04.png,3BA
46
+ 0039_01.png,3AB
47
+ 0039_02.png,4BC
48
+ 0040_01.png,3BA
49
+ 0041_01.png,3BB
50
+ 0042_01.png,4AB
51
+ 0042_05.png,4AA
52
+ 0042_06.png,4AB
53
+ 0045_01.png,3BB
54
+ 0046_02.png,3AA
55
+ 0046_04.png,4AA
56
+ 0046_05.png,4BB
57
+ 0046_06.png,4AB
58
+ 0047_03.png,4AB
59
+ 0049_01.png,3BA
60
+ 0049_03.png,4AA
61
+ 0049_04.png,4AB
62
+ 0049_05.png,3AB
63
+ 0050_01.png,4AB
64
+ 0051_01.png,3AC
65
+ 0051_04.png,3AB
66
+ 0051_05.png,4AB
67
+ 0052_01.png,3AA
68
+ 0052_02.png,3BA
69
+ 0052_04.png,4BC
70
+ 0054_02.png,3AB
71
+ 0054_03.png,4AB
72
+ 0054_04.png,5AA
73
+ 0054_05.png,4AB
74
+ 0055_01.png,3AB
75
+ 0056_01.png,4AA
76
+ 0057_03.png,3AA
77
+ 0057_05.png,4AB
78
+ 0058_01.png,4AA
79
+ 0058_02.png,3AB
80
+ 0058_03.png,4AB
81
+ 0058_04.png,5AB
82
+ 0058_05.png,4AB
83
+ 0059_01.png,4AA
84
+ 0059_02.png,3BA
85
+ 0059_03.png,4BB
86
+ 0060_01.png,4AA
87
+ 0063_01.png,3AB
88
+ 0063_02.png,4AA
89
+ 0063_04.png,3BB
90
+ 0063_05.png,3AB
91
+ 0063_07.png,4AA
92
+ 0064_01.png,4AB
93
+ 0065_01.png,4AB
94
+ 0065_02.png,3AB
95
+ 0065_04.png,4AA
96
+ 0066_01.png,4AA
97
+ 0066_02.png,4AB
98
+ 0066_04.png,3AA
99
+ 0067_02.png,4AB
100
+ 0068_01.png,4AB
101
+ 0068_02.png,4BA
102
+ 0068_03.png,4AB
103
+ 0068_04.png,4AA
104
+ 0068_05.png,4BB
105
+ 0069_01.png,3AB
106
+ 0069_02.png,4AA
107
+ 0069_03.png,4AB
108
+ 0071_01.png,4AA
109
+ 0071_02.png,3AA
110
+ 0072_01.png,4BA
111
+ 0072_04.png,3AB
112
+ 0074_01.png,4AA
113
+ 0074_02.png,3AA
114
+ 0074_03.png,4AA
115
+ 0074_04.png,4AB
116
+ 0075_01.png,4AA
117
+ 0075_03.png,4BA
118
+ 0076_01.png,4AA
119
+ 0076_02.png,3BA
120
+ 0077_01.png,4AA
121
+ 0077_02.png,3AB
122
+ 0078_01.png,3AB
123
+ 0079_01.png,4AA
124
+ 0079_02.png,3BB
125
+ 0079_04.png,3BA
126
+ 0080_01.png,3BB
127
+ 0080_02.png,4BA
128
+ 0080_03.png,4AB
129
+ 0081_01.png,3BB
130
+ 0081_02.png,4AA
131
+ 0082_01.png,5AA
132
+ 0083_01.png,4BA
133
+ 0083_02.png,4BB
134
+ 0083_03.png,3BA
135
+ 0083_04.png,3CB
136
+ 0084_01.png,4AA
137
+ 0085_01.png,4BA
138
+ 0085_02.png,4AA
139
+ 0085_03.png,4AA
140
+ 0085_04.png,4AA
141
+ 0086_01.png,3BB
142
+ 0086_02.png,4AA
143
+ 0087_01.png,4AA
144
+ 0087_02.png,4AC
145
+ 0088_01.png,4AC
146
+ 0088_02.png,3BB
147
+ 0088_03.png,4BA
148
+ 0089_01.png,4AB
149
+ 0090_01.png,4AB
150
+ 0090_02.png,4AA
151
+ 0090_03.png,4AB
152
+ 0091_01.png,5AA
153
+ 0091_03.png,4BC
154
+ 0092_02.png,4AB
155
+ 0092_03.png,5AA
156
+ 0092_04.png,4AA
157
+ 0092_05.png,3AB
158
+ 0092_07.png,4AB
159
+ 0092_08.png,4BA
160
+ 0092_09.png,3BA
161
+ 0092_10.png,4BA
162
+ 0093_01.png,4AA
163
+ 0093_02.png,4AA
164
+ 0094_01.png,4AA
165
+ 0094_02.png,4AA
166
+ 0094_03.png,4BA
167
+ 0095_01.png,5BA
168
+ 0095_02.png,4BA
169
+ 0097_01.png,3AB
170
+ 0098_01.png,4AB
171
+ 0099_01.png,4AA
172
+ 0100_01.png,4AA
173
+ 0100_02.png,4AB
174
+ 0100_03.png,4BB
175
+ 0101_01.png,4AA
176
+ 0101_03.png,4AA
177
+ 0101_04.png,4AA
178
+ 0102_01.png,5BB
179
+ 0102_02.png,3BA
180
+ 0103_01.png,5AB
181
+ 0104_01.png,4AB
182
+ 0104_02.png,4AA
183
+ 0104_03.png,3BA
184
+ 0105_02.png,4AA
185
+ 0105_04.png,5AB
186
+ 0105_05.png,3BB
187
+ 0105_07.png,4AA
188
+ 0106_01.png,4BA
189
+ 0106_02.png,3AA
190
+ 0107_01.png,3AA
191
+ 0108_01.png,5BB
192
+ 0108_02.png,3BB
193
+ 0108_03.png,3AB
194
+ 0108_05.png,4AA
195
+ 0109_01.png,4AB
196
+ 0109_02.png,4AA
197
+ 0110_01.png,4AA
198
+ 0110_02.png,4AB
199
+ 0110_03.png,4AA
200
+ 0110_04.png,4AA
201
+ 0111_01.png,4AA
202
+ 0112_01.png,5AA
203
+ 0112_02.png,3BB
204
+ 0112_03.png,4BB
205
+ 0112_04.png,4BA
206
+ 0114_01.png,4AB
207
+ 0114_02.png,3AA
208
+ 0114_03.png,3BA
209
+ 0114_04.png,4AA
210
+ 0115_01.png,4AC
211
+ 0116_01.png,4AB
212
+ 0116_02.png,4BB
213
+ 0116_04.png,4AA
214
+ 0118_01.png,5AA
215
+ 0119_01.png,4AB
216
+ 0120_01.png,3BB
217
+ 0121_01.png,4AA
218
+ 0122_01.png,5AA
219
+ 0123_01.png,4AB
220
+ 0123_02.png,4AB
221
+ 0124_01.png,4AA
222
+ 0125_01.png,3AB
223
+ 0126_01.png,4AA
224
+ 0126_03.png,4AB
225
+ 0126_04.png,4BB
226
+ 0126_07.png,4AA
227
+ 0126_08.png,3AA
228
+ 0126_09.png,3AB
229
+ 0127_01.png,4AA
230
+ 0127_02.png,4BA
231
+ 0128_01.png,4AB
232
+ 0130_02.png,4AB
233
+ 0130_05.png,4AB
234
+ 0130_06.png,4AC
235
+ 0130_07.png,3BA
236
+ 0131_01.png,3BB
237
+ 0131_02.png,4AA
238
+ 0131_03.png,4BC
239
+ 0132_01.png,4AA
240
+ 0132_03.png,4BB
241
+ 0133_01.png,4AB
242
+ 0134_01.png,4AA
243
+ 0135_01.png,4AA
244
+ 0135_03.png,4AB
245
+ 0135_04.png,5AA
246
+ 0136_01.png,4AA
247
+ 0136_02.png,4BB
248
+ 0136_03.png,5AA
249
+ 0137_01.png,4AA
250
+ 0137_02.png,5BA
251
+ 0138_01.png,4AA
252
+ 0139_01.png,4AB
253
+ 0139_02.png,3BB
254
+ 0139_03.png,4AC
255
+ 0140_01.png,4AB
256
+ 0141_01.png,3BB
257
+ 0142_01.png,3BB
258
+ 0142_02.png,3BB
259
+ 0142_03.png,4AB
260
+ 0142_04.png,4AA
261
+ 0142_05.png,4BB
262
+ 0143_01.png,3AA
263
+ 0143_02.png,4AA
264
+ 0144_01.png,4AA
265
+ 0145_01.png,4BA
266
+ 0145_02.png,5AA
267
+ 0146_01.png,4BB
268
+ 0146_02.png,4AB
269
+ 0146_03.png,4AB
270
+ 0146_04.png,4AA
271
+ 0147_01.png,4AA
272
+ 0147_02.png,4AB
273
+ 0147_03.png,3BB
274
+ 0147_04.png,4AB
275
+ 0148_01.png,4AA
276
+ 0150_01.png,4AB
277
+ 0150_02.png,4AB
278
+ 0150_04.png,4AB
279
+ 0151_01.png,4AA
280
+ 0151_02.png,3BB
281
+ 0151_04.png,4BA
282
+ 0152_01.png,4AA
283
+ 0152_02.png,4BA
284
+ 0153_01.png,4AA
285
+ 0153_02.png,4AA
286
+ 0154_01.png,4AA
287
+ 0155_01.png,4AA
288
+ 0156_01.png,4AA
289
+ 0156_02.png,4AA
290
+ 0156_04.png,4BA
291
+ 0157_01.png,5BA
292
+ 0157_02.png,4AA
293
+ 0158_01.png,4AA
294
+ 0161_01.png,4BB
295
+ 0162_01.png,4AA
296
+ 0163_03.png,3BB
297
+ 0164_01.png,4AB
298
+ 0164_02.png,4BB
299
+ 0164_03.png,3BB
300
+ 0166_01.png,4AA
301
+ 0168_01.png,4AA
302
+ 0168_02.png,3AB
303
+ 0168_03.png,3BB
304
+ 0168_04.png,3BB
305
+ 0168_05.png,4AA
306
+ 0168_06.png,4AA
307
+ 0169_01.png,5BB
308
+ 0169_02.png,3CB
309
+ 0169_03.png,4AA
310
+ 0169_04.png,4AB
311
+ 0169_06.png,3BB
312
+ 0170_01.png,4AA
313
+ 0171_01.png,4AB
314
+ 0172_01.png,5AA
315
+ 0172_02.png,5BB
316
+ 0172_03.png,4AB
317
+ 0172_04.png,4AB
318
+ 0172_05.png,5AB
319
+ 0172_06.png,4AA
320
+ 0173_03.png,3AB
321
+ 0173_04.png,4AB
322
+ 0173_05.png,4AB
323
+ 0173_06.png,4AB
324
+ 0174_02.png,3BA
325
+ 0174_03.png,4BA
326
+ 0175_01.png,4BA
327
+ 0175_03.png,3BB
328
+ 0175_05.png,4BB
329
+ 0176_01.png,4AA
330
+ 0176_02.png,5BA
331
+ 0176_04.png,4AB
332
+ 0177_01.png,4BB
333
+ 0177_02.png,4BC
334
+ 0177_03.png,4AA
335
+ 0178_01.png,4BB
336
+ 0179_01.png,5AA
337
+ 0179_02.png,5AB
338
+ 0180_01.png,4AB
339
+ 0180_02.png,4AA
340
+ 0181_01.png,4AA
341
+ 0181_02.png,4AB
342
+ 0181_03.png,4AB
343
+ 0182_01.png,5AA
344
+ 0182_02.png,4BB
345
+ 0182_04.png,4AA
346
+ 0183_01.png,3AA
347
+ 0185_01.png,4AB
348
+ 0186_01.png,4AB
349
+ 0186_02.png,4AA
350
+ 0187_02.png,4AB
351
+ 0189_02.png,3BB
352
+ 0190_01.png,3AB
353
+ 0190_03.png,4AA
354
+ 0190_04.png,3AA
355
+ 0190_05.png,4AB
356
+ 0190_06.png,4AB
357
+ 0190_07.png,4AA
358
+ 0190_08.png,4AB
359
+ 0192_01.png,4BA
360
+ 0193_01.png,4AA
361
+ 0194_01.png,4AA
362
+ 0194_02.png,4AA
363
+ 0194_03.png,4AA
364
+ 0195_01.png,4AA
365
+ 0195_02.png,4BB
366
+ 0195_04.png,3AA
367
+ 0195_05.png,3BB
368
+ 0196_01.png,5AA
369
+ 0197_01.png,4AA
370
+ 0197_02.png,4BA
371
+ 198_01.png,5AA
372
+ 200_04.png,4AA
373
+ 200_05.png,3AA
374
+ 201_01.png,4AB
375
+ 201_02.png,3AB
376
+ 201_04.png,3AB
377
+ 201_05.png,4AA
378
+ 201_06.png,4AB
379
+ 202_01.png,3AA
380
+ 202_07.png,3AA
381
+ 202_08.png,4AA
382
+ 203_02.png,3AA
383
+ 203_04.png,3AB
384
+ 204_01.png,4AA
385
+ 204_02.png,4AB
386
+ 204_03.png,4AA
387
+ 204_06.png,4AA
388
+ 206_01.png,4BA
389
+ 206_02.png,4BB
390
+ 208_01.png,3AA
391
+ 208_03.png,4AA
392
+ 208_04.png,5AA
393
+ 208_05.png,3AA
394
+ 208_06.png,4AA
395
+ 209_02.png,3CB
396
+ 210_01.png,3AB
397
+ 210_02.png,4AA
398
+ 210_03.png,4AA
399
+ 210_04.png,4BB
400
+ 210_05.png,4AB
401
+ 210_06.png,4AB
402
+ 211_02.png,4BA
403
+ 211_03.png,4BA
404
+ 211_04.png,4AA
405
+ 211_05.png,4AB
406
+ 211_06.png,3AA
407
+ 212_04.png,3AB
408
+ 212_05.png,4AA
409
+ 212_06.png,4CA
410
+ 212_07.png,4AB
411
+ 213_01.png,4BA
412
+ 214_03.png,4AA
413
+ 214_04.png,3AA
414
+ 215_02.png,5AA
415
+ 215_04.png,4AB
416
+ 215_05.png,3AB
417
+ 216_01.png,4AA
418
+ 216_02.png,4AB
419
+ 216_04.png,4AA
420
+ 217_01.png,5AA
421
+ 217_02.png,4AA
422
+ 218_01.png,4AB
423
+ 218_02.png,4AB
424
+ 218_03.png,4AB
425
+ 218_04.png,4AA
426
+ 219_01.png,4AB
427
+ 220_01.png,4AA
428
+ 220_02.png,4AB
429
+ 221_08.png,4AA
430
+ 221_09.png,4AB
431
+ 232_03.png,4AB
432
+ 234_02.png,3AB
433
+ 235_01.png,3AA
434
+ 235_02.png,3AA
435
+ 236_01.png,3AA
436
+ 237_01.png,3AA
437
+ 237_02.png,5AB
438
+ 237_03.png,4AB
439
+ 237_05.png,4AB
440
+ 237_06.png,4AA
441
+ 240_01.png,4AB
442
+ 240_02.png,4AB
443
+ 240_03.png,4AB
444
+ 241_01.png,3AA
445
+ 241_03.png,4AA
446
+ 241_05.png,5AB
447
+ 242_02.png,3AB
448
+ 244_01.png,4AA
449
+ 244_02.png,5BB
450
+ 246_01.png,3AA
451
+ 247_01.png,3AA
452
+ 247_04.png,3AB
453
+ 248_01.png,3BB
454
+ 248_02.png,5AA
455
+ 248_03.png,5AB
456
+ 250_02.png,4BA
457
+ 252_02.png,3AA
458
+ 256_01.png,3AA
459
+ 256_02.png,4AB
460
+ 256_03.png,5AA
461
+ 256_04.png,4AA
462
+ 257_01.png,4BA
463
+ 257_05.png,4AB
464
+ 258_01.png,4AB
465
+ 258_02.png,4AB
466
+ 258_04.png,3AA
467
+ 260_01.png,3AB
468
+ 260_02.png,3BB
469
+ 260_03.png,4BB
470
+ 261_03.png,5BA
471
+ 261_04.png,4BA
472
+ 262_01.png,4AA
473
+ 265_01.png,4AA
474
+ 266_01.png,3AA
475
+ 266_03.png,4AC
476
+ 268_02.png,4BB
477
+ 268_04.png,4AA
478
+ 269_01.png,5BC
479
+ 269_02.png,3BA
480
+ 271_01.png,3AA
481
+ 271_02.png,5AA
482
+ 273_02.png,4AA
483
+ 273_03.png,4AA
484
+ 274_01.png,4AB
485
+ 275_01.png,5AA
486
+ 275_02.png,3BA
487
+ 275_03.png,3AB
488
+ 275_04.png,4AB
489
+ 275_05.png,3AB
490
+ 275_06.png,3BB
491
+ 276_01.png,5AB
492
+ 276_02.png,4AB
493
+ 276_03.png,3AA
494
+ 279_02.png,3BA
495
+ 280_01.png,4AB
496
+ 283_02.png,4AA
497
+ 283_04.png,3AB
498
+ 283_05.png,4AB
499
+ 284_01.png,4AB
500
+ 284_02.png,4AB
501
+ 285_01.png,5AB
502
+ 285_02.png,4AA
503
+ 286_01.png,4AB
504
+ 286_02.png,3AB
505
+ 286_03.png,4BA
506
+ 286_04.png,3BA
507
+ 287_01.png,5AA
508
+ 287_03.png,4BB
509
+ 288_02.png,4BB
510
+ 289_01.png,4AA
511
+ 290_01.png,4AA
512
+ 291_01.png,4AA
513
+ 291_02.png,3BA
514
+ 292_01.png,4AC
515
+ 292_04.png,4AB
516
+ 293_01.png,4AA
517
+ 293_02.png,4AA
518
+ 293_03.png,4BA
519
+ 293_04.png,4AB
520
+ 293_06.png,4BA
521
+ 294_01.png,4AA
522
+ 294_02.png,4AA
523
+ 294_04.png,4AA
524
+ 294_05.png,5AA
525
+ 294_06.png,3AA
526
+ 294_07.png,4BA
527
+ 294_08.png,4AA
528
+ 295_01.png,3AB
529
+ 296_01.png,4AA
530
+ 296_02.png,4AB
531
+ 297_01.png,4AA
532
+ 297_02.png,4AB
533
+ 297_05.png,3AB
534
+ 298_01.png,4AA
535
+ 298_02.png,4AA
536
+ 299_01.png,3AB
537
+ 300_01.png,5AA
538
+ 300_02.png,4AB
539
+ 300_03.png,4AA
540
+ 300_04.png,3AB
541
+ 300_05.png,4AB
542
+ 300_06.png,3BA
543
+ 301_01.png,4AA
544
+ 301_02.png,4AA
545
+ 301_03.png,5AB
546
+ 301_04.png,4AA
547
+ 301_06.png,4AA
548
+ 302_01.png,4AA
549
+ 302_03.png,3BA
550
+ 302_04.png,4AA
551
+ 303_01.png,4AA
552
+ 303_02.png,4AA
553
+ 303_03.png,4BB
554
+ 303_04.png,5AB
555
+ 304_02.png,3AB
556
+ 305_01.png,4AA
557
+ 305_02.png,3AB
558
+ 306_01.png,4AB
559
+ 306_03.png,4AA
560
+ 308_01.png,4AA
561
+ 309_01.png,5AA
562
+ 309_02.png,4AA
563
+ 309_03.png,4AB
564
+ 310_01.png,4BB
565
+ 310_04.png,3BA
566
+ 311_01.png,4AB
567
+ 311_03.png,3BA
568
+ 313_01.png,4AA
569
+ 313_03.png,3AB
570
+ 313_04.png,4AA
571
+ 314_01.png,4AA
572
+ 315_01.png,5AA
573
+ 316_01.png,4AA
574
+ 318_01.png,4AB
575
+ 318_02.png,4AB
576
+ 318_03.png,3AA
577
+ 319_04.png,4AA
578
+ 320_01.png,3AB
579
+ 321_01.png,4AB
580
+ 321_02.png,5AA
581
+ 321_03.png,4AA
582
+ 321_04.png,4AB
583
+ 323_01.png,4AA
584
+ 323_02.png,5AA
585
+ 323_03.png,4BB
586
+ 323_04.png,4AB
587
+ 324_01.png,5AA
588
+ 324_03.png,5BB
589
+ 324_04.png,3AB
590
+ 324_05.png,4AA
591
+ 324_06.png,4AA
592
+ 325_01.png,4AA
593
+ 326_01.png,4AA
594
+ 326_02.png,3AB
595
+ 327_01.png,5AA
596
+ 327_02.png,5BA
597
+ 327_03.png,4AA
598
+ 327_04.png,4AA
599
+ 327_05.png,4BA
600
+ 327_06.png,4AA
601
+ 328_02.png,4AB
602
+ 328_03.png,5AB
603
+ 328_04.png,5AB
604
+ 329_01.png,4AA
605
+ 329_02.png,5AA
606
+ 329_04.png,4BB
607
+ 330_01.png,4AA
608
+ 330_02.png,3AA
609
+ 330_03.png,4AA
610
+ 331_01.png,4AA
611
+ 331_02.png,4AA
612
+ 331_03.png,3AA
613
+ 331_04.png,4AA
614
+ 331_05.png,4AA
615
+ 333_01.png,3BA
616
+ 333_03.png,4BB
617
+ 333_04.png,3AB
618
+ 333_05.png,4AA
619
+ 334_01.png,4AA
620
+ 334_02.png,4AB
621
+ 335_01.png,3AB
622
+ 336_01.png,4AA
623
+ 336_02.png,4AA
624
+ 337_01.png,4AB
625
+ 337_02.png,4AA
626
+ 338_01.png,4AA
627
+ 338_02.png,5BB
628
+ 340_01.png,3AB
629
+ 340_03.png,4AB
630
+ 340_05.png,3AA
631
+ 341_01.png,4AA
632
+ 341_05.png,3BA
633
+ 342_01.png,4AA
634
+ 342_03.png,3AA
635
+ 342_06.png,4AB
636
+ 342_08.png,4AB
637
+ 343_01.png,4AA
638
+ 343_02.png,4AA
639
+ 343_03.png,5AB
640
+ 344_01.png,4AA
641
+ 344_03.png,4AA
642
+ 344_04.png,3AA
643
+ 344_05.png,4BB
644
+ 345_02.png,3AA
645
+ 346_01.png,4AB
646
+ 346_02.png,4AA
647
+ 346_03.png,3BA
648
+ 346_04.png,3AA
649
+ 347_02.png,4BA
650
+ 347_03.png,4AB
651
+ 348_01.png,4AA
652
+ 349_01.png,4AA
653
+ 349_02.png,3BA
654
+ 350_01.png,4AA
655
+ 350_02.png,3AA
656
+ 350_03.png,3BA
657
+ 350_05.png,4AB
658
+ 350_06.png,4AA
659
+ 351_01.png,4AA
660
+ 351_02.png,4BA
661
+ 351_03.png,4AB
662
+ 352_03.png,4AA
663
+ 352_05.png,3BA
664
+ 353_01.png,4AA
665
+ 353_02.png,4AA
666
+ 353_03.png,4AA
667
+ 353_04.png,5AA
668
+ 354_01.png,4AA
669
+ 354_02.png,4AB
670
+ 354_03.png,4AA
671
+ 355_01.png,5AA
672
+ 355_02.png,4AA
673
+ 355_03.png,4AA
674
+ 356_01.png,5AA
675
+ 357_01.png,4AA
676
+ 357_03.png,4AA
677
+ 358_01.png,4AB
678
+ 358_02.png,4AA
679
+ 359_01.png,4AA
680
+ 359_02.png,3AA
681
+ 360_01.png,4AA
682
+ 361_01.png,5AA
683
+ 362_01.png,4AA
684
+ 362_02.png,4AA
685
+ 362_03.png,4AB
686
+ 362_04.png,4AA
687
+ 363_01.png,4AA
688
+ 363_02.png,4AA
689
+ 363_03.png,3AA
690
+ 363_05.png,4AA
691
+ 363_06.png,4BA
692
+ 364_01.png,4AA
693
+ 366_01.png,4AA
694
+ 366_02.png,4AA
695
+ 366_03.png,3BB
696
+ 366_04.png,4BB
697
+ 368_02.png,4AA
698
+ 368_03.png,4AA
699
+ 368_04.png,3BA
700
+ 368_05.png,3AA
701
+ 369_02.png,4AA
702
+ 369_04.png,4AA
703
+ 369_05.png,4BA
704
+ 370_01.png,5AA
705
+ 371_01.png,4AA
706
+ 371_02.png,4AA
707
+ 371_03.png,4AA
708
+ 372_01.png,4AA
709
+ 372_03.png,4AA
710
+ 372_04.png,5AA
711
+ 372_05.png,4AA
712
+ 372_06.png,4AA
713
+ 373_01.png,4AA
714
+ 374_01.png,4BA
715
+ 375_01.png,3AB
716
+ 376_01.png,4AA
717
+ 377_01.png,4AB
718
+ 377_02.png,4AA
719
+ 377_03.png,4AB
720
+ 378_01.png,4BC
721
+ 379_02.png,4AC
722
+ 380_01.png,3AA
723
+ 381_01.png,5AA
724
+ 381_02.png,3AB
725
+ 381_03.png,5AA
726
+ 382_01.png,5AA
727
+ 383_01.png,4AA
728
+ 383_03.png,4AA
729
+ 383_04.png,3AB
730
+ 384_01.png,4AA
731
+ 384_02.png,4AB
732
+ 384_03.png,3AB
733
+ 384_04.png,3AB
734
+ 384_05.png,4AB
735
+ 386_01.png,4BA
736
+ 387_01.png,4AA
737
+ 388_01.png,4AA
738
+ 388_02.png,4AA
739
+ 388_03.png,4AA
740
+ 389_01.png,4AB
741
+ 389_02.png,4BA
742
+ 390_01.png,4AB
743
+ 390_02.png,4AA
744
+ 390_03.png,4BA
745
+ 390_04.png,3AA
746
+ 391_01.png,4AA
747
+ 391_02.png,4AB
748
+ 392_02.png,4AA
749
+ 392_04.png,3AA
750
+ 392_05.png,4AA
751
+ 393_01.png,4AA
752
+ 393_05.png,3AA
753
+ 393_06.png,4AA
754
+ 393_07.png,4AA
755
+ 393_09.png,4AA
756
+ 393_10.png,4AA
757
+ 393_11.png,4BB
758
+ 394_01.png,4AA
759
+ 395_01.png,4AA
760
+ 395_02.png,3AB
761
+ 396_01.png,4AA
762
+ 397_01.png,3AA
763
+ 398_01.png,4BA
764
+ 399_04.png,4BA
765
+ 400_02.png,4AA
766
+ 400_03.png,4AA
767
+ 401_03.png,4AA
768
+ 401_04.png,3AB
769
+ 401_05.png,4AA
770
+ 402_02.png,4AA
771
+ 403_01.png,4AC
772
+ 405_01.png,5AA
773
+ 405_02.png,4AA
774
+ 405_03.png,3AB
775
+ 405_04.png,4AC
776
+ 405_05.png,3AB
777
+ 406_01.png,4AA
778
+ 406_04.png,3AB
779
+ 406_05.png,3AB
780
+ 406_06.png,3AA
781
+ 407_01.png,3AA
782
+ 407_02.png,4AB
783
+ 408_01.png,4AA
784
+ 409_01.png,4AB
785
+ 409_02.png,4AA
786
+ 409_03.png,4BB
787
+ 409_04.png,4AB
788
+ 409_05.png,3AA
789
+ 409_06.png,4AA
790
+ 410_01.png,4AA
791
+ 411_01.png,4AA
792
+ 411_02.png,4CB
793
+ 411_03.png,4AC
794
+ 411_04.png,3AB
795
+ 412_01.png,4AA
796
+ 412_03.png,3AA
797
+ 412_04.png,3AA
798
+ 413_01.png,4AA
799
+ 414_01.png,5AA
800
+ 414_02.png,4AB
801
+ 414_03.png,3BA
802
+ 414_04.png,4AA
803
+ 414_05.png,4AA
804
+ 414_06.png,4AA
805
+ 414_08.png,4AB
806
+ 414_09.png,4AA
807
+ 414_10.png,4AA
808
+ 415_01.png,4AA
809
+ 416_01.png,5AA
810
+ 417_01.png,5AA
811
+ 418_01.png,4AA
812
+ 419_01.png,4AA
813
+ 419_02.png,3BA
814
+ 420_01.png,4AA
815
+ 420_02.png,4AA
816
+ 420_03.png,4AA
817
+ 420_04.png,3AA
818
+ 420_05.png,3AA
819
+ 420_06.png,4AA
820
+ 420_07.png,4AA
821
+ 420_08.png,4AA
822
+ 421_01.png,4AA
823
+ 421_03.png,4AB
824
+ 421_04.png,4AA
825
+ 421_05.png,4AB
826
+ 421_06.png,4AA
827
+ 421_07.png,4AA
828
+ 423_01.png,4AA
829
+ 424_01.png,4AA
830
+ 425_01.png,5AA
831
+ 426_01.png,3AC
832
+ 427_01.png,4AA
833
+ 427_02.png,3AB
834
+ 429_01.png,5AA
835
+ 430_05.png,4AA
836
+ 430_06.png,4AA
837
+ 430_07.png,5AA
838
+ 430_08.png,4AA
839
+ 430_09.png,5AA
840
+ 431_01.png,3BA
841
+ 431_02.png,3AB
842
+ 431_05.png,4AA
843
+ 432_01.png,4AA
844
+ 432_02.png,4AA
845
+ 432_03.png,3BA
846
+ 433_01.png,4BA
847
+ 433_03.png,4AA
848
+ 433_04.png,3AA
849
+ 434_03.png,3AB
850
+ 434_04.png,3AA
851
+ 434_08.png,4AA
852
+ 435_01.png,4AA
853
+ 436_01.png,4AA
854
+ 436_02.png,4AA
855
+ 436_03.png,3AB
856
+ 436_05.png,4BA
857
+ 436_07.png,4AA
858
+ 436_08.png,4BB
859
+ 437_01.png,3AB
860
+ 437_02.png,3BA
861
+ 437_04.png,5AA
862
+ 438_02.png,4AA
863
+ 438_03.png,3AB
864
+ 439_01.png,5AA
865
+ 439_02.png,4AA
866
+ 439_06.png,4AB
867
+ 440_01.png,4BA
868
+ 440_02.png,4AA
869
+ 441_02.png,3AA
870
+ 442_01.png,4AC
871
+ 442_02.png,4AB
872
+ 442_04.png,4AB
873
+ 443_01.png,4AA
874
+ 443_02.png,5AB
875
+ 443_03.png,4AA
876
+ 443_04.png,4AA
877
+ 443_05.png,4BC
878
+ 444_02.png,4AB
879
+ 444_03.png,4AA
880
+ 444_04.png,4AA
881
+ 445_01.png,4BA
882
+ 445_02.png,4AA
883
+ 445_03.png,4AA
884
+ 446_02.png,4AC
885
+ 447_01.png,3CA
886
+ 447_02.png,4AB
887
+ 449_01.png,4CB
888
+ 453_01.png,3AA
889
+ 454_01.png,3AA
890
+ 456_01.png,3AA
891
+ 456_03.png,3AA
892
+ 456_05.png,4AB
893
+ 456_06.png,4AA
894
+ 456_07.png,4AA
895
+ 457_01.png,3AA
896
+ 457_02.png,4AA
897
+ 457_03.png,4AA
898
+ 458_01.png,3AB
899
+ 458_02.png,4AA
900
+ 458_03.png,4BB
901
+ 458_04.png,4BA
902
+ 459_03.png,3AA
903
+ 460_01.png,3AA
904
+ 463_01.png,3AA
905
+ 463_02.png,4BB
906
+ 463_03.png,4AB
907
+ 463_04.png,4AA
908
+ 463_05.png,4AA
909
+ 464_01.png,3AA
910
+ 465_01.png,4AA
911
+ 465_02.png,4AA
912
+ 466_01.png,4AA
913
+ 466_02.png,3BB
914
+ 467_01.png,4AA
915
+ 467_03.png,4AA
916
+ 467_04.png,4BA
917
+ 468_01.png,4AA
918
+ 468_02.png,4AB
919
+ 468_03.png,3BA
920
+ 469_01.png,3AA
921
+ 469_02.png,3BA
922
+ 469_03.png,3AB
923
+ 470_01.png,4AA
924
+ 471_01.png,4AA
925
+ 472_01.png,4AB
926
+ 473_01.png,3BA
927
+ 474_02.png,3AB
928
+ 474_04.png,4AB
929
+ 474_05.png,3BA
930
+ 475_01.png,4AA
931
+ 475_02.png,4AB
932
+ 475_03.png,5AA
933
+ 475_05.png,4AB
934
+ 475_06.png,3AA
935
+ 475_07.png,4AA
936
+ 476_01.png,4AA
937
+ 477_01.png,4AA
938
+ 478_01.png,4AA
939
+ 478_02.png,4AB
940
+ 478_03.png,4AA
941
+ 478_04.png,3AB
942
+ 479_01.png,4AA
943
+ 479_02.png,4AA
944
+ 479_03.png,3AA
945
+ 480_01.png,4BA
946
+ 481_01.png,4AA
947
+ 481_02.png,5AA
948
+ 481_03.png,4AB
949
+ 483_01.png,4AA
950
+ 483_03.png,4AA
951
+ 483_04.png,4AB
952
+ 484_02.png,4AA
953
+ 485_01.png,4AB
954
+ 485_02.png,4BA
955
+ 486_01.png,5AA
956
+ 487_01.png,5AA
957
+ 488_01.png,4AA
958
+ 488_02.png,3AB
959
+ 489_01.png,4AA
960
+ 489_02.png,4AB
961
+ 489_03.png,3AA
962
+ 490_01.png,4AA
963
+ 490_02.png,4AA
964
+ 490_03.png,4AA
965
+ 491_01.png,4AA
966
+ 492_01.png,4AA
967
+ 492_02.png,4AC
968
+ 492_03.png,3AA
969
+ 493_01.png,4AA
970
+ 494_01.png,4AA
971
+ 494_02.png,4BA
972
+ 495_01.png,4AA
973
+ 495_02.png,4AB
974
+ 495_04.png,4BB
975
+ 496_05.png,4AA
976
+ 496_07.png,3AA
977
+ 497_01.png,4AA
978
+ 497_02.png,4AA
979
+ 497_03.png,5AB
980
+ 497_04.png,4BB
981
+ 498_01.png,4AA
982
+ 498_02.png,5AA
983
+ 498_03.png,5BA
984
+ 499_01.png,4AB
985
+ 499_02.png,3AA
986
+ 500_01.png,4BA
987
+ 501_01.png,4AB
988
+ 501_02.png,4AA
989
+ 501_03.png,4AA
990
+ 501_05.png,4AA
991
+ 501_06.png,4AA
992
+ 501_07.png,4AA
993
+ 502_01.png,4AA
994
+ 502_02.png,5AA
995
+ 504_02.png,4BA
996
+ 506_01.png,4AA
997
+ 506_02.png,4AA
998
+ 507_01.png,4BA
999
+ 507_02.png,4AB
1000
+ 507_03.png,4BA
1001
+ 508_03.png,4AB
1002
+ 508_04.png,3BB
1003
+ 508_05.png,4AC
1004
+ 509_01.png,4BB
1005
+ 510_01.png,3BB
1006
+ 510_02.png,4AA
1007
+ 512_02.png,4AA
1008
+ 513_01.png,4AA
1009
+ 513_02.png,3AA
1010
+ 513_03.png,4AA
1011
+ 514_01.png,3AB
1012
+ 515_01.png,3AA
1013
+ 515_02.png,3BB
1014
+ 515_03.png,4AB
1015
+ 516_02.png,4AA
1016
+ 516_03.png,5AB
1017
+ 516_04.png,3BB
1018
+ 517_01.png,5AA
1019
+ 517_02.png,4AA
1020
+ 518_01.png,3AA
1021
+ 520_01.png,4AA
1022
+ 520_03.png,4AA
1023
+ 520_04.png,4AA
1024
+ 521_02.png,3AA
1025
+ 523_01.png,4BA
1026
+ 523_03.png,3BA
1027
+ 523_04.png,4AA
1028
+ 524_01.png,3AB
1029
+ 524_04.png,3BA
1030
+ 525_01.png,4AA
1031
+ 525_03.png,4AA
1032
+ 526_01.png,4AA
1033
+ 527_01.png,4AA
1034
+ 528_01.png,4AA
1035
+ 528_02.png,4AB
1036
+ 528_04.png,3AA
1037
+ 528_05.png,5BA
1038
+ 528_06.png,4AA
1039
+ 529_01.png,4AA
1040
+ 529_03.png,4AA
1041
+ 529_04.png,4AA
1042
+ 530_01.png,4BA
1043
+ 530_02.png,4AB
1044
+ 531_01.png,4BB
1045
+ 532_01.png,4AA
1046
+ 532_02.png,3BB
1047
+ 533_01.png,4AA
1048
+ 533_02.png,4BA
1049
+ 533_03.png,4AB
1050
+ 534_01.png,3AA
1051
+ 535_01.png,3AC
1052
+ 535_02.png,4AA
1053
+ 535_03.png,4AB
1054
+ 535_04.png,4AB
1055
+ 536_01.png,3AA
1056
+ 538_01.png,4AA
1057
+ 539_01.png,4AA
1058
+ 541_02.png,3BB
1059
+ 542_01.png,5AA
1060
+ 542_02.png,4AA
1061
+ 543_01.png,4AA
1062
+ 543_02.png,4AB
1063
+ 543_03.png,4BA
1064
+ 544_01.png,4AB
1065
+ 544_02.png,3AC
1066
+ 546_01.png,3AA
1067
+ 546_02.png,4AA
1068
+ 547_01.png,4AB
1069
+ 547_02.png,4BA
1070
+ 547_03.png,4AB
1071
+ 547_04.png,3AA
1072
+ 547_06.png,3AA
1073
+ 548_01.png,5AA
1074
+ 548_02.png,3CA
1075
+ 550_01.png,4AA
1076
+ 550_03.png,4AA
1077
+ 552_01.png,4AA
1078
+ 553_01.png,4AB
1079
+ 553_02.png,3AA
1080
+ 553_03.png,3AA
1081
+ 553_06.png,3AB
1082
+ 554_01.png,4AA
1083
+ 554_02.png,5AA
1084
+ 554_03.png,4AA
1085
+ 554_04.png,4BC
1086
+ 556_02.png,4AA
1087
+ 558_01.png,4AA
1088
+ 558_03.png,4CA
1089
+ 558_04.png,4BB
1090
+ 559_01.png,5BA
1091
+ 559_02.png,4AA
1092
+ 559_03.png,5AA
1093
+ 561_01.png,4AA
1094
+ 562_01.png,4AA
1095
+ 562_02.png,3AB
1096
+ 563_02.png,4AA
1097
+ 564_01.png,4AA
1098
+ 564_02.png,3BA
1099
+ 566_01.png,4AA
1100
+ 567_01.png,4AB
1101
+ 568_01.png,4AA
1102
+ 570_01.png,4AA
1103
+ 571_01.png,4AA
1104
+ 571_03.png,4AB
1105
+ 572_01.png,4AA
1106
+ 572_02.png,4AC
1107
+ 572_03.png,3CB
1108
+ 575_01.png,4AA
1109
+ 576_01.png,5AA
1110
+ 578_01.png,4AA
1111
+ 578_02.png,4BA
1112
+ 580_01.png,4AA
1113
+ 581_01.png,4AA
1114
+ 581_02.png,4BB
1115
+ 582_01.png,4BA
1116
+ 583_01.png,3BA
1117
+ 583_02.png,4AA
1118
+ 584_01.png,4AA
1119
+ 585_01.png,4AB
1120
+ 586_02.png,3AB
1121
+ 588_01.png,4AA
1122
+ 588_02.png,4AA
1123
+ 588_03.png,4AA
1124
+ 588_05.png,4AB
1125
+ 588_06.png,4BC
1126
+ 588_07.png,3AA
1127
+ 588_09.png,3BA
1128
+ 588_11.png,4AA
1129
+ 589_02.png,4BA
1130
+ 589_03.png,5AA
1131
+ 589_04.png,3AB
1132
+ 590_01.png,4BA
1133
+ 590_03.png,4AB
1134
+ 590_04.png,4AA
1135
+ 591_01.png,4AA
1136
+ 591_04.png,4AA
1137
+ 593_01.png,3AA
1138
+ 593_03.png,3AB
1139
+ 594_01.png,4AB
1140
+ 596_01.png,4AB
1141
+ 597_01.png,4BB
1142
+ 597_02.png,3BA
1143
+ 598_01.png,4AA
1144
+ 598_02.png,4BB
1145
+ 599_02.png,3AA
1146
+ 599_03.png,4BA
1147
+ 599_04.png,4AA
1148
+ 600_02.png,3AB
1149
+ 600_03.png,3BC
1150
+ 601_03.png,4AA
1151
+ 601_04.png,3AA
1152
+ 602_01.png,4AB
1153
+ 602_02.png,4BA
1154
+ 602_04.png,4BC
1155
+ 603_01.png,4CB
1156
+ 603_02.png,4AA
1157
+ 603_04.png,4AA
1158
+ 603_05.png,4AB
1159
+ 603_06.png,4AA
1160
+ 603_07.png,4AB
1161
+ 603_08.png,4AA
1162
+ 603_09.png,4AB
1163
+ 604_01.png,5AA
1164
+ 604_02.png,4AA
1165
+ 604_03.png,5AB
1166
+ 605_01.png,4AB
1167
+ 605_02.png,4AB
1168
+ 605_03.png,4AA
1169
+ 605_04.png,4AA
1170
+ 606_02.png,4AA
1171
+ 606_03.png,4AA
1172
+ 607_01.png,3BA
1173
+ 607_02.png,3AA
1174
+ 607_04.png,4AA
1175
+ 607_05.png,4BB
1176
+ 607_07.png,4BA
1177
+ 607_08.png,5BA
1178
+ 607_09.png,4AC
1179
+ 607_10.png,3AA
1180
+ 608_04.png,4CB
1181
+ 608_05.png,4AB
1182
+ 609_01.png,4BA
1183
+ 609_02.png,4AB
1184
+ 610_01.png,5AA
1185
+ 610_02.png,4BA
1186
+ 610_03.png,3BA
1187
+ 610_05.png,3AC
1188
+ 611_02.png,4BB
1189
+ 612_01.png,5AA
1190
+ 613_01.png,3BB
1191
+ 615_01.png,4AB
1192
+ 615_04.png,5AA
1193
+ 616_01.png,4AA
1194
+ 616_03.png,4BA
1195
+ 617_01.png,4AA
1196
+ 617_03.png,4AA
1197
+ 619_01.png,3AC
1198
+ 619_02.png,4AC
1199
+ 620_01.png,3AA
1200
+ 621_01.png,3AA
1201
+ 621_02.png,4AB
1202
+ 622_01.png,4AB
1203
+ 623_01.png,4AC
1204
+ 623_02.png,4AA
1205
+ 624_01.png,5AB
1206
+ 624_02.png,5AB
1207
+ 624_03.png,5BA
1208
+ 624_04.png,5AC
1209
+ 625_01.png,4AB
1210
+ 625_02.png,4BB
1211
+ 625_03.png,4AA
1212
+ 626_03.png,3AA
1213
+ 626_04.png,3BA
1214
+ 626_06.png,4AA
1215
+ 626_07.png,4AA
1216
+ 626_08.png,3AA
1217
+ 627_02.png,3AA
1218
+ 627_03.png,4AA
1219
+ 628_01.png,3AB
1220
+ 628_03.png,3BA
1221
+ 628_05.png,4AA
1222
+ 628_06.png,4AA
1223
+ 628_08.png,4AA
1224
+ 629_01.png,3AA
1225
+ 629_03.png,3AB
1226
+ 629_04.png,4AA
1227
+ 629_07.png,3AB
1228
+ 629_08.png,4AB
1229
+ 629_09.png,4BC
1230
+ 630_01.png,4AA
1231
+ 630_03.png,3AA
1232
+ 630_04.png,4AA
1233
+ 631_01.png,3BA
1234
+ 631_02.png,4AA
1235
+ 631_03.png,4AA
1236
+ 631_04.png,4AA
1237
+ 631_05.png,4AA
1238
+ 631_06.png,4AB
1239
+ 631_07.png,4AB
1240
+ 631_08.png,4BB
1241
+ 631_09.png,4AB
1242
+ 632_01.png,3AA
1243
+ 632_02.png,3AA
1244
+ 632_04.png,4AA
1245
+ 633_01.png,3AA
1246
+ 634_02.png,4AA
1247
+ 634_04.png,3AB
1248
+ 635_01.png,4AA
1249
+ 635_02.png,4AB
1250
+ 635_03.png,4BB
1251
+ 636_01.png,4AA
1252
+ 636_02.png,3AA
1253
+ 636_04.png,4AA
1254
+ 636_05.png,3AA
1255
+ 636_06.png,3AA
1256
+ 636_09.png,4AB
1257
+ 637_01.png,4AA
1258
+ 637_02.png,4AA
1259
+ 637_03.png,4AA
1260
+ 637_04.png,3CB
1261
+ 638_01.png,5AB
1262
+ 639_02.png,3BA
1263
+ 639_03.png,4AA
1264
+ 639_04.png,3AA
1265
+ 639_05.png,3AA
1266
+ 639_07.png,4AA
1267
+ 640_01.png,3AA
1268
+ 640_02.png,4AB
1269
+ 640_04.png,5AA
1270
+ 642_01.png,3BA
1271
+ 642_02.png,4AA
1272
+ 642_03.png,3AA
1273
+ 642_04.png,4AA
1274
+ 643_01.png,4AA
1275
+ 643_03.png,4AA
1276
+ 644_01.png,3AA
1277
+ 644_02.png,4AA
1278
+ 644_03.png,4AA
1279
+ 645_01.png,4AA
1280
+ 646_01.png,4AB
1281
+ 646_02.png,5AA
1282
+ 646_03.png,4BA
1283
+ 646_04.png,3AB
1284
+ 646_05.png,3BB
1285
+ 647_01.png,4AA
1286
+ 647_02.png,5AA
1287
+ 648_01.png,4BA
1288
+ 648_02.png,4AA
1289
+ 648_03.png,4BA
1290
+ 648_04.png,4AA
1291
+ 648_05.png,4AA
1292
+ 648_06.png,3AA
1293
+ 648_07.png,4AA
1294
+ 648_08.png,5AA
1295
+ 649_01.png,3AA
1296
+ 649_02.png,3AA
1297
+ 649_03.png,3AA
1298
+ 649_04.png,3AA
1299
+ 649_06.png,3BA
1300
+ 650_01.png,3BC
1301
+ 651_01.png,5BA
1302
+ 652_01.png,4AA
1303
+ 652_02.png,4AA
1304
+ 652_03.png,4AA
1305
+ 653_01.png,4AA
1306
+ 654_01.png,4BC
1307
+ 655_01.png,4AA
1308
+ 655_02.png,4BA
1309
+ 655_03.png,4AB
1310
+ 656_01.png,4BA
1311
+ 656_02.png,3AB
1312
+ 657_01.png,3AA
1313
+ 657_02.png,3AA
1314
+ 657_05.png,4AB
1315
+ 657_06.png,4BA
1316
+ 658_02.png,5AA
1317
+ 658_03.png,4BA
1318
+ 658_04.png,3AB
1319
+ 658_05.png,3AA
1320
+ 658_06.png,4BA
1321
+ 658_07.png,4AA
1322
+ 658_08.png,4AA
1323
+ 660_01.png,4AB
1324
+ 661_01.png,4AA
1325
+ 662_02.png,3BC
1326
+ 663_01.png,4AA
1327
+ 665_01.png,4AA
1328
+ 665_02.png,4AB
1329
+ 666_01.png,4BB
1330
+ 666_02.png,4AB
1331
+ 666_03.png,4BC
1332
+ 666_04.png,3AB
1333
+ 666_05.png,4AA
1334
+ 666_06.png,4AA
1335
+ 667_01.png,3BB
1336
+ 668_01.png,4AA
1337
+ 668_02.png,4AA
1338
+ 669_01.png,3BC
1339
+ 670_01.png,4AB
1340
+ 672_01.png,3AB
1341
+ 674_01.png,4AA
1342
+ 674_02.png,3AB
1343
+ 676_01.png,4AB
1344
+ 678_02.png,4BB
1345
+ 678_03.png,4AB
1346
+ 679_01.png,4AB
1347
+ 680_01.png,3AA
1348
+ 680_02.png,4AB
1349
+ 681_01.png,4AA
1350
+ 684_01.png,4AA
1351
+ 685_01.png,4BB
1352
+ 686_01.png,4AA
1353
+ 686_03.png,3AA
1354
+ 688_01.png,4AA
1355
+ 690_01.png,4AA
1356
+ 690_02.png,3AB
1357
+ 691_01.png,4AA
1358
+ 691_02.png,3AA
1359
+ 692_01.png,3AA
1360
+ 694_01.png,4AA
1361
+ 695_01.png,3AB
1362
+ 695_02.png,3AB
1363
+ 696_01.png,4AA
1364
+ 696_02.png,4AB
1365
+ 697_01.png,4AA
1366
+ 698_01.png,3AA
1367
+ 698_02.png,3AB
1368
+ 699_01.png,4BB
1369
+ 701_01.png,5AA
1370
+ 701_03.png,3AB
1371
+ 703_01.png,4AA
1372
+ 704_01.png,4AA
1373
+ 705_01.png,3AB
1374
+ 706_01.png,3BA
1375
+ 706_02.png,4BA
1376
+ 707_01.png,4BA
1377
+ 707_02.png,4AB
1378
+ 708_01.png,4AA
1379
+ 709_01.png,4AA
1380
+ 709_02.png,4AB
1381
+ 710_01.png,4AB
1382
+ 710_03.png,4BA
1383
+ 710_04.png,4AA
1384
+ 710_05.png,4BA
1385
+ 710_06.png,4AA
1386
+ 711_01.png,4AA
1387
+ 712_01.png,4AA
1388
+ 712_02.png,4AA
1389
+ 713_01.png,4AA
1390
+ 713_02.png,4BB
1391
+ 714_01.png,4AA
1392
+ 714_02.png,3BA
1393
+ 715_01.png,4AA
1394
+ 715_02.png,3BA
1395
+ 715_03.png,4AA
1396
+ 716_01.png,4AA
1397
+ 716_02.png,3AA
1398
+ 716_03.png,3AA
1399
+ 719_01.png,4AA
1400
+ 719_02.png,4AA
1401
+ 721_01.png,5AA
1402
+ 721_02.png,4AA
1403
+ 721_03.png,4AA
1404
+ 723_01.png,4AA
1405
+ 724_01.png,5AA
1406
+ 724_02.png,4AA
1407
+ 724_03.png,4AA
1408
+ 724_04.png,3AA
1409
+ 725_01.png,3AA
1410
+ 726_01.png,5AB
1411
+ 726_02.png,5AA
1412
+ 726_03.png,3AA
1413
+ 727_01.png,4BC
1414
+ 728_01.png,4AA
1415
+ 728_03.png,4AB
1416
+ 728_04.png,4AB
1417
+ 729_01.png,3AA
1418
+ 730_01.png,4BB
1419
+ 730_02.png,3BA
1420
+ 731_01.png,4BA
1421
+ 731_02.png,4AB
1422
+ 732_01.png,5AA
1423
+ 732_02.png,4AB
1424
+ 732_03.png,4AB
1425
+ 732_04.png,4AB
1426
+ 734_01.png,4AB
1427
+ 735_01.png,4AA
1428
+ 736_01.png,3AA
1429
+ 738_01.png,4AA
1430
+ 739_01.png,4AA
1431
+ 739_02.png,4BB
1432
+ 740_01.png,4AA
1433
+ 741_01.png,4AA
1434
+ 741_02.png,4BA
1435
+ 742_01.png,4AA
1436
+ 742_02.png,4AB
1437
+ 743_01.png,4AA
1438
+ 743_02.png,3BA
1439
+ 744_01.png,3AB
1440
+ 745_01.png,3AB
1441
+ 747_01.png,3BA
1442
+ 748_01.png,4BB
1443
+ 748_02.png,4BA
1444
+ 748_03.png,4AA
1445
+ 749_01.png,5AA
1446
+ 749_02.png,4AB
1447
+ 750_01.png,4AA
1448
+ 750_02.png,4AA
1449
+ 751_01.png,5AA
1450
+ 751_02.png,4AB
1451
+ 751_03.png,5AA
1452
+ 752_01.png,4AA
1453
+ 752_02.png,4AA
1454
+ 753_01.png,4AA
1455
+ 753_02.png,4AB
1456
+ 753_03.png,3AB
1457
+ 753_04.png,4AA
1458
+ 753_05.png,3AB
1459
+ 754_01.png,4AA
1460
+ 754_02.png,4AB
1461
+ 756_01.png,4AA
1462
+ 758_01.png,5AA
1463
+ 758_02.png,3BB
1464
+ 758_03.png,4AA
1465
+ 759_02.png,4AA
1466
+ 759_04.png,3AA
1467
+ 760_01.png,3BB
1468
+ 761_01.png,4AA
1469
+ 761_03.png,4AB
1470
+ 763_01.png,4AB
1471
+ 763_02.png,4BB
1472
+ 763_03.png,3BA
1473
+ 765_01.png,3AA
1474
+ 766_01.png,3CA
1475
+ 767_01.png,5AA
1476
+ 767_02.png,4AA
1477
+ 767_03.png,4AA
1478
+ 767_04.png,4AA
1479
+ 769_01.png,4AA
1480
+ 771_01.png,4AB
1481
+ 772_02.png,3AA
1482
+ 772_03.png,3AA
1483
+ 773_01.png,4AA
1484
+ 773_02.png,3BB
1485
+ 773_03.png,3AB
1486
+ 773_04.png,3BA
1487
+ 774_01.png,3BC
1488
+ 775_01.png,4AA
1489
+ 775_02.png,4AA
1490
+ 775_03.png,4AA
1491
+ 775_04.png,4AA
1492
+ 776_01.png,4AA
1493
+ 776_02.png,4BA
1494
+ 777_02.png,4AA
1495
+ 778_01.png,5AA
1496
+ 778_02.png,4AA
1497
+ 779_01.png,4AB
1498
+ 780_01.png,4AA
1499
+ 781_01.png,4AA
1500
+ 781_02.png,4AA
1501
+ 781_03.png,3AA
1502
+ 781_04.png,3BA
1503
+ 782_01.png,4AB
1504
+ 782_02.png,4AB
1505
+ 783_01.png,4AA
1506
+ 785_01.png,4AA
1507
+ 785_02.png,3BA
1508
+ 785_03.png,3AA
1509
+ 786_01.png,4BA
1510
+ 789_02.png,3BA
1511
+ 790_01.png,4AA
1512
+ 790_02.png,3AA
1513
+ 792_01.png,3BA
1514
+ 793_01.png,4AB
1515
+ 794_01.png,3AA
1516
+ 795_01.png,4AB
1517
+ 796_01.png,3AA
1518
+ 796_02.png,3AA
1519
+ 797_01.png,4AA
1520
+ 798_01.png,5AA
1521
+ 798_02.png,4AA
1522
+ 799_01.png,4AA
1523
+ 800_01.png,5AA
1524
+ 801_01.png,3AA
1525
+ 801_02.png,4AB
1526
+ 802_01.png,4AA
1527
+ 802_02.png,4AA
1528
+ 803_01.png,4AA
1529
+ 803_02.png,3AB
1530
+ 804_01.png,4AA
1531
+ 805_01.png,4AA
1532
+ 805_02.png,3AA
1533
+ 808_01.png,4AA
1534
+ 808_02.png,4AA
1535
+ 808_03.png,4AA
1536
+ 808_04.png,4AB
1537
+ 808_05.png,4AA
1538
+ 809_01.png,4AA
1539
+ 810_01.png,4AA
1540
+ 810_02.png,4AB
1541
+ 810_03.png,3AA
1542
+ 811_01.png,4AA
1543
+ 811_04.png,3AA
1544
+ 812_01.png,4AA
1545
+ 812_02.png,3AA
1546
+ 813_01.png,3AB
1547
+ 814_01.png,3BA
1548
+ 815_01.png,4AA
1549
+ 815_02.png,4AA
1550
+ 816_01.png,3BA
1551
+ 816_02.png,4BA
1552
+ 817_01.png,4BA
1553
+ 818_01.png,4AA
1554
+ 820_01.png,4BA
1555
+ 821_01.png,4AA
1556
+ 821_02.png,4AB
1557
+ 822_01.png,3AA
1558
+ 823_01.png,4AB
1559
+ 823_02.png,3AA
1560
+ 823_03.png,4AA
1561
+ 824_01.png,3AA
1562
+ 824_04.png,5AA
1563
+ 824_05.png,4AA
1564
+ 825_01.png,3AA
1565
+ 826_01.png,4AA
1566
+ 826_02.png,4AA
1567
+ 827_01.png,5AA
1568
+ 828_01.png,4AA
1569
+ 828_02.png,3AB
1570
+ 829_01.png,4AA
1571
+ 830_02.png,4AA
1572
+ 831_01.png,4BA
1573
+ 834_01.png,5AA
1574
+ 834_02.png,4AA
1575
+ 834_03.png,4AA
1576
+ 835_01.png,4AA
1577
+ 835_02.png,4AB
1578
+ 835_03.png,4AA
1579
+ 835_04.png,4AA
1580
+ 835_06.png,4AA
1581
+ 835_07.png,4AA
1582
+ 835_08.png,5BA
1583
+ 835_09.png,3AB
1584
+ 835_10.png,4AA
1585
+ 836_02.png,3AA
1586
+ 836_03.png,4AA
1587
+ 836_04.png,5AB
1588
+ 836_05.png,5AA
1589
+ 838_01.png,5AA
1590
+ 838_02.png,4AA
1591
+ 839_01.png,4AA
1592
+ 839_04.png,4BB
1593
+ 840_01.png,4AA
1594
+ 841_01.png,4BA
1595
+ 841_02.png,4AA
1596
+ 841_03.png,4BB
1597
+ 841_04.png,3BA
1598
+ 842_01.png,4AA
1599
+ 842_02.png,4AA
1600
+ 842_03.png,3BB
1601
+ 843_01.png,4AA
1602
+ 843_02.png,3BA
1603
+ 843_03.png,4AB
1604
+ 843_04.png,4AA
1605
+ 844_01.png,4AA
1606
+ 844_02.png,4AA
1607
+ 845_01.png,4AA
1608
+ 845_02.png,4AB
1609
+ 846_02.png,4AA
1610
+ 846_04.png,4AA
1611
+ 847_01.png,4AB
1612
+ 847_02.png,3BB
1613
+ 848_01.png,4AA
1614
+ 848_02.png,4AA
1615
+ 848_03.png,4AA
1616
+ 849_01.png,5AA
1617
+ 849_02.png,3AA
1618
+ 851_01.png,3BB
1619
+ 851_02.png,4AB
1620
+ 853_01.png,4AA
1621
+ 853_02.png,3AA
1622
+ 853_03.png,3AA
1623
+ 854_01.png,4AA
1624
+ 854_02.png,3AB
1625
+ 855_01.png,4AA
1626
+ 855_02.png,3AA
1627
+ 856_01.png,5AA
1628
+ 856_02.png,4AA
1629
+ 856_03.png,3AB
1630
+ 856_04.png,4AA
1631
+ 857_01.png,4AA
1632
+ 857_02.png,3AA
1633
+ 858_01.png,4AA
1634
+ 858_02.png,4AB
1635
+ 858_03.png,4AB
1636
+ 858_04.png,4AA
1637
+ 858_05.png,4AA
1638
+ 858_06.png,4AA
1639
+ 858_07.png,5BA
1640
+ 858_08.png,4AB
1641
+ 858_09.png,4AA
1642
+ 858_10.png,4AA
1643
+ 859_02.png,4AB
1644
+ 860_01.png,3AB
1645
+ 860_02.png,4AB
1646
+ 861_01.png,3AA
1647
+ 861_02.png,3AA
1648
+ 861_03.png,5AA
1649
+ 861_04.png,3AA
1650
+ 861_05.png,4AA
1651
+ 861_06.png,4AA
1652
+ 861_07.png,4CA
1653
+ 861_09.png,4AA
v1/finetune.py ADDED
@@ -0,0 +1,170 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import warnings
3
+ warnings.filterwarnings("ignore")
4
+
5
+ import gc
6
+ import numpy as np
7
+ import pandas as pd
8
+ from collections import Counter
9
+ from sklearn.metrics import accuracy_score
10
+ from imblearn.over_sampling import RandomOverSampler
11
+ import evaluate
12
+ from datasets import Dataset, Image, ClassLabel
13
+ from transformers import (
14
+ TrainingArguments,
15
+ Trainer
16
+ )
17
+ from transformers import AutoImageProcessor
18
+ from transformers import SiglipForImageClassification
19
+ from torch.utils.data import DataLoader
20
+ from torchvision.transforms import (
21
+ CenterCrop,
22
+ Compose,
23
+ Normalize,
24
+ RandomRotation,
25
+ RandomResizedCrop,
26
+ RandomHorizontalFlip,
27
+ RandomAdjustSharpness,
28
+ Resize,
29
+ ToTensor
30
+ )
31
+ from PIL import Image as PILImage
32
+ from PIL import ImageFile
33
+ ImageFile.LOAD_TRUNCATED_IMAGES = True
34
+ import torch
35
+
36
+ # Paths as provided
37
+ csv_path = r"D:\AI\Interns\Anish\Gardner Grading\3. model creation\AI approaches\siglip2\filtered_data.csv"
38
+ image_dir = r"D:\AI\Interns\Anish\Gardner Grading\3. model creation\AI approaches\siglip2\Images"
39
+ model_path = r"D:\AI\Interns\Anish\Gardner Grading\3. model creation\AI approaches\siglip2\model"
40
+
41
+ # Load CSV
42
+ df = pd.read_csv(csv_path)
43
+ print("DataFrame shape:", df.shape)
44
+ print(df.head())
45
+ print("Unique grades:", df['grade'].unique())
46
+
47
+ # Oversample to balance classes
48
+ y = df[['grade']]
49
+ df_no_label = df.drop(['grade'], axis=1)
50
+ ros = RandomOverSampler(random_state=83)
51
+ df_resampled, y_resampled = ros.fit_resample(df_no_label, y)
52
+ df_resampled['grade'] = y_resampled
53
+ df = df_resampled # use the oversampled DataFrame
54
+ del y, y_resampled, df_no_label
55
+ gc.collect()
56
+
57
+ # Define labels list from unique grades
58
+ labels_list = sorted(df['grade'].unique().tolist())
59
+ label2id = {label: i for i, label in enumerate(labels_list)}
60
+ id2label = {i: label for i, label in enumerate(labels_list)}
61
+ ClassLabels = ClassLabel(num_classes=len(labels_list), names=labels_list)
62
+ print("Mapping of IDs to Labels:", id2label)
63
+ print("Mapping of Labels to IDs:", label2id)
64
+
65
+ # Create Hugging Face Dataset from oversampled df, rename 'Image' to 'image_path'
66
+ df = df.rename(columns={'Image': 'image_path'})
67
+ dataset = Dataset.from_pandas(df)
68
+
69
+ # Map labels to integers
70
+ def map_label2id(examples):
71
+ examples['label'] = [ClassLabels.str2int(grade) for grade in examples['grade']]
72
+ return examples
73
+
74
+ dataset = dataset.map(map_label2id, batched=True)
75
+ dataset = dataset.cast_column('label', ClassLabels)
76
+
77
+ # Load images
78
+ def load_image(examples):
79
+ examples['image'] = [PILImage.open(os.path.join(image_dir, path)).convert("RGB") for path in examples['image_path']]
80
+ return examples
81
+
82
+ dataset = dataset.map(load_image, batched=True)
83
+
84
+ # Remove unnecessary columns
85
+ dataset = dataset.remove_columns(['grade', 'image_path'])
86
+
87
+ full_data = dataset
88
+
89
+ # Load processor
90
+ processor = AutoImageProcessor.from_pretrained(model_path)
91
+
92
+ # Extract preprocessing parameters
93
+ image_mean, image_std = processor.image_mean, processor.image_std
94
+ size = processor.size["height"]
95
+
96
+ # Define training transforms with augmentations
97
+ _train_transforms = Compose([
98
+ Resize((size, size)),
99
+ RandomRotation(90),
100
+ RandomAdjustSharpness(2),
101
+ ToTensor(),
102
+ Normalize(mean=image_mean, std=image_std)
103
+ ])
104
+
105
+ def train_transforms(examples):
106
+ examples['pixel_values'] = [_train_transforms(image) for image in examples['image']]
107
+ return examples
108
+
109
+ # Apply transforms
110
+ train_data = full_data.with_transform(train_transforms)
111
+
112
+ # Data collator
113
+ def collate_fn(examples):
114
+ pixel_values = torch.stack([example["pixel_values"] for example in examples])
115
+ labels = torch.tensor([example['label'] for example in examples])
116
+ return {"pixel_values": pixel_values, "labels": labels}
117
+
118
+ # Load model
119
+ model = SiglipForImageClassification.from_pretrained(
120
+ model_path,
121
+ num_labels=len(labels_list),
122
+ id2label=id2label,
123
+ label2id=label2id,
124
+ ignore_mismatched_sizes=True
125
+ )
126
+
127
+ print(model.num_parameters(only_trainable=True) / 1e6)
128
+
129
+ # Metrics (even if no eval)
130
+ accuracy_metric = evaluate.load("accuracy")
131
+ def compute_metrics(eval_pred):
132
+ predictions = eval_pred.predictions
133
+ label_ids = eval_pred.label_ids
134
+ predicted_labels = predictions.argmax(axis=1)
135
+ acc_score = accuracy_metric.compute(predictions=predicted_labels, references=label_ids)['accuracy']
136
+ return {"accuracy": acc_score}
137
+
138
+ # Training arguments for train-only
139
+ args = TrainingArguments(
140
+ output_dir="./siglip2_finetuned",
141
+ logging_dir='./logs',
142
+ eval_strategy="no",
143
+ do_eval=False,
144
+ learning_rate=2e-5,
145
+ per_device_train_batch_size=32,
146
+ num_train_epochs=3,
147
+ weight_decay=0.02,
148
+ warmup_steps=50,
149
+ remove_unused_columns=False,
150
+ save_strategy='epoch',
151
+ load_best_model_at_end=False,
152
+ save_total_limit=2,
153
+ report_to="none",
154
+ fp16=True # If GPU supports
155
+ )
156
+
157
+ # Initialize Trainer
158
+ trainer = Trainer(
159
+ model=model,
160
+ args=args,
161
+ train_dataset=train_data,
162
+ data_collator=collate_fn,
163
+ tokenizer=processor,
164
+ )
165
+
166
+ # Train
167
+ trainer.train()
168
+
169
+ # Save the model at the end
170
+ trainer.save_model()
v1/infer.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import tkinter as tk
2
+ from tkinter import filedialog, messagebox
3
+ from PIL import Image, ImageTk
4
+ import torch
5
+ from transformers import AutoImageProcessor, SiglipForImageClassification
6
+
7
+ # Model and processor paths (adjust if needed; assumes final model saved in output_dir)
8
+ model_path = "./siglip2_finetuned" # Or "./siglip2_finetuned/checkpoint-1284" if using a specific checkpoint
9
+
10
+ # Load processor and model
11
+ processor = AutoImageProcessor.from_pretrained(model_path)
12
+ model = SiglipForImageClassification.from_pretrained(model_path)
13
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
14
+ model.to(device)
15
+ model.eval()
16
+
17
+ # Get label mappings from model config
18
+ id2label = model.config.id2label
19
+
20
+ # Tkinter GUI
21
+ class ImageClassifierApp:
22
+ def __init__(self, root):
23
+ self.root = root
24
+ self.root.title("SigLIP2 Gardner Grading Classifier")
25
+ self.root.geometry("600x600")
26
+
27
+ # Label for instructions
28
+ self.instruction_label = tk.Label(root, text="Select an image to classify")
29
+ self.instruction_label.pack(pady=10)
30
+
31
+ # Button to load image
32
+ self.load_button = tk.Button(root, text="Load Image", command=self.load_image)
33
+ self.load_button.pack(pady=10)
34
+
35
+ # Canvas to display image
36
+ self.image_canvas = tk.Canvas(root, width=400, height=400, bg="white")
37
+ self.image_canvas.pack(pady=10)
38
+
39
+ # Label to display prediction
40
+ self.prediction_label = tk.Label(root, text="", font=("Arial", 14))
41
+ self.prediction_label.pack(pady=10)
42
+
43
+ def load_image(self):
44
+ file_path = filedialog.askopenfilename(filetypes=[("Image files", "*.png *.jpg *.jpeg")])
45
+ if file_path:
46
+ try:
47
+ # Open and convert image to RGB
48
+ img = Image.open(file_path).convert("RGB")
49
+ img_resized = img.resize((400, 400)) # For display
50
+ self.photo_img = ImageTk.PhotoImage(img_resized)
51
+ self.image_canvas.create_image(200, 200, image=self.photo_img)
52
+
53
+ # Preprocess with explicit settings
54
+ inputs = processor(
55
+ images=img,
56
+ return_tensors="pt",
57
+ do_resize=True,
58
+ size={"height": 224, "width": 224}, # Adjust based on model's expected size (common for SigLIP)
59
+ do_normalize=True
60
+ ).to(device)
61
+
62
+ # Inference
63
+ with torch.no_grad():
64
+ outputs = model(**inputs)
65
+ logits = outputs.logits
66
+ predicted_id = logits.argmax(-1).item()
67
+ predicted_label = id2label[predicted_id]
68
+
69
+ # Display prediction
70
+ self.prediction_label.config(text=f"Predicted Grade: {predicted_label}")
71
+
72
+ except Exception as e:
73
+ messagebox.showerror("Error", f"Failed to process image: {str(e)}")
74
+
75
+ if __name__ == "__main__":
76
+ root = tk.Tk()
77
+ app = ImageClassifierApp(root)
78
+ root.mainloop()
v1/inference.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import tkinter as tk
2
+ from tkinter import filedialog, messagebox
3
+ from PIL import Image, ImageTk
4
+ import torch
5
+ from transformers import AutoImageProcessor, SiglipForImageClassification
6
+
7
+ # Model and processor paths (adjust if needed; assumes final model saved in output_dir)
8
+ model_path = "./siglip2_finetuned" # Or "./siglip2_finetuned/checkpoint-1284" if using a specific checkpoint
9
+
10
+ # Load processor and model
11
+ processor = AutoImageProcessor.from_pretrained(model_path)
12
+ model = SiglipForImageClassification.from_pretrained(model_path)
13
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
14
+ model.to(device)
15
+ model.eval()
16
+
17
+ # Get label mappings from model config
18
+ id2label = model.config.id2label
19
+
20
+ # Tkinter GUI
21
+ class ImageClassifierApp:
22
+ def __init__(self, root):
23
+ self.root = root
24
+ self.root.title("SigLIP2 Gardner Grading Classifier")
25
+ self.root.geometry("600x600")
26
+
27
+ # Label for instructions
28
+ self.instruction_label = tk.Label(root, text="Select an image to classify")
29
+ self.instruction_label.pack(pady=10)
30
+
31
+ # Button to load image
32
+ self.load_button = tk.Button(root, text="Load Image", command=self.load_image)
33
+ self.load_button.pack(pady=10)
34
+
35
+ # Canvas to display image
36
+ self.image_canvas = tk.Canvas(root, width=400, height=400, bg="white")
37
+ self.image_canvas.pack(pady=10)
38
+
39
+ # Label to display prediction
40
+ self.prediction_label = tk.Label(root, text="", font=("Arial", 14))
41
+ self.prediction_label.pack(pady=10)
42
+
43
+ def load_image(self):
44
+ file_path = filedialog.askopenfilename(filetypes=[("Image files", "*.png *.jpg *.jpeg")])
45
+ if file_path:
46
+ try:
47
+ # Open and display image
48
+ img = Image.open(file_path)
49
+ img_resized = img.resize((400, 400))
50
+ self.photo_img = ImageTk.PhotoImage(img_resized)
51
+ self.image_canvas.create_image(200, 200, image=self.photo_img)
52
+
53
+ # Preprocess and infer
54
+ inputs = processor(images=img, return_tensors="pt").to(device)
55
+ with torch.no_grad():
56
+ outputs = model(**inputs)
57
+ logits = outputs.logits
58
+ predicted_id = logits.argmax(-1).item()
59
+ predicted_label = id2label[predicted_id]
60
+
61
+ # Display prediction
62
+ self.prediction_label.config(text=f"Predicted Grade: {predicted_label}")
63
+
64
+ except Exception as e:
65
+ messagebox.showerror("Error", f"Failed to process image: {str(e)}")
66
+
67
+ if __name__ == "__main__":
68
+ root = tk.Tk()
69
+ app = ImageClassifierApp(root)
70
+ root.mainloop()
v1/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:25dc1e164ee1e85fd09314fae638557bb38b03a4f07adeb4a1492be808e8c9f1
3
+ size 371629520
v1/preprocessor_config.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "do_convert_rgb": null,
3
+ "do_normalize": true,
4
+ "do_rescale": true,
5
+ "do_resize": true,
6
+ "image_mean": [
7
+ 0.5,
8
+ 0.5,
9
+ 0.5
10
+ ],
11
+ "image_processor_type": "SiglipImageProcessor",
12
+ "image_std": [
13
+ 0.5,
14
+ 0.5,
15
+ 0.5
16
+ ],
17
+ "processor_class": "SiglipProcessor",
18
+ "resample": 2,
19
+ "rescale_factor": 0.00392156862745098,
20
+ "size": {
21
+ "height": 224,
22
+ "width": 224
23
+ }
24
+ }
v1/training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2d3142bd300351d5b2a53e1c77655b4c6c0503cb026feec26d0ac94dd37597d9
3
+ size 5713