younissk commited on
Commit
9894d76
·
verified ·
1 Parent(s): f92ed45

Upload folder using huggingface_hub

Browse files
.cursor/rules/project-intro.mdc ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ ---
2
+ alwaysApply: true
3
+ ---
4
+
5
+ This project aims to fin tune NSFW detection model on data which is not considered modest. The use case ultimately is to be able to detect SUGGESTIVE content, even just bikinis (e.g. for kids to not watch filthy content on their devices).
.gitattributes CHANGED
@@ -1,35 +1,9 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
3
+ assets/DISCO-Banner.png filter=lfs diff=lfs merge=lfs -text
4
+ assets/disco_predicts.png filter=lfs diff=lfs merge=lfs -text
5
+ assets/garbage.png filter=lfs diff=lfs merge=lfs -text
6
+ assets/imaterialist_fashion_rules.png filter=lfs diff=lfs merge=lfs -text
7
+ data/sexualised_fashion.csv filter=lfs diff=lfs merge=lfs -text
8
+ data/test/Screenshot[[:space:]]2025-12-21[[:space:]]at[[:space:]]14.46.33.png filter=lfs diff=lfs merge=lfs -text
9
+ data/test/Screenshot[[:space:]]2025-12-21[[:space:]]at[[:space:]]15.06.41.png filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.gitignore ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ pip-wheel-metadata/
20
+ share/python-wheels/
21
+ *.egg-info/
22
+ .installed.cfg
23
+ *.egg
24
+ MANIFEST
25
+
26
+ # Virtual Environments
27
+ .env
28
+ .venv
29
+ env/
30
+ venv/
31
+ ENV/
32
+ env.bak/
33
+ venv.bak/
34
+
35
+ # IDEs and Editors
36
+ .vscode/
37
+ .idea/
38
+ *.swp
39
+ *.swo
40
+ *~
41
+ .project
42
+ .pydevproject
43
+ .settings/
44
+ *.sublime-project
45
+ *.sublime-workspace
46
+
47
+ # Jupyter Notebook
48
+ .ipynb_checkpoints
49
+ *.ipynb_checkpoints/
50
+
51
+ # OS
52
+ .DS_Store
53
+ .DS_Store?
54
+ ._*
55
+ .Spotlight-V100
56
+ .Trashes
57
+ ehthumbs.db
58
+ Thumbs.db
59
+ desktop.ini
60
+
61
+ # Project-specific: Generated models and results
62
+ models/
63
+ results/
64
+ *.joblib
65
+ *.pkl
66
+ *.h5
67
+ *.ckpt
68
+ *.pt
69
+ *.pth
70
+
71
+ # Data files (uncomment if you don't want to track images)
72
+ # data/imgs/
73
+ # data/test/
74
+
75
+ # Logs
76
+ *.log
77
+ logs/
78
+
79
+ # Temporary files
80
+ *.tmp
81
+ *.temp
82
+ .cache/
83
+ .pytest_cache/
84
+ .mypy_cache/
85
+ .dmypy.json
86
+ dmypy.json
87
+
88
+ # Coverage reports
89
+ htmlcov/
90
+ .tox/
91
+ .coverage
92
+ .coverage.*
93
+ coverage.xml
94
+ *.cover
95
+ .hypothesis/
96
+
97
+ # Environment variables
98
+ .env.local
99
+ .env.*.local
100
+
101
+ # UV
102
+ .uv/
103
+
104
+ data/imgs
.python-version ADDED
@@ -0,0 +1 @@
 
 
1
+ 3.13
Makefile ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .PHONY: baseline help copy-label-studio-images train
2
+
3
+ help:
4
+ @echo "Available targets:"
5
+ @echo " baseline - Run the baseline NSFW detection script"
6
+ @echo " copy-label-studio-images - Copy annotated images from Label Studio"
7
+ @echo " train - Train the model"
8
+ @echo " help - Show this help message"
9
+
10
+ baseline:
11
+ uv run python src/baseline.py
12
+
13
+ copy-label-studio-images:
14
+ uv run python -c "import json, shutil; from pathlib import Path; from rich import print; ls_media = Path.home() / 'Library/Application Support/label-studio/media/upload/5'; project_imgs = Path('data/imgs'); anns = json.load(open('data/annotations.json')); files = [a['file_upload'] for a in anns if a.get('file_upload')]; [shutil.copy2(ls_media / f, project_imgs / f) for f in files if (ls_media / f).exists()]; print(f'✓ Copied {sum(1 for f in files if (project_imgs / f).exists())} images')"
15
+
16
+ train:
17
+ uv run python -m src.train
README.md ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ # DISCO: Detection of Implicit Suggestive Content Overlays
3
+
4
+ ![DISCO Banner](assets/DISCO-Banner.png)
5
+
6
+ Kids are increasingly exposed to suggestive content on social media and the big companies don't do enough against it. E.g. Roblox and Youtube kids.
7
+
8
+ Here an example of what your kid might see on Youtube Kids:
9
+
10
+ ![Youtube Kids](assets/garbage.png)
11
+
12
+ To combat sexualisation of content on social media which is targetted towards kids, I trained a model to detect suggestive content. This can hopefully be extended to either detect content that is not suitable for kids during preprocessing or even during real time on device inference. (maybe in the future)
13
+
14
+ This was just a small weekend project, however if it seems to be somewhat useful, I might extend it in the future.
15
+
16
+ ![Disco Predicts](assets/disco_predicts.png)
17
+
18
+ ## Baseline comparison
19
+
20
+ I wanted to see how much more accurate my model is than a popular NSFW detection model. I used the Falconsai/nsfw_image_detection model to compare.
21
+
22
+ To my surprise, the NSFW model did really bad at detecting suggestive content. I understand it wasn't built for this purpose, however I expected it to at least do better than random.
23
+
24
+ see `baseline.py` and `eda.ipynb` for the implementation.
25
+
26
+ ![Baseline comparison](assets/falcon_baseline.png)
27
+
28
+ ## Dataset
29
+
30
+ For training the model, I used iMaterialist dataset from Kaggle. I took a small subset of images and labled them myself using Label Studio.
31
+
32
+ Sadly, the terms of the dataset mention that I may not distribute the dataset, nor use it for commercial purposes (which I didnt plan to do anyways).
33
+
34
+ This however does mean that the model is not fully reproducible in this state, unless you accept the terms of the dataset and download it yourself. If this model seems to be useful, I will try to find a different approach to gathering data and training the model.
35
+
36
+ ![iMaterialist dataset](assets/imaterialist_fashion_rules.png)
37
+
38
+ ### Methodology
39
+
40
+ I labled in total 455 images, with 3 categories to begin with: FAMILY_SAFE, UNCERTAIN and SUGGESTIVE.
41
+
42
+ For the training however I combined FAMILY_SAFE and UNCERTAIN into a single category called FAMILY_SAFE/UNCERTAIN. This is a point of improvement for the future.
43
+
44
+ The default split is as follows: 70% for training, 15% for validation and 15% for testing.
45
+
46
+ ## Model
47
+
48
+ The model itself combines a CLIP image encoder with a linear classifier. (super simple)
49
+
50
+ In the forward pass, I generate the image features using the CLIP model and then pass them through the linear classifier.
51
+
52
+ Then to predict the probability of the SUGGESTIVE class, I use the softmax function.
53
+
54
+ ```python
55
+ proba = torch.softmax(logits, dim=-1)[0, 1].item()
56
+ ```
57
+
58
+ And then I can predict the class by thresholding the probability.
59
+
60
+ ```python
61
+ pred = (proba >= threshold).long()
62
+ ```
63
+
64
+ ## Training
65
+
66
+ I trained the model using mps instead of CPU or cuda.
67
+
68
+ It is trained on 10 epochs with a batch size of 32, a learning rate of 1e-3, a weight decay of 1e-4 and a class weight of "balanced". It's trained on 2 classed instead of 3 and it is initialised with a threshold of 0.5 (meaning if an image has a probability of 0.5 or higher, it is predicted as SUGGESTIVE).
69
+
70
+ During the training, I valvulate the model on the validation set and save the best model based on the F1 score. If it beats the previous best F1 score, I save the model.
71
+
72
+ After the training, I tune the threshold on the validation set and save the best threshold based on the F1 score.
73
+
74
+ ```python
75
+ best_threshold, threshold_metrics = tune_threshold(
76
+ val_labels_np, val_scores, metric="f1")
77
+ ```
78
+
79
+ ## Results
80
+
81
+ ## Known problems and future improvements
82
+
83
+ I am aware that my own labelling is not perfect and subjective. Therefore the biggest improvement would be to have a more objective labelling process. (Add more annotators and images to the dataset)
84
+
85
+ Another big problem is lisencing and copyright issues. My goal is to make this model better detect what is actually shown to kids, such as things like elsa and spiderman in suggestive content.
86
+
87
+ Other than that, my goal is to make this model work fast on browsers for the future possibility to add it to a chrome extension to block content in real time.
assets/DISCO-Banner.png ADDED

Git LFS Details

  • SHA256: 024ad6af6bcde333be967448bc3a5f77971b8445969842b1cc3f5ef3e9c2ac72
  • Pointer size: 132 Bytes
  • Size of remote file: 1.54 MB
assets/disco_predicts.png ADDED

Git LFS Details

  • SHA256: a4278568463fa7cf4668e211c936af1e9d93508b1e58371a924210c7bc0b10f4
  • Pointer size: 132 Bytes
  • Size of remote file: 1.09 MB
assets/falcon_baseline.png ADDED
assets/garbage.png ADDED

Git LFS Details

  • SHA256: e15ea5ce8bf488e91d9a5bfb5374c3dfa04d9c1cddbeb09f7740edaf1c86f95a
  • Pointer size: 132 Bytes
  • Size of remote file: 1.43 MB
assets/imaterialist_fashion_rules.png ADDED

Git LFS Details

  • SHA256: efc314472e17111ae77bed9903046f4f69a03e72eeacb7dcdda092beb7a8d8d1
  • Pointer size: 131 Bytes
  • Size of remote file: 419 kB
data/annotations.csv ADDED
@@ -0,0 +1,456 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "annotation_id","annotator","choice","created_at","id","image","lead_time","updated_at"
2
+ 175,"1","UNCERTAIN","2025-12-20T10:56:29.661960Z",175,"/data/upload/5/0f7d40c8-ffd86ff5fbd82d0e6eb176cbc0b83634.jpg",24.357,"2025-12-20T10:56:29.661978Z"
3
+ 176,"1","FAMILY_SAFE","2025-12-20T10:56:35.977035Z",176,"/data/upload/5/abe701ef-fff11e31ec0146bd469e5e3afa14a37a.jpg",6.115,"2025-12-20T10:56:35.977061Z"
4
+ 177,"1","UNCERTAIN","2025-12-20T10:56:38.116840Z",177,"/data/upload/5/f3f6d9e7-ff8ba374753afc33d6efcddfa8190820.jpg",1.913,"2025-12-20T10:56:38.116864Z"
5
+ 178,"1","UNCERTAIN","2025-12-20T10:56:41.031047Z",178,"/data/upload/5/2a71e0e5-ff8f980e673cd0ca47acd5e46a60860e.jpg",2.665,"2025-12-20T10:56:41.031067Z"
6
+ 179,"1","UNCERTAIN","2025-12-20T10:56:43.279382Z",179,"/data/upload/5/883fb0f5-ff89d127a396bc4e269161fcb0debafc.jpg",2.029,"2025-12-20T10:56:43.279402Z"
7
+ 180,"1","FAMILY_SAFE","2025-12-20T10:56:44.929628Z",180,"/data/upload/5/2af0302e-ff943feb34677ab7380b172f5a879061.jpg",1.407,"2025-12-20T10:56:44.929649Z"
8
+ 181,"1","SUGGESTIVE","2025-12-20T10:56:47.266206Z",181,"/data/upload/5/00b62e8d-ff8923c82c694582614e3c6426f27d50.jpg",2.1,"2025-12-20T10:56:47.266226Z"
9
+ 182,"1","UNCERTAIN","2025-12-20T10:56:52.306273Z",182,"/data/upload/5/bc29dd51-ffa3ea1e617fc51d9f897c3651d8c58c.jpg",4.823,"2025-12-20T10:56:52.306292Z"
10
+ 183,"1","FAMILY_SAFE","2025-12-20T10:56:55.191244Z",183,"/data/upload/5/7efcc1a9-ffb14bc253b175a8064d17ffe2c7249b.jpg",2.678,"2025-12-20T10:56:55.191265Z"
11
+ 184,"1","UNCERTAIN","2025-12-20T10:56:57.847092Z",184,"/data/upload/5/1ade517e-ff5c303cb978725b41ecdc33f99a9811.jpg",2.437,"2025-12-20T10:56:57.847112Z"
12
+ 185,"1","FAMILY_SAFE","2025-12-20T10:57:00.785194Z",185,"/data/upload/5/e90235cf-ff4ee441959276cee003489e10030787.jpg",2.724,"2025-12-20T10:57:00.785209Z"
13
+ 186,"1","SUGGESTIVE","2025-12-20T10:57:02.767594Z",186,"/data/upload/5/cb00e4b8-ff57d7cdec78610cfc32857254662054.jpg",1.808,"2025-12-20T10:57:02.767604Z"
14
+ 187,"1","SUGGESTIVE","2025-12-20T10:57:05.232064Z",187,"/data/upload/5/d140fb6b-ff42165c1c025a99db8fd3fbf47b9e8d.jpg",2.289,"2025-12-20T10:57:05.232085Z"
15
+ 188,"1","SUGGESTIVE","2025-12-20T10:57:06.997123Z",188,"/data/upload/5/a1cd3b22-ff0dbc383dfd54bed44ec0583cbba777.jpg",1.541,"2025-12-20T10:57:06.997149Z"
16
+ 189,"1","SUGGESTIVE","2025-12-20T10:57:08.812119Z",189,"/data/upload/5/ed323d8b-ff3cae8c55408c7ed67ef1daf9751319.jpg",1.614,"2025-12-20T10:57:08.812139Z"
17
+ 190,"1","UNCERTAIN","2025-12-20T10:57:11.626324Z",190,"/data/upload/5/c8ec92d5-fee9ea29f695f6f590dbaf3ecc99351b.jpg",2.592,"2025-12-20T10:57:11.626346Z"
18
+ 191,"1","SUGGESTIVE","2025-12-20T10:57:13.328356Z",191,"/data/upload/5/f2c80c32-ff0a5673ea6b3139e5440728d7be66b4.jpg",1.495,"2025-12-20T10:57:13.328378Z"
19
+ 192,"1","SUGGESTIVE","2025-12-20T10:57:15.124462Z",192,"/data/upload/5/e9b17aee-ff007a23e0caf370e590d636413628fb.jpg",1.586,"2025-12-20T10:57:15.124505Z"
20
+ 193,"1","SUGGESTIVE","2025-12-20T10:57:16.758021Z",193,"/data/upload/5/c53b2fea-feb2e70ea41a86df9c9984df1aff49d1.jpg",1.427,"2025-12-20T10:57:16.758042Z"
21
+ 194,"1","UNCERTAIN","2025-12-20T10:57:20.199635Z",194,"/data/upload/5/1540c751-feb3ae09e5e5e2d27b1c6b0d75e66c73.jpg",3.232,"2025-12-20T10:57:20.199658Z"
22
+ 195,"1","UNCERTAIN","2025-12-20T10:57:22.724559Z",195,"/data/upload/5/18eb5521-febafb43e0a8a5a62bd64d0e1e2c51bb.jpg",2.323,"2025-12-20T10:57:22.724579Z"
23
+ 196,"1","FAMILY_SAFE","2025-12-20T10:57:24.280506Z",196,"/data/upload/5/09c99130-fec2e3149882333a9a5a381f562f9536.jpg",1.349,"2025-12-20T10:57:24.280525Z"
24
+ 197,"1","SUGGESTIVE","2025-12-20T10:57:26.340851Z",197,"/data/upload/5/6d3cfee1-fec30d1ce7fd3c5f8056da81cc0f56cd.jpg",1.853,"2025-12-20T10:57:26.340871Z"
25
+ 198,"1","UNCERTAIN","2025-12-20T10:57:28.435184Z",198,"/data/upload/5/02e91ed5-fecaf071c6d469a5e9db4516cf04c34f.jpg",1.891,"2025-12-20T10:57:28.435196Z"
26
+ 199,"1","UNCERTAIN","2025-12-20T10:57:31.742539Z",199,"/data/upload/5/6084597d-fed1a27739f7fc733adfe4843185b995.jpg",3.097,"2025-12-20T10:57:31.742561Z"
27
+ 200,"1","FAMILY_SAFE","2025-12-20T10:57:33.618254Z",200,"/data/upload/5/18699932-fe8d4f54e561bf7a76f70e6b28299d59.jpg",1.671,"2025-12-20T10:57:33.618276Z"
28
+ 201,"1","FAMILY_SAFE","2025-12-20T10:57:34.996660Z",201,"/data/upload/5/759b4eb3-fe4ec0e6a0803e088352ad9cba4e969a.jpg",1.163,"2025-12-20T10:57:34.996679Z"
29
+ 202,"1","UNCERTAIN","2025-12-20T10:57:39.780303Z",202,"/data/upload/5/fd0a4064-fe4f57b1dc8f46cbd79d69ad05652ac8.jpg",4.575,"2025-12-20T10:57:39.780323Z"
30
+ 203,"1","SUGGESTIVE","2025-12-20T10:57:42.918342Z",203,"/data/upload/5/722170f8-fe61bb1e7709ddb889307cd6d644bbb9.jpg",2.93,"2025-12-20T10:57:42.918364Z"
31
+ 204,"1","UNCERTAIN","2025-12-20T10:57:46.679930Z",204,"/data/upload/5/597903c6-fe446bc03fc71ccd0559f01bebbd073d.jpg",3.55,"2025-12-20T10:57:46.679953Z"
32
+ 205,"1","UNCERTAIN","2025-12-20T10:57:52.644595Z",205,"/data/upload/5/ded203db-fe11b6d8acc63b2819390a12a32bbd30.jpg",5.756,"2025-12-20T10:57:52.644618Z"
33
+ 206,"1","FAMILY_SAFE","2025-12-20T10:57:54.674103Z",206,"/data/upload/5/72e813f5-fde81d8132b2c70f39798f11186997bd.jpg",1.807,"2025-12-20T10:57:54.674125Z"
34
+ 207,"1","FAMILY_SAFE","2025-12-20T10:57:57.547565Z",207,"/data/upload/5/6474cda9-fde879b3ab6d5f8fb99aacad817dc18f.jpg",2.668,"2025-12-20T10:57:57.547584Z"
35
+ 208,"1","FAMILY_SAFE","2025-12-20T10:57:59.787547Z",208,"/data/upload/5/9d734426-fdfc5d73210e52e70f9c1b337c7a7423.jpg",2.025,"2025-12-20T10:57:59.787569Z"
36
+ 209,"1","UNCERTAIN","2025-12-20T10:58:03.315283Z",209,"/data/upload/5/940a8d2a-fe06e1df8abfcc599b4edf3ceb84b767.jpg",3.285,"2025-12-20T10:58:03.315306Z"
37
+ 210,"1","FAMILY_SAFE","2025-12-20T10:58:05.355008Z",210,"/data/upload/5/6cf544b3-fdcc56c858be84644a24f71ca1ecf009.jpg",1.825,"2025-12-20T10:58:05.355032Z"
38
+ 211,"1","FAMILY_SAFE","2025-12-20T10:58:06.908523Z",211,"/data/upload/5/c90492e9-fdce40a990a776a3ef934aa8eacfa0da.jpg",1.322,"2025-12-20T10:58:06.908545Z"
39
+ 212,"1","FAMILY_SAFE","2025-12-20T10:58:08.724638Z",212,"/data/upload/5/d5d56f5c-fdd0daec3624d1d7acf8048484a7efe2.jpg",1.629,"2025-12-20T10:58:08.724649Z"
40
+ 213,"1","UNCERTAIN","2025-12-20T10:58:11.083198Z",213,"/data/upload/5/1b6ade1e-fdbea88aeaa93ac7dbcb38d07b917e7d.jpg",2.145,"2025-12-20T10:58:11.083219Z"
41
+ 214,"1","UNCERTAIN","2025-12-20T10:58:15.163580Z",214,"/data/upload/5/e7c85aca-fdc00eac708506181cc0b3018d217b97.jpg",3.845,"2025-12-20T10:58:15.163600Z"
42
+ 215,"1","SUGGESTIVE","2025-12-20T10:58:16.794312Z",215,"/data/upload/5/6519a095-fd8eea5a65e5ef6cec86fe214c5a3cd3.jpg",1.405,"2025-12-20T10:58:16.794331Z"
43
+ 216,"1","FAMILY_SAFE","2025-12-20T10:58:18.941871Z",216,"/data/upload/5/bdce6a65-fd918dbde3d770d03716835677e7b611.jpg",1.912,"2025-12-20T10:58:18.941894Z"
44
+ 217,"1","SUGGESTIVE","2025-12-20T10:58:23.970295Z",217,"/data/upload/5/8ed58548-fd9371dd911d3a2099a6a652db4248b4.jpg",4.812,"2025-12-20T10:58:23.970317Z"
45
+ 218,"1","SUGGESTIVE","2025-12-20T10:58:28.725792Z",218,"/data/upload/5/72f07c2b-fd94006f594a7575961947fcca9faa08.jpg",4.527,"2025-12-20T10:58:28.725805Z"
46
+ 219,"1","FAMILY_SAFE","2025-12-20T10:58:30.567211Z",219,"/data/upload/5/9eb0117b-fd7f50b9d57c9384041914d1b4cdd77c.jpg",1.652,"2025-12-20T10:58:30.567236Z"
47
+ 220,"1","FAMILY_SAFE","2025-12-20T10:58:32.107655Z",220,"/data/upload/5/e243712d-fd71a7a81dea0c9fc195cf6d6f32b0a9.jpg",1.329,"2025-12-20T10:58:32.107680Z"
48
+ 221,"1","FAMILY_SAFE","2025-12-20T10:58:34.565800Z",221,"/data/upload/5/3198b794-fd826bc213d0273afbb83b3c4aec1adc.jpg",2.249,"2025-12-20T10:58:34.565818Z"
49
+ 222,"1","FAMILY_SAFE","2025-12-20T10:58:36.088297Z",222,"/data/upload/5/75ee25dc-fd71396788725bb988c9cd3689fcde68.jpg",1.313,"2025-12-20T10:58:36.088320Z"
50
+ 223,"1","UNCERTAIN","2025-12-20T10:58:39.126725Z",223,"/data/upload/5/3dade0ea-fd3e2ce0703f9c027862f5a79c788b56.jpg",2.834,"2025-12-20T10:58:39.126748Z"
51
+ 224,"1","FAMILY_SAFE","2025-12-20T10:58:41.598447Z",224,"/data/upload/5/13a4e537-fd4bbf6927a13c5289dfa509b7a4078b.jpg",2.263,"2025-12-20T10:58:41.598470Z"
52
+ 225,"1","SUGGESTIVE","2025-12-20T10:58:45.314112Z",225,"/data/upload/5/afddcafe-fd4da06b37fbae5380cf0d7fa0678103.jpg",3.518,"2025-12-20T10:58:45.314132Z"
53
+ 226,"1","FAMILY_SAFE","2025-12-20T10:58:47.509028Z",226,"/data/upload/5/84acb822-fd4eb64e7f0ca587d908435fb95b2909.jpg",1.983,"2025-12-20T10:58:47.509054Z"
54
+ 227,"1","FAMILY_SAFE","2025-12-20T10:58:48.909406Z",227,"/data/upload/5/022b4f3e-fd39709199d9f45147c183dee3c5d697.jpg",1.197,"2025-12-20T10:58:48.909427Z"
55
+ 228,"1","SUGGESTIVE","2025-12-20T10:58:51.965227Z",228,"/data/upload/5/d4ccee96-fd24b551b4531ae14433a7950eaa85b3.jpg",2.829,"2025-12-20T10:58:51.965248Z"
56
+ 229,"1","FAMILY_SAFE","2025-12-20T10:58:53.445069Z",229,"/data/upload/5/3a78a22b-fd38a720ae06640dd25aaf9c11dd9672.jpg",1.28,"2025-12-20T10:58:53.445089Z"
57
+ 230,"1","UNCERTAIN","2025-12-20T10:58:55.604188Z",230,"/data/upload/5/6d307a2e-fd2268af5eafa750a7e5a3a521ff7fdd.jpg",6.054,"2025-12-20T10:59:05.944396Z"
58
+ 231,"1","SUGGESTIVE","2025-12-20T10:59:14.148370Z",231,"/data/upload/5/b224fc67-fd150330c8a62cd9ab45e51f4de6969f.jpg",4.829,"2025-12-20T10:59:14.148389Z"
59
+ 232,"1","UNCERTAIN","2025-12-20T10:59:16.230973Z",232,"/data/upload/5/6da2441b-fcf901727f0b68c35c55f5734189c1f0.jpg",1.889,"2025-12-20T10:59:16.230983Z"
60
+ 233,"1","SUGGESTIVE","2025-12-20T10:59:18.476259Z",233,"/data/upload/5/ef1cbf46-fd08dc2a899b79496087b34b88b82f2d.jpg",2.061,"2025-12-20T10:59:18.476284Z"
61
+ 234,"1","SUGGESTIVE","2025-12-20T10:59:20.279562Z",234,"/data/upload/5/d1a55b96-fca9c570e98556bb8c40835c55cba67d.jpg",1.596,"2025-12-20T10:59:20.279581Z"
62
+ 235,"1","SUGGESTIVE","2025-12-20T10:59:23.589158Z",235,"/data/upload/5/fc1397fa-fcbbcf0191ab925aa67604ff0c7f141e.jpg",3.101,"2025-12-20T10:59:23.589180Z"
63
+ 236,"1","SUGGESTIVE","2025-12-20T10:59:26.455141Z",236,"/data/upload/5/74454c95-fcbf1a2490d9531efc33322b2702912f.jpg",2.662,"2025-12-20T10:59:26.455162Z"
64
+ 237,"1","FAMILY_SAFE","2025-12-20T10:59:28.178566Z",237,"/data/upload/5/b7206afa-fcc50f8b1362042b4acad74a4b4ae4ed.jpg",1.529,"2025-12-20T10:59:28.178586Z"
65
+ 238,"1","SUGGESTIVE","2025-12-20T10:59:31.104786Z",238,"/data/upload/5/64be13ce-fc813fdb8cb41651b9b4d5141fcd386a.jpg",2.72,"2025-12-20T10:59:31.104804Z"
66
+ 239,"1","SUGGESTIVE","2025-12-20T10:59:34.924429Z",239,"/data/upload/5/d5c64c7c-fca4fe8aa6a350ab9680692ebbe1e13c.jpg",3.618,"2025-12-20T10:59:34.924454Z"
67
+ 240,"1","SUGGESTIVE","2025-12-20T10:59:38.941569Z",240,"/data/upload/5/8af150d5-fca025dcf76a43feae0bf2e8e9a6c1e2.jpg",3.809,"2025-12-20T10:59:38.941590Z"
68
+ 241,"1","SUGGESTIVE","2025-12-20T10:59:42.058775Z",241,"/data/upload/5/0df4b27b-fc6fefe3f417fdbfd91da8cffe59f7db.jpg",2.934,"2025-12-20T10:59:42.058800Z"
69
+ 242,"1","SUGGESTIVE","2025-12-20T10:59:44.662908Z",242,"/data/upload/5/a90c3b4e-fc39f11aab8aae4bb03057701a7b8312.jpg",2.399,"2025-12-20T10:59:44.662928Z"
70
+ 243,"1","FAMILY_SAFE","2025-12-20T10:59:49.192648Z",243,"/data/upload/5/3c42d798-fc74b1fc4095a324b1f1ca1ac322278d.jpg",4.315,"2025-12-20T10:59:49.192673Z"
71
+ 244,"1","FAMILY_SAFE","2025-12-20T10:59:50.613951Z",244,"/data/upload/5/0bfb63b2-fc644a2683a976d8391e70f88408468b.jpg",1.211,"2025-12-20T10:59:50.613973Z"
72
+ 245,"1","FAMILY_SAFE","2025-12-20T10:59:51.891384Z",245,"/data/upload/5/b0091e81-fbf4b07fffa61fa2650649ec19debf39.jpg",1.069,"2025-12-20T10:59:51.891404Z"
73
+ 246,"1","SUGGESTIVE","2025-12-20T10:59:55.596094Z",246,"/data/upload/5/6faa5147-fbf13c899fbdd8e750dc46cc284249c5.jpg",3.49,"2025-12-20T10:59:55.596114Z"
74
+ 247,"1","FAMILY_SAFE","2025-12-20T10:59:57.228637Z",247,"/data/upload/5/bcfeea6a-fc1baf625d3e36ca4c5a29521f72525e.jpg",1.428,"2025-12-20T10:59:57.228659Z"
75
+ 248,"1","FAMILY_SAFE","2025-12-20T10:59:59.217183Z",248,"/data/upload/5/0d5b1538-fc21d81fb821d214b4f4f1d7f553475d.jpg",1.786,"2025-12-20T10:59:59.217205Z"
76
+ 249,"1","UNCERTAIN","2025-12-20T11:00:08.247796Z",249,"/data/upload/5/cfb6f5d7-fc07723d545d098aafab4aeb7d2e65a3.jpg",8.794,"2025-12-20T11:00:08.247817Z"
77
+ 250,"1","SUGGESTIVE","2025-12-20T11:00:10.107692Z",250,"/data/upload/5/43a803bd-fbcddca8eb614e2e2076c1128d30fa58.jpg",1.625,"2025-12-20T11:00:10.107715Z"
78
+ 251,"1","FAMILY_SAFE","2025-12-20T11:00:11.518608Z",251,"/data/upload/5/930fa681-fbd64159d7d027262f736408659d40cb.jpg",1.201,"2025-12-20T11:00:11.518627Z"
79
+ 252,"1","SUGGESTIVE","2025-12-20T11:00:14.639043Z",252,"/data/upload/5/c884f2e6-fbb763c6f6f858fdfc270f3f3bda1eac.jpg",2.913,"2025-12-20T11:00:14.639065Z"
80
+ 253,"1","FAMILY_SAFE","2025-12-20T11:00:17.082875Z",253,"/data/upload/5/b3f73152-fbc604a00ac5d9d6a73cec8789a75d0c.jpg",2.239,"2025-12-20T11:00:17.082895Z"
81
+ 254,"1","SUGGESTIVE","2025-12-20T11:00:21.019281Z",254,"/data/upload/5/f3e719e9-fbc9929373c24b1afd9523aa5253a594.jpg",3.728,"2025-12-20T11:00:21.019303Z"
82
+ 255,"1","SUGGESTIVE","2025-12-20T11:00:22.337701Z",255,"/data/upload/5/ac2b938f-fbca15037c332d6e9e658e2129217794.jpg",1.094,"2025-12-20T11:00:22.337722Z"
83
+ 256,"1","SUGGESTIVE","2025-12-20T11:00:23.656989Z",256,"/data/upload/5/e0092f87-fb6ad7084b95e0bb2eb9575082907662.jpg",1.108,"2025-12-20T11:00:23.657010Z"
84
+ 257,"1","SUGGESTIVE","2025-12-20T11:00:25.231571Z",257,"/data/upload/5/efd3b12b-fb7ba81d49347796a797d1322a64cb71.jpg",1.364,"2025-12-20T11:00:25.231595Z"
85
+ 258,"1","FAMILY_SAFE","2025-12-20T11:00:26.635777Z",258,"/data/upload/5/74426174-fb701d0e6a714179959ac8e1e4e2cb88.jpg",1.181,"2025-12-20T11:00:26.635798Z"
86
+ 259,"1","SUGGESTIVE","2025-12-20T11:00:28.021230Z",259,"/data/upload/5/68adaf6f-fb61755f0c2afaafdd9aa36f7632cbe5.jpg",1.179,"2025-12-20T11:00:28.021251Z"
87
+ 260,"1","FAMILY_SAFE","2025-12-20T11:00:30.717567Z",260,"/data/upload/5/c61c6042-fb607386dd384e6b0d53ef878bbffc55.jpg",2.494,"2025-12-20T11:00:30.717588Z"
88
+ 261,"1","FAMILY_SAFE","2025-12-20T11:00:32.367921Z",261,"/data/upload/5/7ec3bcbe-fb2e1bdb34ace56b99befc2547a8b83d.jpg",1.441,"2025-12-20T11:00:32.367944Z"
89
+ 262,"1","FAMILY_SAFE","2025-12-20T11:00:34.782659Z",262,"/data/upload/5/bec475e6-fb3c593276f0f040a7450ca213d97882.jpg",2.203,"2025-12-20T11:00:34.782680Z"
90
+ 263,"1","FAMILY_SAFE","2025-12-20T11:00:41.245651Z",263,"/data/upload/5/966460f7-fb50d0f85eb7e491722e734b961926f0.jpg",6.266,"2025-12-20T11:00:41.245662Z"
91
+ 264,"1","FAMILY_SAFE","2025-12-20T11:00:42.448801Z",264,"/data/upload/5/243861f5-fb468ddeda48f68ec3539bebe07b92b4.jpg",1.016,"2025-12-20T11:00:42.448823Z"
92
+ 265,"1","SUGGESTIVE","2025-12-20T11:00:45.419350Z",265,"/data/upload/5/54045990-fb1c02d4c50a59be3fe3cb249de403e0.jpg",2.76,"2025-12-20T11:00:45.419370Z"
93
+ 266,"1","UNCERTAIN","2025-12-20T11:00:48.312669Z",266,"/data/upload/5/7439530f-faf1f5d9d6e51a84ce632df317dd5c5c.jpg",2.68,"2025-12-20T11:00:48.312691Z"
94
+ 267,"1","UNCERTAIN","2025-12-20T11:00:51.135138Z",267,"/data/upload/5/e0eec550-faf27f9511974b5ef529ba718677c5f4.jpg",2.607,"2025-12-20T11:00:51.135161Z"
95
+ 268,"1","FAMILY_SAFE","2025-12-20T11:00:53.511267Z",268,"/data/upload/5/1101ce4b-fab7821aae25aff865b20b0d33d86900.jpg",2.16,"2025-12-20T11:00:53.511289Z"
96
+ 269,"1","FAMILY_SAFE","2025-12-20T11:00:55.652412Z",269,"/data/upload/5/26464718-fac69b44cccb94236c9f905bed46158f.jpg",1.926,"2025-12-20T11:00:55.652431Z"
97
+ 270,"1","FAMILY_SAFE","2025-12-20T11:00:58.249487Z",270,"/data/upload/5/d588345d-fad53b443bc3e52bada85783afdac562.jpg",2.37,"2025-12-20T11:00:58.249507Z"
98
+ 271,"1","UNCERTAIN","2025-12-20T11:01:01.962081Z",271,"/data/upload/5/7f1fa2e7-fad69c88bcef4434a55b3bf3854b3e56.jpg",3.505,"2025-12-20T11:01:01.962105Z"
99
+ 272,"1","FAMILY_SAFE","2025-12-20T11:01:03.385673Z",272,"/data/upload/5/717afd8f-fa6ef41aabda28f51249407ce46a827e.jpg",1.212,"2025-12-20T11:01:03.385696Z"
100
+ 273,"1","UNCERTAIN","2025-12-20T11:01:07.395182Z",273,"/data/upload/5/191a25a2-fa7b42eb84363adcd60082a3a7f02f84.jpg",3.793,"2025-12-20T11:01:07.395203Z"
101
+ 274,"1","FAMILY_SAFE","2025-12-20T11:01:09.348245Z",274,"/data/upload/5/41febcdf-fa9e77f0788145d7ac42edcffb6e9dee.jpg",1.738,"2025-12-20T11:01:09.348266Z"
102
+ 275,"1","UNCERTAIN","2025-12-20T11:01:11.745116Z",275,"/data/upload/5/4bb4ff8b-fa9f2688e1b4e92538569ecb9efecf2e.jpg",2.158,"2025-12-20T11:01:11.745139Z"
103
+ 276,"1","UNCERTAIN","2025-12-20T11:01:13.426503Z",276,"/data/upload/5/12aefe0a-fa87c0f54b8cb07a14fc311c369e9a4c.jpg",1.462,"2025-12-20T11:01:13.426526Z"
104
+ 277,"1","SUGGESTIVE","2025-12-20T11:01:15.136863Z",277,"/data/upload/5/0f927896-fa94a466d4178dcd4c762f7567c11147.jpg",1.495,"2025-12-20T11:01:15.136886Z"
105
+ 278,"1","FAMILY_SAFE","2025-12-20T11:01:17.081107Z",278,"/data/upload/5/3b82e875-faa13416b0d8d2adc2b6815dd1e6c82d.jpg",1.723,"2025-12-20T11:01:17.081130Z"
106
+ 279,"1","SUGGESTIVE","2025-12-20T11:01:20.677830Z",279,"/data/upload/5/7a5551c7-fa5b56c4e382fd4dca384daf1768acb4.jpg",3.381,"2025-12-20T11:01:20.677853Z"
107
+ 280,"1","FAMILY_SAFE","2025-12-20T11:01:23.266159Z",280,"/data/upload/5/abf1e90d-fa5c6d304163052761d4453c693c202d.jpg",2.375,"2025-12-20T11:01:23.266179Z"
108
+ 281,"1","UNCERTAIN","2025-12-20T11:01:25.725201Z",281,"/data/upload/5/150e925a-fa6a15e903e7949093f4ec11fcffdb01.jpg",2.237,"2025-12-20T11:01:25.725220Z"
109
+ 282,"1","SUGGESTIVE","2025-12-20T11:01:31.896568Z",282,"/data/upload/5/76aa5a7e-fa41e4a96249c0b8ed90389733c081d8.jpg",5.951,"2025-12-20T11:01:31.896591Z"
110
+ 283,"1","SUGGESTIVE","2025-12-20T11:01:34.383132Z",283,"/data/upload/5/891276e7-fa63fcd0e11eb612b2c8f1ade43de7c8.jpg",2.271,"2025-12-20T11:01:34.383150Z"
111
+ 284,"1","FAMILY_SAFE","2025-12-20T11:01:36.092103Z",284,"/data/upload/5/0fea6f76-fa412fb78ec94ab051ac0880e255a897.jpg",1.495,"2025-12-20T11:01:36.092126Z"
112
+ 285,"1","UNCERTAIN","2025-12-20T11:01:41.235766Z",285,"/data/upload/5/7cb410fd-fa1a50f4102b66555a1a05afa9ddbf3c.jpg",4.925,"2025-12-20T11:01:41.235780Z"
113
+ 286,"1","UNCERTAIN","2025-12-20T11:01:42.954786Z",286,"/data/upload/5/907cb3ad-fa1dab55d34f1c7140ea41a1b3ab5eae.jpg",1.512,"2025-12-20T11:01:42.954808Z"
114
+ 287,"1","FAMILY_SAFE","2025-12-20T11:01:45.714292Z",287,"/data/upload/5/bf824357-fa2c514037f31c0ab98d66373d371e3a.jpg",2.546,"2025-12-20T11:01:45.714312Z"
115
+ 288,"1","FAMILY_SAFE","2025-12-20T11:01:47.923730Z",288,"/data/upload/5/f953d2e3-f9f74d590b0f4d8da8ba20a07bc2a596.jpg",1.984,"2025-12-20T11:01:47.923749Z"
116
+ 289,"1","FAMILY_SAFE","2025-12-20T11:01:49.235145Z",289,"/data/upload/5/db2c891b-f9fc35243c2c7592c2d5858be342a34d.jpg",1.084,"2025-12-20T11:01:49.235165Z"
117
+ 290,"1","UNCERTAIN","2025-12-20T11:02:02.235317Z",290,"/data/upload/5/53bd404d-fa068c5e8fe813fbb1d90b5a0744e172.jpg",12.779,"2025-12-20T11:02:02.235338Z"
118
+ 291,"1","SUGGESTIVE","2025-12-20T11:02:04.115171Z",291,"/data/upload/5/a23fc1cb-fa075d603e631d04c9871dbb00ed0a14.jpg",1.641,"2025-12-20T11:02:04.115197Z"
119
+ 292,"1","SUGGESTIVE","2025-12-20T11:02:11.567375Z",292,"/data/upload/5/ee0e3f1d-fa1607fba97dd47d889e0c8eb0a82624.jpg",7.221,"2025-12-20T11:02:11.567396Z"
120
+ 293,"1","SUGGESTIVE","2025-12-20T11:02:13.565368Z",293,"/data/upload/5/3aef96bb-f9d6c4a53c12013b5bbb6e830275486e.jpg",1.767,"2025-12-20T11:02:13.565392Z"
121
+ 294,"1","SUGGESTIVE","2025-12-20T11:02:15.066066Z",294,"/data/upload/5/9f665793-f9ea859c158d6cece283b619afdf2f49.jpg",1.266,"2025-12-20T11:02:15.066077Z"
122
+ 295,"1","UNCERTAIN","2025-12-20T11:02:23.249309Z",295,"/data/upload/5/db0aaa30-f9a1f16e76e3adad3ce2ed9fe0c7a03f.jpg",7.982,"2025-12-20T11:02:23.249329Z"
123
+ 296,"1","UNCERTAIN","2025-12-20T11:02:25.540717Z",296,"/data/upload/5/03abd3cc-f9aaa2af6fea2261610e48ed5e11ede4.jpg",2.049,"2025-12-20T11:02:25.540740Z"
124
+ 297,"1","SUGGESTIVE","2025-12-20T11:02:27.850423Z",297,"/data/upload/5/d741a3e7-f9b3403712c87698322446ef48a0027c.jpg",2.078,"2025-12-20T11:02:27.850443Z"
125
+ 298,"1","SUGGESTIVE","2025-12-20T11:02:29.208512Z",298,"/data/upload/5/b502117c-f9bd44609a914f7aabd3a901d457b1e7.jpg",1.124,"2025-12-20T11:02:29.208536Z"
126
+ 299,"1","SUGGESTIVE","2025-12-20T11:02:30.779695Z",299,"/data/upload/5/96ba7ff4-f984b6e28aa8e0e13f71bd41a8c65194.jpg",1.306,"2025-12-20T11:02:30.779716Z"
127
+ 300,"1","FAMILY_SAFE","2025-12-20T11:02:32.419467Z",300,"/data/upload/5/85f90f88-f96b6fc62dadba4eb00b5cfaa1168b87.jpg",1.397,"2025-12-20T11:02:32.419489Z"
128
+ 301,"1","SUGGESTIVE","2025-12-20T11:02:34.614235Z",301,"/data/upload/5/32e49293-f96bffb22c42bd3beb968d5ff5583c6b.jpg",1.947,"2025-12-20T11:02:34.614255Z"
129
+ 302,"1","FAMILY_SAFE","2025-12-20T11:02:36.119276Z",302,"/data/upload/5/263d89d9-f96c4c07dcded0f0fd1aa150a693a181.jpg",1.277,"2025-12-20T11:02:36.119287Z"
130
+ 303,"1","SUGGESTIVE","2025-12-20T11:02:42.328622Z",303,"/data/upload/5/78e8d1c7-f96c7473c85142a222056be7c7759184.jpg",5.968,"2025-12-20T11:02:42.328646Z"
131
+ 304,"1","FAMILY_SAFE","2025-12-20T11:02:44.266093Z",304,"/data/upload/5/0fc4362d-f9610ac04fe21d9bd96689b8c6ae1669.jpg",1.719,"2025-12-20T11:02:44.266106Z"
132
+ 305,"1","UNCERTAIN","2025-12-20T11:02:46.577757Z",305,"/data/upload/5/24f3bf36-f9633749641995381ff42d72352bafe2.jpg",1.997,"2025-12-20T11:02:46.577780Z"
133
+ 306,"1","UNCERTAIN","2025-12-20T11:02:50.471187Z",306,"/data/upload/5/3216e20d-f93c3f8af10c70801ce921842c77afc4.jpg",3.658,"2025-12-20T11:02:50.471209Z"
134
+ 307,"1","SUGGESTIVE","2025-12-20T11:02:52.511045Z",307,"/data/upload/5/93bfe360-f95143e4ae1515b8bf5c2d813aa36bbc.jpg",1.805,"2025-12-20T11:02:52.511066Z"
135
+ 308,"1","FAMILY_SAFE","2025-12-20T11:02:54.818714Z",308,"/data/upload/5/0a08bf3b-f954833a10de7c149ac73c5b4af4c189.jpg",2.065,"2025-12-20T11:02:54.818738Z"
136
+ 309,"1","SUGGESTIVE","2025-12-20T11:02:58.010625Z",309,"/data/upload/5/a54eda5e-f8fdf05663173fa7dc689333e3f21f23.jpg",2.942,"2025-12-20T11:02:58.010648Z"
137
+ 310,"1","FAMILY_SAFE","2025-12-20T11:03:00.421390Z",310,"/data/upload/5/29f522c1-f91a65be37a0e49d78ac4f6bc0cfcb61.jpg",2.172,"2025-12-20T11:03:00.421413Z"
138
+ 311,"1","SUGGESTIVE","2025-12-20T11:03:03.898048Z",311,"/data/upload/5/43ccd6b7-f8b2c595800cb08b05b4f2503fdbbced.jpg",3.24,"2025-12-20T11:03:03.898062Z"
139
+ 312,"1","UNCERTAIN","2025-12-20T11:03:09.233388Z",312,"/data/upload/5/c7f29f62-f8b38d085dc15913e26ed1580d0cb644.jpg",5.086,"2025-12-20T11:03:09.233409Z"
140
+ 313,"1","UNCERTAIN","2025-12-20T11:03:11.716697Z",313,"/data/upload/5/ca35d72e-f8c8ee06b8b818d1f0f5229014ee8760.jpg",2.241,"2025-12-20T11:03:11.716721Z"
141
+ 314,"1","SUGGESTIVE","2025-12-20T11:03:13.523649Z",314,"/data/upload/5/65120b69-f8ee23b284b41157bb5b9eb488cf5828.jpg",1.567,"2025-12-20T11:03:13.523672Z"
142
+ 315,"1","SUGGESTIVE","2025-12-20T11:03:16.281232Z",315,"/data/upload/5/4abc60a4-f8a72d3f92f7e3793a093556c5b6b446.jpg",2.511,"2025-12-20T11:03:16.281246Z"
143
+ 316,"1","SUGGESTIVE","2025-12-20T11:03:17.643247Z",316,"/data/upload/5/ee55d94c-f8a860d078da463b28618029d547eca0.jpg",1.145,"2025-12-20T11:03:17.643268Z"
144
+ 317,"1","SUGGESTIVE","2025-12-20T11:03:18.870690Z",317,"/data/upload/5/42ea7be6-f8a950c61b1b181a99bb6837f76ddcf5.jpg",0.984,"2025-12-20T11:03:18.870710Z"
145
+ 318,"1","FAMILY_SAFE","2025-12-20T11:03:21.494347Z",318,"/data/upload/5/2b96cec7-f87b6da37656aef1c82f6841cdfd216a.jpg",2.384,"2025-12-20T11:03:21.494369Z"
146
+ 319,"1","SUGGESTIVE","2025-12-20T11:03:23.292588Z",319,"/data/upload/5/a4651f0f-f8714d6a5bafd4d86377bf04957f37e5.jpg",1.557,"2025-12-20T11:03:23.292610Z"
147
+ 320,"1","FAMILY_SAFE","2025-12-20T11:03:26.120251Z",320,"/data/upload/5/fee5f161-f8856cf1b3bd39861cb9f95337cd0992.jpg",2.578,"2025-12-20T11:03:26.120276Z"
148
+ 321,"1","FAMILY_SAFE","2025-12-20T11:03:30.645431Z",321,"/data/upload/5/26999a9e-f8869ae287068ce36b4b05663da6713a.jpg",4.259,"2025-12-20T11:03:30.645454Z"
149
+ 322,"1","UNCERTAIN","2025-12-20T11:03:33.317684Z",322,"/data/upload/5/2d689dc9-f852dde27ecdc40533bb40683087f7e1.jpg",2.432,"2025-12-20T11:03:33.317706Z"
150
+ 323,"1","SUGGESTIVE","2025-12-20T11:03:41.346226Z",323,"/data/upload/5/207cc31f-f86351d67e2629dc35f1e524915fcd11.jpg",7.784,"2025-12-20T11:03:41.346247Z"
151
+ 324,"1","UNCERTAIN","2025-12-20T11:03:43.247407Z",324,"/data/upload/5/f3898f2e-f8447631bc00c8f2467b1a20ee6bfa78.jpg",1.657,"2025-12-20T11:03:43.247431Z"
152
+ 325,"1","UNCERTAIN","2025-12-20T11:03:46.517135Z",325,"/data/upload/5/8cb018af-f8542037683b99dbc67c7f7d6c5a46b3.jpg",3.02,"2025-12-20T11:03:46.517159Z"
153
+ 326,"1","FAMILY_SAFE","2025-12-20T11:03:47.992268Z",326,"/data/upload/5/5d6063fc-f822f1d61d47f66997ce6f86c974a4a4.jpg",1.222,"2025-12-20T11:03:47.992289Z"
154
+ 327,"1","SUGGESTIVE","2025-12-20T11:03:49.750452Z",327,"/data/upload/5/57bec3b8-f8222b4da2ca05b7b639120cac5f92f2.jpg",1.508,"2025-12-20T11:03:49.750472Z"
155
+ 328,"1","UNCERTAIN","2025-12-20T11:04:15.579735Z",328,"/data/upload/5/918752f9-f7e4163d39bf966f1d403bfcf469cc5f.jpg",25.57,"2025-12-20T11:04:15.579758Z"
156
+ 329,"1","SUGGESTIVE","2025-12-20T11:04:17.612520Z",329,"/data/upload/5/bdce8a23-f7f267f10da481cbc97981f022b36a07.jpg",1.786,"2025-12-20T11:04:17.612541Z"
157
+ 330,"1","SUGGESTIVE","2025-12-20T11:04:19.295850Z",330,"/data/upload/5/d9e26b6c-f7de775f4820d021c70c42e8785c047b.jpg",1.437,"2025-12-20T11:04:19.295877Z"
158
+ 331,"1","UNCERTAIN","2025-12-20T11:04:22.473350Z",331,"/data/upload/5/654d822f-f7e1c87ca29b75a4e59263db1e0f59a1.jpg",2.915,"2025-12-20T11:04:22.473372Z"
159
+ 332,"1","FAMILY_SAFE","2025-12-20T11:04:24.169415Z",332,"/data/upload/5/13f55350-f7c55782f457e6c3c4a17c4f4254a946.jpg",1.45,"2025-12-20T11:04:24.169437Z"
160
+ 333,"1","UNCERTAIN","2025-12-20T11:04:27.020537Z",333,"/data/upload/5/bf4fd201-f7aa8582cc615c5efc747a723ed54f9e.jpg",2.604,"2025-12-20T11:04:27.020559Z"
161
+ 334,"1","UNCERTAIN","2025-12-20T11:04:29.611666Z",334,"/data/upload/5/6520255c-f79bc54aa05611d22b65098a11e71a34.jpg",2.361,"2025-12-20T11:04:29.611687Z"
162
+ 335,"1","UNCERTAIN","2025-12-20T11:04:31.732147Z",335,"/data/upload/5/e7695c72-f7761769f7463d55a2df9300c743a324.jpg",1.898,"2025-12-20T11:04:31.732160Z"
163
+ 336,"1","UNCERTAIN","2025-12-20T11:04:33.665025Z",336,"/data/upload/5/681dcc99-f77695115dd9a221c2239aece214b49e.jpg",1.721,"2025-12-20T11:04:33.665047Z"
164
+ 337,"1","SUGGESTIVE","2025-12-20T11:04:41.516887Z",337,"/data/upload/5/bc15263c-f745fcf48c946c9d4393fd48f4cffc0e.jpg",7.623,"2025-12-20T11:04:41.516904Z"
165
+ 338,"1","UNCERTAIN","2025-12-20T11:04:45.123787Z",338,"/data/upload/5/88c7b383-f7303e5b824a66239e6afcd87a8ef62f.jpg",3.373,"2025-12-20T11:04:45.123811Z"
166
+ 339,"1","SUGGESTIVE","2025-12-20T11:04:46.709218Z",339,"/data/upload/5/9342d436-f73693da56901519a595fead5f85d069.jpg",1.351,"2025-12-20T11:04:46.709240Z"
167
+ 340,"1","SUGGESTIVE","2025-12-20T11:04:52.783428Z",340,"/data/upload/5/1bfa81bf-f71e69c1823525251dc2201172364595.jpg",5.825,"2025-12-20T11:04:52.783450Z"
168
+ 341,"1","FAMILY_SAFE","2025-12-20T11:04:53.971709Z",341,"/data/upload/5/37fbd106-f72a254e0142a25852937f68f91eeff0.jpg",0.955,"2025-12-20T11:04:53.971730Z"
169
+ 342,"1","UNCERTAIN","2025-12-20T11:04:55.662011Z",342,"/data/upload/5/75ec4326-f6f57e02e3025fda7e6587ada129b5da.jpg",1.454,"2025-12-20T11:04:55.662034Z"
170
+ 343,"1","UNCERTAIN","2025-12-20T11:04:57.428398Z",343,"/data/upload/5/112d370c-f6e10f65554a282ad88561eb6606b673.jpg",1.526,"2025-12-20T11:04:57.428418Z"
171
+ 344,"1","FAMILY_SAFE","2025-12-20T11:05:01.347989Z",344,"/data/upload/5/258f99f7-f6cc5af7cdd7d677b39960916ddce332.jpg",3.699,"2025-12-20T11:05:01.348002Z"
172
+ 345,"1","SUGGESTIVE","2025-12-20T11:05:03.011431Z",345,"/data/upload/5/e654ed6f-f6a9eed8dbdaaebe8483cb023b1cc155.jpg",1.449,"2025-12-20T11:05:03.011455Z"
173
+ 346,"1","SUGGESTIVE","2025-12-20T11:05:04.326722Z",346,"/data/upload/5/32c60d49-f6afce2e8ed7f791361d5f859faf6f93.jpg",1.08,"2025-12-20T11:05:04.326746Z"
174
+ 347,"1","FAMILY_SAFE","2025-12-20T11:05:09.278186Z",347,"/data/upload/5/8e037415-f6b1bdcd5cc1123f61514494633c0261.jpg",4.716,"2025-12-20T11:05:09.278212Z"
175
+ 348,"1","SUGGESTIVE","2025-12-20T11:05:12.797276Z",348,"/data/upload/5/1a95de13-f6a20f3450549f295c9d440e3b50fe4b.jpg",3.287,"2025-12-20T11:05:12.797298Z"
176
+ 349,"1","SUGGESTIVE","2025-12-20T11:05:14.528715Z",349,"/data/upload/5/d8e036ec-f69ba433d87943ba7fe96bdee75c0633.jpg",1.497,"2025-12-20T11:05:14.528736Z"
177
+ 350,"1","FAMILY_SAFE","2025-12-20T11:05:15.976098Z",350,"/data/upload/5/150cadee-f6913caa3c66a906611cd76004dc0e89.jpg",1.216,"2025-12-20T11:05:15.976121Z"
178
+ 351,"1","SUGGESTIVE","2025-12-20T11:05:17.479813Z",351,"/data/upload/5/d45cdae6-f69459f653bf0a475f7003c64ad87484.jpg",1.26,"2025-12-20T11:05:17.479839Z"
179
+ 352,"1","UNCERTAIN","2025-12-20T11:05:25.316547Z",352,"/data/upload/5/3ba7cebd-f67d4c2318dfb10031f4d3a40e767467.jpg",7.598,"2025-12-20T11:05:25.316570Z"
180
+ 353,"1","SUGGESTIVE","2025-12-20T11:05:27.240613Z",353,"/data/upload/5/b947afc5-f68da9a3284e87b939e43ed78c2ba697.jpg",1.686,"2025-12-20T11:05:27.240632Z"
181
+ 354,"1","SUGGESTIVE","2025-12-20T11:05:28.652996Z",354,"/data/upload/5/548c342e-f6555d7bd2ce56360984e39d06eb6d3e.jpg",1.166,"2025-12-20T11:05:28.653020Z"
182
+ 355,"1","SUGGESTIVE","2025-12-20T11:05:35.325213Z",355,"/data/upload/5/2d8b3b40-f6502184b0f514712ec44e93e4cf38ed.jpg",6.406,"2025-12-20T11:05:35.325235Z"
183
+ 356,"1","SUGGESTIVE","2025-12-20T11:05:40.126220Z",356,"/data/upload/5/8d9e6ed8-f60a078c2adb5e2ed7984643b1a3d6ad.jpg",4.563,"2025-12-20T11:05:40.126246Z"
184
+ 357,"1","UNCERTAIN","2025-12-20T11:05:42.162966Z",357,"/data/upload/5/915ec646-f60d0a9ef35ff32f41167f002f604218.jpg",1.798,"2025-12-20T11:05:42.162991Z"
185
+ 358,"1","SUGGESTIVE","2025-12-20T11:05:43.617887Z",358,"/data/upload/5/ac9956e6-f61b32b46a5df8b7604a567f4101de1a.jpg",1.19,"2025-12-20T11:05:43.617910Z"
186
+ 359,"1","UNCERTAIN","2025-12-20T11:05:45.343816Z",359,"/data/upload/5/38e3e29f-f6096fb5a8815393de8d3ce6046dcfa0.jpg",1.49,"2025-12-20T11:05:45.343840Z"
187
+ 360,"1","SUGGESTIVE","2025-12-20T11:05:46.798111Z",360,"/data/upload/5/4cd02552-f627490d7770e822b0646ecc26314049.jpg",1.218,"2025-12-20T11:05:46.798135Z"
188
+ 361,"1","FAMILY_SAFE","2025-12-20T11:05:48.044400Z",361,"/data/upload/5/96423c5a-f5d25e48cb07c00f6b4749341afd4fe9.jpg",1.025,"2025-12-20T11:05:48.044411Z"
189
+ 362,"1","UNCERTAIN","2025-12-20T11:05:52.547956Z",362,"/data/upload/5/b2bdb576-f5f0b5059aa1f31f18454612c7b44cb4.jpg",4.281,"2025-12-20T11:05:52.547975Z"
190
+ 363,"1","FAMILY_SAFE","2025-12-20T11:05:53.790882Z",363,"/data/upload/5/d9b4f6e3-f5f15fde94650b49c19b1108e7baacaa.jpg",0.999,"2025-12-20T11:05:53.790906Z"
191
+ 364,"1","SUGGESTIVE","2025-12-20T11:05:55.131841Z",364,"/data/upload/5/78e1ef6c-f5f68931f14533c57ecfef9acb38dc7d.jpg",1.07,"2025-12-20T11:05:55.131863Z"
192
+ 365,"1","SUGGESTIVE","2025-12-20T11:05:56.800233Z",365,"/data/upload/5/95214b1d-f5fbc4a6c74108a929561383bb572cd4.jpg",1.427,"2025-12-20T11:05:56.800255Z"
193
+ 366,"1","FAMILY_SAFE","2025-12-20T11:05:58.647293Z",366,"/data/upload/5/52f9323f-f5a0911271d9a6ed11455f9f6ff7eb66.jpg",1.608,"2025-12-20T11:05:58.647316Z"
194
+ 367,"1","FAMILY_SAFE","2025-12-20T11:06:06.211872Z",367,"/data/upload/5/437ce914-f5c13ab4ed01cc7efd808da48b8a5457.jpg",7.34,"2025-12-20T11:06:06.211884Z"
195
+ 368,"1","UNCERTAIN","2025-12-20T11:06:08.652944Z",368,"/data/upload/5/3472223a-f5996eb32ca496db64f8988cee9a8878.jpg",2.2,"2025-12-20T11:06:08.652968Z"
196
+ 369,"1","SUGGESTIVE","2025-12-20T11:06:11.313206Z",369,"/data/upload/5/79fb6415-f57b16711597d1da4c6c22c57af8a35a.jpg",2.419,"2025-12-20T11:06:11.313226Z"
197
+ 370,"1","SUGGESTIVE","2025-12-20T11:06:12.945194Z",370,"/data/upload/5/8b7383e6-f57fb11b1c8484d4642295155ba8db7b.jpg",1.388,"2025-12-20T11:06:12.945218Z"
198
+ 371,"1","SUGGESTIVE","2025-12-20T11:06:14.500956Z",371,"/data/upload/5/ae1beb31-f58d8b3fa1b33fbccd8c8d71e0fe1a2c.jpg",1.34,"2025-12-20T11:06:14.500976Z"
199
+ 372,"1","FAMILY_SAFE","2025-12-20T11:06:16.952949Z",372,"/data/upload/5/6be40274-f55c44bbbe7e56c04a616cd84479e46f.jpg",2.211,"2025-12-20T11:06:16.952971Z"
200
+ 373,"1","SUGGESTIVE","2025-12-20T11:06:19.670664Z",373,"/data/upload/5/79a2f826-f55deb0d18263824d1cef3e9ab9f1785.jpg",2.473,"2025-12-20T11:06:19.670687Z"
201
+ 374,"1","FAMILY_SAFE","2025-12-20T11:06:21.212367Z",374,"/data/upload/5/eb3f6ce4-f572b605f472227d2aa10d6905b535e3.jpg",1.299,"2025-12-20T11:06:21.212385Z"
202
+ 375,"1","SUGGESTIVE","2025-12-20T11:06:26.044664Z",375,"/data/upload/5/86690dd2-f573acc9c7d68bfa33ffaf904bdcbee1.jpg",4.589,"2025-12-20T11:06:26.044684Z"
203
+ 376,"1","FAMILY_SAFE","2025-12-20T11:06:27.193909Z",376,"/data/upload/5/cb81d853-f5641be3510ca443208381edefb8dab9.jpg",0.899,"2025-12-20T11:06:27.193934Z"
204
+ 377,"1","UNCERTAIN","2025-12-20T11:06:29.526765Z",377,"/data/upload/5/f3e026cb-f55636ad8ac978de1925576a495326e8.jpg",2.09,"2025-12-20T11:06:29.526787Z"
205
+ 378,"1","FAMILY_SAFE","2025-12-20T11:06:32.430924Z",378,"/data/upload/5/dd964efd-f543f9d63f3caf812049461fe8e82f66.jpg",2.693,"2025-12-20T11:06:32.430947Z"
206
+ 379,"1","SUGGESTIVE","2025-12-20T11:06:34.175038Z",379,"/data/upload/5/cddc368c-f555bcb967a62b3420b1563eabf14e03.jpg",1.491,"2025-12-20T11:06:34.175062Z"
207
+ 380,"1","FAMILY_SAFE","2025-12-20T11:06:42.126381Z",380,"/data/upload/5/8a1bce2e-f531a8694f3e826cc46790d3d2d210f3.jpg",7.745,"2025-12-20T11:06:42.126403Z"
208
+ 381,"1","FAMILY_SAFE","2025-12-20T11:06:44.453585Z",381,"/data/upload/5/4580faae-f532a291cff7ba273fcfbd81e466147a.jpg",2.048,"2025-12-20T11:06:44.453609Z"
209
+ 382,"1","SUGGESTIVE","2025-12-20T11:06:47.490081Z",382,"/data/upload/5/cd5e94e9-f4eed19eaa6f1a5b7f3bf3fdab620193.jpg",2.791,"2025-12-20T11:06:47.490101Z"
210
+ 383,"1","SUGGESTIVE","2025-12-20T11:06:48.990534Z",383,"/data/upload/5/e0abb514-f4f6cec6badab17d10b40557e6e9ceae.jpg",1.264,"2025-12-20T11:06:48.990561Z"
211
+ 384,"1","SUGGESTIVE","2025-12-20T11:06:50.556145Z",384,"/data/upload/5/3265ae1c-f4f91efff09fee24636b9b50d58fcf25.jpg",1.321,"2025-12-20T11:06:50.556167Z"
212
+ 385,"1","SUGGESTIVE","2025-12-20T11:06:51.603016Z",385,"/data/upload/5/e2e7bbee-f4f964fc3d06d2990c04caa8fc0e5295.jpg",0.805,"2025-12-20T11:06:51.603035Z"
213
+ 386,"1","SUGGESTIVE","2025-12-20T11:06:52.717199Z",386,"/data/upload/5/8f9b1b13-f4fe1ba40065807edb72c03485dff3d2.jpg",0.867,"2025-12-20T11:06:52.717223Z"
214
+ 387,"1","SUGGESTIVE","2025-12-20T11:06:53.681878Z",387,"/data/upload/5/9ee74b02-f50238c6721caa983df9656eef22236b.jpg",0.719,"2025-12-20T11:06:53.681898Z"
215
+ 388,"1","SUGGESTIVE","2025-12-20T11:06:54.729565Z",388,"/data/upload/5/97429c97-f50926a996167d5a55ea0e3260627572.jpg",0.798,"2025-12-20T11:06:54.729585Z"
216
+ 389,"1","SUGGESTIVE","2025-12-20T11:06:55.951339Z",389,"/data/upload/5/6775a784-f5072276faee8d0385236b2937d48a33.jpg",0.951,"2025-12-20T11:06:55.951358Z"
217
+ 390,"1","FAMILY_SAFE","2025-12-20T11:07:00.396266Z",390,"/data/upload/5/735adacd-f4d811181ca6367340272ea2817eebb6.jpg",4.194,"2025-12-20T11:07:00.396290Z"
218
+ 391,"1","SUGGESTIVE","2025-12-20T11:07:01.741988Z",391,"/data/upload/5/f2450298-f4e7b715922c1d07a2f7501b722bb12e.jpg",1.1,"2025-12-20T11:07:01.742011Z"
219
+ 392,"1","SUGGESTIVE","2025-12-20T11:07:02.921853Z",392,"/data/upload/5/a04ba9a7-f4aee07e50f09863edf149352e42f73e.jpg",0.935,"2025-12-20T11:07:02.921877Z"
220
+ 393,"1","SUGGESTIVE","2025-12-20T11:07:04.282533Z",393,"/data/upload/5/cdff04e2-f4c226e68f48b630dfd5b8f032c281f3.jpg",1.107,"2025-12-20T11:07:04.282556Z"
221
+ 394,"1","UNCERTAIN","2025-12-20T11:07:07.375699Z",394,"/data/upload/5/1c2faeb4-f4c868518f6194c3d708d889b79c4357.jpg",2.836,"2025-12-20T11:07:07.375722Z"
222
+ 395,"1","UNCERTAIN","2025-12-20T11:07:09.907880Z",395,"/data/upload/5/da36d596-f48abfffe24a134a2605d63c095d5601.jpg",2.28,"2025-12-20T11:07:09.907901Z"
223
+ 396,"1","SUGGESTIVE","2025-12-20T11:07:11.242457Z",396,"/data/upload/5/9e7afccb-f49cbda7d6c418aa68c47ac16678be9d.jpg",1.085,"2025-12-20T11:07:11.242482Z"
224
+ 397,"1","FAMILY_SAFE","2025-12-20T11:07:13.746642Z",397,"/data/upload/5/62a97430-f49d857cb54b7ad2a3a8bcd6c85a76d2.jpg",2.249,"2025-12-20T11:07:13.746663Z"
225
+ 398,"1","FAMILY_SAFE","2025-12-20T11:07:17.639369Z",398,"/data/upload/5/f79720c4-f49f729c28e9aafef241b3e5d1365ebb.jpg",3.641,"2025-12-20T11:07:17.639394Z"
226
+ 399,"1","SUGGESTIVE","2025-12-20T11:07:20.280399Z",399,"/data/upload/5/1fa27620-f46fcea94e5309ef137996d590f947a8.jpg",2.395,"2025-12-20T11:07:20.280420Z"
227
+ 400,"1","FAMILY_SAFE","2025-12-20T11:07:21.492310Z",400,"/data/upload/5/a8f6045f-f44bd04a46d585f08df78d744a9920e0.jpg",0.964,"2025-12-20T11:07:21.492334Z"
228
+ 401,"1","SUGGESTIVE","2025-12-20T11:07:22.755497Z",401,"/data/upload/5/9d5f7026-f442e9b50f65ce8e992c2d6d99045422.jpg",1.013,"2025-12-20T11:07:22.755525Z"
229
+ 402,"1","FAMILY_SAFE","2025-12-20T11:07:23.978630Z",402,"/data/upload/5/d87227e3-f4591e17584e87f5ae145946468488a1.jpg",0.971,"2025-12-20T11:07:23.978651Z"
230
+ 403,"1","UNCERTAIN","2025-12-20T11:07:25.879929Z",403,"/data/upload/5/5c828279-f45776fd9cff138a422bc299fda11907.jpg",1.693,"2025-12-20T11:07:25.879950Z"
231
+ 404,"1","SUGGESTIVE","2025-12-20T11:07:27.548623Z",404,"/data/upload/5/5c339677-f450689a8cf22e1c4471ef894ea28a81.jpg",1.422,"2025-12-20T11:07:27.548646Z"
232
+ 405,"1","SUGGESTIVE","2025-12-20T11:07:28.896320Z",405,"/data/upload/5/b47e520f-f453124a40f3bdbbe0c9dfe4996b6844.jpg",1.11,"2025-12-20T11:07:28.896332Z"
233
+ 406,"1","SUGGESTIVE","2025-12-20T11:07:30.624164Z",406,"/data/upload/5/3a55ff4b-f40d7fc2218b3f42761e7abe785c7785.jpg",1.497,"2025-12-20T11:07:30.624188Z"
234
+ 407,"1","UNCERTAIN","2025-12-20T11:07:32.486345Z",407,"/data/upload/5/ab4e8b9b-f433c523573d6c17da4f5f3da31fec75.jpg",1.618,"2025-12-20T11:07:32.486367Z"
235
+ 408,"1","FAMILY_SAFE","2025-12-20T11:07:34.295061Z",408,"/data/upload/5/c5a2e52f-f412680ce7ff76d5c276884092c008f3.jpg",1.556,"2025-12-20T11:07:34.295084Z"
236
+ 409,"1","FAMILY_SAFE","2025-12-20T11:07:35.358829Z",409,"/data/upload/5/2707ecab-f432252b9d85a485c9e4b3097633f71e.jpg",0.819,"2025-12-20T11:07:35.358854Z"
237
+ 410,"1","SUGGESTIVE","2025-12-20T11:07:37.054116Z",410,"/data/upload/5/79a56ecc-f3e1b0aced852718d2b2cc7208728b62.jpg",1.446,"2025-12-20T11:07:37.054140Z"
238
+ 411,"1","FAMILY_SAFE","2025-12-20T11:07:38.329402Z",411,"/data/upload/5/84efc00c-f3ebae6cdb55ebee567dc5937d26f433.jpg",1.025,"2025-12-20T11:07:38.329419Z"
239
+ 412,"1","SUGGESTIVE","2025-12-20T11:07:39.328789Z",412,"/data/upload/5/916b7794-f3f76e5bd2aae5290c40831d2dba06fb.jpg",0.762,"2025-12-20T11:07:39.328810Z"
240
+ 413,"1","SUGGESTIVE","2025-12-20T11:07:40.448655Z",413,"/data/upload/5/0c0ff4f4-f3b7d61057e3aabc5c1f2fa2e1d91f80.jpg",0.872,"2025-12-20T11:07:40.448677Z"
241
+ 414,"1","FAMILY_SAFE","2025-12-20T11:07:41.981553Z",414,"/data/upload/5/de3532f8-f3c6565d9b0b5b4a9ea5791663a1cb98.jpg",1.284,"2025-12-20T11:07:41.981577Z"
242
+ 415,"1","FAMILY_SAFE","2025-12-20T11:08:22.962376Z",415,"/data/upload/5/53a286c2-f3a74abc0a833c5b5b69b06d3530b13c.jpg",40.71,"2025-12-20T11:08:22.962396Z"
243
+ 416,"1","SUGGESTIVE","2025-12-20T11:08:27.908642Z",416,"/data/upload/5/b80429f0-f3a782299db638313bc78a42fe799566.jpg",4.603,"2025-12-20T11:08:27.908664Z"
244
+ 417,"1","SUGGESTIVE","2025-12-20T11:08:29.180520Z",417,"/data/upload/5/c5926927-f392b17c19a743f54238920721a05483.jpg",1.015,"2025-12-20T11:08:29.180541Z"
245
+ 418,"1","SUGGESTIVE","2025-12-20T11:08:30.516467Z",418,"/data/upload/5/aaba3830-f392495a6934f1189fab05eeb50e6fd9.jpg",1.067,"2025-12-20T11:08:30.516488Z"
246
+ 419,"1","SUGGESTIVE","2025-12-20T11:08:31.933046Z",419,"/data/upload/5/52172c96-f379ca12e1aa320afc400fb76fb2c470.jpg",1.157,"2025-12-20T11:08:31.933059Z"
247
+ 420,"1","SUGGESTIVE","2025-12-20T11:08:33.358481Z",420,"/data/upload/5/6e49273c-f36c6d209021488c8bf51e89c19f58fb.jpg",1.179,"2025-12-20T11:08:33.358499Z"
248
+ 421,"1","UNCERTAIN","2025-12-20T11:08:35.193055Z",421,"/data/upload/5/920afa72-f3537cd026f876e2535d657df257076c.jpg",1.554,"2025-12-20T11:08:35.193082Z"
249
+ 422,"1","UNCERTAIN","2025-12-20T11:08:37.119985Z",422,"/data/upload/5/7e9fe457-f366645e8bc5d7b1122603ec99290bc2.jpg",1.656,"2025-12-20T11:08:37.120002Z"
250
+ 423,"1","SUGGESTIVE","2025-12-20T11:08:38.625745Z",423,"/data/upload/5/10f36423-f30e3a374309519194229b8153c51588.jpg",1.235,"2025-12-20T11:08:38.625771Z"
251
+ 424,"1","FAMILY_SAFE","2025-12-20T11:08:39.911415Z",424,"/data/upload/5/cd3dd942-f32a3c9a3b2b2f5fa7be6f8c73ae293b.jpg",1.021,"2025-12-20T11:08:39.911434Z"
252
+ 425,"1","UNCERTAIN","2025-12-20T11:08:42.146916Z",425,"/data/upload/5/aac071e6-f32bb35b2b035066b5f7d88a1a27c0d7.jpg",1.966,"2025-12-20T11:08:42.146938Z"
253
+ 426,"1","FAMILY_SAFE","2025-12-20T11:08:43.653249Z",426,"/data/upload/5/678d2056-f33cf9e01fb72fc6dce190f37c65c2dd.jpg",1.228,"2025-12-20T11:08:43.653271Z"
254
+ 427,"1","FAMILY_SAFE","2025-12-20T11:08:44.961635Z",427,"/data/upload/5/965c31ef-f2f78f897ad0a224175515bbde549e2e.jpg",1.038,"2025-12-20T11:08:44.961656Z"
255
+ 428,"1","UNCERTAIN","2025-12-20T11:08:47.791064Z",428,"/data/upload/5/579612c2-f2fa9ecf3da8d00302338efa4f87123c.jpg",2.554,"2025-12-20T11:08:47.791088Z"
256
+ 429,"1","SUGGESTIVE","2025-12-20T11:08:50.707093Z",429,"/data/upload/5/9f66f820-f2fae6e2500b65f269b5e6de80996f17.jpg",2.651,"2025-12-20T11:08:50.707113Z"
257
+ 430,"1","SUGGESTIVE","2025-12-20T11:08:53.843375Z",430,"/data/upload/5/75006524-f30c43c00748e7912ce105d616264ca8.jpg",2.868,"2025-12-20T11:08:53.843395Z"
258
+ 431,"1","FAMILY_SAFE","2025-12-20T11:08:55.124117Z",431,"/data/upload/5/7c688d00-f3066b02932fbc939c22e9c3bb8e942a.jpg",1.024,"2025-12-20T11:08:55.124137Z"
259
+ 432,"1","SUGGESTIVE","2025-12-20T11:08:56.726229Z",432,"/data/upload/5/3174b410-f2f05fc8d36aa9b2d14d9a0eed30416a.jpg",1.327,"2025-12-20T11:08:56.726251Z"
260
+ 433,"1","UNCERTAIN","2025-12-20T11:08:58.921837Z",433,"/data/upload/5/c43cb7fb-f2f33b9d050b1eec02c29464f036d292.jpg",1.977,"2025-12-20T11:08:58.921878Z"
261
+ 434,"1","SUGGESTIVE","2025-12-20T11:09:00.226999Z",434,"/data/upload/5/55e1d1ac-f2b9d5dc127dddd36b113f2719d89a97.jpg",1.048,"2025-12-20T11:09:00.227020Z"
262
+ 435,"1","FAMILY_SAFE","2025-12-20T11:09:01.706294Z",435,"/data/upload/5/26f72a43-f2b9d6126ecc23b075d1c1acc8fe340d.jpg",1.226,"2025-12-20T11:09:01.706316Z"
263
+ 436,"1","FAMILY_SAFE","2025-12-20T11:09:03.408842Z",436,"/data/upload/5/a6eee7e4-f2d5d25ff62ef48331c529bf26e170d4.jpg",1.444,"2025-12-20T11:09:03.408865Z"
264
+ 437,"1","SUGGESTIVE","2025-12-20T11:09:05.442262Z",437,"/data/upload/5/6583b10b-f2aae7afc3a013755b2365cb2942dc64.jpg",1.779,"2025-12-20T11:09:05.442285Z"
265
+ 438,"1","SUGGESTIVE","2025-12-20T11:09:07.089870Z",438,"/data/upload/5/3dc4ad74-f27b0f685d9b622d7ff36bdd97f72831.jpg",1.382,"2025-12-20T11:09:07.089889Z"
266
+ 439,"1","UNCERTAIN","2025-12-20T11:09:09.933482Z",439,"/data/upload/5/6a8274e7-f2801326462d460409fa733227426003.jpg",2.586,"2025-12-20T11:09:09.933505Z"
267
+ 440,"1","SUGGESTIVE","2025-12-20T11:09:11.186992Z",440,"/data/upload/5/7e1849f3-f26a9865a58639d9b17de158040c8d99.jpg",0.996,"2025-12-20T11:09:11.187012Z"
268
+ 441,"1","SUGGESTIVE","2025-12-20T11:09:12.728129Z",441,"/data/upload/5/e4ae160c-f26b087c218148a8ca3f2e96e12d7a1b.jpg",1.284,"2025-12-20T11:09:12.728152Z"
269
+ 442,"1","SUGGESTIVE","2025-12-20T11:09:15.215308Z",442,"/data/upload/5/4f4b4d5f-f26d88ffcd70edc8984c024f2de1ca39.jpg",2.229,"2025-12-20T11:09:15.215327Z"
270
+ 443,"1","SUGGESTIVE","2025-12-20T11:09:16.452020Z",443,"/data/upload/5/55668d0d-f2691c288c683bcf94651a0bbffe21ad.jpg",0.979,"2025-12-20T11:09:16.452039Z"
271
+ 444,"1","FAMILY_SAFE","2025-12-20T11:09:18.025849Z",444,"/data/upload/5/302fc960-f24d9b56d05bdf13a83cfabd87f8e5af.jpg",1.366,"2025-12-20T11:09:18.025867Z"
272
+ 445,"1","SUGGESTIVE","2025-12-20T11:09:20.323696Z",445,"/data/upload/5/da992908-f24efb4f9760b0e7fbb3fcf77dba0891.jpg",2.055,"2025-12-20T11:09:20.323720Z"
273
+ 446,"1","SUGGESTIVE","2025-12-20T11:09:21.705670Z",446,"/data/upload/5/09535428-f244b1f6799b0610306318fa09e744c4.jpg",1.122,"2025-12-20T11:09:21.705698Z"
274
+ 447,"1","FAMILY_SAFE","2025-12-20T11:09:23.206455Z",447,"/data/upload/5/6b3255e8-f20ecb2425f29d21d4047bec13a2babb.jpg",1.26,"2025-12-20T11:09:23.206467Z"
275
+ 448,"1","SUGGESTIVE","2025-12-20T11:09:24.479583Z",448,"/data/upload/5/3d3f89e4-f20eef0275884df087aefc827000488a.jpg",1.008,"2025-12-20T11:09:24.479605Z"
276
+ 449,"1","FAMILY_SAFE","2025-12-20T11:09:26.174253Z",449,"/data/upload/5/476d2b62-f21375899b6c734ba68a8f2a74990efb.jpg",1.438,"2025-12-20T11:09:26.174278Z"
277
+ 450,"1","FAMILY_SAFE","2025-12-20T11:09:27.939835Z",450,"/data/upload/5/2821adf9-f20de5b6356da5f1e38626064c8ac85e.jpg",1.504,"2025-12-20T11:09:27.939857Z"
278
+ 451,"1","SUGGESTIVE","2025-12-20T11:09:29.381016Z",451,"/data/upload/5/78dd5846-f1b48acd52be4f8693ed99170c2a044c.jpg",1.189,"2025-12-20T11:09:29.381040Z"
279
+ 452,"1","SUGGESTIVE","2025-12-20T11:09:31.326367Z",452,"/data/upload/5/7d5de576-f1c966431895a337d35d9ec3a7470b17.jpg",1.575,"2025-12-20T11:09:31.326386Z"
280
+ 453,"1","SUGGESTIVE","2025-12-20T11:09:32.434032Z",453,"/data/upload/5/8cf1683d-f1d11292af5391d00957494b8b58f315.jpg",0.84,"2025-12-20T11:09:32.434054Z"
281
+ 454,"1","SUGGESTIVE","2025-12-20T11:09:33.754811Z",454,"/data/upload/5/59b576bf-f1a168d27daac1da3571fcbcce7c1ebd.jpg",1.063,"2025-12-20T11:09:33.754833Z"
282
+ 455,"1","UNCERTAIN","2025-12-20T11:09:36.458670Z",455,"/data/upload/5/8f0ff5de-f18c7dac0d1162379e292b0e4b9e22ce.jpg",2.447,"2025-12-20T11:09:36.458691Z"
283
+ 456,"1","SUGGESTIVE","2025-12-20T11:09:37.745287Z",456,"/data/upload/5/3d83aaea-f186d77202e18462443a8c7ffc449919.jpg",1.026,"2025-12-20T11:09:37.745307Z"
284
+ 457,"1","SUGGESTIVE","2025-12-20T11:09:38.769270Z",457,"/data/upload/5/d4d29b7b-f162dbe9bf0b44a6f2ddb910d725d56b.jpg",0.76,"2025-12-20T11:09:38.769291Z"
285
+ 458,"1","SUGGESTIVE","2025-12-20T11:09:39.839893Z",458,"/data/upload/5/c6f24a4d-f1646b36bb33f474b8f66c112bf97cc3.jpg",0.815,"2025-12-20T11:09:39.839903Z"
286
+ 459,"1","FAMILY_SAFE","2025-12-20T11:09:41.484421Z",459,"/data/upload/5/9d710615-f1712c2ed94b10ffedda4e1ea6e56fa9.jpg",1.379,"2025-12-20T11:09:41.484444Z"
287
+ 460,"1","SUGGESTIVE","2025-12-20T11:09:44.628375Z",460,"/data/upload/5/c325de0e-f16866c512ca721aa3ba3b2129e4b66f.jpg",2.881,"2025-12-20T11:09:44.628395Z"
288
+ 461,"1","SUGGESTIVE","2025-12-20T11:09:45.688039Z",461,"/data/upload/5/c9983270-f1643668073aa69e7f2b505d1b237098.jpg",0.795,"2025-12-20T11:09:45.688063Z"
289
+ 462,"1","SUGGESTIVE","2025-12-20T11:09:46.769325Z",462,"/data/upload/5/ff926dbf-f12e5c2510e88db3c8fdf32aa7968f9d.jpg",0.817,"2025-12-20T11:09:46.769348Z"
290
+ 463,"1","SUGGESTIVE","2025-12-20T11:09:47.754151Z",463,"/data/upload/5/edbf7bc4-f13bac93da13444f529aa1c821731161.jpg",0.72,"2025-12-20T11:09:47.754171Z"
291
+ 464,"1","SUGGESTIVE","2025-12-20T11:09:48.805953Z",464,"/data/upload/5/d3721c85-f126f5fa7fd6939084fa439a5c194f18.jpg",0.787,"2025-12-20T11:09:48.805975Z"
292
+ 465,"1","SUGGESTIVE","2025-12-20T11:09:49.715473Z",465,"/data/upload/5/b5e5e620-f126f93e4853f89a6e25b661040dc314.jpg",0.649,"2025-12-20T11:09:49.715495Z"
293
+ 466,"1","SUGGESTIVE","2025-12-20T11:09:50.754293Z",466,"/data/upload/5/10135976-f1243b33b2f6d754c9bc9da9e8de97e4.jpg",0.773,"2025-12-20T11:09:50.754316Z"
294
+ 467,"1","SUGGESTIVE","2025-12-20T11:09:51.874405Z",467,"/data/upload/5/b81fe122-f1404d9866f6128bd44a1eaee0a39cf7.jpg",0.856,"2025-12-20T11:09:51.874429Z"
295
+ 468,"1","SUGGESTIVE","2025-12-20T11:09:53.537766Z",468,"/data/upload/5/f3d934fc-f14861197568fd42d5a3a8f39a8970b9.jpg",1.44,"2025-12-20T11:09:53.537786Z"
296
+ 469,"1","SUGGESTIVE","2025-12-20T11:09:54.782268Z",469,"/data/upload/5/34496229-f104ed4e8f3c30e2fa8ddfbd3332b413.jpg",0.999,"2025-12-20T11:09:54.782295Z"
297
+ 470,"1","SUGGESTIVE","2025-12-20T11:09:55.875573Z",470,"/data/upload/5/849c7056-f0b773be242aee171c66e49b6c3dfb63.jpg",0.823,"2025-12-20T11:09:55.875599Z"
298
+ 471,"1","SUGGESTIVE","2025-12-20T11:09:56.955151Z",471,"/data/upload/5/c6d20edb-f0c80a1febd6aeb4ed6ccaf3fd82760a.jpg",0.811,"2025-12-20T11:09:56.955173Z"
299
+ 472,"1","FAMILY_SAFE","2025-12-20T11:12:46.136601Z",472,"/data/upload/5/906d1fce-f0ca8c9fdee2f995b567b0626cdadcac.jpg",168.866,"2025-12-20T11:12:46.136613Z"
300
+ 473,"1","SUGGESTIVE","2025-12-20T11:12:49.184658Z",473,"/data/upload/5/f638acd0-f0d3205ee8ebe32b2d53f1ad223e9818.jpg",2.728,"2025-12-20T11:12:49.184678Z"
301
+ 474,"1","SUGGESTIVE","2025-12-20T11:12:50.440778Z",474,"/data/upload/5/da3f5f03-f0dd8d4ac7e466a7a233905f8db38a1c.jpg",0.972,"2025-12-20T11:12:50.440799Z"
302
+ 475,"1","SUGGESTIVE","2025-12-20T11:12:52.212396Z",475,"/data/upload/5/c2917e19-f06b1f090a5e2f8b788720ce4489183a.jpg",1.49,"2025-12-20T11:12:52.212416Z"
303
+ 476,"1","FAMILY_SAFE","2025-12-20T11:12:53.702227Z",476,"/data/upload/5/698e9ebb-f06d35d37cacac0d69db96016e0c182f.jpg",1.211,"2025-12-20T11:12:53.702249Z"
304
+ 477,"1","SUGGESTIVE","2025-12-20T11:12:54.968969Z",477,"/data/upload/5/4696edaa-f06eb7893da319aec3f0de768a1a845d.jpg",0.98,"2025-12-20T11:12:54.968990Z"
305
+ 478,"1","UNCERTAIN","2025-12-20T11:12:56.583670Z",478,"/data/upload/5/ad86327f-f08abc73a82adca2bbb2304c62991458.jpg",1.349,"2025-12-20T11:12:56.583692Z"
306
+ 479,"1","SUGGESTIVE","2025-12-20T11:13:00.655782Z",479,"/data/upload/5/7713ccd7-f08c1d5efaa9ae3e99274ef65dbc7cc4.jpg",3.804,"2025-12-20T11:13:00.655803Z"
307
+ 480,"1","SUGGESTIVE","2025-12-20T11:13:02.802689Z",480,"/data/upload/5/88e6096c-f0809c968c34e21b25ef28da489b68fd.jpg",1.878,"2025-12-20T11:13:02.802709Z"
308
+ 481,"1","FAMILY_SAFE","2025-12-20T11:13:04.135859Z",481,"/data/upload/5/524bc0ae-f06772600ff35982e30ec813edb89dc2.jpg",1.067,"2025-12-20T11:13:04.135880Z"
309
+ 482,"1","FAMILY_SAFE","2025-12-20T11:13:06.542634Z",482,"/data/upload/5/3d31944e-f049c93ef72e3bd5edbf919222d2d1ae.jpg",2.137,"2025-12-20T11:13:06.542654Z"
310
+ 483,"1","SUGGESTIVE","2025-12-20T11:13:07.889861Z",483,"/data/upload/5/47efba26-f0445c4671cbf87f6be472f5102475c2.jpg",1.076,"2025-12-20T11:13:07.889884Z"
311
+ 484,"1","SUGGESTIVE","2025-12-20T11:13:09.407175Z",484,"/data/upload/5/fa8fe379-f0357ced6ed7226ecfd6bc274c3e8a5b.jpg",1.25,"2025-12-20T11:13:09.407198Z"
312
+ 485,"1","SUGGESTIVE","2025-12-20T11:13:10.806777Z",485,"/data/upload/5/475a96b3-eff990daac3ddb54436bad2cc950abb3.jpg",1.13,"2025-12-20T11:13:10.806798Z"
313
+ 486,"1","SUGGESTIVE","2025-12-20T11:13:12.241372Z",486,"/data/upload/5/fa249f4f-efb7440d597d698c5442b03cc11096ab.jpg",1.212,"2025-12-20T11:13:12.241388Z"
314
+ 487,"1","SUGGESTIVE","2025-12-20T11:13:13.939921Z",487,"/data/upload/5/b10f30c8-efc08bbcc30ce2804f50c73ff07cffec.jpg",1.483,"2025-12-20T11:13:13.939940Z"
315
+ 488,"1","SUGGESTIVE","2025-12-20T11:13:15.124442Z",488,"/data/upload/5/faba1751-efc073e437c18987a2f1476da3de0b3a.jpg",0.916,"2025-12-20T11:13:15.124463Z"
316
+ 489,"1","SUGGESTIVE","2025-12-20T11:13:16.664950Z",489,"/data/upload/5/0098546d-efd85646ed2bdbc974b9c3c579691730.jpg",1.27,"2025-12-20T11:13:16.664969Z"
317
+ 490,"1","SUGGESTIVE","2025-12-20T11:13:17.941764Z",490,"/data/upload/5/b4635fff-efef5f2439ee81918faf609d5a0aa163.jpg",1.003,"2025-12-20T11:13:17.941787Z"
318
+ 491,"1","SUGGESTIVE","2025-12-20T11:13:19.103118Z",491,"/data/upload/5/4c7faf4b-efef22ec0ad48c3b2f51c82dcb9565e6.jpg",0.891,"2025-12-20T11:13:19.103139Z"
319
+ 492,"1","SUGGESTIVE","2025-12-20T11:13:20.409808Z",492,"/data/upload/5/e9be5783-efa81f12be12471dd91827cfb74404a9.jpg",1.036,"2025-12-20T11:13:20.409828Z"
320
+ 493,"1","SUGGESTIVE","2025-12-20T11:13:21.543572Z",493,"/data/upload/5/0df8255e-efaa8dd97b36b54c67356ca6c1500791.jpg",0.866,"2025-12-20T11:13:21.543588Z"
321
+ 494,"1","SUGGESTIVE","2025-12-20T11:13:22.602764Z",494,"/data/upload/5/e96341ac-ef6a78b93788b6cab069d01b92516ec6.jpg",0.793,"2025-12-20T11:13:22.602784Z"
322
+ 495,"1","SUGGESTIVE","2025-12-20T11:13:23.921753Z",495,"/data/upload/5/2a7d0d01-ef6b436f284fd4c6a95adef2c0dc0555.jpg",1.062,"2025-12-20T11:13:23.921763Z"
323
+ 496,"1","SUGGESTIVE","2025-12-20T11:13:25.119683Z",496,"/data/upload/5/e764a81b-ef7d423ff22abad26fcdc945e31dca5b.jpg",0.94,"2025-12-20T11:13:25.119704Z"
324
+ 497,"1","SUGGESTIVE","2025-12-20T11:13:26.356293Z",497,"/data/upload/5/6ffc5735-ef70be698e9f8dbd29dacb15ac4d0ec9.jpg",0.97,"2025-12-20T11:13:26.356315Z"
325
+ 498,"1","SUGGESTIVE","2025-12-20T11:13:27.651103Z",498,"/data/upload/5/98ce088a-ef76eea72ea523ba10369ff89f844b8d.jpg",1.024,"2025-12-20T11:13:27.651127Z"
326
+ 499,"1","SUGGESTIVE","2025-12-20T11:13:28.931608Z",499,"/data/upload/5/772bc39c-ef4a21bca7ceab6a75e2a5fd738408d9.jpg",1.044,"2025-12-20T11:13:28.931630Z"
327
+ 500,"1","SUGGESTIVE","2025-12-20T11:13:30.180348Z",500,"/data/upload/5/7207626d-ef378dd1f4004be18abc11bef3c80de4.jpg",0.96,"2025-12-20T11:13:30.180370Z"
328
+ 501,"1","SUGGESTIVE","2025-12-20T11:13:31.336122Z",501,"/data/upload/5/281a7d11-ef4790408c0eb4ad41d481796a8d76fd.jpg",0.882,"2025-12-20T11:13:31.336143Z"
329
+ 502,"1","FAMILY_SAFE","2025-12-20T11:13:32.792343Z",502,"/data/upload/5/15072791-ef0a3b5c272d10607604167b4bc37034.jpg",1.183,"2025-12-20T11:13:32.792367Z"
330
+ 503,"1","UNCERTAIN","2025-12-20T11:13:36.021549Z",503,"/data/upload/5/6dc70b1e-ef1026a33c894d18a1a1f32922017fbf.jpg",2.957,"2025-12-20T11:13:36.021570Z"
331
+ 504,"1","SUGGESTIVE","2025-12-20T11:13:37.328820Z",504,"/data/upload/5/c8740c8b-eedc4a75b4521825dd368a81324741e4.jpg",1.046,"2025-12-20T11:13:37.328833Z"
332
+ 505,"1","UNCERTAIN","2025-12-20T11:13:39.974605Z",505,"/data/upload/5/dcfb8a01-eebd67e28f811ad93ce45d7a22c9a280.jpg",2.385,"2025-12-20T11:13:39.974623Z"
333
+ 506,"1","SUGGESTIVE","2025-12-20T11:13:41.259678Z",506,"/data/upload/5/9283a4a4-eed2a73a4dc7506b1ce5042c0d86a41f.jpg",1.023,"2025-12-20T11:13:41.259699Z"
334
+ 507,"1","SUGGESTIVE","2025-12-20T11:13:43.239857Z",507,"/data/upload/5/d9b69ac8-eed7b464c9a9d59069f62bd631953120.jpg",1.703,"2025-12-20T11:13:43.239877Z"
335
+ 508,"1","UNCERTAIN","2025-12-20T11:13:47.266206Z",508,"/data/upload/5/81f42f14-ee9ba96fe055cbfa17dbe24799365177.jpg",3.765,"2025-12-20T11:13:47.266218Z"
336
+ 509,"1","SUGGESTIVE","2025-12-20T11:13:55.896786Z",509,"/data/upload/5/5878b83e-ee9dc9d669cf306bf6bf04dfaf3b1c9d.jpg",8.423,"2025-12-20T11:13:55.896802Z"
337
+ 510,"1","SUGGESTIVE","2025-12-20T11:13:57.135918Z",510,"/data/upload/5/e31a796f-eea76211c790d725a7dd027a99213afb.jpg",0.949,"2025-12-20T11:13:57.135942Z"
338
+ 511,"1","SUGGESTIVE","2025-12-20T11:13:58.373320Z",511,"/data/upload/5/a4c89124-eeaa866b8633bedc8034bce163670339.jpg",0.955,"2025-12-20T11:13:58.373342Z"
339
+ 512,"1","SUGGESTIVE","2025-12-20T11:13:59.537399Z",512,"/data/upload/5/35909ea6-eeab35797f69d18b0187e08c5549efb6.jpg",0.893,"2025-12-20T11:13:59.537422Z"
340
+ 513,"1","SUGGESTIVE","2025-12-20T11:14:00.628161Z",513,"/data/upload/5/da887e4a-eeb5d0dbe82e36107e2af75b20ab17c7.jpg",0.823,"2025-12-20T11:14:00.628182Z"
341
+ 514,"1","SUGGESTIVE","2025-12-20T11:14:01.905252Z",514,"/data/upload/5/75ab9401-eebbd19e449133670a58baff0fa109ec.jpg",0.991,"2025-12-20T11:14:01.905271Z"
342
+ 515,"1","SUGGESTIVE","2025-12-20T11:14:02.983344Z",515,"/data/upload/5/e75f4995-eebcec31909a43812f2334fb37807008.jpg",0.807,"2025-12-20T11:14:02.983367Z"
343
+ 516,"1","SUGGESTIVE","2025-12-20T11:14:04.036058Z",516,"/data/upload/5/de0c936f-ee8a39d9411e2cd46e726afe1c5a4895.jpg",0.777,"2025-12-20T11:14:04.036081Z"
344
+ 517,"1","FAMILY_SAFE","2025-12-20T11:14:05.905275Z",517,"/data/upload/5/e2e721c6-ee8c7ace06eac5eecd8b709b93976d0b.jpg",1.588,"2025-12-20T11:14:05.905294Z"
345
+ 518,"1","SUGGESTIVE","2025-12-20T11:14:07.773033Z",518,"/data/upload/5/6828a485-ee90a0e72628f9dc27de80e5ce701bc2.jpg",1.592,"2025-12-20T11:14:07.773054Z"
346
+ 519,"1","FAMILY_SAFE","2025-12-20T11:14:09.171253Z",519,"/data/upload/5/ef0ac7d6-ee890fafca12595501b30093d54320af.jpg",1.119,"2025-12-20T11:14:09.171273Z"
347
+ 520,"1","UNCERTAIN","2025-12-20T11:14:13.686655Z",520,"/data/upload/5/eb7e0cef-ee93704434f4aa96859be27f8b04f4ca.jpg",4.233,"2025-12-20T11:14:13.686678Z"
348
+ 521,"1","FAMILY_SAFE","2025-12-20T11:14:15.141517Z",521,"/data/upload/5/6127f82d-ee4fad4fd52e6f1dc5121d1965a31e61.jpg",1.18,"2025-12-20T11:14:15.141540Z"
349
+ 522,"1","FAMILY_SAFE","2025-12-20T11:14:16.832347Z",522,"/data/upload/5/cc55d5b2-ee745023dec8ba83a3b401aaa5a34f2d.jpg",1.415,"2025-12-20T11:14:16.832370Z"
350
+ 523,"1","SUGGESTIVE","2025-12-20T11:14:18.268038Z",523,"/data/upload/5/ae6d504b-ee44eff2d80d58e6f2c6122fcc468c63.jpg",1.162,"2025-12-20T11:14:18.268059Z"
351
+ 524,"1","UNCERTAIN","2025-12-20T11:14:19.950922Z",524,"/data/upload/5/5fee8ad9-ee435d2ab53c469e63808c8d60c6351e.jpg",1.403,"2025-12-20T11:14:19.950946Z"
352
+ 525,"1","SUGGESTIVE","2025-12-20T11:14:21.710157Z",525,"/data/upload/5/a0a2d935-ee166c5de961d809600d8a47a8284e7e.jpg",1.485,"2025-12-20T11:14:21.710180Z"
353
+ 526,"1","FAMILY_SAFE","2025-12-20T11:14:24.977643Z",526,"/data/upload/5/8a5bf427-ee3086dce1a61b091b09bb8bf460d671.jpg",2.987,"2025-12-20T11:14:24.977665Z"
354
+ 527,"1","FAMILY_SAFE","2025-12-20T11:14:26.473080Z",527,"/data/upload/5/305abb91-ede68be22f91fbddc1f4e072b05c0ae5.jpg",1.216,"2025-12-20T11:14:26.473099Z"
355
+ 528,"1","SUGGESTIVE","2025-12-20T11:14:34.476082Z",528,"/data/upload/5/429234c0-edf1ded0501e179112b516a99a58f6b3.jpg",7.624,"2025-12-20T11:14:34.476105Z"
356
+ 529,"1","FAMILY_SAFE","2025-12-20T11:14:35.731319Z",529,"/data/upload/5/90e7a11a-edf5de76bd4db7ec201caf452ffd1519.jpg",0.964,"2025-12-20T11:14:35.731341Z"
357
+ 530,"1","SUGGESTIVE","2025-12-20T11:14:40.517155Z",530,"/data/upload/5/357576cd-edbca137d1801a86d305e4ad3f3a6305.jpg",4.498,"2025-12-20T11:14:40.517177Z"
358
+ 531,"1","SUGGESTIVE","2025-12-20T11:14:41.874482Z",531,"/data/upload/5/274e3d8d-edcdf84578e3103a185073e581089641.jpg",1.121,"2025-12-20T11:14:41.874501Z"
359
+ 532,"1","SUGGESTIVE","2025-12-20T11:14:43.078036Z",532,"/data/upload/5/09696d76-edd88c179c4b8d37223a74e58757921b.jpg",0.936,"2025-12-20T11:14:43.078049Z"
360
+ 533,"1","SUGGESTIVE","2025-12-20T11:14:44.531706Z",533,"/data/upload/5/2befe926-eddca7fbfe13ebce00a268c70550b580.jpg",1.176,"2025-12-20T11:14:44.531729Z"
361
+ 534,"1","UNCERTAIN","2025-12-20T11:14:46.797039Z",534,"/data/upload/5/dd0a59aa-edddf271573716e8e4e571451c634b85.jpg",1.951,"2025-12-20T11:14:46.797055Z"
362
+ 535,"1","FAMILY_SAFE","2025-12-20T11:14:48.109629Z",535,"/data/upload/5/52784190-ed8db5c9ad94f3f769b504dba5d12f3c.jpg",1.026,"2025-12-20T11:14:48.109649Z"
363
+ 536,"1","UNCERTAIN","2025-12-20T11:14:52.728165Z",536,"/data/upload/5/7c8e5c47-ed9f73ea5150c7871fa9ab71e2808929.jpg",4.327,"2025-12-20T11:14:52.728187Z"
364
+ 537,"1","SUGGESTIVE","2025-12-20T11:14:57.525160Z",537,"/data/upload/5/23660c64-ed78b3d3e8cf8fa817e55818ef219f2f.jpg",4.515,"2025-12-20T11:14:57.525177Z"
365
+ 538,"1","SUGGESTIVE","2025-12-20T11:14:58.675477Z",538,"/data/upload/5/36ccdc32-ed9326789faddcf165c85c0c46e61892.jpg",0.859,"2025-12-20T11:14:58.675498Z"
366
+ 539,"1","SUGGESTIVE","2025-12-20T11:14:59.853456Z",539,"/data/upload/5/eae0b0ad-eda271d3e424bcbddf17ba2795ca31ab.jpg",0.942,"2025-12-20T11:14:59.853477Z"
367
+ 540,"1","FAMILY_SAFE","2025-12-20T11:15:02.140692Z",540,"/data/upload/5/7817ce56-edb7db1fcb69296415e2f32cd5cac1ba.jpg",1.997,"2025-12-20T11:15:02.140713Z"
368
+ 541,"1","FAMILY_SAFE","2025-12-20T11:15:03.743247Z",541,"/data/upload/5/7151cdf8-edb3802789ea655bda76512662ef16fd.jpg",1.321,"2025-12-20T11:15:03.743270Z"
369
+ 542,"1","SUGGESTIVE","2025-12-20T11:15:05.815531Z",542,"/data/upload/5/420c8652-ed4fa0d4320a9474fcdbf9f260d5ccd9.jpg",1.829,"2025-12-20T11:15:05.815552Z"
370
+ 543,"1","SUGGESTIVE","2025-12-20T11:15:07.248456Z",543,"/data/upload/5/f12d507b-ed6ad32bca5a4012c154cea7d74675c1.jpg",1.15,"2025-12-20T11:15:07.248477Z"
371
+ 544,"1","SUGGESTIVE","2025-12-20T11:15:09.882659Z",544,"/data/upload/5/ea78c268-ed59c63ff419564a0091bf4dba0db57b.jpg",2.361,"2025-12-20T11:15:09.882680Z"
372
+ 545,"1","SUGGESTIVE","2025-12-20T11:15:11.329418Z",545,"/data/upload/5/8bc1df46-ed684d1f722a3e6fd6644a086a941908.jpg",1.166,"2025-12-20T11:15:11.329443Z"
373
+ 546,"1","FAMILY_SAFE","2025-12-20T11:15:13.800073Z",546,"/data/upload/5/6ac74b20-ed0dd06c432216aa905a2732eb14d356.jpg",2.181,"2025-12-20T11:15:13.800097Z"
374
+ 547,"1","UNCERTAIN","2025-12-20T11:15:16.999522Z",547,"/data/upload/5/f88fee24-ed21cb4f07ee87064a3203c18fd4cce1.jpg",2.921,"2025-12-20T11:15:16.999544Z"
375
+ 548,"1","FAMILY_SAFE","2025-12-20T11:15:25.935429Z",548,"/data/upload/5/2f604374-ed22e47a89b289fcddbd58d84fe4af7a.jpg",8.658,"2025-12-20T11:15:25.935441Z"
376
+ 549,"1","FAMILY_SAFE","2025-12-20T11:15:35.261454Z",549,"/data/upload/5/3afea32d-ece69a65ed45a3edf1fc00efbbfaedb7.jpg",9.003,"2025-12-20T11:15:35.261477Z"
377
+ 550,"1","SUGGESTIVE","2025-12-20T11:15:36.996397Z",550,"/data/upload/5/e4e420e1-ece99c6f98d2a711d94c11bb54cce29f.jpg",1.411,"2025-12-20T11:15:36.996419Z"
378
+ 551,"1","FAMILY_SAFE","2025-12-20T11:15:38.332445Z",551,"/data/upload/5/c356522a-ed0ab3e1587ed20eeace37e94f8d54ba.jpg",1.041,"2025-12-20T11:15:38.332458Z"
379
+ 552,"1","FAMILY_SAFE","2025-12-20T11:15:39.769695Z",552,"/data/upload/5/a9f4ce1f-ed0b80d5b8a1a6cd023555b1695c5037.jpg",1.173,"2025-12-20T11:15:39.769708Z"
380
+ 553,"1","FAMILY_SAFE","2025-12-20T11:15:40.870114Z",553,"/data/upload/5/5822bed3-ed0c697143d8cfcf7772d205537c1a53.jpg",0.827,"2025-12-20T11:15:40.870126Z"
381
+ 554,"1","UNCERTAIN","2025-12-20T11:15:42.636356Z",554,"/data/upload/5/8d880f44-ed01e05d1b0f341627595626f0d1fc19.jpg",1.48,"2025-12-20T11:15:42.636377Z"
382
+ 555,"1","UNCERTAIN","2025-12-20T11:15:45.710540Z",555,"/data/upload/5/d513daab-ed0590024f5fe63e2dca696949cd4a3b.jpg",2.776,"2025-12-20T11:15:45.710565Z"
383
+ 556,"1","SUGGESTIVE","2025-12-20T11:15:47.346622Z",556,"/data/upload/5/c80032d6-ecd074a8a73aafc255fb87c50ab46d32.jpg",1.348,"2025-12-20T11:15:47.346644Z"
384
+ 557,"1","SUGGESTIVE","2025-12-20T11:15:48.529900Z",557,"/data/upload/5/5cb76bcd-ecd461884c7d815ca300840ac7dff722.jpg",0.895,"2025-12-20T11:15:48.529922Z"
385
+ 558,"1","SUGGESTIVE","2025-12-20T11:15:52.668563Z",558,"/data/upload/5/475e3763-ecab477c7f479d98386c20ed15ddc8ed.jpg",3.851,"2025-12-20T11:15:52.668584Z"
386
+ 559,"1","SUGGESTIVE","2025-12-20T11:15:54.567362Z",559,"/data/upload/5/38faa256-ecb96a10b5007cac877671cd626e11bc.jpg",1.602,"2025-12-20T11:15:54.567383Z"
387
+ 560,"1","FAMILY_SAFE","2025-12-20T11:15:56.337890Z",560,"/data/upload/5/0a0d8662-ecb215bf839692ed00a48cf006405234.jpg",1.481,"2025-12-20T11:15:56.337909Z"
388
+ 561,"1","SUGGESTIVE","2025-12-20T11:15:57.966410Z",561,"/data/upload/5/fe38b006-ec912c8d68846d3d4cae46a6dc2e2e67.jpg",1.341,"2025-12-20T11:15:57.966432Z"
389
+ 562,"1","SUGGESTIVE","2025-12-20T11:15:59.137586Z",562,"/data/upload/5/61198ea6-eca396464fb1343904128cac952dccba.jpg",0.887,"2025-12-20T11:15:59.137606Z"
390
+ 563,"1","SUGGESTIVE","2025-12-20T11:16:00.622365Z",563,"/data/upload/5/f42a237d-ec8ba9e30ab570db99c521c4d75e877a.jpg",1.19,"2025-12-20T11:16:00.622387Z"
391
+ 564,"1","FAMILY_SAFE","2025-12-20T11:16:02.887401Z",564,"/data/upload/5/9ea2a68b-ec75da7bce977ab4b2d77224ad0ed08d.jpg",2.012,"2025-12-20T11:16:02.887421Z"
392
+ 565,"1","SUGGESTIVE","2025-12-20T11:16:04.458689Z",565,"/data/upload/5/b19e9aff-ec7752c4445664d6a594779d0cba33a6.jpg",1.266,"2025-12-20T11:16:04.458709Z"
393
+ 566,"1","FAMILY_SAFE","2025-12-20T11:16:05.825255Z",566,"/data/upload/5/cb8a1b42-ec4ed6c5f59cd751b1d4a8cbd5ef9730.jpg",1.121,"2025-12-20T11:16:05.825278Z"
394
+ 567,"1","SUGGESTIVE","2025-12-20T11:16:07.289021Z",567,"/data/upload/5/11f16074-ec4f3a4fceac2b83221995baa3ce6138.jpg",1.171,"2025-12-20T11:16:07.289043Z"
395
+ 568,"1","FAMILY_SAFE","2025-12-20T11:16:09.451497Z",568,"/data/upload/5/cf990f78-ec4898ce293c0fce9e3df490ef83741d.jpg",1.874,"2025-12-20T11:16:09.451517Z"
396
+ 569,"1","FAMILY_SAFE","2025-12-20T11:16:12.080564Z",569,"/data/upload/5/958ec76b-ec5156a1d4dad967c4ed14a44fc9c10f.jpg",2.338,"2025-12-20T11:16:12.080586Z"
397
+ 570,"1","FAMILY_SAFE","2025-12-20T11:16:15.484336Z",570,"/data/upload/5/b1c40d0c-ec5965d57ca71e648adc70401156b743.jpg",3.151,"2025-12-20T11:16:15.484358Z"
398
+ 571,"1","SUGGESTIVE","2025-12-20T11:16:18.658159Z",571,"/data/upload/5/5c8c7c7e-ec3c4b7b7261c385c7792663a153b2dc.jpg",2.875,"2025-12-20T11:16:18.658181Z"
399
+ 572,"1","SUGGESTIVE","2025-12-20T11:16:19.912910Z",572,"/data/upload/5/c8925d60-ec2488d58f5c6f80593119f44bdb6f36.jpg",0.962,"2025-12-20T11:16:19.912934Z"
400
+ 573,"1","SUGGESTIVE","2025-12-20T11:16:21.529093Z",573,"/data/upload/5/783f692a-ec3873aa10b64f2c5c0ae4044d8dd916.jpg",1.316,"2025-12-20T11:16:21.529115Z"
401
+ 574,"1","SUGGESTIVE","2025-12-20T11:16:23.018673Z",574,"/data/upload/5/c59d6aef-ec366037d7416be3f574f23f7e0fb3ef.jpg",1.234,"2025-12-20T11:16:23.018695Z"
402
+ 575,"1","UNCERTAIN","2025-12-20T11:16:26.042777Z",575,"/data/upload/5/ba90116c-ebfda352bd5113859294aff74239faed.jpg",2.726,"2025-12-20T11:16:26.042812Z"
403
+ 576,"1","FAMILY_SAFE","2025-12-20T11:16:28.693166Z",576,"/data/upload/5/74013397-ebfe9c315f7eba7ee13ffecfbe52cab8.jpg",2.355,"2025-12-20T11:16:28.693188Z"
404
+ 577,"1","SUGGESTIVE","2025-12-20T11:16:31.044435Z",577,"/data/upload/5/2827b91c-ec1a1c97dab7c740188280a871b78251.jpg",2.062,"2025-12-20T11:16:31.044457Z"
405
+ 578,"1","SUGGESTIVE","2025-12-20T11:16:32.150600Z",578,"/data/upload/5/07efebe4-ebd3a3a173aa3985f69c95a9bbeec91a.jpg",0.811,"2025-12-20T11:16:32.150620Z"
406
+ 579,"1","SUGGESTIVE","2025-12-20T11:16:34.495508Z",579,"/data/upload/5/34018f60-ebe7ee3f3605c66f1be4eb323e3ae05f.jpg",2.053,"2025-12-20T11:16:34.495530Z"
407
+ 580,"1","SUGGESTIVE","2025-12-20T11:16:35.645933Z",580,"/data/upload/5/a2dd1244-ebe59192b6950204b3fee2c0edf9242d.jpg",0.897,"2025-12-20T11:16:35.645960Z"
408
+ 581,"1","UNCERTAIN","2025-12-20T11:16:38.122775Z",581,"/data/upload/5/670193c9-ebef8223abe988c0821aefae3c6e6e98.jpg",2.184,"2025-12-20T11:16:38.122798Z"
409
+ 582,"1","SUGGESTIVE","2025-12-20T11:16:39.382056Z",582,"/data/upload/5/c91cb641-ebf05bafa1371d6feb6aa81ea7cbbf7a.jpg",0.962,"2025-12-20T11:16:39.382081Z"
410
+ 583,"1","SUGGESTIVE","2025-12-20T11:16:40.717924Z",583,"/data/upload/5/e91af0b1-ebf0503fe32e2e3a76346007e4aaf886.jpg",1.082,"2025-12-20T11:16:40.717945Z"
411
+ 584,"1","FAMILY_SAFE","2025-12-20T11:16:42.560031Z",584,"/data/upload/5/5fddd072-ebb2b0dd48dc25f919f57ff2a2e7312a.jpg",1.529,"2025-12-20T11:16:42.560060Z"
412
+ 585,"1","UNCERTAIN","2025-12-20T11:16:47.348097Z",585,"/data/upload/5/26c7e03e-ebcf6c5f871a5dc3e6e9f035bf8fba78.jpg",4.49,"2025-12-20T11:16:47.348120Z"
413
+ 586,"1","SUGGESTIVE","2025-12-20T11:16:48.792913Z",586,"/data/upload/5/19060fc3-ebd170644a805b3966416bc6f2d40528.jpg",1.152,"2025-12-20T11:16:48.792936Z"
414
+ 587,"1","SUGGESTIVE","2025-12-20T11:16:50.003030Z",587,"/data/upload/5/6a2a26d9-eb8a6ed9fea3fd6949774e598fed9d20.jpg",0.913,"2025-12-20T11:16:50.003050Z"
415
+ 588,"1","SUGGESTIVE","2025-12-20T11:16:51.116372Z",588,"/data/upload/5/61cf0086-eb8d76f9ea022d2b18f119288e0fb083.jpg",0.818,"2025-12-20T11:16:51.116393Z"
416
+ 589,"1","SUGGESTIVE","2025-12-20T11:16:52.553391Z",589,"/data/upload/5/71c87364-eb9f10122a8e23579c8d1a2cdc0e8db4.jpg",1.141,"2025-12-20T11:16:52.553410Z"
417
+ 590,"1","SUGGESTIVE","2025-12-20T11:16:54.439366Z",590,"/data/upload/5/9eebe5b1-eb905d1b7fc7b0eac9adea12bee291bc.jpg",1.581,"2025-12-20T11:16:54.439389Z"
418
+ 591,"1","SUGGESTIVE","2025-12-20T11:16:55.809365Z",591,"/data/upload/5/b7ac5915-eb915f5d723fe6d575e7471e8130924d.jpg",1.065,"2025-12-20T11:16:55.809387Z"
419
+ 592,"1","FAMILY_SAFE","2025-12-20T11:16:57.902445Z",592,"/data/upload/5/700eea71-eb7967ec45df17fadffae1e9b84a1c03.jpg",1.838,"2025-12-20T11:16:57.902469Z"
420
+ 593,"1","SUGGESTIVE","2025-12-20T11:17:03.290332Z",593,"/data/upload/5/dd925e69-eba026d7ab6dcbf77c05e9e1fce9f98b.jpg",5.127,"2025-12-20T11:17:03.290353Z"
421
+ 594,"1","FAMILY_SAFE","2025-12-20T11:17:04.792415Z",594,"/data/upload/5/01dc90a4-eba313f10bf5953b52dc8145a668f4b1.jpg",1.253,"2025-12-20T11:17:04.792426Z"
422
+ 595,"1","FAMILY_SAFE","2025-12-20T11:17:06.088346Z",595,"/data/upload/5/49462a8c-eb3e848d5f3969eb49f10ef14db11593.jpg",1.058,"2025-12-20T11:17:06.088364Z"
423
+ 596,"1","UNCERTAIN","2025-12-20T11:17:08.374506Z",596,"/data/upload/5/84cabf94-eb46a86b864004fb56c426f3e6859869.jpg",2.047,"2025-12-20T11:17:08.374518Z"
424
+ 597,"1","SUGGESTIVE","2025-12-20T11:17:10.703608Z",597,"/data/upload/5/8d99d164-eb630bc86c8b347b6e4f3f947ef03b45.jpg",2.084,"2025-12-20T11:17:10.703628Z"
425
+ 598,"1","FAMILY_SAFE","2025-12-20T11:17:12.055943Z",598,"/data/upload/5/a5dc7a8b-eb0b4aec28838b01b635ae2d906319fd.jpg",1.095,"2025-12-20T11:17:12.055962Z"
426
+ 599,"1","SUGGESTIVE","2025-12-20T11:17:14.330023Z",599,"/data/upload/5/c998ec26-eb0fd6ae406bcbf648f37716832167b7.jpg",2.013,"2025-12-20T11:17:14.330043Z"
427
+ 600,"1","UNCERTAIN","2025-12-20T11:17:16.223352Z",600,"/data/upload/5/9a363203-eb1efa483d18843e2d34330b324e49e7.jpg",1.63,"2025-12-20T11:17:16.223375Z"
428
+ 601,"1","SUGGESTIVE","2025-12-20T11:17:18.298434Z",601,"/data/upload/5/80174771-eb2bbc40d914d047f6a15d0d1db4af9b.jpg",1.816,"2025-12-20T11:17:18.298455Z"
429
+ 602,"1","SUGGESTIVE","2025-12-20T11:17:20.449203Z",602,"/data/upload/5/da470e08-eb214a887113aeae8902116d5ebcb84a.jpg",1.891,"2025-12-20T11:17:20.449223Z"
430
+ 603,"1","UNCERTAIN","2025-12-20T11:17:22.482759Z",603,"/data/upload/5/c1369917-eb396372a0cbb497fcb259ecf9859fab.jpg",1.772,"2025-12-20T11:17:22.482780Z"
431
+ 604,"1","SUGGESTIVE","2025-12-20T11:17:23.676845Z",604,"/data/upload/5/eaf48512-eae00de851425f14cf837f6238fb3111.jpg",0.934,"2025-12-20T11:17:23.676867Z"
432
+ 605,"1","SUGGESTIVE","2025-12-20T11:17:25.074810Z",605,"/data/upload/5/3ae42af7-ea9478ccf8264c91cf5485c93fecba1b.jpg",1.109,"2025-12-20T11:17:25.074831Z"
433
+ 606,"1","FAMILY_SAFE","2025-12-20T11:17:26.367613Z",606,"/data/upload/5/990348b4-ea889002933fd0689c1bd805505d00ca.jpg",1.028,"2025-12-20T11:17:26.367637Z"
434
+ 607,"1","SUGGESTIVE","2025-12-20T11:17:27.785077Z",607,"/data/upload/5/77e2c941-eaa26e78346e1d92ee8b34a80aff9826.jpg",1.154,"2025-12-20T11:17:27.785097Z"
435
+ 608,"1","SUGGESTIVE","2025-12-20T11:17:29.276528Z",608,"/data/upload/5/775910aa-eaac5564f212f117e0ea7174b0876484.jpg",1.231,"2025-12-20T11:17:29.276546Z"
436
+ 609,"1","SUGGESTIVE","2025-12-20T11:17:30.986551Z",609,"/data/upload/5/b8405e3c-eac0ebc831eeb117fb36c86452b6c5f5.jpg",1.448,"2025-12-20T11:17:30.986569Z"
437
+ 610,"1","SUGGESTIVE","2025-12-20T11:17:32.280226Z",610,"/data/upload/5/1e5eb554-ea5d2de8ab1fd0ec4b61ed153805d638.jpg",1.031,"2025-12-20T11:17:32.280245Z"
438
+ 611,"1","SUGGESTIVE","2025-12-20T11:17:33.617114Z",611,"/data/upload/5/ee2ed958-ea6df97b08a8c96a9587abe7764f9cc3.jpg",1.069,"2025-12-20T11:17:33.617138Z"
439
+ 612,"1","SUGGESTIVE","2025-12-20T11:17:34.830280Z",612,"/data/upload/5/27bffd86-ea6fffbf1d3afbbbeea92a3c1c6deffd.jpg",0.96,"2025-12-20T11:17:34.830291Z"
440
+ 613,"1","SUGGESTIVE","2025-12-20T11:17:36.024430Z",613,"/data/upload/5/bc246849-ea71edf190810bac9c56483239eae59a.jpg",0.954,"2025-12-20T11:17:36.024452Z"
441
+ 614,"1","UNCERTAIN","2025-12-20T11:17:38.001067Z",614,"/data/upload/5/39c155ed-ea4b1f27828cbd87b0f95f1f36cd7a54.jpg",1.711,"2025-12-20T11:17:38.001089Z"
442
+ 615,"1","UNCERTAIN","2025-12-20T11:17:39.958934Z",615,"/data/upload/5/2b92f3dc-ea5380a591b6e34d1382a67221b558aa.jpg",1.693,"2025-12-20T11:17:39.958953Z"
443
+ 616,"1","UNCERTAIN","2025-12-20T11:17:42.141113Z",616,"/data/upload/5/03579438-ea1f42c6e20979a40230b242e5d6bbee.jpg",1.922,"2025-12-20T11:17:42.141136Z"
444
+ 617,"1","SUGGESTIVE","2025-12-20T11:17:47.238864Z",617,"/data/upload/5/e5da72ea-ea20b59163f3b360f62d68e4f132393b.jpg",4.806,"2025-12-20T11:17:47.238881Z"
445
+ 618,"1","UNCERTAIN","2025-12-20T11:17:49.325187Z",618,"/data/upload/5/7fce3819-ea37c94a8cb1c50c4084d4c9cc9bd177.jpg",1.798,"2025-12-20T11:17:49.325212Z"
446
+ 619,"1","UNCERTAIN","2025-12-20T11:17:51.372252Z",619,"/data/upload/5/0b24edd3-e9d77067389acfaa2897de087ec279a1.jpg",1.783,"2025-12-20T11:17:51.372275Z"
447
+ 620,"1","UNCERTAIN","2025-12-20T11:17:53.649618Z",620,"/data/upload/5/b61339af-e9e395951ba5901de8ba2b15899689ee.jpg",2.015,"2025-12-20T11:17:53.649643Z"
448
+ 621,"1","SUGGESTIVE","2025-12-20T11:17:55.332499Z",621,"/data/upload/5/bb7c935c-e9eefa0852edb5311b63d6fbf85a9815.jpg",1.416,"2025-12-20T11:17:55.332524Z"
449
+ 622,"1","SUGGESTIVE","2025-12-20T11:17:56.616158Z",622,"/data/upload/5/3bcb2655-e9f9cb6790fcb4c6960e5b834abfe72c.jpg",1.017,"2025-12-20T11:17:56.616182Z"
450
+ 623,"1","SUGGESTIVE","2025-12-20T11:17:57.786359Z",623,"/data/upload/5/630fff65-e9f0689b5df3c0bbb17ec7a670ebacb8.jpg",0.903,"2025-12-20T11:17:57.786380Z"
451
+ 624,"1","SUGGESTIVE","2025-12-20T11:17:58.867328Z",624,"/data/upload/5/3c9f8955-e9b23e6e929900bbbbb29be5affa0ae5.jpg",0.813,"2025-12-20T11:17:58.867353Z"
452
+ 625,"1","UNCERTAIN","2025-12-20T11:18:01.360483Z",625,"/data/upload/5/e2b2a6ac-e9a15368497b12a5f502151ce2babdd1.jpg",2.229,"2025-12-20T11:18:01.360506Z"
453
+ 626,"1","SUGGESTIVE","2025-12-20T11:18:02.960491Z",626,"/data/upload/5/28c4871f-e9ab035913a3f11963041ef9b89caa2e.jpg",1.347,"2025-12-20T11:18:02.960501Z"
454
+ 627,"1","SUGGESTIVE","2025-12-20T11:18:04.139209Z",627,"/data/upload/5/e41d2daa-e96c2e00fce0f439d17ad2731eb76f06.jpg",0.927,"2025-12-20T11:18:04.139229Z"
455
+ 628,"1","FAMILY_SAFE","2025-12-20T11:18:05.410684Z",628,"/data/upload/5/31a90818-e983a4f33a2035ff412231c35d7fcfa5.jpg",1.001,"2025-12-20T11:18:05.410706Z"
456
+ 629,"1","FAMILY_SAFE","2025-12-20T11:18:06.674246Z",629,"/data/upload/5/4da9491c-e95cf7d4d15184aeb5847e9e6a51e9d0.jpg",1.002,"2025-12-20T11:18:06.674269Z"
data/annotations.json ADDED
The diff for this file is too large to render. See raw diff
 
data/falcons_predictions.csv ADDED
@@ -0,0 +1,456 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ annotation_id,file_upload,actual_filename,label_studio_choice,label_0,label_1,score_0,score_1
2
+ 175,0f7d40c8-ffd86ff5fbd82d0e6eb176cbc0b83634.jpg,0f7d40c8-ffd86ff5fbd82d0e6eb176cbc0b83634.jpg,UNCERTAIN,normal,nsfw,0.9997729659080505,0.00022706740128342062
3
+ 176,abe701ef-fff11e31ec0146bd469e5e3afa14a37a.jpg,abe701ef-fff11e31ec0146bd469e5e3afa14a37a.jpg,FAMILY_SAFE,normal,nsfw,0.9992530941963196,0.0007468326948583126
4
+ 177,f3f6d9e7-ff8ba374753afc33d6efcddfa8190820.jpg,f3f6d9e7-ff8ba374753afc33d6efcddfa8190820.jpg,UNCERTAIN,normal,nsfw,0.9977607727050781,0.0022392449900507927
5
+ 178,2a71e0e5-ff8f980e673cd0ca47acd5e46a60860e.jpg,2a71e0e5-ff8f980e673cd0ca47acd5e46a60860e.jpg,UNCERTAIN,normal,nsfw,0.9959889054298401,0.004011069890111685
6
+ 179,883fb0f5-ff89d127a396bc4e269161fcb0debafc.jpg,883fb0f5-ff89d127a396bc4e269161fcb0debafc.jpg,UNCERTAIN,normal,nsfw,0.9997225403785706,0.00027748438878916204
7
+ 180,2af0302e-ff943feb34677ab7380b172f5a879061.jpg,2af0302e-ff943feb34677ab7380b172f5a879061.jpg,FAMILY_SAFE,normal,nsfw,0.9970329999923706,0.0029670321382582188
8
+ 181,00b62e8d-ff8923c82c694582614e3c6426f27d50.jpg,00b62e8d-ff8923c82c694582614e3c6426f27d50.jpg,SUGGESTIVE,nsfw,normal,0.540604829788208,0.459395170211792
9
+ 182,bc29dd51-ffa3ea1e617fc51d9f897c3651d8c58c.jpg,bc29dd51-ffa3ea1e617fc51d9f897c3651d8c58c.jpg,UNCERTAIN,normal,nsfw,0.9997908473014832,0.00020912200852762908
10
+ 183,7efcc1a9-ffb14bc253b175a8064d17ffe2c7249b.jpg,7efcc1a9-ffb14bc253b175a8064d17ffe2c7249b.jpg,FAMILY_SAFE,normal,nsfw,0.9997037053108215,0.000296269339742139
11
+ 184,1ade517e-ff5c303cb978725b41ecdc33f99a9811.jpg,1ade517e-ff5c303cb978725b41ecdc33f99a9811.jpg,UNCERTAIN,normal,nsfw,0.9994058609008789,0.0005940930568613112
12
+ 185,e90235cf-ff4ee441959276cee003489e10030787.jpg,e90235cf-ff4ee441959276cee003489e10030787.jpg,FAMILY_SAFE,normal,nsfw,0.9998548030853271,0.0001452306896680966
13
+ 186,cb00e4b8-ff57d7cdec78610cfc32857254662054.jpg,cb00e4b8-ff57d7cdec78610cfc32857254662054.jpg,SUGGESTIVE,normal,nsfw,0.9996379613876343,0.000361983897164464
14
+ 187,d140fb6b-ff42165c1c025a99db8fd3fbf47b9e8d.jpg,d140fb6b-ff42165c1c025a99db8fd3fbf47b9e8d.jpg,SUGGESTIVE,normal,nsfw,0.9991843104362488,0.0008156667463481426
15
+ 188,a1cd3b22-ff0dbc383dfd54bed44ec0583cbba777.jpg,a1cd3b22-ff0dbc383dfd54bed44ec0583cbba777.jpg,SUGGESTIVE,normal,nsfw,0.9913567304611206,0.008643229492008686
16
+ 189,ed323d8b-ff3cae8c55408c7ed67ef1daf9751319.jpg,ed323d8b-ff3cae8c55408c7ed67ef1daf9751319.jpg,SUGGESTIVE,normal,nsfw,0.9957081079483032,0.00429188646376133
17
+ 190,c8ec92d5-fee9ea29f695f6f590dbaf3ecc99351b.jpg,c8ec92d5-fee9ea29f695f6f590dbaf3ecc99351b.jpg,UNCERTAIN,normal,nsfw,0.9986482262611389,0.0013518353225663304
18
+ 191,f2c80c32-ff0a5673ea6b3139e5440728d7be66b4.jpg,f2c80c32-ff0a5673ea6b3139e5440728d7be66b4.jpg,SUGGESTIVE,normal,nsfw,0.9998561143875122,0.00014389827265404165
19
+ 192,e9b17aee-ff007a23e0caf370e590d636413628fb.jpg,e9b17aee-ff007a23e0caf370e590d636413628fb.jpg,SUGGESTIVE,normal,nsfw,0.9974243640899658,0.0025756950490176678
20
+ 193,c53b2fea-feb2e70ea41a86df9c9984df1aff49d1.jpg,c53b2fea-feb2e70ea41a86df9c9984df1aff49d1.jpg,SUGGESTIVE,normal,nsfw,0.9991050362586975,0.0008949259063228965
21
+ 194,1540c751-feb3ae09e5e5e2d27b1c6b0d75e66c73.jpg,1540c751-feb3ae09e5e5e2d27b1c6b0d75e66c73.jpg,UNCERTAIN,normal,nsfw,0.9998250603675842,0.00017495673091616482
22
+ 195,18eb5521-febafb43e0a8a5a62bd64d0e1e2c51bb.jpg,18eb5521-febafb43e0a8a5a62bd64d0e1e2c51bb.jpg,UNCERTAIN,nsfw,normal,0.6787581443786621,0.3212418854236603
23
+ 196,09c99130-fec2e3149882333a9a5a381f562f9536.jpg,09c99130-fec2e3149882333a9a5a381f562f9536.jpg,FAMILY_SAFE,normal,nsfw,0.9995145797729492,0.0004854484577663243
24
+ 197,6d3cfee1-fec30d1ce7fd3c5f8056da81cc0f56cd.jpg,6d3cfee1-fec30d1ce7fd3c5f8056da81cc0f56cd.jpg,SUGGESTIVE,normal,nsfw,0.999420166015625,0.0005798744969069958
25
+ 198,02e91ed5-fecaf071c6d469a5e9db4516cf04c34f.jpg,02e91ed5-fecaf071c6d469a5e9db4516cf04c34f.jpg,UNCERTAIN,normal,nsfw,0.997307538986206,0.0026925040874630213
26
+ 199,6084597d-fed1a27739f7fc733adfe4843185b995.jpg,6084597d-fed1a27739f7fc733adfe4843185b995.jpg,UNCERTAIN,normal,nsfw,0.9895889759063721,0.010411050170660019
27
+ 200,18699932-fe8d4f54e561bf7a76f70e6b28299d59.jpg,18699932-fe8d4f54e561bf7a76f70e6b28299d59.jpg,FAMILY_SAFE,normal,nsfw,0.9997500777244568,0.00024995882995426655
28
+ 201,759b4eb3-fe4ec0e6a0803e088352ad9cba4e969a.jpg,759b4eb3-fe4ec0e6a0803e088352ad9cba4e969a.jpg,FAMILY_SAFE,normal,nsfw,0.9990509152412415,0.0009490289958193898
29
+ 202,fd0a4064-fe4f57b1dc8f46cbd79d69ad05652ac8.jpg,fd0a4064-fe4f57b1dc8f46cbd79d69ad05652ac8.jpg,UNCERTAIN,normal,nsfw,0.9997256398200989,0.0002743340446613729
30
+ 203,722170f8-fe61bb1e7709ddb889307cd6d644bbb9.jpg,722170f8-fe61bb1e7709ddb889307cd6d644bbb9.jpg,SUGGESTIVE,normal,nsfw,0.9990665316581726,0.0009335206705145538
31
+ 204,597903c6-fe446bc03fc71ccd0559f01bebbd073d.jpg,597903c6-fe446bc03fc71ccd0559f01bebbd073d.jpg,UNCERTAIN,normal,nsfw,0.985272228717804,0.01472778432071209
32
+ 205,ded203db-fe11b6d8acc63b2819390a12a32bbd30.jpg,ded203db-fe11b6d8acc63b2819390a12a32bbd30.jpg,UNCERTAIN,normal,nsfw,0.998673677444458,0.001326378551311791
33
+ 206,72e813f5-fde81d8132b2c70f39798f11186997bd.jpg,72e813f5-fde81d8132b2c70f39798f11186997bd.jpg,FAMILY_SAFE,normal,nsfw,0.8751723170280457,0.12482769787311554
34
+ 207,6474cda9-fde879b3ab6d5f8fb99aacad817dc18f.jpg,6474cda9-fde879b3ab6d5f8fb99aacad817dc18f.jpg,FAMILY_SAFE,normal,nsfw,0.9998339414596558,0.0001660660345805809
35
+ 208,9d734426-fdfc5d73210e52e70f9c1b337c7a7423.jpg,9d734426-fdfc5d73210e52e70f9c1b337c7a7423.jpg,FAMILY_SAFE,normal,nsfw,0.999377965927124,0.0006220253999345005
36
+ 209,940a8d2a-fe06e1df8abfcc599b4edf3ceb84b767.jpg,940a8d2a-fe06e1df8abfcc599b4edf3ceb84b767.jpg,UNCERTAIN,normal,nsfw,0.9946976900100708,0.005302340257912874
37
+ 210,6cf544b3-fdcc56c858be84644a24f71ca1ecf009.jpg,6cf544b3-fdcc56c858be84644a24f71ca1ecf009.jpg,FAMILY_SAFE,normal,nsfw,0.9998241066932678,0.0001759189326548949
38
+ 211,c90492e9-fdce40a990a776a3ef934aa8eacfa0da.jpg,c90492e9-fdce40a990a776a3ef934aa8eacfa0da.jpg,FAMILY_SAFE,normal,nsfw,0.9997498393058777,0.0002501762646716088
39
+ 212,d5d56f5c-fdd0daec3624d1d7acf8048484a7efe2.jpg,d5d56f5c-fdd0daec3624d1d7acf8048484a7efe2.jpg,FAMILY_SAFE,normal,nsfw,0.9997718930244446,0.00022811919916421175
40
+ 213,1b6ade1e-fdbea88aeaa93ac7dbcb38d07b917e7d.jpg,1b6ade1e-fdbea88aeaa93ac7dbcb38d07b917e7d.jpg,UNCERTAIN,normal,nsfw,0.9995244741439819,0.0004754928813781589
41
+ 214,e7c85aca-fdc00eac708506181cc0b3018d217b97.jpg,e7c85aca-fdc00eac708506181cc0b3018d217b97.jpg,UNCERTAIN,normal,nsfw,0.9997454285621643,0.0002546043542679399
42
+ 215,6519a095-fd8eea5a65e5ef6cec86fe214c5a3cd3.jpg,6519a095-fd8eea5a65e5ef6cec86fe214c5a3cd3.jpg,SUGGESTIVE,normal,nsfw,0.9910959005355835,0.00890403613448143
43
+ 216,bdce6a65-fd918dbde3d770d03716835677e7b611.jpg,bdce6a65-fd918dbde3d770d03716835677e7b611.jpg,FAMILY_SAFE,normal,nsfw,0.999869704246521,0.0001302508608205244
44
+ 217,8ed58548-fd9371dd911d3a2099a6a652db4248b4.jpg,8ed58548-fd9371dd911d3a2099a6a652db4248b4.jpg,SUGGESTIVE,normal,nsfw,0.9998261332511902,0.00017390357970725745
45
+ 218,72f07c2b-fd94006f594a7575961947fcca9faa08.jpg,72f07c2b-fd94006f594a7575961947fcca9faa08.jpg,SUGGESTIVE,normal,nsfw,0.9692232608795166,0.030776789411902428
46
+ 219,9eb0117b-fd7f50b9d57c9384041914d1b4cdd77c.jpg,9eb0117b-fd7f50b9d57c9384041914d1b4cdd77c.jpg,FAMILY_SAFE,normal,nsfw,0.9997332692146301,0.0002667715307325125
47
+ 220,e243712d-fd71a7a81dea0c9fc195cf6d6f32b0a9.jpg,e243712d-fd71a7a81dea0c9fc195cf6d6f32b0a9.jpg,FAMILY_SAFE,normal,nsfw,0.999825656414032,0.000174321947270073
48
+ 221,3198b794-fd826bc213d0273afbb83b3c4aec1adc.jpg,3198b794-fd826bc213d0273afbb83b3c4aec1adc.jpg,FAMILY_SAFE,normal,nsfw,0.9998593330383301,0.00014069890312384814
49
+ 222,75ee25dc-fd71396788725bb988c9cd3689fcde68.jpg,75ee25dc-fd71396788725bb988c9cd3689fcde68.jpg,FAMILY_SAFE,normal,nsfw,0.9998794794082642,0.00012045811308780685
50
+ 223,3dade0ea-fd3e2ce0703f9c027862f5a79c788b56.jpg,3dade0ea-fd3e2ce0703f9c027862f5a79c788b56.jpg,UNCERTAIN,normal,nsfw,0.9997287392616272,0.0002712743589654565
51
+ 224,13a4e537-fd4bbf6927a13c5289dfa509b7a4078b.jpg,13a4e537-fd4bbf6927a13c5289dfa509b7a4078b.jpg,FAMILY_SAFE,normal,nsfw,0.9997079968452454,0.0002919857215601951
52
+ 225,afddcafe-fd4da06b37fbae5380cf0d7fa0678103.jpg,afddcafe-fd4da06b37fbae5380cf0d7fa0678103.jpg,SUGGESTIVE,normal,nsfw,0.9938650727272034,0.006134872790426016
53
+ 226,84acb822-fd4eb64e7f0ca587d908435fb95b2909.jpg,84acb822-fd4eb64e7f0ca587d908435fb95b2909.jpg,FAMILY_SAFE,normal,nsfw,0.9997391104698181,0.00026090958272106946
54
+ 227,022b4f3e-fd39709199d9f45147c183dee3c5d697.jpg,022b4f3e-fd39709199d9f45147c183dee3c5d697.jpg,FAMILY_SAFE,normal,nsfw,0.9998074173927307,0.00019258396059740335
55
+ 228,d4ccee96-fd24b551b4531ae14433a7950eaa85b3.jpg,d4ccee96-fd24b551b4531ae14433a7950eaa85b3.jpg,SUGGESTIVE,normal,nsfw,0.9998704195022583,0.00012956224964000285
56
+ 229,3a78a22b-fd38a720ae06640dd25aaf9c11dd9672.jpg,3a78a22b-fd38a720ae06640dd25aaf9c11dd9672.jpg,FAMILY_SAFE,normal,nsfw,0.9983555674552917,0.0016443702625110745
57
+ 230,6d307a2e-fd2268af5eafa750a7e5a3a521ff7fdd.jpg,6d307a2e-fd2268af5eafa750a7e5a3a521ff7fdd.jpg,UNCERTAIN,normal,nsfw,0.9991208910942078,0.000879096332937479
58
+ 231,b224fc67-fd150330c8a62cd9ab45e51f4de6969f.jpg,b224fc67-fd150330c8a62cd9ab45e51f4de6969f.jpg,SUGGESTIVE,normal,nsfw,0.9981344938278198,0.0018654720624908805
59
+ 232,6da2441b-fcf901727f0b68c35c55f5734189c1f0.jpg,6da2441b-fcf901727f0b68c35c55f5734189c1f0.jpg,UNCERTAIN,normal,nsfw,0.9996097683906555,0.00039020637632347643
60
+ 233,ef1cbf46-fd08dc2a899b79496087b34b88b82f2d.jpg,ef1cbf46-fd08dc2a899b79496087b34b88b82f2d.jpg,SUGGESTIVE,normal,nsfw,0.9989173412322998,0.001082667731679976
61
+ 234,d1a55b96-fca9c570e98556bb8c40835c55cba67d.jpg,d1a55b96-fca9c570e98556bb8c40835c55cba67d.jpg,SUGGESTIVE,normal,nsfw,0.9889764189720154,0.011023531667888165
62
+ 235,fc1397fa-fcbbcf0191ab925aa67604ff0c7f141e.jpg,fc1397fa-fcbbcf0191ab925aa67604ff0c7f141e.jpg,SUGGESTIVE,normal,nsfw,0.9978255033493042,0.0021744840778410435
63
+ 236,74454c95-fcbf1a2490d9531efc33322b2702912f.jpg,74454c95-fcbf1a2490d9531efc33322b2702912f.jpg,SUGGESTIVE,normal,nsfw,0.9995723366737366,0.0004276306426618248
64
+ 237,b7206afa-fcc50f8b1362042b4acad74a4b4ae4ed.jpg,b7206afa-fcc50f8b1362042b4acad74a4b4ae4ed.jpg,FAMILY_SAFE,normal,nsfw,0.9998793601989746,0.00012062559835612774
65
+ 238,64be13ce-fc813fdb8cb41651b9b4d5141fcd386a.jpg,64be13ce-fc813fdb8cb41651b9b4d5141fcd386a.jpg,SUGGESTIVE,normal,nsfw,0.9902662634849548,0.009733765386044979
66
+ 239,d5c64c7c-fca4fe8aa6a350ab9680692ebbe1e13c.jpg,d5c64c7c-fca4fe8aa6a350ab9680692ebbe1e13c.jpg,SUGGESTIVE,normal,nsfw,0.9657689332962036,0.034231096506118774
67
+ 240,8af150d5-fca025dcf76a43feae0bf2e8e9a6c1e2.jpg,8af150d5-fca025dcf76a43feae0bf2e8e9a6c1e2.jpg,SUGGESTIVE,normal,nsfw,0.9997478127479553,0.00025219659437425435
68
+ 241,0df4b27b-fc6fefe3f417fdbfd91da8cffe59f7db.jpg,0df4b27b-fc6fefe3f417fdbfd91da8cffe59f7db.jpg,SUGGESTIVE,normal,nsfw,0.9997876286506653,0.00021238009503576905
69
+ 242,a90c3b4e-fc39f11aab8aae4bb03057701a7b8312.jpg,a90c3b4e-fc39f11aab8aae4bb03057701a7b8312.jpg,SUGGESTIVE,normal,nsfw,0.9993686079978943,0.0006314468337222934
70
+ 243,3c42d798-fc74b1fc4095a324b1f1ca1ac322278d.jpg,3c42d798-fc74b1fc4095a324b1f1ca1ac322278d.jpg,FAMILY_SAFE,normal,nsfw,0.9997140765190125,0.0002858526713680476
71
+ 244,0bfb63b2-fc644a2683a976d8391e70f88408468b.jpg,0bfb63b2-fc644a2683a976d8391e70f88408468b.jpg,FAMILY_SAFE,normal,nsfw,0.9951044321060181,0.0048955390229821205
72
+ 245,b0091e81-fbf4b07fffa61fa2650649ec19debf39.jpg,b0091e81-fbf4b07fffa61fa2650649ec19debf39.jpg,FAMILY_SAFE,normal,nsfw,0.9922400712966919,0.0077599151991307735
73
+ 246,6faa5147-fbf13c899fbdd8e750dc46cc284249c5.jpg,6faa5147-fbf13c899fbdd8e750dc46cc284249c5.jpg,SUGGESTIVE,normal,nsfw,0.9998651742935181,0.00013476356980390847
74
+ 247,bcfeea6a-fc1baf625d3e36ca4c5a29521f72525e.jpg,bcfeea6a-fc1baf625d3e36ca4c5a29521f72525e.jpg,FAMILY_SAFE,normal,nsfw,0.9995433688163757,0.0004566544957924634
75
+ 248,0d5b1538-fc21d81fb821d214b4f4f1d7f553475d.jpg,0d5b1538-fc21d81fb821d214b4f4f1d7f553475d.jpg,FAMILY_SAFE,normal,nsfw,0.9997746348381042,0.0002253740094602108
76
+ 249,cfb6f5d7-fc07723d545d098aafab4aeb7d2e65a3.jpg,cfb6f5d7-fc07723d545d098aafab4aeb7d2e65a3.jpg,UNCERTAIN,normal,nsfw,0.999457061290741,0.000542939524166286
77
+ 250,43a803bd-fbcddca8eb614e2e2076c1128d30fa58.jpg,43a803bd-fbcddca8eb614e2e2076c1128d30fa58.jpg,SUGGESTIVE,normal,nsfw,0.9997774958610535,0.00022255742806009948
78
+ 251,930fa681-fbd64159d7d027262f736408659d40cb.jpg,930fa681-fbd64159d7d027262f736408659d40cb.jpg,FAMILY_SAFE,normal,nsfw,0.9990699887275696,0.0009300094679929316
79
+ 252,c884f2e6-fbb763c6f6f858fdfc270f3f3bda1eac.jpg,c884f2e6-fbb763c6f6f858fdfc270f3f3bda1eac.jpg,SUGGESTIVE,normal,nsfw,0.9953006505966187,0.004699346609413624
80
+ 253,b3f73152-fbc604a00ac5d9d6a73cec8789a75d0c.jpg,b3f73152-fbc604a00ac5d9d6a73cec8789a75d0c.jpg,FAMILY_SAFE,normal,nsfw,0.993653416633606,0.0063466038554906845
81
+ 254,f3e719e9-fbc9929373c24b1afd9523aa5253a594.jpg,f3e719e9-fbc9929373c24b1afd9523aa5253a594.jpg,SUGGESTIVE,normal,nsfw,0.9996848106384277,0.00031520574702881277
82
+ 255,ac2b938f-fbca15037c332d6e9e658e2129217794.jpg,ac2b938f-fbca15037c332d6e9e658e2129217794.jpg,SUGGESTIVE,normal,nsfw,0.9951456189155579,0.00485434802249074
83
+ 256,e0092f87-fb6ad7084b95e0bb2eb9575082907662.jpg,e0092f87-fb6ad7084b95e0bb2eb9575082907662.jpg,SUGGESTIVE,normal,nsfw,0.9990241527557373,0.000975856208242476
84
+ 257,efd3b12b-fb7ba81d49347796a797d1322a64cb71.jpg,efd3b12b-fb7ba81d49347796a797d1322a64cb71.jpg,SUGGESTIVE,normal,nsfw,0.9998902082443237,0.0001097766580642201
85
+ 258,74426174-fb701d0e6a714179959ac8e1e4e2cb88.jpg,74426174-fb701d0e6a714179959ac8e1e4e2cb88.jpg,FAMILY_SAFE,normal,nsfw,0.9997884631156921,0.00021158819436095655
86
+ 259,68adaf6f-fb61755f0c2afaafdd9aa36f7632cbe5.jpg,68adaf6f-fb61755f0c2afaafdd9aa36f7632cbe5.jpg,SUGGESTIVE,normal,nsfw,0.9869140982627869,0.01308595109730959
87
+ 260,c61c6042-fb607386dd384e6b0d53ef878bbffc55.jpg,c61c6042-fb607386dd384e6b0d53ef878bbffc55.jpg,FAMILY_SAFE,normal,nsfw,0.9994868040084839,0.0005132092628628016
88
+ 261,7ec3bcbe-fb2e1bdb34ace56b99befc2547a8b83d.jpg,7ec3bcbe-fb2e1bdb34ace56b99befc2547a8b83d.jpg,FAMILY_SAFE,normal,nsfw,0.9998151659965515,0.00018488273781258613
89
+ 262,bec475e6-fb3c593276f0f040a7450ca213d97882.jpg,bec475e6-fb3c593276f0f040a7450ca213d97882.jpg,FAMILY_SAFE,normal,nsfw,0.9996404647827148,0.00035952351754531264
90
+ 263,966460f7-fb50d0f85eb7e491722e734b961926f0.jpg,966460f7-fb50d0f85eb7e491722e734b961926f0.jpg,FAMILY_SAFE,normal,nsfw,0.9993305206298828,0.0006695562624372542
91
+ 264,243861f5-fb468ddeda48f68ec3539bebe07b92b4.jpg,243861f5-fb468ddeda48f68ec3539bebe07b92b4.jpg,FAMILY_SAFE,normal,nsfw,0.9998698234558105,0.00013020416372455657
92
+ 265,54045990-fb1c02d4c50a59be3fe3cb249de403e0.jpg,54045990-fb1c02d4c50a59be3fe3cb249de403e0.jpg,SUGGESTIVE,normal,nsfw,0.986099362373352,0.013900673016905785
93
+ 266,7439530f-faf1f5d9d6e51a84ce632df317dd5c5c.jpg,7439530f-faf1f5d9d6e51a84ce632df317dd5c5c.jpg,UNCERTAIN,normal,nsfw,0.9969670176506042,0.0030329835135489702
94
+ 267,e0eec550-faf27f9511974b5ef529ba718677c5f4.jpg,e0eec550-faf27f9511974b5ef529ba718677c5f4.jpg,UNCERTAIN,normal,nsfw,0.9993395209312439,0.00066045590210706
95
+ 268,1101ce4b-fab7821aae25aff865b20b0d33d86900.jpg,1101ce4b-fab7821aae25aff865b20b0d33d86900.jpg,FAMILY_SAFE,normal,nsfw,0.9998095631599426,0.00019051322306040674
96
+ 269,26464718-fac69b44cccb94236c9f905bed46158f.jpg,26464718-fac69b44cccb94236c9f905bed46158f.jpg,FAMILY_SAFE,normal,nsfw,0.9996384382247925,0.00036152900429442525
97
+ 270,d588345d-fad53b443bc3e52bada85783afdac562.jpg,d588345d-fad53b443bc3e52bada85783afdac562.jpg,FAMILY_SAFE,normal,nsfw,0.9911034107208252,0.008896546438336372
98
+ 271,7f1fa2e7-fad69c88bcef4434a55b3bf3854b3e56.jpg,7f1fa2e7-fad69c88bcef4434a55b3bf3854b3e56.jpg,UNCERTAIN,normal,nsfw,0.9998892545700073,0.00011075734801124781
99
+ 272,717afd8f-fa6ef41aabda28f51249407ce46a827e.jpg,717afd8f-fa6ef41aabda28f51249407ce46a827e.jpg,FAMILY_SAFE,normal,nsfw,0.9992254972457886,0.0007745388429611921
100
+ 273,191a25a2-fa7b42eb84363adcd60082a3a7f02f84.jpg,191a25a2-fa7b42eb84363adcd60082a3a7f02f84.jpg,UNCERTAIN,normal,nsfw,0.9753845930099487,0.024615352973341942
101
+ 274,41febcdf-fa9e77f0788145d7ac42edcffb6e9dee.jpg,41febcdf-fa9e77f0788145d7ac42edcffb6e9dee.jpg,FAMILY_SAFE,normal,nsfw,0.9998276233673096,0.00017234891129191965
102
+ 275,4bb4ff8b-fa9f2688e1b4e92538569ecb9efecf2e.jpg,4bb4ff8b-fa9f2688e1b4e92538569ecb9efecf2e.jpg,UNCERTAIN,normal,nsfw,0.9995473027229309,0.000452632230008021
103
+ 276,12aefe0a-fa87c0f54b8cb07a14fc311c369e9a4c.jpg,12aefe0a-fa87c0f54b8cb07a14fc311c369e9a4c.jpg,UNCERTAIN,normal,nsfw,0.9997121691703796,0.00028786665643565357
104
+ 277,0f927896-fa94a466d4178dcd4c762f7567c11147.jpg,0f927896-fa94a466d4178dcd4c762f7567c11147.jpg,SUGGESTIVE,normal,nsfw,0.9997789263725281,0.00022108960547484457
105
+ 278,3b82e875-faa13416b0d8d2adc2b6815dd1e6c82d.jpg,3b82e875-faa13416b0d8d2adc2b6815dd1e6c82d.jpg,FAMILY_SAFE,normal,nsfw,0.9997296929359436,0.00027034926461055875
106
+ 279,7a5551c7-fa5b56c4e382fd4dca384daf1768acb4.jpg,7a5551c7-fa5b56c4e382fd4dca384daf1768acb4.jpg,SUGGESTIVE,normal,nsfw,0.9997959733009338,0.00020401085203047842
107
+ 280,abf1e90d-fa5c6d304163052761d4453c693c202d.jpg,abf1e90d-fa5c6d304163052761d4453c693c202d.jpg,FAMILY_SAFE,normal,nsfw,0.9998476505279541,0.00015236144827213138
108
+ 281,150e925a-fa6a15e903e7949093f4ec11fcffdb01.jpg,150e925a-fa6a15e903e7949093f4ec11fcffdb01.jpg,UNCERTAIN,normal,nsfw,0.999750554561615,0.0002493993961252272
109
+ 282,76aa5a7e-fa41e4a96249c0b8ed90389733c081d8.jpg,76aa5a7e-fa41e4a96249c0b8ed90389733c081d8.jpg,SUGGESTIVE,normal,nsfw,0.9998562335968018,0.00014372151053976268
110
+ 283,891276e7-fa63fcd0e11eb612b2c8f1ade43de7c8.jpg,891276e7-fa63fcd0e11eb612b2c8f1ade43de7c8.jpg,SUGGESTIVE,normal,nsfw,0.9962157607078552,0.0037842097226530313
111
+ 284,0fea6f76-fa412fb78ec94ab051ac0880e255a897.jpg,0fea6f76-fa412fb78ec94ab051ac0880e255a897.jpg,FAMILY_SAFE,normal,nsfw,0.9998717308044434,0.0001282975572394207
112
+ 285,7cb410fd-fa1a50f4102b66555a1a05afa9ddbf3c.jpg,7cb410fd-fa1a50f4102b66555a1a05afa9ddbf3c.jpg,UNCERTAIN,normal,nsfw,0.9993300437927246,0.0006699986406601965
113
+ 286,907cb3ad-fa1dab55d34f1c7140ea41a1b3ab5eae.jpg,907cb3ad-fa1dab55d34f1c7140ea41a1b3ab5eae.jpg,UNCERTAIN,normal,nsfw,0.9992107152938843,0.0007892599678598344
114
+ 287,bf824357-fa2c514037f31c0ab98d66373d371e3a.jpg,bf824357-fa2c514037f31c0ab98d66373d371e3a.jpg,FAMILY_SAFE,normal,nsfw,0.9998695850372314,0.000130453088786453
115
+ 288,f953d2e3-f9f74d590b0f4d8da8ba20a07bc2a596.jpg,f953d2e3-f9f74d590b0f4d8da8ba20a07bc2a596.jpg,FAMILY_SAFE,normal,nsfw,0.9996881484985352,0.0003119299071840942
116
+ 289,db2c891b-f9fc35243c2c7592c2d5858be342a34d.jpg,db2c891b-f9fc35243c2c7592c2d5858be342a34d.jpg,FAMILY_SAFE,normal,nsfw,0.999743640422821,0.00025635765632614493
117
+ 290,53bd404d-fa068c5e8fe813fbb1d90b5a0744e172.jpg,53bd404d-fa068c5e8fe813fbb1d90b5a0744e172.jpg,UNCERTAIN,normal,nsfw,0.999733030796051,0.00026693433756008744
118
+ 291,a23fc1cb-fa075d603e631d04c9871dbb00ed0a14.jpg,a23fc1cb-fa075d603e631d04c9871dbb00ed0a14.jpg,SUGGESTIVE,normal,nsfw,0.9997664093971252,0.0002335895405849442
119
+ 292,ee0e3f1d-fa1607fba97dd47d889e0c8eb0a82624.jpg,ee0e3f1d-fa1607fba97dd47d889e0c8eb0a82624.jpg,SUGGESTIVE,normal,nsfw,0.9997625946998596,0.00023744819918647408
120
+ 293,3aef96bb-f9d6c4a53c12013b5bbb6e830275486e.jpg,3aef96bb-f9d6c4a53c12013b5bbb6e830275486e.jpg,SUGGESTIVE,normal,nsfw,0.9998776912689209,0.00012230630090925843
121
+ 294,9f665793-f9ea859c158d6cece283b619afdf2f49.jpg,9f665793-f9ea859c158d6cece283b619afdf2f49.jpg,SUGGESTIVE,normal,nsfw,0.9998897314071655,0.00011029541201423854
122
+ 295,db0aaa30-f9a1f16e76e3adad3ce2ed9fe0c7a03f.jpg,db0aaa30-f9a1f16e76e3adad3ce2ed9fe0c7a03f.jpg,UNCERTAIN,normal,nsfw,0.9998188614845276,0.0001811861147871241
123
+ 296,03abd3cc-f9aaa2af6fea2261610e48ed5e11ede4.jpg,03abd3cc-f9aaa2af6fea2261610e48ed5e11ede4.jpg,UNCERTAIN,normal,nsfw,0.9996980428695679,0.0003019814030267298
124
+ 297,d741a3e7-f9b3403712c87698322446ef48a0027c.jpg,d741a3e7-f9b3403712c87698322446ef48a0027c.jpg,SUGGESTIVE,normal,nsfw,0.9936589598655701,0.006341090425848961
125
+ 298,b502117c-f9bd44609a914f7aabd3a901d457b1e7.jpg,b502117c-f9bd44609a914f7aabd3a901d457b1e7.jpg,SUGGESTIVE,nsfw,normal,0.9648807644844055,0.035119153559207916
126
+ 299,96ba7ff4-f984b6e28aa8e0e13f71bd41a8c65194.jpg,96ba7ff4-f984b6e28aa8e0e13f71bd41a8c65194.jpg,SUGGESTIVE,normal,nsfw,0.9775092601776123,0.022490795701742172
127
+ 300,85f90f88-f96b6fc62dadba4eb00b5cfaa1168b87.jpg,85f90f88-f96b6fc62dadba4eb00b5cfaa1168b87.jpg,FAMILY_SAFE,normal,nsfw,0.9998483657836914,0.0001515850017312914
128
+ 301,32e49293-f96bffb22c42bd3beb968d5ff5583c6b.jpg,32e49293-f96bffb22c42bd3beb968d5ff5583c6b.jpg,SUGGESTIVE,normal,nsfw,0.9995248317718506,0.00047522177919745445
129
+ 302,263d89d9-f96c4c07dcded0f0fd1aa150a693a181.jpg,263d89d9-f96c4c07dcded0f0fd1aa150a693a181.jpg,FAMILY_SAFE,normal,nsfw,0.9998806715011597,0.00011933724454138428
130
+ 303,78e8d1c7-f96c7473c85142a222056be7c7759184.jpg,78e8d1c7-f96c7473c85142a222056be7c7759184.jpg,SUGGESTIVE,normal,nsfw,0.9996101260185242,0.0003899533476214856
131
+ 304,0fc4362d-f9610ac04fe21d9bd96689b8c6ae1669.jpg,0fc4362d-f9610ac04fe21d9bd96689b8c6ae1669.jpg,FAMILY_SAFE,normal,nsfw,0.9996802806854248,0.0003197768528480083
132
+ 305,24f3bf36-f9633749641995381ff42d72352bafe2.jpg,24f3bf36-f9633749641995381ff42d72352bafe2.jpg,UNCERTAIN,normal,nsfw,0.9978522062301636,0.0021477804984897375
133
+ 306,3216e20d-f93c3f8af10c70801ce921842c77afc4.jpg,3216e20d-f93c3f8af10c70801ce921842c77afc4.jpg,UNCERTAIN,normal,nsfw,0.9602324366569519,0.039767488837242126
134
+ 307,93bfe360-f95143e4ae1515b8bf5c2d813aa36bbc.jpg,93bfe360-f95143e4ae1515b8bf5c2d813aa36bbc.jpg,SUGGESTIVE,normal,nsfw,0.999043881893158,0.0009561094339005649
135
+ 308,0a08bf3b-f954833a10de7c149ac73c5b4af4c189.jpg,0a08bf3b-f954833a10de7c149ac73c5b4af4c189.jpg,FAMILY_SAFE,normal,nsfw,0.9998812675476074,0.00011877575161634013
136
+ 309,a54eda5e-f8fdf05663173fa7dc689333e3f21f23.jpg,a54eda5e-f8fdf05663173fa7dc689333e3f21f23.jpg,SUGGESTIVE,normal,nsfw,0.9991862177848816,0.0008137212134897709
137
+ 310,29f522c1-f91a65be37a0e49d78ac4f6bc0cfcb61.jpg,29f522c1-f91a65be37a0e49d78ac4f6bc0cfcb61.jpg,FAMILY_SAFE,normal,nsfw,0.9990737438201904,0.0009262749226763844
138
+ 311,43ccd6b7-f8b2c595800cb08b05b4f2503fdbbced.jpg,43ccd6b7-f8b2c595800cb08b05b4f2503fdbbced.jpg,SUGGESTIVE,normal,nsfw,0.9903642535209656,0.009635809808969498
139
+ 312,c7f29f62-f8b38d085dc15913e26ed1580d0cb644.jpg,c7f29f62-f8b38d085dc15913e26ed1580d0cb644.jpg,UNCERTAIN,normal,nsfw,0.9997991919517517,0.0002008238952839747
140
+ 313,ca35d72e-f8c8ee06b8b818d1f0f5229014ee8760.jpg,ca35d72e-f8c8ee06b8b818d1f0f5229014ee8760.jpg,UNCERTAIN,normal,nsfw,0.9824240803718567,0.01757584512233734
141
+ 314,65120b69-f8ee23b284b41157bb5b9eb488cf5828.jpg,65120b69-f8ee23b284b41157bb5b9eb488cf5828.jpg,SUGGESTIVE,normal,nsfw,0.9984427094459534,0.0015573232667520642
142
+ 315,4abc60a4-f8a72d3f92f7e3793a093556c5b6b446.jpg,4abc60a4-f8a72d3f92f7e3793a093556c5b6b446.jpg,SUGGESTIVE,normal,nsfw,0.9984434247016907,0.0015565553912892938
143
+ 316,ee55d94c-f8a860d078da463b28618029d547eca0.jpg,ee55d94c-f8a860d078da463b28618029d547eca0.jpg,SUGGESTIVE,normal,nsfw,0.9984941482543945,0.001505902037024498
144
+ 317,42ea7be6-f8a950c61b1b181a99bb6837f76ddcf5.jpg,42ea7be6-f8a950c61b1b181a99bb6837f76ddcf5.jpg,SUGGESTIVE,normal,nsfw,0.8773965835571289,0.12260346859693527
145
+ 318,2b96cec7-f87b6da37656aef1c82f6841cdfd216a.jpg,2b96cec7-f87b6da37656aef1c82f6841cdfd216a.jpg,FAMILY_SAFE,normal,nsfw,0.9998650550842285,0.00013486770330928266
146
+ 319,a4651f0f-f8714d6a5bafd4d86377bf04957f37e5.jpg,a4651f0f-f8714d6a5bafd4d86377bf04957f37e5.jpg,SUGGESTIVE,normal,nsfw,0.9695289731025696,0.030470989644527435
147
+ 320,fee5f161-f8856cf1b3bd39861cb9f95337cd0992.jpg,fee5f161-f8856cf1b3bd39861cb9f95337cd0992.jpg,FAMILY_SAFE,normal,nsfw,0.9998781681060791,0.00012184139632154256
148
+ 321,26999a9e-f8869ae287068ce36b4b05663da6713a.jpg,26999a9e-f8869ae287068ce36b4b05663da6713a.jpg,FAMILY_SAFE,normal,nsfw,0.9998818635940552,0.00011806297698058188
149
+ 322,2d689dc9-f852dde27ecdc40533bb40683087f7e1.jpg,2d689dc9-f852dde27ecdc40533bb40683087f7e1.jpg,UNCERTAIN,normal,nsfw,0.9998548030853271,0.0001451258867746219
150
+ 323,207cc31f-f86351d67e2629dc35f1e524915fcd11.jpg,207cc31f-f86351d67e2629dc35f1e524915fcd11.jpg,SUGGESTIVE,normal,nsfw,0.9993031024932861,0.000696860603056848
151
+ 324,f3898f2e-f8447631bc00c8f2467b1a20ee6bfa78.jpg,f3898f2e-f8447631bc00c8f2467b1a20ee6bfa78.jpg,UNCERTAIN,normal,nsfw,0.9997257590293884,0.000274246180197224
152
+ 325,8cb018af-f8542037683b99dbc67c7f7d6c5a46b3.jpg,8cb018af-f8542037683b99dbc67c7f7d6c5a46b3.jpg,UNCERTAIN,normal,nsfw,0.9981718063354492,0.00182823627255857
153
+ 326,5d6063fc-f822f1d61d47f66997ce6f86c974a4a4.jpg,5d6063fc-f822f1d61d47f66997ce6f86c974a4a4.jpg,FAMILY_SAFE,normal,nsfw,0.9998130202293396,0.00018702170928008854
154
+ 327,57bec3b8-f8222b4da2ca05b7b639120cac5f92f2.jpg,57bec3b8-f8222b4da2ca05b7b639120cac5f92f2.jpg,SUGGESTIVE,normal,nsfw,0.9990129470825195,0.000986975384876132
155
+ 328,918752f9-f7e4163d39bf966f1d403bfcf469cc5f.jpg,918752f9-f7e4163d39bf966f1d403bfcf469cc5f.jpg,UNCERTAIN,normal,nsfw,0.9995145797729492,0.0004854544240515679
156
+ 329,bdce8a23-f7f267f10da481cbc97981f022b36a07.jpg,bdce8a23-f7f267f10da481cbc97981f022b36a07.jpg,SUGGESTIVE,normal,nsfw,0.9884392619132996,0.011560764163732529
157
+ 330,d9e26b6c-f7de775f4820d021c70c42e8785c047b.jpg,d9e26b6c-f7de775f4820d021c70c42e8785c047b.jpg,SUGGESTIVE,normal,nsfw,0.9781965613365173,0.02180345170199871
158
+ 331,654d822f-f7e1c87ca29b75a4e59263db1e0f59a1.jpg,654d822f-f7e1c87ca29b75a4e59263db1e0f59a1.jpg,UNCERTAIN,normal,nsfw,0.9995540976524353,0.00044591561891138554
159
+ 332,13f55350-f7c55782f457e6c3c4a17c4f4254a946.jpg,13f55350-f7c55782f457e6c3c4a17c4f4254a946.jpg,FAMILY_SAFE,normal,nsfw,0.9995529055595398,0.0004470178682822734
160
+ 333,bf4fd201-f7aa8582cc615c5efc747a723ed54f9e.jpg,bf4fd201-f7aa8582cc615c5efc747a723ed54f9e.jpg,UNCERTAIN,normal,nsfw,0.9998310804367065,0.00016887497622519732
161
+ 334,6520255c-f79bc54aa05611d22b65098a11e71a34.jpg,6520255c-f79bc54aa05611d22b65098a11e71a34.jpg,UNCERTAIN,normal,nsfw,0.9873402714729309,0.012659757398068905
162
+ 335,e7695c72-f7761769f7463d55a2df9300c743a324.jpg,e7695c72-f7761769f7463d55a2df9300c743a324.jpg,UNCERTAIN,normal,nsfw,0.996834933757782,0.0031650972086936235
163
+ 336,681dcc99-f77695115dd9a221c2239aece214b49e.jpg,681dcc99-f77695115dd9a221c2239aece214b49e.jpg,UNCERTAIN,normal,nsfw,0.9998076558113098,0.00019238794629927725
164
+ 337,bc15263c-f745fcf48c946c9d4393fd48f4cffc0e.jpg,bc15263c-f745fcf48c946c9d4393fd48f4cffc0e.jpg,SUGGESTIVE,normal,nsfw,0.9814505577087402,0.018549490720033646
165
+ 338,88c7b383-f7303e5b824a66239e6afcd87a8ef62f.jpg,88c7b383-f7303e5b824a66239e6afcd87a8ef62f.jpg,UNCERTAIN,normal,nsfw,0.9998843669891357,0.00011559967970242724
166
+ 339,9342d436-f73693da56901519a595fead5f85d069.jpg,9342d436-f73693da56901519a595fead5f85d069.jpg,SUGGESTIVE,normal,nsfw,0.9998339414596558,0.00016600285016465932
167
+ 340,1bfa81bf-f71e69c1823525251dc2201172364595.jpg,1bfa81bf-f71e69c1823525251dc2201172364595.jpg,SUGGESTIVE,normal,nsfw,0.9996392726898193,0.00036067768814973533
168
+ 341,37fbd106-f72a254e0142a25852937f68f91eeff0.jpg,37fbd106-f72a254e0142a25852937f68f91eeff0.jpg,FAMILY_SAFE,normal,nsfw,0.9998490810394287,0.00015092763351276517
169
+ 342,75ec4326-f6f57e02e3025fda7e6587ada129b5da.jpg,75ec4326-f6f57e02e3025fda7e6587ada129b5da.jpg,UNCERTAIN,normal,nsfw,0.9996010661125183,0.00039896275848150253
170
+ 343,112d370c-f6e10f65554a282ad88561eb6606b673.jpg,112d370c-f6e10f65554a282ad88561eb6606b673.jpg,UNCERTAIN,normal,nsfw,0.9995631575584412,0.0004368835943751037
171
+ 344,258f99f7-f6cc5af7cdd7d677b39960916ddce332.jpg,258f99f7-f6cc5af7cdd7d677b39960916ddce332.jpg,FAMILY_SAFE,normal,nsfw,0.9987820982933044,0.0012178717879578471
172
+ 345,e654ed6f-f6a9eed8dbdaaebe8483cb023b1cc155.jpg,e654ed6f-f6a9eed8dbdaaebe8483cb023b1cc155.jpg,SUGGESTIVE,normal,nsfw,0.9922598004341125,0.007740158587694168
173
+ 346,32c60d49-f6afce2e8ed7f791361d5f859faf6f93.jpg,32c60d49-f6afce2e8ed7f791361d5f859faf6f93.jpg,SUGGESTIVE,normal,nsfw,0.999648928642273,0.00035101932007819414
174
+ 347,8e037415-f6b1bdcd5cc1123f61514494633c0261.jpg,8e037415-f6b1bdcd5cc1123f61514494633c0261.jpg,FAMILY_SAFE,normal,nsfw,0.9997624754905701,0.00023753425921313465
175
+ 348,1a95de13-f6a20f3450549f295c9d440e3b50fe4b.jpg,1a95de13-f6a20f3450549f295c9d440e3b50fe4b.jpg,SUGGESTIVE,normal,nsfw,0.9996700286865234,0.0003299415693618357
176
+ 349,d8e036ec-f69ba433d87943ba7fe96bdee75c0633.jpg,d8e036ec-f69ba433d87943ba7fe96bdee75c0633.jpg,SUGGESTIVE,normal,nsfw,0.9985595345497131,0.0014404255198314786
177
+ 350,150cadee-f6913caa3c66a906611cd76004dc0e89.jpg,150cadee-f6913caa3c66a906611cd76004dc0e89.jpg,FAMILY_SAFE,normal,nsfw,0.999876856803894,0.00012310734018683434
178
+ 351,d45cdae6-f69459f653bf0a475f7003c64ad87484.jpg,d45cdae6-f69459f653bf0a475f7003c64ad87484.jpg,SUGGESTIVE,normal,nsfw,0.9878225922584534,0.012177384458482265
179
+ 352,3ba7cebd-f67d4c2318dfb10031f4d3a40e767467.jpg,3ba7cebd-f67d4c2318dfb10031f4d3a40e767467.jpg,UNCERTAIN,normal,nsfw,0.9996795654296875,0.00032041341182775795
180
+ 353,b947afc5-f68da9a3284e87b939e43ed78c2ba697.jpg,b947afc5-f68da9a3284e87b939e43ed78c2ba697.jpg,SUGGESTIVE,normal,nsfw,0.9995492100715637,0.0004507983394432813
181
+ 354,548c342e-f6555d7bd2ce56360984e39d06eb6d3e.jpg,548c342e-f6555d7bd2ce56360984e39d06eb6d3e.jpg,SUGGESTIVE,normal,nsfw,0.999617338180542,0.0003826588799711317
182
+ 355,2d8b3b40-f6502184b0f514712ec44e93e4cf38ed.jpg,2d8b3b40-f6502184b0f514712ec44e93e4cf38ed.jpg,SUGGESTIVE,normal,nsfw,0.9998575448989868,0.00014247694343794137
183
+ 356,8d9e6ed8-f60a078c2adb5e2ed7984643b1a3d6ad.jpg,8d9e6ed8-f60a078c2adb5e2ed7984643b1a3d6ad.jpg,SUGGESTIVE,normal,nsfw,0.9972025156021118,0.002797480672597885
184
+ 357,915ec646-f60d0a9ef35ff32f41167f002f604218.jpg,915ec646-f60d0a9ef35ff32f41167f002f604218.jpg,UNCERTAIN,normal,nsfw,0.9996912479400635,0.00030873133800923824
185
+ 358,ac9956e6-f61b32b46a5df8b7604a567f4101de1a.jpg,ac9956e6-f61b32b46a5df8b7604a567f4101de1a.jpg,SUGGESTIVE,normal,nsfw,0.9991870522499084,0.0008128986810334027
186
+ 359,38e3e29f-f6096fb5a8815393de8d3ce6046dcfa0.jpg,38e3e29f-f6096fb5a8815393de8d3ce6046dcfa0.jpg,UNCERTAIN,normal,nsfw,0.998040497303009,0.0019595164339989424
187
+ 360,4cd02552-f627490d7770e822b0646ecc26314049.jpg,4cd02552-f627490d7770e822b0646ecc26314049.jpg,SUGGESTIVE,normal,nsfw,0.9993622899055481,0.0006376710953190923
188
+ 361,96423c5a-f5d25e48cb07c00f6b4749341afd4fe9.jpg,96423c5a-f5d25e48cb07c00f6b4749341afd4fe9.jpg,FAMILY_SAFE,normal,nsfw,0.9998424053192139,0.00015762825205456465
189
+ 362,b2bdb576-f5f0b5059aa1f31f18454612c7b44cb4.jpg,b2bdb576-f5f0b5059aa1f31f18454612c7b44cb4.jpg,UNCERTAIN,normal,nsfw,0.9992197751998901,0.0007801808533258736
190
+ 363,d9b4f6e3-f5f15fde94650b49c19b1108e7baacaa.jpg,d9b4f6e3-f5f15fde94650b49c19b1108e7baacaa.jpg,FAMILY_SAFE,normal,nsfw,0.9996950626373291,0.0003050143423024565
191
+ 364,78e1ef6c-f5f68931f14533c57ecfef9acb38dc7d.jpg,78e1ef6c-f5f68931f14533c57ecfef9acb38dc7d.jpg,SUGGESTIVE,normal,nsfw,0.9994333386421204,0.0005666653160005808
192
+ 365,95214b1d-f5fbc4a6c74108a929561383bb572cd4.jpg,95214b1d-f5fbc4a6c74108a929561383bb572cd4.jpg,SUGGESTIVE,normal,nsfw,0.9998775720596313,0.00012242977390997112
193
+ 366,52f9323f-f5a0911271d9a6ed11455f9f6ff7eb66.jpg,52f9323f-f5a0911271d9a6ed11455f9f6ff7eb66.jpg,FAMILY_SAFE,normal,nsfw,0.9998146891593933,0.00018535259005147964
194
+ 367,437ce914-f5c13ab4ed01cc7efd808da48b8a5457.jpg,437ce914-f5c13ab4ed01cc7efd808da48b8a5457.jpg,FAMILY_SAFE,normal,nsfw,0.9996523857116699,0.00034764609881676733
195
+ 368,3472223a-f5996eb32ca496db64f8988cee9a8878.jpg,3472223a-f5996eb32ca496db64f8988cee9a8878.jpg,UNCERTAIN,normal,nsfw,0.9996458292007446,0.0003542196354828775
196
+ 369,79fb6415-f57b16711597d1da4c6c22c57af8a35a.jpg,79fb6415-f57b16711597d1da4c6c22c57af8a35a.jpg,SUGGESTIVE,normal,nsfw,0.999861478805542,0.0001385176001349464
197
+ 370,8b7383e6-f57fb11b1c8484d4642295155ba8db7b.jpg,8b7383e6-f57fb11b1c8484d4642295155ba8db7b.jpg,SUGGESTIVE,normal,nsfw,0.9977987408638,0.0022012870758771896
198
+ 371,ae1beb31-f58d8b3fa1b33fbccd8c8d71e0fe1a2c.jpg,ae1beb31-f58d8b3fa1b33fbccd8c8d71e0fe1a2c.jpg,SUGGESTIVE,normal,nsfw,0.9998409748077393,0.00015904728206805885
199
+ 372,6be40274-f55c44bbbe7e56c04a616cd84479e46f.jpg,6be40274-f55c44bbbe7e56c04a616cd84479e46f.jpg,FAMILY_SAFE,normal,nsfw,0.999651312828064,0.00034863263135775924
200
+ 373,79a2f826-f55deb0d18263824d1cef3e9ab9f1785.jpg,79a2f826-f55deb0d18263824d1cef3e9ab9f1785.jpg,SUGGESTIVE,normal,nsfw,0.9977415800094604,0.0022583974059671164
201
+ 374,eb3f6ce4-f572b605f472227d2aa10d6905b535e3.jpg,eb3f6ce4-f572b605f472227d2aa10d6905b535e3.jpg,FAMILY_SAFE,normal,nsfw,0.9988118410110474,0.001188235473819077
202
+ 375,86690dd2-f573acc9c7d68bfa33ffaf904bdcbee1.jpg,86690dd2-f573acc9c7d68bfa33ffaf904bdcbee1.jpg,SUGGESTIVE,normal,nsfw,0.9998475313186646,0.00015247335250023752
203
+ 376,cb81d853-f5641be3510ca443208381edefb8dab9.jpg,cb81d853-f5641be3510ca443208381edefb8dab9.jpg,FAMILY_SAFE,normal,nsfw,0.9997938275337219,0.00020623421005439013
204
+ 377,f3e026cb-f55636ad8ac978de1925576a495326e8.jpg,f3e026cb-f55636ad8ac978de1925576a495326e8.jpg,UNCERTAIN,normal,nsfw,0.999305248260498,0.0006947180954739451
205
+ 378,dd964efd-f543f9d63f3caf812049461fe8e82f66.jpg,dd964efd-f543f9d63f3caf812049461fe8e82f66.jpg,FAMILY_SAFE,normal,nsfw,0.9998542070388794,0.00014579847629647702
206
+ 379,cddc368c-f555bcb967a62b3420b1563eabf14e03.jpg,cddc368c-f555bcb967a62b3420b1563eabf14e03.jpg,SUGGESTIVE,normal,nsfw,0.9997989535331726,0.00020105495059397072
207
+ 380,8a1bce2e-f531a8694f3e826cc46790d3d2d210f3.jpg,8a1bce2e-f531a8694f3e826cc46790d3d2d210f3.jpg,FAMILY_SAFE,normal,nsfw,0.9988186955451965,0.001181305618956685
208
+ 381,4580faae-f532a291cff7ba273fcfbd81e466147a.jpg,4580faae-f532a291cff7ba273fcfbd81e466147a.jpg,FAMILY_SAFE,normal,nsfw,0.999891996383667,0.00010798982111737132
209
+ 382,cd5e94e9-f4eed19eaa6f1a5b7f3bf3fdab620193.jpg,cd5e94e9-f4eed19eaa6f1a5b7f3bf3fdab620193.jpg,SUGGESTIVE,normal,nsfw,0.8613846898078918,0.13861526548862457
210
+ 383,e0abb514-f4f6cec6badab17d10b40557e6e9ceae.jpg,e0abb514-f4f6cec6badab17d10b40557e6e9ceae.jpg,SUGGESTIVE,normal,nsfw,0.9978744983673096,0.0021254634484648705
211
+ 384,3265ae1c-f4f91efff09fee24636b9b50d58fcf25.jpg,3265ae1c-f4f91efff09fee24636b9b50d58fcf25.jpg,SUGGESTIVE,normal,nsfw,0.9965303540229797,0.0034697160590440035
212
+ 385,e2e7bbee-f4f964fc3d06d2990c04caa8fc0e5295.jpg,e2e7bbee-f4f964fc3d06d2990c04caa8fc0e5295.jpg,SUGGESTIVE,normal,nsfw,0.9913933277130127,0.008606689982116222
213
+ 386,8f9b1b13-f4fe1ba40065807edb72c03485dff3d2.jpg,8f9b1b13-f4fe1ba40065807edb72c03485dff3d2.jpg,SUGGESTIVE,normal,nsfw,0.9984216690063477,0.0015782896662130952
214
+ 387,9ee74b02-f50238c6721caa983df9656eef22236b.jpg,9ee74b02-f50238c6721caa983df9656eef22236b.jpg,SUGGESTIVE,normal,nsfw,0.9997636675834656,0.0002363044914091006
215
+ 388,97429c97-f50926a996167d5a55ea0e3260627572.jpg,97429c97-f50926a996167d5a55ea0e3260627572.jpg,SUGGESTIVE,normal,nsfw,0.9990457892417908,0.0009541796753183007
216
+ 389,6775a784-f5072276faee8d0385236b2937d48a33.jpg,6775a784-f5072276faee8d0385236b2937d48a33.jpg,SUGGESTIVE,normal,nsfw,0.9996180534362793,0.00038195078377611935
217
+ 390,735adacd-f4d811181ca6367340272ea2817eebb6.jpg,735adacd-f4d811181ca6367340272ea2817eebb6.jpg,FAMILY_SAFE,normal,nsfw,0.9998158812522888,0.00018414028454571962
218
+ 391,f2450298-f4e7b715922c1d07a2f7501b722bb12e.jpg,f2450298-f4e7b715922c1d07a2f7501b722bb12e.jpg,SUGGESTIVE,normal,nsfw,0.9938139915466309,0.006185967940837145
219
+ 392,a04ba9a7-f4aee07e50f09863edf149352e42f73e.jpg,a04ba9a7-f4aee07e50f09863edf149352e42f73e.jpg,SUGGESTIVE,normal,nsfw,0.9985635876655579,0.001436458551324904
220
+ 393,cdff04e2-f4c226e68f48b630dfd5b8f032c281f3.jpg,cdff04e2-f4c226e68f48b630dfd5b8f032c281f3.jpg,SUGGESTIVE,normal,nsfw,0.9998898506164551,0.00011018524674000219
221
+ 394,1c2faeb4-f4c868518f6194c3d708d889b79c4357.jpg,1c2faeb4-f4c868518f6194c3d708d889b79c4357.jpg,UNCERTAIN,normal,nsfw,0.999393105506897,0.000606877205427736
222
+ 395,da36d596-f48abfffe24a134a2605d63c095d5601.jpg,da36d596-f48abfffe24a134a2605d63c095d5601.jpg,UNCERTAIN,normal,nsfw,0.9873709678649902,0.01262897253036499
223
+ 396,9e7afccb-f49cbda7d6c418aa68c47ac16678be9d.jpg,9e7afccb-f49cbda7d6c418aa68c47ac16678be9d.jpg,SUGGESTIVE,normal,nsfw,0.9979022741317749,0.002097678603604436
224
+ 397,62a97430-f49d857cb54b7ad2a3a8bcd6c85a76d2.jpg,62a97430-f49d857cb54b7ad2a3a8bcd6c85a76d2.jpg,FAMILY_SAFE,normal,nsfw,0.9997784495353699,0.0002215868153143674
225
+ 398,f79720c4-f49f729c28e9aafef241b3e5d1365ebb.jpg,f79720c4-f49f729c28e9aafef241b3e5d1365ebb.jpg,FAMILY_SAFE,normal,nsfw,0.9996718168258667,0.0003281381505075842
226
+ 399,1fa27620-f46fcea94e5309ef137996d590f947a8.jpg,1fa27620-f46fcea94e5309ef137996d590f947a8.jpg,SUGGESTIVE,normal,nsfw,0.9996253252029419,0.0003746873699128628
227
+ 400,a8f6045f-f44bd04a46d585f08df78d744a9920e0.jpg,a8f6045f-f44bd04a46d585f08df78d744a9920e0.jpg,FAMILY_SAFE,normal,nsfw,0.9997288584709167,0.0002710835251491517
228
+ 401,9d5f7026-f442e9b50f65ce8e992c2d6d99045422.jpg,9d5f7026-f442e9b50f65ce8e992c2d6d99045422.jpg,SUGGESTIVE,normal,nsfw,0.9995225667953491,0.00047749438090249896
229
+ 402,d87227e3-f4591e17584e87f5ae145946468488a1.jpg,d87227e3-f4591e17584e87f5ae145946468488a1.jpg,FAMILY_SAFE,normal,nsfw,0.9992788434028625,0.0007211175980046391
230
+ 403,5c828279-f45776fd9cff138a422bc299fda11907.jpg,5c828279-f45776fd9cff138a422bc299fda11907.jpg,UNCERTAIN,normal,nsfw,0.9996461868286133,0.00035378089523874223
231
+ 404,5c339677-f450689a8cf22e1c4471ef894ea28a81.jpg,5c339677-f450689a8cf22e1c4471ef894ea28a81.jpg,SUGGESTIVE,normal,nsfw,0.9990713596343994,0.0009285944979637861
232
+ 405,b47e520f-f453124a40f3bdbbe0c9dfe4996b6844.jpg,b47e520f-f453124a40f3bdbbe0c9dfe4996b6844.jpg,SUGGESTIVE,normal,nsfw,0.9882595539093018,0.011740484274923801
233
+ 406,3a55ff4b-f40d7fc2218b3f42761e7abe785c7785.jpg,3a55ff4b-f40d7fc2218b3f42761e7abe785c7785.jpg,SUGGESTIVE,normal,nsfw,0.9947978258132935,0.005202192347496748
234
+ 407,ab4e8b9b-f433c523573d6c17da4f5f3da31fec75.jpg,ab4e8b9b-f433c523573d6c17da4f5f3da31fec75.jpg,UNCERTAIN,normal,nsfw,0.9950957298278809,0.0049043516628444195
235
+ 408,c5a2e52f-f412680ce7ff76d5c276884092c008f3.jpg,c5a2e52f-f412680ce7ff76d5c276884092c008f3.jpg,FAMILY_SAFE,normal,nsfw,0.9997836947441101,0.00021634760196320713
236
+ 409,2707ecab-f432252b9d85a485c9e4b3097633f71e.jpg,2707ecab-f432252b9d85a485c9e4b3097633f71e.jpg,FAMILY_SAFE,normal,nsfw,0.9994390606880188,0.0005608751089312136
237
+ 410,79a56ecc-f3e1b0aced852718d2b2cc7208728b62.jpg,79a56ecc-f3e1b0aced852718d2b2cc7208728b62.jpg,SUGGESTIVE,normal,nsfw,0.8720280528068542,0.12797199189662933
238
+ 411,84efc00c-f3ebae6cdb55ebee567dc5937d26f433.jpg,84efc00c-f3ebae6cdb55ebee567dc5937d26f433.jpg,FAMILY_SAFE,normal,nsfw,0.9987412095069885,0.0012587562669068575
239
+ 412,916b7794-f3f76e5bd2aae5290c40831d2dba06fb.jpg,916b7794-f3f76e5bd2aae5290c40831d2dba06fb.jpg,SUGGESTIVE,normal,nsfw,0.8943421840667725,0.10565780848264694
240
+ 413,0c0ff4f4-f3b7d61057e3aabc5c1f2fa2e1d91f80.jpg,0c0ff4f4-f3b7d61057e3aabc5c1f2fa2e1d91f80.jpg,SUGGESTIVE,normal,nsfw,0.9998076558113098,0.00019230962789151818
241
+ 414,de3532f8-f3c6565d9b0b5b4a9ea5791663a1cb98.jpg,de3532f8-f3c6565d9b0b5b4a9ea5791663a1cb98.jpg,FAMILY_SAFE,normal,nsfw,0.9997285008430481,0.0002714624279178679
242
+ 415,53a286c2-f3a74abc0a833c5b5b69b06d3530b13c.jpg,53a286c2-f3a74abc0a833c5b5b69b06d3530b13c.jpg,FAMILY_SAFE,normal,nsfw,0.998989999294281,0.0010100338840857148
243
+ 416,b80429f0-f3a782299db638313bc78a42fe799566.jpg,b80429f0-f3a782299db638313bc78a42fe799566.jpg,SUGGESTIVE,normal,nsfw,0.9973938465118408,0.0026061558164656162
244
+ 417,c5926927-f392b17c19a743f54238920721a05483.jpg,c5926927-f392b17c19a743f54238920721a05483.jpg,SUGGESTIVE,normal,nsfw,0.9817613959312439,0.018238577991724014
245
+ 418,aaba3830-f392495a6934f1189fab05eeb50e6fd9.jpg,aaba3830-f392495a6934f1189fab05eeb50e6fd9.jpg,SUGGESTIVE,normal,nsfw,0.9966259002685547,0.0033741453662514687
246
+ 419,52172c96-f379ca12e1aa320afc400fb76fb2c470.jpg,52172c96-f379ca12e1aa320afc400fb76fb2c470.jpg,SUGGESTIVE,normal,nsfw,0.9824513792991638,0.017548613250255585
247
+ 420,6e49273c-f36c6d209021488c8bf51e89c19f58fb.jpg,6e49273c-f36c6d209021488c8bf51e89c19f58fb.jpg,SUGGESTIVE,normal,nsfw,0.999698281288147,0.00030169246019795537
248
+ 421,920afa72-f3537cd026f876e2535d657df257076c.jpg,920afa72-f3537cd026f876e2535d657df257076c.jpg,UNCERTAIN,normal,nsfw,0.9994059801101685,0.0005939656402915716
249
+ 422,7e9fe457-f366645e8bc5d7b1122603ec99290bc2.jpg,7e9fe457-f366645e8bc5d7b1122603ec99290bc2.jpg,UNCERTAIN,normal,nsfw,0.9981566071510315,0.0018434127559885383
250
+ 423,10f36423-f30e3a374309519194229b8153c51588.jpg,10f36423-f30e3a374309519194229b8153c51588.jpg,SUGGESTIVE,normal,nsfw,0.99979168176651,0.00020831581787206233
251
+ 424,cd3dd942-f32a3c9a3b2b2f5fa7be6f8c73ae293b.jpg,cd3dd942-f32a3c9a3b2b2f5fa7be6f8c73ae293b.jpg,FAMILY_SAFE,normal,nsfw,0.9988677501678467,0.0011322912760078907
252
+ 425,aac071e6-f32bb35b2b035066b5f7d88a1a27c0d7.jpg,aac071e6-f32bb35b2b035066b5f7d88a1a27c0d7.jpg,UNCERTAIN,normal,nsfw,0.9997696280479431,0.00023034941114019603
253
+ 426,678d2056-f33cf9e01fb72fc6dce190f37c65c2dd.jpg,678d2056-f33cf9e01fb72fc6dce190f37c65c2dd.jpg,FAMILY_SAFE,normal,nsfw,0.9997981190681458,0.00020187979680486023
254
+ 427,965c31ef-f2f78f897ad0a224175515bbde549e2e.jpg,965c31ef-f2f78f897ad0a224175515bbde549e2e.jpg,FAMILY_SAFE,normal,nsfw,0.9991511106491089,0.0008488516323268414
255
+ 428,579612c2-f2fa9ecf3da8d00302338efa4f87123c.jpg,579612c2-f2fa9ecf3da8d00302338efa4f87123c.jpg,UNCERTAIN,normal,nsfw,0.9998456239700317,0.0001543779653729871
256
+ 429,9f66f820-f2fae6e2500b65f269b5e6de80996f17.jpg,9f66f820-f2fae6e2500b65f269b5e6de80996f17.jpg,SUGGESTIVE,normal,nsfw,0.9984607696533203,0.0015392180066555738
257
+ 430,75006524-f30c43c00748e7912ce105d616264ca8.jpg,75006524-f30c43c00748e7912ce105d616264ca8.jpg,SUGGESTIVE,normal,nsfw,0.9998741149902344,0.0001258885022252798
258
+ 431,7c688d00-f3066b02932fbc939c22e9c3bb8e942a.jpg,7c688d00-f3066b02932fbc939c22e9c3bb8e942a.jpg,FAMILY_SAFE,normal,nsfw,0.9996674060821533,0.00033258332405239344
259
+ 432,3174b410-f2f05fc8d36aa9b2d14d9a0eed30416a.jpg,3174b410-f2f05fc8d36aa9b2d14d9a0eed30416a.jpg,SUGGESTIVE,normal,nsfw,0.9997445940971375,0.00025539036141708493
260
+ 433,c43cb7fb-f2f33b9d050b1eec02c29464f036d292.jpg,c43cb7fb-f2f33b9d050b1eec02c29464f036d292.jpg,UNCERTAIN,normal,nsfw,0.9807888865470886,0.01921112835407257
261
+ 434,55e1d1ac-f2b9d5dc127dddd36b113f2719d89a97.jpg,55e1d1ac-f2b9d5dc127dddd36b113f2719d89a97.jpg,SUGGESTIVE,normal,nsfw,0.9972233772277832,0.002776677953079343
262
+ 435,26f72a43-f2b9d6126ecc23b075d1c1acc8fe340d.jpg,26f72a43-f2b9d6126ecc23b075d1c1acc8fe340d.jpg,FAMILY_SAFE,normal,nsfw,0.999832034111023,0.00016795787087175995
263
+ 436,a6eee7e4-f2d5d25ff62ef48331c529bf26e170d4.jpg,a6eee7e4-f2d5d25ff62ef48331c529bf26e170d4.jpg,FAMILY_SAFE,normal,nsfw,0.9990725517272949,0.0009273760369978845
264
+ 437,6583b10b-f2aae7afc3a013755b2365cb2942dc64.jpg,6583b10b-f2aae7afc3a013755b2365cb2942dc64.jpg,SUGGESTIVE,normal,nsfw,0.9978328347206116,0.0021671587601304054
265
+ 438,3dc4ad74-f27b0f685d9b622d7ff36bdd97f72831.jpg,3dc4ad74-f27b0f685d9b622d7ff36bdd97f72831.jpg,SUGGESTIVE,normal,nsfw,0.9686691761016846,0.031330808997154236
266
+ 439,6a8274e7-f2801326462d460409fa733227426003.jpg,6a8274e7-f2801326462d460409fa733227426003.jpg,UNCERTAIN,normal,nsfw,0.9974777102470398,0.002522299764677882
267
+ 440,7e1849f3-f26a9865a58639d9b17de158040c8d99.jpg,7e1849f3-f26a9865a58639d9b17de158040c8d99.jpg,SUGGESTIVE,normal,nsfw,0.9998754262924194,0.00012460736616048962
268
+ 441,e4ae160c-f26b087c218148a8ca3f2e96e12d7a1b.jpg,e4ae160c-f26b087c218148a8ca3f2e96e12d7a1b.jpg,SUGGESTIVE,normal,nsfw,0.9998156428337097,0.00018439750419929624
269
+ 442,4f4b4d5f-f26d88ffcd70edc8984c024f2de1ca39.jpg,4f4b4d5f-f26d88ffcd70edc8984c024f2de1ca39.jpg,SUGGESTIVE,normal,nsfw,0.964965283870697,0.035034723579883575
270
+ 443,55668d0d-f2691c288c683bcf94651a0bbffe21ad.jpg,55668d0d-f2691c288c683bcf94651a0bbffe21ad.jpg,SUGGESTIVE,normal,nsfw,0.9992935657501221,0.0007064234232529998
271
+ 444,302fc960-f24d9b56d05bdf13a83cfabd87f8e5af.jpg,302fc960-f24d9b56d05bdf13a83cfabd87f8e5af.jpg,FAMILY_SAFE,normal,nsfw,0.9996316432952881,0.0003683122922666371
272
+ 445,da992908-f24efb4f9760b0e7fbb3fcf77dba0891.jpg,da992908-f24efb4f9760b0e7fbb3fcf77dba0891.jpg,SUGGESTIVE,normal,nsfw,0.9995579123497009,0.00044201468699611723
273
+ 446,09535428-f244b1f6799b0610306318fa09e744c4.jpg,09535428-f244b1f6799b0610306318fa09e744c4.jpg,SUGGESTIVE,nsfw,normal,0.6244999170303345,0.3755000829696655
274
+ 447,6b3255e8-f20ecb2425f29d21d4047bec13a2babb.jpg,6b3255e8-f20ecb2425f29d21d4047bec13a2babb.jpg,FAMILY_SAFE,normal,nsfw,0.9995390176773071,0.0004609605821315199
275
+ 448,3d3f89e4-f20eef0275884df087aefc827000488a.jpg,3d3f89e4-f20eef0275884df087aefc827000488a.jpg,SUGGESTIVE,normal,nsfw,0.9922945499420166,0.007705426309257746
276
+ 449,476d2b62-f21375899b6c734ba68a8f2a74990efb.jpg,476d2b62-f21375899b6c734ba68a8f2a74990efb.jpg,FAMILY_SAFE,normal,nsfw,0.9998154044151306,0.00018456812540534884
277
+ 450,2821adf9-f20de5b6356da5f1e38626064c8ac85e.jpg,2821adf9-f20de5b6356da5f1e38626064c8ac85e.jpg,FAMILY_SAFE,normal,nsfw,0.98700350522995,0.01299649104475975
278
+ 451,78dd5846-f1b48acd52be4f8693ed99170c2a044c.jpg,78dd5846-f1b48acd52be4f8693ed99170c2a044c.jpg,SUGGESTIVE,normal,nsfw,0.999638557434082,0.00036139943404123187
279
+ 452,7d5de576-f1c966431895a337d35d9ec3a7470b17.jpg,7d5de576-f1c966431895a337d35d9ec3a7470b17.jpg,SUGGESTIVE,normal,nsfw,0.9998262524604797,0.0001737588900141418
280
+ 453,8cf1683d-f1d11292af5391d00957494b8b58f315.jpg,8cf1683d-f1d11292af5391d00957494b8b58f315.jpg,SUGGESTIVE,normal,nsfw,0.9463752508163452,0.0536247193813324
281
+ 454,59b576bf-f1a168d27daac1da3571fcbcce7c1ebd.jpg,59b576bf-f1a168d27daac1da3571fcbcce7c1ebd.jpg,SUGGESTIVE,normal,nsfw,0.9998243451118469,0.00017573418153915554
282
+ 455,8f0ff5de-f18c7dac0d1162379e292b0e4b9e22ce.jpg,8f0ff5de-f18c7dac0d1162379e292b0e4b9e22ce.jpg,UNCERTAIN,normal,nsfw,0.9998642206192017,0.0001357875153189525
283
+ 456,3d83aaea-f186d77202e18462443a8c7ffc449919.jpg,3d83aaea-f186d77202e18462443a8c7ffc449919.jpg,SUGGESTIVE,normal,nsfw,0.6798476576805115,0.3201523423194885
284
+ 457,d4d29b7b-f162dbe9bf0b44a6f2ddb910d725d56b.jpg,d4d29b7b-f162dbe9bf0b44a6f2ddb910d725d56b.jpg,SUGGESTIVE,nsfw,normal,0.9853374361991882,0.014662537723779678
285
+ 458,c6f24a4d-f1646b36bb33f474b8f66c112bf97cc3.jpg,c6f24a4d-f1646b36bb33f474b8f66c112bf97cc3.jpg,SUGGESTIVE,normal,nsfw,0.9956642985343933,0.004335693083703518
286
+ 459,9d710615-f1712c2ed94b10ffedda4e1ea6e56fa9.jpg,9d710615-f1712c2ed94b10ffedda4e1ea6e56fa9.jpg,FAMILY_SAFE,normal,nsfw,0.9998646974563599,0.00013527559349313378
287
+ 460,c325de0e-f16866c512ca721aa3ba3b2129e4b66f.jpg,c325de0e-f16866c512ca721aa3ba3b2129e4b66f.jpg,SUGGESTIVE,normal,nsfw,0.862500011920929,0.13749992847442627
288
+ 461,c9983270-f1643668073aa69e7f2b505d1b237098.jpg,c9983270-f1643668073aa69e7f2b505d1b237098.jpg,SUGGESTIVE,normal,nsfw,0.9968101382255554,0.003189866663888097
289
+ 462,ff926dbf-f12e5c2510e88db3c8fdf32aa7968f9d.jpg,ff926dbf-f12e5c2510e88db3c8fdf32aa7968f9d.jpg,SUGGESTIVE,normal,nsfw,0.9991756081581116,0.0008243792108260095
290
+ 463,edbf7bc4-f13bac93da13444f529aa1c821731161.jpg,edbf7bc4-f13bac93da13444f529aa1c821731161.jpg,SUGGESTIVE,normal,nsfw,0.9960294961929321,0.00397053686901927
291
+ 464,d3721c85-f126f5fa7fd6939084fa439a5c194f18.jpg,d3721c85-f126f5fa7fd6939084fa439a5c194f18.jpg,SUGGESTIVE,normal,nsfw,0.9940470457077026,0.005952890962362289
292
+ 465,b5e5e620-f126f93e4853f89a6e25b661040dc314.jpg,b5e5e620-f126f93e4853f89a6e25b661040dc314.jpg,SUGGESTIVE,normal,nsfw,0.9998496770858765,0.00015029715723358095
293
+ 466,10135976-f1243b33b2f6d754c9bc9da9e8de97e4.jpg,10135976-f1243b33b2f6d754c9bc9da9e8de97e4.jpg,SUGGESTIVE,normal,nsfw,0.9975334405899048,0.002466561971232295
294
+ 467,b81fe122-f1404d9866f6128bd44a1eaee0a39cf7.jpg,b81fe122-f1404d9866f6128bd44a1eaee0a39cf7.jpg,SUGGESTIVE,normal,nsfw,0.9997952580451965,0.00020479942031670362
295
+ 468,f3d934fc-f14861197568fd42d5a3a8f39a8970b9.jpg,f3d934fc-f14861197568fd42d5a3a8f39a8970b9.jpg,SUGGESTIVE,normal,nsfw,0.9988933205604553,0.0011067389277741313
296
+ 469,34496229-f104ed4e8f3c30e2fa8ddfbd3332b413.jpg,34496229-f104ed4e8f3c30e2fa8ddfbd3332b413.jpg,SUGGESTIVE,normal,nsfw,0.9998835325241089,0.0001164382483693771
297
+ 470,849c7056-f0b773be242aee171c66e49b6c3dfb63.jpg,849c7056-f0b773be242aee171c66e49b6c3dfb63.jpg,SUGGESTIVE,normal,nsfw,0.987106204032898,0.012893790379166603
298
+ 471,c6d20edb-f0c80a1febd6aeb4ed6ccaf3fd82760a.jpg,c6d20edb-f0c80a1febd6aeb4ed6ccaf3fd82760a.jpg,SUGGESTIVE,normal,nsfw,0.9994415640830994,0.0005584025057032704
299
+ 472,906d1fce-f0ca8c9fdee2f995b567b0626cdadcac.jpg,906d1fce-f0ca8c9fdee2f995b567b0626cdadcac.jpg,FAMILY_SAFE,normal,nsfw,0.9998373985290527,0.00016257402603514493
300
+ 473,f638acd0-f0d3205ee8ebe32b2d53f1ad223e9818.jpg,f638acd0-f0d3205ee8ebe32b2d53f1ad223e9818.jpg,SUGGESTIVE,nsfw,normal,0.9045382142066956,0.09546181559562683
301
+ 474,da3f5f03-f0dd8d4ac7e466a7a233905f8db38a1c.jpg,da3f5f03-f0dd8d4ac7e466a7a233905f8db38a1c.jpg,SUGGESTIVE,normal,nsfw,0.999875545501709,0.00012445455649867654
302
+ 475,c2917e19-f06b1f090a5e2f8b788720ce4489183a.jpg,c2917e19-f06b1f090a5e2f8b788720ce4489183a.jpg,SUGGESTIVE,normal,nsfw,0.9982013702392578,0.00179858913179487
303
+ 476,698e9ebb-f06d35d37cacac0d69db96016e0c182f.jpg,698e9ebb-f06d35d37cacac0d69db96016e0c182f.jpg,FAMILY_SAFE,normal,nsfw,0.9998571872711182,0.00014280530740506947
304
+ 477,4696edaa-f06eb7893da319aec3f0de768a1a845d.jpg,4696edaa-f06eb7893da319aec3f0de768a1a845d.jpg,SUGGESTIVE,normal,nsfw,0.9997778534889221,0.0002221308823209256
305
+ 478,ad86327f-f08abc73a82adca2bbb2304c62991458.jpg,ad86327f-f08abc73a82adca2bbb2304c62991458.jpg,UNCERTAIN,normal,nsfw,0.9998138546943665,0.00018621298659127206
306
+ 479,7713ccd7-f08c1d5efaa9ae3e99274ef65dbc7cc4.jpg,7713ccd7-f08c1d5efaa9ae3e99274ef65dbc7cc4.jpg,SUGGESTIVE,normal,nsfw,0.999243974685669,0.0007560368394479156
307
+ 480,88e6096c-f0809c968c34e21b25ef28da489b68fd.jpg,88e6096c-f0809c968c34e21b25ef28da489b68fd.jpg,SUGGESTIVE,normal,nsfw,0.987617552280426,0.012382478453218937
308
+ 481,524bc0ae-f06772600ff35982e30ec813edb89dc2.jpg,524bc0ae-f06772600ff35982e30ec813edb89dc2.jpg,FAMILY_SAFE,normal,nsfw,0.9998425245285034,0.00015740175149403512
309
+ 482,3d31944e-f049c93ef72e3bd5edbf919222d2d1ae.jpg,3d31944e-f049c93ef72e3bd5edbf919222d2d1ae.jpg,FAMILY_SAFE,normal,nsfw,0.9996181726455688,0.00038179222610779107
310
+ 483,47efba26-f0445c4671cbf87f6be472f5102475c2.jpg,47efba26-f0445c4671cbf87f6be472f5102475c2.jpg,SUGGESTIVE,normal,nsfw,0.9708232283592224,0.029176760464906693
311
+ 484,fa8fe379-f0357ced6ed7226ecfd6bc274c3e8a5b.jpg,fa8fe379-f0357ced6ed7226ecfd6bc274c3e8a5b.jpg,SUGGESTIVE,normal,nsfw,0.9998766183853149,0.0001233635121025145
312
+ 485,475a96b3-eff990daac3ddb54436bad2cc950abb3.jpg,475a96b3-eff990daac3ddb54436bad2cc950abb3.jpg,SUGGESTIVE,normal,nsfw,0.9998899698257446,0.00011007435387000442
313
+ 486,fa249f4f-efb7440d597d698c5442b03cc11096ab.jpg,fa249f4f-efb7440d597d698c5442b03cc11096ab.jpg,SUGGESTIVE,normal,nsfw,0.9998382329940796,0.00016170606249943376
314
+ 487,b10f30c8-efc08bbcc30ce2804f50c73ff07cffec.jpg,b10f30c8-efc08bbcc30ce2804f50c73ff07cffec.jpg,SUGGESTIVE,normal,nsfw,0.9997361302375793,0.00026390326092951
315
+ 488,faba1751-efc073e437c18987a2f1476da3de0b3a.jpg,faba1751-efc073e437c18987a2f1476da3de0b3a.jpg,SUGGESTIVE,normal,nsfw,0.9994059801101685,0.0005939817638136446
316
+ 489,0098546d-efd85646ed2bdbc974b9c3c579691730.jpg,0098546d-efd85646ed2bdbc974b9c3c579691730.jpg,SUGGESTIVE,normal,nsfw,0.9998643398284912,0.00013560686784330755
317
+ 490,b4635fff-efef5f2439ee81918faf609d5a0aa163.jpg,b4635fff-efef5f2439ee81918faf609d5a0aa163.jpg,SUGGESTIVE,normal,nsfw,0.9107722043991089,0.08922784775495529
318
+ 491,4c7faf4b-efef22ec0ad48c3b2f51c82dcb9565e6.jpg,4c7faf4b-efef22ec0ad48c3b2f51c82dcb9565e6.jpg,SUGGESTIVE,nsfw,normal,0.9064558744430542,0.0935441255569458
319
+ 492,e9be5783-efa81f12be12471dd91827cfb74404a9.jpg,e9be5783-efa81f12be12471dd91827cfb74404a9.jpg,SUGGESTIVE,normal,nsfw,0.9912118315696716,0.008788185194134712
320
+ 493,0df8255e-efaa8dd97b36b54c67356ca6c1500791.jpg,0df8255e-efaa8dd97b36b54c67356ca6c1500791.jpg,SUGGESTIVE,normal,nsfw,0.9995287656784058,0.00047127206926234066
321
+ 494,e96341ac-ef6a78b93788b6cab069d01b92516ec6.jpg,e96341ac-ef6a78b93788b6cab069d01b92516ec6.jpg,SUGGESTIVE,normal,nsfw,0.9994308352470398,0.0005691580008715391
322
+ 495,2a7d0d01-ef6b436f284fd4c6a95adef2c0dc0555.jpg,2a7d0d01-ef6b436f284fd4c6a95adef2c0dc0555.jpg,SUGGESTIVE,nsfw,normal,0.831125020980835,0.16887502372264862
323
+ 496,e764a81b-ef7d423ff22abad26fcdc945e31dca5b.jpg,e764a81b-ef7d423ff22abad26fcdc945e31dca5b.jpg,SUGGESTIVE,normal,nsfw,0.997032880783081,0.002967139007523656
324
+ 497,6ffc5735-ef70be698e9f8dbd29dacb15ac4d0ec9.jpg,6ffc5735-ef70be698e9f8dbd29dacb15ac4d0ec9.jpg,SUGGESTIVE,normal,nsfw,0.9053156971931458,0.09468436986207962
325
+ 498,98ce088a-ef76eea72ea523ba10369ff89f844b8d.jpg,98ce088a-ef76eea72ea523ba10369ff89f844b8d.jpg,SUGGESTIVE,normal,nsfw,0.9992297887802124,0.0007702443399466574
326
+ 499,772bc39c-ef4a21bca7ceab6a75e2a5fd738408d9.jpg,772bc39c-ef4a21bca7ceab6a75e2a5fd738408d9.jpg,SUGGESTIVE,normal,nsfw,0.9997027516365051,0.0002972601796500385
327
+ 500,7207626d-ef378dd1f4004be18abc11bef3c80de4.jpg,7207626d-ef378dd1f4004be18abc11bef3c80de4.jpg,SUGGESTIVE,normal,nsfw,0.999743640422821,0.00025639336672611535
328
+ 501,281a7d11-ef4790408c0eb4ad41d481796a8d76fd.jpg,281a7d11-ef4790408c0eb4ad41d481796a8d76fd.jpg,SUGGESTIVE,normal,nsfw,0.9994195699691772,0.0005804733373224735
329
+ 502,15072791-ef0a3b5c272d10607604167b4bc37034.jpg,15072791-ef0a3b5c272d10607604167b4bc37034.jpg,FAMILY_SAFE,normal,nsfw,0.9994798302650452,0.0005201894091442227
330
+ 503,6dc70b1e-ef1026a33c894d18a1a1f32922017fbf.jpg,6dc70b1e-ef1026a33c894d18a1a1f32922017fbf.jpg,UNCERTAIN,normal,nsfw,0.9979990124702454,0.0020009740255773067
331
+ 504,c8740c8b-eedc4a75b4521825dd368a81324741e4.jpg,c8740c8b-eedc4a75b4521825dd368a81324741e4.jpg,SUGGESTIVE,normal,nsfw,0.9358147382736206,0.06418519467115402
332
+ 505,dcfb8a01-eebd67e28f811ad93ce45d7a22c9a280.jpg,dcfb8a01-eebd67e28f811ad93ce45d7a22c9a280.jpg,UNCERTAIN,normal,nsfw,0.9998223185539246,0.0001777190191205591
333
+ 506,9283a4a4-eed2a73a4dc7506b1ce5042c0d86a41f.jpg,9283a4a4-eed2a73a4dc7506b1ce5042c0d86a41f.jpg,SUGGESTIVE,normal,nsfw,0.9995916485786438,0.00040832426748238504
334
+ 507,d9b69ac8-eed7b464c9a9d59069f62bd631953120.jpg,d9b69ac8-eed7b464c9a9d59069f62bd631953120.jpg,SUGGESTIVE,normal,nsfw,0.9988251328468323,0.001174827921204269
335
+ 508,81f42f14-ee9ba96fe055cbfa17dbe24799365177.jpg,81f42f14-ee9ba96fe055cbfa17dbe24799365177.jpg,UNCERTAIN,normal,nsfw,0.9998863935470581,0.00011355768947396427
336
+ 509,5878b83e-ee9dc9d669cf306bf6bf04dfaf3b1c9d.jpg,5878b83e-ee9dc9d669cf306bf6bf04dfaf3b1c9d.jpg,SUGGESTIVE,normal,nsfw,0.898333728313446,0.10166630893945694
337
+ 510,e31a796f-eea76211c790d725a7dd027a99213afb.jpg,e31a796f-eea76211c790d725a7dd027a99213afb.jpg,SUGGESTIVE,normal,nsfw,0.9998282194137573,0.00017174292588606477
338
+ 511,a4c89124-eeaa866b8633bedc8034bce163670339.jpg,a4c89124-eeaa866b8633bedc8034bce163670339.jpg,SUGGESTIVE,normal,nsfw,0.8561798334121704,0.1438201516866684
339
+ 512,35909ea6-eeab35797f69d18b0187e08c5549efb6.jpg,35909ea6-eeab35797f69d18b0187e08c5549efb6.jpg,SUGGESTIVE,normal,nsfw,0.9995488524436951,0.0004511241859290749
340
+ 513,da887e4a-eeb5d0dbe82e36107e2af75b20ab17c7.jpg,da887e4a-eeb5d0dbe82e36107e2af75b20ab17c7.jpg,SUGGESTIVE,normal,nsfw,0.9998612403869629,0.00013870011025574058
341
+ 514,75ab9401-eebbd19e449133670a58baff0fa109ec.jpg,75ab9401-eebbd19e449133670a58baff0fa109ec.jpg,SUGGESTIVE,normal,nsfw,0.9996418952941895,0.0003580819466151297
342
+ 515,e75f4995-eebcec31909a43812f2334fb37807008.jpg,e75f4995-eebcec31909a43812f2334fb37807008.jpg,SUGGESTIVE,normal,nsfw,0.7762184143066406,0.2237815260887146
343
+ 516,de0c936f-ee8a39d9411e2cd46e726afe1c5a4895.jpg,de0c936f-ee8a39d9411e2cd46e726afe1c5a4895.jpg,SUGGESTIVE,normal,nsfw,0.9985060691833496,0.0014939785469323397
344
+ 517,e2e721c6-ee8c7ace06eac5eecd8b709b93976d0b.jpg,e2e721c6-ee8c7ace06eac5eecd8b709b93976d0b.jpg,FAMILY_SAFE,normal,nsfw,0.9998879432678223,0.00011204835755052045
345
+ 518,6828a485-ee90a0e72628f9dc27de80e5ce701bc2.jpg,6828a485-ee90a0e72628f9dc27de80e5ce701bc2.jpg,SUGGESTIVE,normal,nsfw,0.99810791015625,0.0018920493312180042
346
+ 519,ef0ac7d6-ee890fafca12595501b30093d54320af.jpg,ef0ac7d6-ee890fafca12595501b30093d54320af.jpg,FAMILY_SAFE,normal,nsfw,0.9981156587600708,0.0018843928119167686
347
+ 520,eb7e0cef-ee93704434f4aa96859be27f8b04f4ca.jpg,eb7e0cef-ee93704434f4aa96859be27f8b04f4ca.jpg,UNCERTAIN,normal,nsfw,0.9998538494110107,0.00014615508553106338
348
+ 521,6127f82d-ee4fad4fd52e6f1dc5121d1965a31e61.jpg,6127f82d-ee4fad4fd52e6f1dc5121d1965a31e61.jpg,FAMILY_SAFE,normal,nsfw,0.999703586101532,0.00029643464949913323
349
+ 522,cc55d5b2-ee745023dec8ba83a3b401aaa5a34f2d.jpg,cc55d5b2-ee745023dec8ba83a3b401aaa5a34f2d.jpg,FAMILY_SAFE,normal,nsfw,0.9996598958969116,0.0003401471476536244
350
+ 523,ae6d504b-ee44eff2d80d58e6f2c6122fcc468c63.jpg,ae6d504b-ee44eff2d80d58e6f2c6122fcc468c63.jpg,SUGGESTIVE,normal,nsfw,0.8872804045677185,0.11271965503692627
351
+ 524,5fee8ad9-ee435d2ab53c469e63808c8d60c6351e.jpg,5fee8ad9-ee435d2ab53c469e63808c8d60c6351e.jpg,UNCERTAIN,normal,nsfw,0.9997671246528625,0.00023291923571377993
352
+ 525,a0a2d935-ee166c5de961d809600d8a47a8284e7e.jpg,a0a2d935-ee166c5de961d809600d8a47a8284e7e.jpg,SUGGESTIVE,normal,nsfw,0.9969425797462463,0.0030573715921491385
353
+ 526,8a5bf427-ee3086dce1a61b091b09bb8bf460d671.jpg,8a5bf427-ee3086dce1a61b091b09bb8bf460d671.jpg,FAMILY_SAFE,normal,nsfw,0.9993253946304321,0.0006745969876646996
354
+ 527,305abb91-ede68be22f91fbddc1f4e072b05c0ae5.jpg,305abb91-ede68be22f91fbddc1f4e072b05c0ae5.jpg,FAMILY_SAFE,normal,nsfw,0.9994320273399353,0.0005679792957380414
355
+ 528,429234c0-edf1ded0501e179112b516a99a58f6b3.jpg,429234c0-edf1ded0501e179112b516a99a58f6b3.jpg,SUGGESTIVE,normal,nsfw,0.9998096823692322,0.00019035361765418202
356
+ 529,90e7a11a-edf5de76bd4db7ec201caf452ffd1519.jpg,90e7a11a-edf5de76bd4db7ec201caf452ffd1519.jpg,FAMILY_SAFE,normal,nsfw,0.9998328685760498,0.0001671185455052182
357
+ 530,357576cd-edbca137d1801a86d305e4ad3f3a6305.jpg,357576cd-edbca137d1801a86d305e4ad3f3a6305.jpg,SUGGESTIVE,normal,nsfw,0.999861478805542,0.0001384449569741264
358
+ 531,274e3d8d-edcdf84578e3103a185073e581089641.jpg,274e3d8d-edcdf84578e3103a185073e581089641.jpg,SUGGESTIVE,normal,nsfw,0.9994798302650452,0.0005201554740779102
359
+ 532,09696d76-edd88c179c4b8d37223a74e58757921b.jpg,09696d76-edd88c179c4b8d37223a74e58757921b.jpg,SUGGESTIVE,normal,nsfw,0.9998741149902344,0.00012588826939463615
360
+ 533,2befe926-eddca7fbfe13ebce00a268c70550b580.jpg,2befe926-eddca7fbfe13ebce00a268c70550b580.jpg,SUGGESTIVE,normal,nsfw,0.9993149042129517,0.0006850805366411805
361
+ 534,dd0a59aa-edddf271573716e8e4e571451c634b85.jpg,dd0a59aa-edddf271573716e8e4e571451c634b85.jpg,UNCERTAIN,normal,nsfw,0.9937036633491516,0.006296264939010143
362
+ 535,52784190-ed8db5c9ad94f3f769b504dba5d12f3c.jpg,52784190-ed8db5c9ad94f3f769b504dba5d12f3c.jpg,FAMILY_SAFE,normal,nsfw,0.9998564720153809,0.0001435485464753583
363
+ 536,7c8e5c47-ed9f73ea5150c7871fa9ab71e2808929.jpg,7c8e5c47-ed9f73ea5150c7871fa9ab71e2808929.jpg,UNCERTAIN,normal,nsfw,0.9996107220649719,0.0003893586399499327
364
+ 537,23660c64-ed78b3d3e8cf8fa817e55818ef219f2f.jpg,23660c64-ed78b3d3e8cf8fa817e55818ef219f2f.jpg,SUGGESTIVE,normal,nsfw,0.9991844296455383,0.000815597188193351
365
+ 538,36ccdc32-ed9326789faddcf165c85c0c46e61892.jpg,36ccdc32-ed9326789faddcf165c85c0c46e61892.jpg,SUGGESTIVE,normal,nsfw,0.9997581839561462,0.00024176304577849805
366
+ 539,eae0b0ad-eda271d3e424bcbddf17ba2795ca31ab.jpg,eae0b0ad-eda271d3e424bcbddf17ba2795ca31ab.jpg,SUGGESTIVE,normal,nsfw,0.9977908134460449,0.002209202153608203
367
+ 540,7817ce56-edb7db1fcb69296415e2f32cd5cac1ba.jpg,7817ce56-edb7db1fcb69296415e2f32cd5cac1ba.jpg,FAMILY_SAFE,normal,nsfw,0.9995988011360168,0.0004011883575003594
368
+ 541,7151cdf8-edb3802789ea655bda76512662ef16fd.jpg,7151cdf8-edb3802789ea655bda76512662ef16fd.jpg,FAMILY_SAFE,normal,nsfw,0.9998522996902466,0.00014772574650123715
369
+ 542,420c8652-ed4fa0d4320a9474fcdbf9f260d5ccd9.jpg,420c8652-ed4fa0d4320a9474fcdbf9f260d5ccd9.jpg,SUGGESTIVE,normal,nsfw,0.9996261596679688,0.000373855815269053
370
+ 543,f12d507b-ed6ad32bca5a4012c154cea7d74675c1.jpg,f12d507b-ed6ad32bca5a4012c154cea7d74675c1.jpg,SUGGESTIVE,normal,nsfw,0.9991185069084167,0.0008814343600533903
371
+ 544,ea78c268-ed59c63ff419564a0091bf4dba0db57b.jpg,ea78c268-ed59c63ff419564a0091bf4dba0db57b.jpg,SUGGESTIVE,normal,nsfw,0.9945167899131775,0.005483196582645178
372
+ 545,8bc1df46-ed684d1f722a3e6fd6644a086a941908.jpg,8bc1df46-ed684d1f722a3e6fd6644a086a941908.jpg,SUGGESTIVE,normal,nsfw,0.999273955821991,0.0007260265410877764
373
+ 546,6ac74b20-ed0dd06c432216aa905a2732eb14d356.jpg,6ac74b20-ed0dd06c432216aa905a2732eb14d356.jpg,FAMILY_SAFE,normal,nsfw,0.9998636245727539,0.00013629836030304432
374
+ 547,f88fee24-ed21cb4f07ee87064a3203c18fd4cce1.jpg,f88fee24-ed21cb4f07ee87064a3203c18fd4cce1.jpg,UNCERTAIN,normal,nsfw,0.9998766183853149,0.0001233148213941604
375
+ 548,2f604374-ed22e47a89b289fcddbd58d84fe4af7a.jpg,2f604374-ed22e47a89b289fcddbd58d84fe4af7a.jpg,FAMILY_SAFE,normal,nsfw,0.999733030796051,0.0002670004905667156
376
+ 549,3afea32d-ece69a65ed45a3edf1fc00efbbfaedb7.jpg,3afea32d-ece69a65ed45a3edf1fc00efbbfaedb7.jpg,FAMILY_SAFE,normal,nsfw,0.9996899366378784,0.00031009389203973114
377
+ 550,e4e420e1-ece99c6f98d2a711d94c11bb54cce29f.jpg,e4e420e1-ece99c6f98d2a711d94c11bb54cce29f.jpg,SUGGESTIVE,normal,nsfw,0.9987702965736389,0.0012296558124944568
378
+ 551,c356522a-ed0ab3e1587ed20eeace37e94f8d54ba.jpg,c356522a-ed0ab3e1587ed20eeace37e94f8d54ba.jpg,FAMILY_SAFE,normal,nsfw,0.9998643398284912,0.00013560325896833092
379
+ 552,a9f4ce1f-ed0b80d5b8a1a6cd023555b1695c5037.jpg,a9f4ce1f-ed0b80d5b8a1a6cd023555b1695c5037.jpg,FAMILY_SAFE,normal,nsfw,0.9998100399971008,0.00018995435675606132
380
+ 553,5822bed3-ed0c697143d8cfcf7772d205537c1a53.jpg,5822bed3-ed0c697143d8cfcf7772d205537c1a53.jpg,FAMILY_SAFE,normal,nsfw,0.9998100399971008,0.000189999642316252
381
+ 554,8d880f44-ed01e05d1b0f341627595626f0d1fc19.jpg,8d880f44-ed01e05d1b0f341627595626f0d1fc19.jpg,UNCERTAIN,normal,nsfw,0.9995793700218201,0.000420599477365613
382
+ 555,d513daab-ed0590024f5fe63e2dca696949cd4a3b.jpg,d513daab-ed0590024f5fe63e2dca696949cd4a3b.jpg,UNCERTAIN,normal,nsfw,0.9990025162696838,0.0009974924614652991
383
+ 556,c80032d6-ecd074a8a73aafc255fb87c50ab46d32.jpg,c80032d6-ecd074a8a73aafc255fb87c50ab46d32.jpg,SUGGESTIVE,normal,nsfw,0.9997041821479797,0.0002957940741907805
384
+ 557,5cb76bcd-ecd461884c7d815ca300840ac7dff722.jpg,5cb76bcd-ecd461884c7d815ca300840ac7dff722.jpg,SUGGESTIVE,normal,nsfw,0.9976071119308472,0.0023929032031446695
385
+ 558,475e3763-ecab477c7f479d98386c20ed15ddc8ed.jpg,475e3763-ecab477c7f479d98386c20ed15ddc8ed.jpg,SUGGESTIVE,normal,nsfw,0.9997259974479675,0.00027403709827922285
386
+ 559,38faa256-ecb96a10b5007cac877671cd626e11bc.jpg,38faa256-ecb96a10b5007cac877671cd626e11bc.jpg,SUGGESTIVE,normal,nsfw,0.9998334646224976,0.00016654586943332106
387
+ 560,0a0d8662-ecb215bf839692ed00a48cf006405234.jpg,0a0d8662-ecb215bf839692ed00a48cf006405234.jpg,FAMILY_SAFE,normal,nsfw,0.9994189739227295,0.000581087835598737
388
+ 561,fe38b006-ec912c8d68846d3d4cae46a6dc2e2e67.jpg,fe38b006-ec912c8d68846d3d4cae46a6dc2e2e67.jpg,SUGGESTIVE,normal,nsfw,0.9995977282524109,0.0004022495122626424
389
+ 562,61198ea6-eca396464fb1343904128cac952dccba.jpg,61198ea6-eca396464fb1343904128cac952dccba.jpg,SUGGESTIVE,normal,nsfw,0.9922537207603455,0.007746343035250902
390
+ 563,f42a237d-ec8ba9e30ab570db99c521c4d75e877a.jpg,f42a237d-ec8ba9e30ab570db99c521c4d75e877a.jpg,SUGGESTIVE,normal,nsfw,0.9998227953910828,0.00017721373296808451
391
+ 564,9ea2a68b-ec75da7bce977ab4b2d77224ad0ed08d.jpg,9ea2a68b-ec75da7bce977ab4b2d77224ad0ed08d.jpg,FAMILY_SAFE,normal,nsfw,0.9998867511749268,0.0001131855824496597
392
+ 565,b19e9aff-ec7752c4445664d6a594779d0cba33a6.jpg,b19e9aff-ec7752c4445664d6a594779d0cba33a6.jpg,SUGGESTIVE,normal,nsfw,0.9447913765907288,0.05520857498049736
393
+ 566,cb8a1b42-ec4ed6c5f59cd751b1d4a8cbd5ef9730.jpg,cb8a1b42-ec4ed6c5f59cd751b1d4a8cbd5ef9730.jpg,FAMILY_SAFE,normal,nsfw,0.9988370537757874,0.0011629430809989572
394
+ 567,11f16074-ec4f3a4fceac2b83221995baa3ce6138.jpg,11f16074-ec4f3a4fceac2b83221995baa3ce6138.jpg,SUGGESTIVE,normal,nsfw,0.9902916550636292,0.00970835704356432
395
+ 568,cf990f78-ec4898ce293c0fce9e3df490ef83741d.jpg,cf990f78-ec4898ce293c0fce9e3df490ef83741d.jpg,FAMILY_SAFE,normal,nsfw,0.9609015583992004,0.03909844160079956
396
+ 569,958ec76b-ec5156a1d4dad967c4ed14a44fc9c10f.jpg,958ec76b-ec5156a1d4dad967c4ed14a44fc9c10f.jpg,FAMILY_SAFE,normal,nsfw,0.9998987913131714,0.00010114439646713436
397
+ 570,b1c40d0c-ec5965d57ca71e648adc70401156b743.jpg,b1c40d0c-ec5965d57ca71e648adc70401156b743.jpg,FAMILY_SAFE,normal,nsfw,0.9998644590377808,0.0001355704152956605
398
+ 571,5c8c7c7e-ec3c4b7b7261c385c7792663a153b2dc.jpg,5c8c7c7e-ec3c4b7b7261c385c7792663a153b2dc.jpg,SUGGESTIVE,normal,nsfw,0.998941957950592,0.001058094552718103
399
+ 572,c8925d60-ec2488d58f5c6f80593119f44bdb6f36.jpg,c8925d60-ec2488d58f5c6f80593119f44bdb6f36.jpg,SUGGESTIVE,normal,nsfw,0.999871015548706,0.0001289922365685925
400
+ 573,783f692a-ec3873aa10b64f2c5c0ae4044d8dd916.jpg,783f692a-ec3873aa10b64f2c5c0ae4044d8dd916.jpg,SUGGESTIVE,normal,nsfw,0.9997977614402771,0.0002022040425799787
401
+ 574,c59d6aef-ec366037d7416be3f574f23f7e0fb3ef.jpg,c59d6aef-ec366037d7416be3f574f23f7e0fb3ef.jpg,SUGGESTIVE,normal,nsfw,0.9989868998527527,0.0010131052695214748
402
+ 575,ba90116c-ebfda352bd5113859294aff74239faed.jpg,ba90116c-ebfda352bd5113859294aff74239faed.jpg,UNCERTAIN,normal,nsfw,0.9998039603233337,0.0001960248191608116
403
+ 576,74013397-ebfe9c315f7eba7ee13ffecfbe52cab8.jpg,74013397-ebfe9c315f7eba7ee13ffecfbe52cab8.jpg,FAMILY_SAFE,normal,nsfw,0.9998219609260559,0.0001780944294296205
404
+ 577,2827b91c-ec1a1c97dab7c740188280a871b78251.jpg,2827b91c-ec1a1c97dab7c740188280a871b78251.jpg,SUGGESTIVE,normal,nsfw,0.9150409698486328,0.0849590003490448
405
+ 578,07efebe4-ebd3a3a173aa3985f69c95a9bbeec91a.jpg,07efebe4-ebd3a3a173aa3985f69c95a9bbeec91a.jpg,SUGGESTIVE,normal,nsfw,0.9980854988098145,0.001914576510898769
406
+ 579,34018f60-ebe7ee3f3605c66f1be4eb323e3ae05f.jpg,34018f60-ebe7ee3f3605c66f1be4eb323e3ae05f.jpg,SUGGESTIVE,normal,nsfw,0.9970672726631165,0.0029327378142625093
407
+ 580,a2dd1244-ebe59192b6950204b3fee2c0edf9242d.jpg,a2dd1244-ebe59192b6950204b3fee2c0edf9242d.jpg,SUGGESTIVE,normal,nsfw,0.9972516894340515,0.0027482740115374327
408
+ 581,670193c9-ebef8223abe988c0821aefae3c6e6e98.jpg,670193c9-ebef8223abe988c0821aefae3c6e6e98.jpg,UNCERTAIN,normal,nsfw,0.9964235424995422,0.0035764260683208704
409
+ 582,c91cb641-ebf05bafa1371d6feb6aa81ea7cbbf7a.jpg,c91cb641-ebf05bafa1371d6feb6aa81ea7cbbf7a.jpg,SUGGESTIVE,normal,nsfw,0.9996639490127563,0.00033601850736886263
410
+ 583,e91af0b1-ebf0503fe32e2e3a76346007e4aaf886.jpg,e91af0b1-ebf0503fe32e2e3a76346007e4aaf886.jpg,SUGGESTIVE,normal,nsfw,0.9997934699058533,0.00020658686116803437
411
+ 584,5fddd072-ebb2b0dd48dc25f919f57ff2a2e7312a.jpg,5fddd072-ebb2b0dd48dc25f919f57ff2a2e7312a.jpg,FAMILY_SAFE,normal,nsfw,0.9993059635162354,0.0006939795566722751
412
+ 585,26c7e03e-ebcf6c5f871a5dc3e6e9f035bf8fba78.jpg,26c7e03e-ebcf6c5f871a5dc3e6e9f035bf8fba78.jpg,UNCERTAIN,normal,nsfw,0.9995720982551575,0.00042792936437763274
413
+ 586,19060fc3-ebd170644a805b3966416bc6f2d40528.jpg,19060fc3-ebd170644a805b3966416bc6f2d40528.jpg,SUGGESTIVE,normal,nsfw,0.9988935589790344,0.001106423675082624
414
+ 587,6a2a26d9-eb8a6ed9fea3fd6949774e598fed9d20.jpg,6a2a26d9-eb8a6ed9fea3fd6949774e598fed9d20.jpg,SUGGESTIVE,normal,nsfw,0.9997058510780334,0.00029406617977656424
415
+ 588,61cf0086-eb8d76f9ea022d2b18f119288e0fb083.jpg,61cf0086-eb8d76f9ea022d2b18f119288e0fb083.jpg,SUGGESTIVE,normal,nsfw,0.9820926189422607,0.0179073978215456
416
+ 589,71c87364-eb9f10122a8e23579c8d1a2cdc0e8db4.jpg,71c87364-eb9f10122a8e23579c8d1a2cdc0e8db4.jpg,SUGGESTIVE,normal,nsfw,0.9997401833534241,0.0002597524144221097
417
+ 590,9eebe5b1-eb905d1b7fc7b0eac9adea12bee291bc.jpg,9eebe5b1-eb905d1b7fc7b0eac9adea12bee291bc.jpg,SUGGESTIVE,normal,nsfw,0.9997889399528503,0.00021104497136548162
418
+ 591,b7ac5915-eb915f5d723fe6d575e7471e8130924d.jpg,b7ac5915-eb915f5d723fe6d575e7471e8130924d.jpg,SUGGESTIVE,normal,nsfw,0.9809674620628357,0.01903250254690647
419
+ 592,700eea71-eb7967ec45df17fadffae1e9b84a1c03.jpg,700eea71-eb7967ec45df17fadffae1e9b84a1c03.jpg,FAMILY_SAFE,normal,nsfw,0.9987695813179016,0.0012304328847676516
420
+ 593,dd925e69-eba026d7ab6dcbf77c05e9e1fce9f98b.jpg,dd925e69-eba026d7ab6dcbf77c05e9e1fce9f98b.jpg,SUGGESTIVE,normal,nsfw,0.999840497970581,0.000159459697897546
421
+ 594,01dc90a4-eba313f10bf5953b52dc8145a668f4b1.jpg,01dc90a4-eba313f10bf5953b52dc8145a668f4b1.jpg,FAMILY_SAFE,normal,nsfw,0.9991907477378845,0.0008092051721177995
422
+ 595,49462a8c-eb3e848d5f3969eb49f10ef14db11593.jpg,49462a8c-eb3e848d5f3969eb49f10ef14db11593.jpg,FAMILY_SAFE,nsfw,normal,0.9381260871887207,0.06187397241592407
423
+ 596,84cabf94-eb46a86b864004fb56c426f3e6859869.jpg,84cabf94-eb46a86b864004fb56c426f3e6859869.jpg,UNCERTAIN,normal,nsfw,0.9998399019241333,0.00016006341320462525
424
+ 597,8d99d164-eb630bc86c8b347b6e4f3f947ef03b45.jpg,8d99d164-eb630bc86c8b347b6e4f3f947ef03b45.jpg,SUGGESTIVE,normal,nsfw,0.9990540146827698,0.000945966923609376
425
+ 598,a5dc7a8b-eb0b4aec28838b01b635ae2d906319fd.jpg,a5dc7a8b-eb0b4aec28838b01b635ae2d906319fd.jpg,FAMILY_SAFE,normal,nsfw,0.998967170715332,0.0010328685166314244
426
+ 599,c998ec26-eb0fd6ae406bcbf648f37716832167b7.jpg,c998ec26-eb0fd6ae406bcbf648f37716832167b7.jpg,SUGGESTIVE,normal,nsfw,0.9967557787895203,0.003244214691221714
427
+ 600,9a363203-eb1efa483d18843e2d34330b324e49e7.jpg,9a363203-eb1efa483d18843e2d34330b324e49e7.jpg,UNCERTAIN,normal,nsfw,0.997420072555542,0.0025799863506108522
428
+ 601,80174771-eb2bbc40d914d047f6a15d0d1db4af9b.jpg,80174771-eb2bbc40d914d047f6a15d0d1db4af9b.jpg,SUGGESTIVE,normal,nsfw,0.9987003803253174,0.001299550523981452
429
+ 602,da470e08-eb214a887113aeae8902116d5ebcb84a.jpg,da470e08-eb214a887113aeae8902116d5ebcb84a.jpg,SUGGESTIVE,normal,nsfw,0.9995766282081604,0.00042332481825724244
430
+ 603,c1369917-eb396372a0cbb497fcb259ecf9859fab.jpg,c1369917-eb396372a0cbb497fcb259ecf9859fab.jpg,UNCERTAIN,normal,nsfw,0.9998708963394165,0.00012909609358757734
431
+ 604,eaf48512-eae00de851425f14cf837f6238fb3111.jpg,eaf48512-eae00de851425f14cf837f6238fb3111.jpg,SUGGESTIVE,normal,nsfw,0.9997245669364929,0.00027536548441275954
432
+ 605,3ae42af7-ea9478ccf8264c91cf5485c93fecba1b.jpg,3ae42af7-ea9478ccf8264c91cf5485c93fecba1b.jpg,SUGGESTIVE,normal,nsfw,0.6062589287757874,0.39374110102653503
433
+ 606,990348b4-ea889002933fd0689c1bd805505d00ca.jpg,990348b4-ea889002933fd0689c1bd805505d00ca.jpg,FAMILY_SAFE,normal,nsfw,0.9997212290763855,0.00027869868790730834
434
+ 607,77e2c941-eaa26e78346e1d92ee8b34a80aff9826.jpg,77e2c941-eaa26e78346e1d92ee8b34a80aff9826.jpg,SUGGESTIVE,normal,nsfw,0.9970595240592957,0.0029404882807284594
435
+ 608,775910aa-eaac5564f212f117e0ea7174b0876484.jpg,775910aa-eaac5564f212f117e0ea7174b0876484.jpg,SUGGESTIVE,normal,nsfw,0.9997846484184265,0.00021536748681683093
436
+ 609,b8405e3c-eac0ebc831eeb117fb36c86452b6c5f5.jpg,b8405e3c-eac0ebc831eeb117fb36c86452b6c5f5.jpg,SUGGESTIVE,normal,nsfw,0.9998538494110107,0.00014617794658988714
437
+ 610,1e5eb554-ea5d2de8ab1fd0ec4b61ed153805d638.jpg,1e5eb554-ea5d2de8ab1fd0ec4b61ed153805d638.jpg,SUGGESTIVE,normal,nsfw,0.9994828701019287,0.0005170419462956488
438
+ 611,ee2ed958-ea6df97b08a8c96a9587abe7764f9cc3.jpg,ee2ed958-ea6df97b08a8c96a9587abe7764f9cc3.jpg,SUGGESTIVE,normal,nsfw,0.9993582367897034,0.000641746271867305
439
+ 612,27bffd86-ea6fffbf1d3afbbbeea92a3c1c6deffd.jpg,27bffd86-ea6fffbf1d3afbbbeea92a3c1c6deffd.jpg,SUGGESTIVE,normal,nsfw,0.9930070638656616,0.006992902606725693
440
+ 613,bc246849-ea71edf190810bac9c56483239eae59a.jpg,bc246849-ea71edf190810bac9c56483239eae59a.jpg,SUGGESTIVE,normal,nsfw,0.9998544454574585,0.00014554927474819124
441
+ 614,39c155ed-ea4b1f27828cbd87b0f95f1f36cd7a54.jpg,39c155ed-ea4b1f27828cbd87b0f95f1f36cd7a54.jpg,UNCERTAIN,normal,nsfw,0.999687910079956,0.0003121345944236964
442
+ 615,2b92f3dc-ea5380a591b6e34d1382a67221b558aa.jpg,2b92f3dc-ea5380a591b6e34d1382a67221b558aa.jpg,UNCERTAIN,normal,nsfw,0.9995667338371277,0.000433213310316205
443
+ 616,03579438-ea1f42c6e20979a40230b242e5d6bbee.jpg,03579438-ea1f42c6e20979a40230b242e5d6bbee.jpg,UNCERTAIN,normal,nsfw,0.9997838139533997,0.0002162015880458057
444
+ 617,e5da72ea-ea20b59163f3b360f62d68e4f132393b.jpg,e5da72ea-ea20b59163f3b360f62d68e4f132393b.jpg,SUGGESTIVE,normal,nsfw,0.9900760054588318,0.009924004785716534
445
+ 618,7fce3819-ea37c94a8cb1c50c4084d4c9cc9bd177.jpg,7fce3819-ea37c94a8cb1c50c4084d4c9cc9bd177.jpg,UNCERTAIN,normal,nsfw,0.9997311234474182,0.00026884375256486237
446
+ 619,0b24edd3-e9d77067389acfaa2897de087ec279a1.jpg,0b24edd3-e9d77067389acfaa2897de087ec279a1.jpg,UNCERTAIN,normal,nsfw,0.9998729228973389,0.0001270701759494841
447
+ 620,b61339af-e9e395951ba5901de8ba2b15899689ee.jpg,b61339af-e9e395951ba5901de8ba2b15899689ee.jpg,UNCERTAIN,normal,nsfw,0.9998766183853149,0.00012331387551967055
448
+ 621,bb7c935c-e9eefa0852edb5311b63d6fbf85a9815.jpg,bb7c935c-e9eefa0852edb5311b63d6fbf85a9815.jpg,SUGGESTIVE,normal,nsfw,0.9995937943458557,0.00040626354166306555
449
+ 622,3bcb2655-e9f9cb6790fcb4c6960e5b834abfe72c.jpg,3bcb2655-e9f9cb6790fcb4c6960e5b834abfe72c.jpg,SUGGESTIVE,normal,nsfw,0.7081856727600098,0.29181429743766785
450
+ 623,630fff65-e9f0689b5df3c0bbb17ec7a670ebacb8.jpg,630fff65-e9f0689b5df3c0bbb17ec7a670ebacb8.jpg,SUGGESTIVE,normal,nsfw,0.998375415802002,0.0016246135346591473
451
+ 624,3c9f8955-e9b23e6e929900bbbbb29be5affa0ae5.jpg,3c9f8955-e9b23e6e929900bbbbb29be5affa0ae5.jpg,SUGGESTIVE,normal,nsfw,0.9996837377548218,0.00031631262390874326
452
+ 625,e2b2a6ac-e9a15368497b12a5f502151ce2babdd1.jpg,e2b2a6ac-e9a15368497b12a5f502151ce2babdd1.jpg,UNCERTAIN,normal,nsfw,0.999388575553894,0.0006114268326200545
453
+ 626,28c4871f-e9ab035913a3f11963041ef9b89caa2e.jpg,28c4871f-e9ab035913a3f11963041ef9b89caa2e.jpg,SUGGESTIVE,nsfw,normal,0.5549147725105286,0.4450852572917938
454
+ 627,e41d2daa-e96c2e00fce0f439d17ad2731eb76f06.jpg,e41d2daa-e96c2e00fce0f439d17ad2731eb76f06.jpg,SUGGESTIVE,nsfw,normal,0.7233740091323853,0.27662596106529236
455
+ 628,31a90818-e983a4f33a2035ff412231c35d7fcfa5.jpg,31a90818-e983a4f33a2035ff412231c35d7fcfa5.jpg,FAMILY_SAFE,normal,nsfw,0.9996706247329712,0.0003293689514975995
456
+ 629,4da9491c-e95cf7d4d15184aeb5847e9e6a51e9d0.jpg,4da9491c-e95cf7d4d15184aeb5847e9e6a51e9d0.jpg,FAMILY_SAFE,normal,nsfw,0.9993706345558167,0.0006293475744314492
data/labels.csv ADDED
@@ -0,0 +1,456 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ choice,image
2
+ UNCERTAIN,/data/imgs/0f7d40c8-ffd86ff5fbd82d0e6eb176cbc0b83634.jpg
3
+ FAMILY_SAFE,/data/imgs/abe701ef-fff11e31ec0146bd469e5e3afa14a37a.jpg
4
+ UNCERTAIN,/data/imgs/f3f6d9e7-ff8ba374753afc33d6efcddfa8190820.jpg
5
+ UNCERTAIN,/data/imgs/2a71e0e5-ff8f980e673cd0ca47acd5e46a60860e.jpg
6
+ UNCERTAIN,/data/imgs/883fb0f5-ff89d127a396bc4e269161fcb0debafc.jpg
7
+ FAMILY_SAFE,/data/imgs/2af0302e-ff943feb34677ab7380b172f5a879061.jpg
8
+ SUGGESTIVE,/data/imgs/00b62e8d-ff8923c82c694582614e3c6426f27d50.jpg
9
+ UNCERTAIN,/data/imgs/bc29dd51-ffa3ea1e617fc51d9f897c3651d8c58c.jpg
10
+ FAMILY_SAFE,/data/imgs/7efcc1a9-ffb14bc253b175a8064d17ffe2c7249b.jpg
11
+ UNCERTAIN,/data/imgs/1ade517e-ff5c303cb978725b41ecdc33f99a9811.jpg
12
+ FAMILY_SAFE,/data/imgs/e90235cf-ff4ee441959276cee003489e10030787.jpg
13
+ SUGGESTIVE,/data/imgs/cb00e4b8-ff57d7cdec78610cfc32857254662054.jpg
14
+ SUGGESTIVE,/data/imgs/d140fb6b-ff42165c1c025a99db8fd3fbf47b9e8d.jpg
15
+ SUGGESTIVE,/data/imgs/a1cd3b22-ff0dbc383dfd54bed44ec0583cbba777.jpg
16
+ SUGGESTIVE,/data/imgs/ed323d8b-ff3cae8c55408c7ed67ef1daf9751319.jpg
17
+ UNCERTAIN,/data/imgs/c8ec92d5-fee9ea29f695f6f590dbaf3ecc99351b.jpg
18
+ SUGGESTIVE,/data/imgs/f2c80c32-ff0a5673ea6b3139e5440728d7be66b4.jpg
19
+ SUGGESTIVE,/data/imgs/e9b17aee-ff007a23e0caf370e590d636413628fb.jpg
20
+ SUGGESTIVE,/data/imgs/c53b2fea-feb2e70ea41a86df9c9984df1aff49d1.jpg
21
+ UNCERTAIN,/data/imgs/1540c751-feb3ae09e5e5e2d27b1c6b0d75e66c73.jpg
22
+ UNCERTAIN,/data/imgs/18eb5521-febafb43e0a8a5a62bd64d0e1e2c51bb.jpg
23
+ FAMILY_SAFE,/data/imgs/09c99130-fec2e3149882333a9a5a381f562f9536.jpg
24
+ SUGGESTIVE,/data/imgs/6d3cfee1-fec30d1ce7fd3c5f8056da81cc0f56cd.jpg
25
+ UNCERTAIN,/data/imgs/02e91ed5-fecaf071c6d469a5e9db4516cf04c34f.jpg
26
+ UNCERTAIN,/data/imgs/6084597d-fed1a27739f7fc733adfe4843185b995.jpg
27
+ FAMILY_SAFE,/data/imgs/18699932-fe8d4f54e561bf7a76f70e6b28299d59.jpg
28
+ FAMILY_SAFE,/data/imgs/759b4eb3-fe4ec0e6a0803e088352ad9cba4e969a.jpg
29
+ UNCERTAIN,/data/imgs/fd0a4064-fe4f57b1dc8f46cbd79d69ad05652ac8.jpg
30
+ SUGGESTIVE,/data/imgs/722170f8-fe61bb1e7709ddb889307cd6d644bbb9.jpg
31
+ UNCERTAIN,/data/imgs/597903c6-fe446bc03fc71ccd0559f01bebbd073d.jpg
32
+ UNCERTAIN,/data/imgs/ded203db-fe11b6d8acc63b2819390a12a32bbd30.jpg
33
+ FAMILY_SAFE,/data/imgs/72e813f5-fde81d8132b2c70f39798f11186997bd.jpg
34
+ FAMILY_SAFE,/data/imgs/6474cda9-fde879b3ab6d5f8fb99aacad817dc18f.jpg
35
+ FAMILY_SAFE,/data/imgs/9d734426-fdfc5d73210e52e70f9c1b337c7a7423.jpg
36
+ UNCERTAIN,/data/imgs/940a8d2a-fe06e1df8abfcc599b4edf3ceb84b767.jpg
37
+ FAMILY_SAFE,/data/imgs/6cf544b3-fdcc56c858be84644a24f71ca1ecf009.jpg
38
+ FAMILY_SAFE,/data/imgs/c90492e9-fdce40a990a776a3ef934aa8eacfa0da.jpg
39
+ FAMILY_SAFE,/data/imgs/d5d56f5c-fdd0daec3624d1d7acf8048484a7efe2.jpg
40
+ UNCERTAIN,/data/imgs/1b6ade1e-fdbea88aeaa93ac7dbcb38d07b917e7d.jpg
41
+ UNCERTAIN,/data/imgs/e7c85aca-fdc00eac708506181cc0b3018d217b97.jpg
42
+ SUGGESTIVE,/data/imgs/6519a095-fd8eea5a65e5ef6cec86fe214c5a3cd3.jpg
43
+ FAMILY_SAFE,/data/imgs/bdce6a65-fd918dbde3d770d03716835677e7b611.jpg
44
+ SUGGESTIVE,/data/imgs/8ed58548-fd9371dd911d3a2099a6a652db4248b4.jpg
45
+ SUGGESTIVE,/data/imgs/72f07c2b-fd94006f594a7575961947fcca9faa08.jpg
46
+ FAMILY_SAFE,/data/imgs/9eb0117b-fd7f50b9d57c9384041914d1b4cdd77c.jpg
47
+ FAMILY_SAFE,/data/imgs/e243712d-fd71a7a81dea0c9fc195cf6d6f32b0a9.jpg
48
+ FAMILY_SAFE,/data/imgs/3198b794-fd826bc213d0273afbb83b3c4aec1adc.jpg
49
+ FAMILY_SAFE,/data/imgs/75ee25dc-fd71396788725bb988c9cd3689fcde68.jpg
50
+ UNCERTAIN,/data/imgs/3dade0ea-fd3e2ce0703f9c027862f5a79c788b56.jpg
51
+ FAMILY_SAFE,/data/imgs/13a4e537-fd4bbf6927a13c5289dfa509b7a4078b.jpg
52
+ SUGGESTIVE,/data/imgs/afddcafe-fd4da06b37fbae5380cf0d7fa0678103.jpg
53
+ FAMILY_SAFE,/data/imgs/84acb822-fd4eb64e7f0ca587d908435fb95b2909.jpg
54
+ FAMILY_SAFE,/data/imgs/022b4f3e-fd39709199d9f45147c183dee3c5d697.jpg
55
+ SUGGESTIVE,/data/imgs/d4ccee96-fd24b551b4531ae14433a7950eaa85b3.jpg
56
+ FAMILY_SAFE,/data/imgs/3a78a22b-fd38a720ae06640dd25aaf9c11dd9672.jpg
57
+ UNCERTAIN,/data/imgs/6d307a2e-fd2268af5eafa750a7e5a3a521ff7fdd.jpg
58
+ SUGGESTIVE,/data/imgs/b224fc67-fd150330c8a62cd9ab45e51f4de6969f.jpg
59
+ UNCERTAIN,/data/imgs/6da2441b-fcf901727f0b68c35c55f5734189c1f0.jpg
60
+ SUGGESTIVE,/data/imgs/ef1cbf46-fd08dc2a899b79496087b34b88b82f2d.jpg
61
+ SUGGESTIVE,/data/imgs/d1a55b96-fca9c570e98556bb8c40835c55cba67d.jpg
62
+ SUGGESTIVE,/data/imgs/fc1397fa-fcbbcf0191ab925aa67604ff0c7f141e.jpg
63
+ SUGGESTIVE,/data/imgs/74454c95-fcbf1a2490d9531efc33322b2702912f.jpg
64
+ FAMILY_SAFE,/data/imgs/b7206afa-fcc50f8b1362042b4acad74a4b4ae4ed.jpg
65
+ SUGGESTIVE,/data/imgs/64be13ce-fc813fdb8cb41651b9b4d5141fcd386a.jpg
66
+ SUGGESTIVE,/data/imgs/d5c64c7c-fca4fe8aa6a350ab9680692ebbe1e13c.jpg
67
+ SUGGESTIVE,/data/imgs/8af150d5-fca025dcf76a43feae0bf2e8e9a6c1e2.jpg
68
+ SUGGESTIVE,/data/imgs/0df4b27b-fc6fefe3f417fdbfd91da8cffe59f7db.jpg
69
+ SUGGESTIVE,/data/imgs/a90c3b4e-fc39f11aab8aae4bb03057701a7b8312.jpg
70
+ FAMILY_SAFE,/data/imgs/3c42d798-fc74b1fc4095a324b1f1ca1ac322278d.jpg
71
+ FAMILY_SAFE,/data/imgs/0bfb63b2-fc644a2683a976d8391e70f88408468b.jpg
72
+ FAMILY_SAFE,/data/imgs/b0091e81-fbf4b07fffa61fa2650649ec19debf39.jpg
73
+ SUGGESTIVE,/data/imgs/6faa5147-fbf13c899fbdd8e750dc46cc284249c5.jpg
74
+ FAMILY_SAFE,/data/imgs/bcfeea6a-fc1baf625d3e36ca4c5a29521f72525e.jpg
75
+ FAMILY_SAFE,/data/imgs/0d5b1538-fc21d81fb821d214b4f4f1d7f553475d.jpg
76
+ UNCERTAIN,/data/imgs/cfb6f5d7-fc07723d545d098aafab4aeb7d2e65a3.jpg
77
+ SUGGESTIVE,/data/imgs/43a803bd-fbcddca8eb614e2e2076c1128d30fa58.jpg
78
+ FAMILY_SAFE,/data/imgs/930fa681-fbd64159d7d027262f736408659d40cb.jpg
79
+ SUGGESTIVE,/data/imgs/c884f2e6-fbb763c6f6f858fdfc270f3f3bda1eac.jpg
80
+ FAMILY_SAFE,/data/imgs/b3f73152-fbc604a00ac5d9d6a73cec8789a75d0c.jpg
81
+ SUGGESTIVE,/data/imgs/f3e719e9-fbc9929373c24b1afd9523aa5253a594.jpg
82
+ SUGGESTIVE,/data/imgs/ac2b938f-fbca15037c332d6e9e658e2129217794.jpg
83
+ SUGGESTIVE,/data/imgs/e0092f87-fb6ad7084b95e0bb2eb9575082907662.jpg
84
+ SUGGESTIVE,/data/imgs/efd3b12b-fb7ba81d49347796a797d1322a64cb71.jpg
85
+ FAMILY_SAFE,/data/imgs/74426174-fb701d0e6a714179959ac8e1e4e2cb88.jpg
86
+ SUGGESTIVE,/data/imgs/68adaf6f-fb61755f0c2afaafdd9aa36f7632cbe5.jpg
87
+ FAMILY_SAFE,/data/imgs/c61c6042-fb607386dd384e6b0d53ef878bbffc55.jpg
88
+ FAMILY_SAFE,/data/imgs/7ec3bcbe-fb2e1bdb34ace56b99befc2547a8b83d.jpg
89
+ FAMILY_SAFE,/data/imgs/bec475e6-fb3c593276f0f040a7450ca213d97882.jpg
90
+ FAMILY_SAFE,/data/imgs/966460f7-fb50d0f85eb7e491722e734b961926f0.jpg
91
+ FAMILY_SAFE,/data/imgs/243861f5-fb468ddeda48f68ec3539bebe07b92b4.jpg
92
+ SUGGESTIVE,/data/imgs/54045990-fb1c02d4c50a59be3fe3cb249de403e0.jpg
93
+ UNCERTAIN,/data/imgs/7439530f-faf1f5d9d6e51a84ce632df317dd5c5c.jpg
94
+ UNCERTAIN,/data/imgs/e0eec550-faf27f9511974b5ef529ba718677c5f4.jpg
95
+ FAMILY_SAFE,/data/imgs/1101ce4b-fab7821aae25aff865b20b0d33d86900.jpg
96
+ FAMILY_SAFE,/data/imgs/26464718-fac69b44cccb94236c9f905bed46158f.jpg
97
+ FAMILY_SAFE,/data/imgs/d588345d-fad53b443bc3e52bada85783afdac562.jpg
98
+ UNCERTAIN,/data/imgs/7f1fa2e7-fad69c88bcef4434a55b3bf3854b3e56.jpg
99
+ FAMILY_SAFE,/data/imgs/717afd8f-fa6ef41aabda28f51249407ce46a827e.jpg
100
+ UNCERTAIN,/data/imgs/191a25a2-fa7b42eb84363adcd60082a3a7f02f84.jpg
101
+ FAMILY_SAFE,/data/imgs/41febcdf-fa9e77f0788145d7ac42edcffb6e9dee.jpg
102
+ UNCERTAIN,/data/imgs/4bb4ff8b-fa9f2688e1b4e92538569ecb9efecf2e.jpg
103
+ UNCERTAIN,/data/imgs/12aefe0a-fa87c0f54b8cb07a14fc311c369e9a4c.jpg
104
+ SUGGESTIVE,/data/imgs/0f927896-fa94a466d4178dcd4c762f7567c11147.jpg
105
+ FAMILY_SAFE,/data/imgs/3b82e875-faa13416b0d8d2adc2b6815dd1e6c82d.jpg
106
+ SUGGESTIVE,/data/imgs/7a5551c7-fa5b56c4e382fd4dca384daf1768acb4.jpg
107
+ FAMILY_SAFE,/data/imgs/abf1e90d-fa5c6d304163052761d4453c693c202d.jpg
108
+ UNCERTAIN,/data/imgs/150e925a-fa6a15e903e7949093f4ec11fcffdb01.jpg
109
+ SUGGESTIVE,/data/imgs/76aa5a7e-fa41e4a96249c0b8ed90389733c081d8.jpg
110
+ SUGGESTIVE,/data/imgs/891276e7-fa63fcd0e11eb612b2c8f1ade43de7c8.jpg
111
+ FAMILY_SAFE,/data/imgs/0fea6f76-fa412fb78ec94ab051ac0880e255a897.jpg
112
+ UNCERTAIN,/data/imgs/7cb410fd-fa1a50f4102b66555a1a05afa9ddbf3c.jpg
113
+ UNCERTAIN,/data/imgs/907cb3ad-fa1dab55d34f1c7140ea41a1b3ab5eae.jpg
114
+ FAMILY_SAFE,/data/imgs/bf824357-fa2c514037f31c0ab98d66373d371e3a.jpg
115
+ FAMILY_SAFE,/data/imgs/f953d2e3-f9f74d590b0f4d8da8ba20a07bc2a596.jpg
116
+ FAMILY_SAFE,/data/imgs/db2c891b-f9fc35243c2c7592c2d5858be342a34d.jpg
117
+ UNCERTAIN,/data/imgs/53bd404d-fa068c5e8fe813fbb1d90b5a0744e172.jpg
118
+ SUGGESTIVE,/data/imgs/a23fc1cb-fa075d603e631d04c9871dbb00ed0a14.jpg
119
+ SUGGESTIVE,/data/imgs/ee0e3f1d-fa1607fba97dd47d889e0c8eb0a82624.jpg
120
+ SUGGESTIVE,/data/imgs/3aef96bb-f9d6c4a53c12013b5bbb6e830275486e.jpg
121
+ SUGGESTIVE,/data/imgs/9f665793-f9ea859c158d6cece283b619afdf2f49.jpg
122
+ UNCERTAIN,/data/imgs/db0aaa30-f9a1f16e76e3adad3ce2ed9fe0c7a03f.jpg
123
+ UNCERTAIN,/data/imgs/03abd3cc-f9aaa2af6fea2261610e48ed5e11ede4.jpg
124
+ SUGGESTIVE,/data/imgs/d741a3e7-f9b3403712c87698322446ef48a0027c.jpg
125
+ SUGGESTIVE,/data/imgs/b502117c-f9bd44609a914f7aabd3a901d457b1e7.jpg
126
+ SUGGESTIVE,/data/imgs/96ba7ff4-f984b6e28aa8e0e13f71bd41a8c65194.jpg
127
+ FAMILY_SAFE,/data/imgs/85f90f88-f96b6fc62dadba4eb00b5cfaa1168b87.jpg
128
+ SUGGESTIVE,/data/imgs/32e49293-f96bffb22c42bd3beb968d5ff5583c6b.jpg
129
+ FAMILY_SAFE,/data/imgs/263d89d9-f96c4c07dcded0f0fd1aa150a693a181.jpg
130
+ SUGGESTIVE,/data/imgs/78e8d1c7-f96c7473c85142a222056be7c7759184.jpg
131
+ FAMILY_SAFE,/data/imgs/0fc4362d-f9610ac04fe21d9bd96689b8c6ae1669.jpg
132
+ UNCERTAIN,/data/imgs/24f3bf36-f9633749641995381ff42d72352bafe2.jpg
133
+ UNCERTAIN,/data/imgs/3216e20d-f93c3f8af10c70801ce921842c77afc4.jpg
134
+ SUGGESTIVE,/data/imgs/93bfe360-f95143e4ae1515b8bf5c2d813aa36bbc.jpg
135
+ FAMILY_SAFE,/data/imgs/0a08bf3b-f954833a10de7c149ac73c5b4af4c189.jpg
136
+ SUGGESTIVE,/data/imgs/a54eda5e-f8fdf05663173fa7dc689333e3f21f23.jpg
137
+ FAMILY_SAFE,/data/imgs/29f522c1-f91a65be37a0e49d78ac4f6bc0cfcb61.jpg
138
+ SUGGESTIVE,/data/imgs/43ccd6b7-f8b2c595800cb08b05b4f2503fdbbced.jpg
139
+ UNCERTAIN,/data/imgs/c7f29f62-f8b38d085dc15913e26ed1580d0cb644.jpg
140
+ UNCERTAIN,/data/imgs/ca35d72e-f8c8ee06b8b818d1f0f5229014ee8760.jpg
141
+ SUGGESTIVE,/data/imgs/65120b69-f8ee23b284b41157bb5b9eb488cf5828.jpg
142
+ SUGGESTIVE,/data/imgs/4abc60a4-f8a72d3f92f7e3793a093556c5b6b446.jpg
143
+ SUGGESTIVE,/data/imgs/ee55d94c-f8a860d078da463b28618029d547eca0.jpg
144
+ SUGGESTIVE,/data/imgs/42ea7be6-f8a950c61b1b181a99bb6837f76ddcf5.jpg
145
+ FAMILY_SAFE,/data/imgs/2b96cec7-f87b6da37656aef1c82f6841cdfd216a.jpg
146
+ SUGGESTIVE,/data/imgs/a4651f0f-f8714d6a5bafd4d86377bf04957f37e5.jpg
147
+ FAMILY_SAFE,/data/imgs/fee5f161-f8856cf1b3bd39861cb9f95337cd0992.jpg
148
+ FAMILY_SAFE,/data/imgs/26999a9e-f8869ae287068ce36b4b05663da6713a.jpg
149
+ UNCERTAIN,/data/imgs/2d689dc9-f852dde27ecdc40533bb40683087f7e1.jpg
150
+ SUGGESTIVE,/data/imgs/207cc31f-f86351d67e2629dc35f1e524915fcd11.jpg
151
+ UNCERTAIN,/data/imgs/f3898f2e-f8447631bc00c8f2467b1a20ee6bfa78.jpg
152
+ UNCERTAIN,/data/imgs/8cb018af-f8542037683b99dbc67c7f7d6c5a46b3.jpg
153
+ FAMILY_SAFE,/data/imgs/5d6063fc-f822f1d61d47f66997ce6f86c974a4a4.jpg
154
+ SUGGESTIVE,/data/imgs/57bec3b8-f8222b4da2ca05b7b639120cac5f92f2.jpg
155
+ UNCERTAIN,/data/imgs/918752f9-f7e4163d39bf966f1d403bfcf469cc5f.jpg
156
+ SUGGESTIVE,/data/imgs/bdce8a23-f7f267f10da481cbc97981f022b36a07.jpg
157
+ SUGGESTIVE,/data/imgs/d9e26b6c-f7de775f4820d021c70c42e8785c047b.jpg
158
+ UNCERTAIN,/data/imgs/654d822f-f7e1c87ca29b75a4e59263db1e0f59a1.jpg
159
+ FAMILY_SAFE,/data/imgs/13f55350-f7c55782f457e6c3c4a17c4f4254a946.jpg
160
+ UNCERTAIN,/data/imgs/bf4fd201-f7aa8582cc615c5efc747a723ed54f9e.jpg
161
+ UNCERTAIN,/data/imgs/6520255c-f79bc54aa05611d22b65098a11e71a34.jpg
162
+ UNCERTAIN,/data/imgs/e7695c72-f7761769f7463d55a2df9300c743a324.jpg
163
+ UNCERTAIN,/data/imgs/681dcc99-f77695115dd9a221c2239aece214b49e.jpg
164
+ SUGGESTIVE,/data/imgs/bc15263c-f745fcf48c946c9d4393fd48f4cffc0e.jpg
165
+ UNCERTAIN,/data/imgs/88c7b383-f7303e5b824a66239e6afcd87a8ef62f.jpg
166
+ SUGGESTIVE,/data/imgs/9342d436-f73693da56901519a595fead5f85d069.jpg
167
+ SUGGESTIVE,/data/imgs/1bfa81bf-f71e69c1823525251dc2201172364595.jpg
168
+ FAMILY_SAFE,/data/imgs/37fbd106-f72a254e0142a25852937f68f91eeff0.jpg
169
+ UNCERTAIN,/data/imgs/75ec4326-f6f57e02e3025fda7e6587ada129b5da.jpg
170
+ UNCERTAIN,/data/imgs/112d370c-f6e10f65554a282ad88561eb6606b673.jpg
171
+ FAMILY_SAFE,/data/imgs/258f99f7-f6cc5af7cdd7d677b39960916ddce332.jpg
172
+ SUGGESTIVE,/data/imgs/e654ed6f-f6a9eed8dbdaaebe8483cb023b1cc155.jpg
173
+ SUGGESTIVE,/data/imgs/32c60d49-f6afce2e8ed7f791361d5f859faf6f93.jpg
174
+ FAMILY_SAFE,/data/imgs/8e037415-f6b1bdcd5cc1123f61514494633c0261.jpg
175
+ SUGGESTIVE,/data/imgs/1a95de13-f6a20f3450549f295c9d440e3b50fe4b.jpg
176
+ SUGGESTIVE,/data/imgs/d8e036ec-f69ba433d87943ba7fe96bdee75c0633.jpg
177
+ FAMILY_SAFE,/data/imgs/150cadee-f6913caa3c66a906611cd76004dc0e89.jpg
178
+ SUGGESTIVE,/data/imgs/d45cdae6-f69459f653bf0a475f7003c64ad87484.jpg
179
+ UNCERTAIN,/data/imgs/3ba7cebd-f67d4c2318dfb10031f4d3a40e767467.jpg
180
+ SUGGESTIVE,/data/imgs/b947afc5-f68da9a3284e87b939e43ed78c2ba697.jpg
181
+ SUGGESTIVE,/data/imgs/548c342e-f6555d7bd2ce56360984e39d06eb6d3e.jpg
182
+ SUGGESTIVE,/data/imgs/2d8b3b40-f6502184b0f514712ec44e93e4cf38ed.jpg
183
+ SUGGESTIVE,/data/imgs/8d9e6ed8-f60a078c2adb5e2ed7984643b1a3d6ad.jpg
184
+ UNCERTAIN,/data/imgs/915ec646-f60d0a9ef35ff32f41167f002f604218.jpg
185
+ SUGGESTIVE,/data/imgs/ac9956e6-f61b32b46a5df8b7604a567f4101de1a.jpg
186
+ UNCERTAIN,/data/imgs/38e3e29f-f6096fb5a8815393de8d3ce6046dcfa0.jpg
187
+ SUGGESTIVE,/data/imgs/4cd02552-f627490d7770e822b0646ecc26314049.jpg
188
+ FAMILY_SAFE,/data/imgs/96423c5a-f5d25e48cb07c00f6b4749341afd4fe9.jpg
189
+ UNCERTAIN,/data/imgs/b2bdb576-f5f0b5059aa1f31f18454612c7b44cb4.jpg
190
+ FAMILY_SAFE,/data/imgs/d9b4f6e3-f5f15fde94650b49c19b1108e7baacaa.jpg
191
+ SUGGESTIVE,/data/imgs/78e1ef6c-f5f68931f14533c57ecfef9acb38dc7d.jpg
192
+ SUGGESTIVE,/data/imgs/95214b1d-f5fbc4a6c74108a929561383bb572cd4.jpg
193
+ FAMILY_SAFE,/data/imgs/52f9323f-f5a0911271d9a6ed11455f9f6ff7eb66.jpg
194
+ FAMILY_SAFE,/data/imgs/437ce914-f5c13ab4ed01cc7efd808da48b8a5457.jpg
195
+ UNCERTAIN,/data/imgs/3472223a-f5996eb32ca496db64f8988cee9a8878.jpg
196
+ SUGGESTIVE,/data/imgs/79fb6415-f57b16711597d1da4c6c22c57af8a35a.jpg
197
+ SUGGESTIVE,/data/imgs/8b7383e6-f57fb11b1c8484d4642295155ba8db7b.jpg
198
+ SUGGESTIVE,/data/imgs/ae1beb31-f58d8b3fa1b33fbccd8c8d71e0fe1a2c.jpg
199
+ FAMILY_SAFE,/data/imgs/6be40274-f55c44bbbe7e56c04a616cd84479e46f.jpg
200
+ SUGGESTIVE,/data/imgs/79a2f826-f55deb0d18263824d1cef3e9ab9f1785.jpg
201
+ FAMILY_SAFE,/data/imgs/eb3f6ce4-f572b605f472227d2aa10d6905b535e3.jpg
202
+ SUGGESTIVE,/data/imgs/86690dd2-f573acc9c7d68bfa33ffaf904bdcbee1.jpg
203
+ FAMILY_SAFE,/data/imgs/cb81d853-f5641be3510ca443208381edefb8dab9.jpg
204
+ UNCERTAIN,/data/imgs/f3e026cb-f55636ad8ac978de1925576a495326e8.jpg
205
+ FAMILY_SAFE,/data/imgs/dd964efd-f543f9d63f3caf812049461fe8e82f66.jpg
206
+ SUGGESTIVE,/data/imgs/cddc368c-f555bcb967a62b3420b1563eabf14e03.jpg
207
+ FAMILY_SAFE,/data/imgs/8a1bce2e-f531a8694f3e826cc46790d3d2d210f3.jpg
208
+ FAMILY_SAFE,/data/imgs/4580faae-f532a291cff7ba273fcfbd81e466147a.jpg
209
+ SUGGESTIVE,/data/imgs/cd5e94e9-f4eed19eaa6f1a5b7f3bf3fdab620193.jpg
210
+ SUGGESTIVE,/data/imgs/e0abb514-f4f6cec6badab17d10b40557e6e9ceae.jpg
211
+ SUGGESTIVE,/data/imgs/3265ae1c-f4f91efff09fee24636b9b50d58fcf25.jpg
212
+ SUGGESTIVE,/data/imgs/e2e7bbee-f4f964fc3d06d2990c04caa8fc0e5295.jpg
213
+ SUGGESTIVE,/data/imgs/8f9b1b13-f4fe1ba40065807edb72c03485dff3d2.jpg
214
+ SUGGESTIVE,/data/imgs/9ee74b02-f50238c6721caa983df9656eef22236b.jpg
215
+ SUGGESTIVE,/data/imgs/97429c97-f50926a996167d5a55ea0e3260627572.jpg
216
+ SUGGESTIVE,/data/imgs/6775a784-f5072276faee8d0385236b2937d48a33.jpg
217
+ FAMILY_SAFE,/data/imgs/735adacd-f4d811181ca6367340272ea2817eebb6.jpg
218
+ SUGGESTIVE,/data/imgs/f2450298-f4e7b715922c1d07a2f7501b722bb12e.jpg
219
+ SUGGESTIVE,/data/imgs/a04ba9a7-f4aee07e50f09863edf149352e42f73e.jpg
220
+ SUGGESTIVE,/data/imgs/cdff04e2-f4c226e68f48b630dfd5b8f032c281f3.jpg
221
+ UNCERTAIN,/data/imgs/1c2faeb4-f4c868518f6194c3d708d889b79c4357.jpg
222
+ UNCERTAIN,/data/imgs/da36d596-f48abfffe24a134a2605d63c095d5601.jpg
223
+ SUGGESTIVE,/data/imgs/9e7afccb-f49cbda7d6c418aa68c47ac16678be9d.jpg
224
+ FAMILY_SAFE,/data/imgs/62a97430-f49d857cb54b7ad2a3a8bcd6c85a76d2.jpg
225
+ FAMILY_SAFE,/data/imgs/f79720c4-f49f729c28e9aafef241b3e5d1365ebb.jpg
226
+ SUGGESTIVE,/data/imgs/1fa27620-f46fcea94e5309ef137996d590f947a8.jpg
227
+ FAMILY_SAFE,/data/imgs/a8f6045f-f44bd04a46d585f08df78d744a9920e0.jpg
228
+ SUGGESTIVE,/data/imgs/9d5f7026-f442e9b50f65ce8e992c2d6d99045422.jpg
229
+ FAMILY_SAFE,/data/imgs/d87227e3-f4591e17584e87f5ae145946468488a1.jpg
230
+ UNCERTAIN,/data/imgs/5c828279-f45776fd9cff138a422bc299fda11907.jpg
231
+ SUGGESTIVE,/data/imgs/5c339677-f450689a8cf22e1c4471ef894ea28a81.jpg
232
+ SUGGESTIVE,/data/imgs/b47e520f-f453124a40f3bdbbe0c9dfe4996b6844.jpg
233
+ SUGGESTIVE,/data/imgs/3a55ff4b-f40d7fc2218b3f42761e7abe785c7785.jpg
234
+ UNCERTAIN,/data/imgs/ab4e8b9b-f433c523573d6c17da4f5f3da31fec75.jpg
235
+ FAMILY_SAFE,/data/imgs/c5a2e52f-f412680ce7ff76d5c276884092c008f3.jpg
236
+ FAMILY_SAFE,/data/imgs/2707ecab-f432252b9d85a485c9e4b3097633f71e.jpg
237
+ SUGGESTIVE,/data/imgs/79a56ecc-f3e1b0aced852718d2b2cc7208728b62.jpg
238
+ FAMILY_SAFE,/data/imgs/84efc00c-f3ebae6cdb55ebee567dc5937d26f433.jpg
239
+ SUGGESTIVE,/data/imgs/916b7794-f3f76e5bd2aae5290c40831d2dba06fb.jpg
240
+ SUGGESTIVE,/data/imgs/0c0ff4f4-f3b7d61057e3aabc5c1f2fa2e1d91f80.jpg
241
+ FAMILY_SAFE,/data/imgs/de3532f8-f3c6565d9b0b5b4a9ea5791663a1cb98.jpg
242
+ FAMILY_SAFE,/data/imgs/53a286c2-f3a74abc0a833c5b5b69b06d3530b13c.jpg
243
+ SUGGESTIVE,/data/imgs/b80429f0-f3a782299db638313bc78a42fe799566.jpg
244
+ SUGGESTIVE,/data/imgs/c5926927-f392b17c19a743f54238920721a05483.jpg
245
+ SUGGESTIVE,/data/imgs/aaba3830-f392495a6934f1189fab05eeb50e6fd9.jpg
246
+ SUGGESTIVE,/data/imgs/52172c96-f379ca12e1aa320afc400fb76fb2c470.jpg
247
+ SUGGESTIVE,/data/imgs/6e49273c-f36c6d209021488c8bf51e89c19f58fb.jpg
248
+ UNCERTAIN,/data/imgs/920afa72-f3537cd026f876e2535d657df257076c.jpg
249
+ UNCERTAIN,/data/imgs/7e9fe457-f366645e8bc5d7b1122603ec99290bc2.jpg
250
+ SUGGESTIVE,/data/imgs/10f36423-f30e3a374309519194229b8153c51588.jpg
251
+ FAMILY_SAFE,/data/imgs/cd3dd942-f32a3c9a3b2b2f5fa7be6f8c73ae293b.jpg
252
+ UNCERTAIN,/data/imgs/aac071e6-f32bb35b2b035066b5f7d88a1a27c0d7.jpg
253
+ FAMILY_SAFE,/data/imgs/678d2056-f33cf9e01fb72fc6dce190f37c65c2dd.jpg
254
+ FAMILY_SAFE,/data/imgs/965c31ef-f2f78f897ad0a224175515bbde549e2e.jpg
255
+ UNCERTAIN,/data/imgs/579612c2-f2fa9ecf3da8d00302338efa4f87123c.jpg
256
+ SUGGESTIVE,/data/imgs/9f66f820-f2fae6e2500b65f269b5e6de80996f17.jpg
257
+ SUGGESTIVE,/data/imgs/75006524-f30c43c00748e7912ce105d616264ca8.jpg
258
+ FAMILY_SAFE,/data/imgs/7c688d00-f3066b02932fbc939c22e9c3bb8e942a.jpg
259
+ SUGGESTIVE,/data/imgs/3174b410-f2f05fc8d36aa9b2d14d9a0eed30416a.jpg
260
+ UNCERTAIN,/data/imgs/c43cb7fb-f2f33b9d050b1eec02c29464f036d292.jpg
261
+ SUGGESTIVE,/data/imgs/55e1d1ac-f2b9d5dc127dddd36b113f2719d89a97.jpg
262
+ FAMILY_SAFE,/data/imgs/26f72a43-f2b9d6126ecc23b075d1c1acc8fe340d.jpg
263
+ FAMILY_SAFE,/data/imgs/a6eee7e4-f2d5d25ff62ef48331c529bf26e170d4.jpg
264
+ SUGGESTIVE,/data/imgs/6583b10b-f2aae7afc3a013755b2365cb2942dc64.jpg
265
+ SUGGESTIVE,/data/imgs/3dc4ad74-f27b0f685d9b622d7ff36bdd97f72831.jpg
266
+ UNCERTAIN,/data/imgs/6a8274e7-f2801326462d460409fa733227426003.jpg
267
+ SUGGESTIVE,/data/imgs/7e1849f3-f26a9865a58639d9b17de158040c8d99.jpg
268
+ SUGGESTIVE,/data/imgs/e4ae160c-f26b087c218148a8ca3f2e96e12d7a1b.jpg
269
+ SUGGESTIVE,/data/imgs/4f4b4d5f-f26d88ffcd70edc8984c024f2de1ca39.jpg
270
+ SUGGESTIVE,/data/imgs/55668d0d-f2691c288c683bcf94651a0bbffe21ad.jpg
271
+ FAMILY_SAFE,/data/imgs/302fc960-f24d9b56d05bdf13a83cfabd87f8e5af.jpg
272
+ SUGGESTIVE,/data/imgs/da992908-f24efb4f9760b0e7fbb3fcf77dba0891.jpg
273
+ SUGGESTIVE,/data/imgs/09535428-f244b1f6799b0610306318fa09e744c4.jpg
274
+ FAMILY_SAFE,/data/imgs/6b3255e8-f20ecb2425f29d21d4047bec13a2babb.jpg
275
+ SUGGESTIVE,/data/imgs/3d3f89e4-f20eef0275884df087aefc827000488a.jpg
276
+ FAMILY_SAFE,/data/imgs/476d2b62-f21375899b6c734ba68a8f2a74990efb.jpg
277
+ FAMILY_SAFE,/data/imgs/2821adf9-f20de5b6356da5f1e38626064c8ac85e.jpg
278
+ SUGGESTIVE,/data/imgs/78dd5846-f1b48acd52be4f8693ed99170c2a044c.jpg
279
+ SUGGESTIVE,/data/imgs/7d5de576-f1c966431895a337d35d9ec3a7470b17.jpg
280
+ SUGGESTIVE,/data/imgs/8cf1683d-f1d11292af5391d00957494b8b58f315.jpg
281
+ SUGGESTIVE,/data/imgs/59b576bf-f1a168d27daac1da3571fcbcce7c1ebd.jpg
282
+ UNCERTAIN,/data/imgs/8f0ff5de-f18c7dac0d1162379e292b0e4b9e22ce.jpg
283
+ SUGGESTIVE,/data/imgs/3d83aaea-f186d77202e18462443a8c7ffc449919.jpg
284
+ SUGGESTIVE,/data/imgs/d4d29b7b-f162dbe9bf0b44a6f2ddb910d725d56b.jpg
285
+ SUGGESTIVE,/data/imgs/c6f24a4d-f1646b36bb33f474b8f66c112bf97cc3.jpg
286
+ FAMILY_SAFE,/data/imgs/9d710615-f1712c2ed94b10ffedda4e1ea6e56fa9.jpg
287
+ SUGGESTIVE,/data/imgs/c325de0e-f16866c512ca721aa3ba3b2129e4b66f.jpg
288
+ SUGGESTIVE,/data/imgs/c9983270-f1643668073aa69e7f2b505d1b237098.jpg
289
+ SUGGESTIVE,/data/imgs/ff926dbf-f12e5c2510e88db3c8fdf32aa7968f9d.jpg
290
+ SUGGESTIVE,/data/imgs/edbf7bc4-f13bac93da13444f529aa1c821731161.jpg
291
+ SUGGESTIVE,/data/imgs/d3721c85-f126f5fa7fd6939084fa439a5c194f18.jpg
292
+ SUGGESTIVE,/data/imgs/b5e5e620-f126f93e4853f89a6e25b661040dc314.jpg
293
+ SUGGESTIVE,/data/imgs/10135976-f1243b33b2f6d754c9bc9da9e8de97e4.jpg
294
+ SUGGESTIVE,/data/imgs/b81fe122-f1404d9866f6128bd44a1eaee0a39cf7.jpg
295
+ SUGGESTIVE,/data/imgs/f3d934fc-f14861197568fd42d5a3a8f39a8970b9.jpg
296
+ SUGGESTIVE,/data/imgs/34496229-f104ed4e8f3c30e2fa8ddfbd3332b413.jpg
297
+ SUGGESTIVE,/data/imgs/849c7056-f0b773be242aee171c66e49b6c3dfb63.jpg
298
+ SUGGESTIVE,/data/imgs/c6d20edb-f0c80a1febd6aeb4ed6ccaf3fd82760a.jpg
299
+ FAMILY_SAFE,/data/imgs/906d1fce-f0ca8c9fdee2f995b567b0626cdadcac.jpg
300
+ SUGGESTIVE,/data/imgs/f638acd0-f0d3205ee8ebe32b2d53f1ad223e9818.jpg
301
+ SUGGESTIVE,/data/imgs/da3f5f03-f0dd8d4ac7e466a7a233905f8db38a1c.jpg
302
+ SUGGESTIVE,/data/imgs/c2917e19-f06b1f090a5e2f8b788720ce4489183a.jpg
303
+ FAMILY_SAFE,/data/imgs/698e9ebb-f06d35d37cacac0d69db96016e0c182f.jpg
304
+ SUGGESTIVE,/data/imgs/4696edaa-f06eb7893da319aec3f0de768a1a845d.jpg
305
+ UNCERTAIN,/data/imgs/ad86327f-f08abc73a82adca2bbb2304c62991458.jpg
306
+ SUGGESTIVE,/data/imgs/7713ccd7-f08c1d5efaa9ae3e99274ef65dbc7cc4.jpg
307
+ SUGGESTIVE,/data/imgs/88e6096c-f0809c968c34e21b25ef28da489b68fd.jpg
308
+ FAMILY_SAFE,/data/imgs/524bc0ae-f06772600ff35982e30ec813edb89dc2.jpg
309
+ FAMILY_SAFE,/data/imgs/3d31944e-f049c93ef72e3bd5edbf919222d2d1ae.jpg
310
+ SUGGESTIVE,/data/imgs/47efba26-f0445c4671cbf87f6be472f5102475c2.jpg
311
+ SUGGESTIVE,/data/imgs/fa8fe379-f0357ced6ed7226ecfd6bc274c3e8a5b.jpg
312
+ SUGGESTIVE,/data/imgs/475a96b3-eff990daac3ddb54436bad2cc950abb3.jpg
313
+ SUGGESTIVE,/data/imgs/fa249f4f-efb7440d597d698c5442b03cc11096ab.jpg
314
+ SUGGESTIVE,/data/imgs/b10f30c8-efc08bbcc30ce2804f50c73ff07cffec.jpg
315
+ SUGGESTIVE,/data/imgs/faba1751-efc073e437c18987a2f1476da3de0b3a.jpg
316
+ SUGGESTIVE,/data/imgs/0098546d-efd85646ed2bdbc974b9c3c579691730.jpg
317
+ SUGGESTIVE,/data/imgs/b4635fff-efef5f2439ee81918faf609d5a0aa163.jpg
318
+ SUGGESTIVE,/data/imgs/4c7faf4b-efef22ec0ad48c3b2f51c82dcb9565e6.jpg
319
+ SUGGESTIVE,/data/imgs/e9be5783-efa81f12be12471dd91827cfb74404a9.jpg
320
+ SUGGESTIVE,/data/imgs/0df8255e-efaa8dd97b36b54c67356ca6c1500791.jpg
321
+ SUGGESTIVE,/data/imgs/e96341ac-ef6a78b93788b6cab069d01b92516ec6.jpg
322
+ SUGGESTIVE,/data/imgs/2a7d0d01-ef6b436f284fd4c6a95adef2c0dc0555.jpg
323
+ SUGGESTIVE,/data/imgs/e764a81b-ef7d423ff22abad26fcdc945e31dca5b.jpg
324
+ SUGGESTIVE,/data/imgs/6ffc5735-ef70be698e9f8dbd29dacb15ac4d0ec9.jpg
325
+ SUGGESTIVE,/data/imgs/98ce088a-ef76eea72ea523ba10369ff89f844b8d.jpg
326
+ SUGGESTIVE,/data/imgs/772bc39c-ef4a21bca7ceab6a75e2a5fd738408d9.jpg
327
+ SUGGESTIVE,/data/imgs/7207626d-ef378dd1f4004be18abc11bef3c80de4.jpg
328
+ SUGGESTIVE,/data/imgs/281a7d11-ef4790408c0eb4ad41d481796a8d76fd.jpg
329
+ FAMILY_SAFE,/data/imgs/15072791-ef0a3b5c272d10607604167b4bc37034.jpg
330
+ UNCERTAIN,/data/imgs/6dc70b1e-ef1026a33c894d18a1a1f32922017fbf.jpg
331
+ SUGGESTIVE,/data/imgs/c8740c8b-eedc4a75b4521825dd368a81324741e4.jpg
332
+ UNCERTAIN,/data/imgs/dcfb8a01-eebd67e28f811ad93ce45d7a22c9a280.jpg
333
+ SUGGESTIVE,/data/imgs/9283a4a4-eed2a73a4dc7506b1ce5042c0d86a41f.jpg
334
+ SUGGESTIVE,/data/imgs/d9b69ac8-eed7b464c9a9d59069f62bd631953120.jpg
335
+ UNCERTAIN,/data/imgs/81f42f14-ee9ba96fe055cbfa17dbe24799365177.jpg
336
+ SUGGESTIVE,/data/imgs/5878b83e-ee9dc9d669cf306bf6bf04dfaf3b1c9d.jpg
337
+ SUGGESTIVE,/data/imgs/e31a796f-eea76211c790d725a7dd027a99213afb.jpg
338
+ SUGGESTIVE,/data/imgs/a4c89124-eeaa866b8633bedc8034bce163670339.jpg
339
+ SUGGESTIVE,/data/imgs/35909ea6-eeab35797f69d18b0187e08c5549efb6.jpg
340
+ SUGGESTIVE,/data/imgs/da887e4a-eeb5d0dbe82e36107e2af75b20ab17c7.jpg
341
+ SUGGESTIVE,/data/imgs/75ab9401-eebbd19e449133670a58baff0fa109ec.jpg
342
+ SUGGESTIVE,/data/imgs/e75f4995-eebcec31909a43812f2334fb37807008.jpg
343
+ SUGGESTIVE,/data/imgs/de0c936f-ee8a39d9411e2cd46e726afe1c5a4895.jpg
344
+ FAMILY_SAFE,/data/imgs/e2e721c6-ee8c7ace06eac5eecd8b709b93976d0b.jpg
345
+ SUGGESTIVE,/data/imgs/6828a485-ee90a0e72628f9dc27de80e5ce701bc2.jpg
346
+ FAMILY_SAFE,/data/imgs/ef0ac7d6-ee890fafca12595501b30093d54320af.jpg
347
+ UNCERTAIN,/data/imgs/eb7e0cef-ee93704434f4aa96859be27f8b04f4ca.jpg
348
+ FAMILY_SAFE,/data/imgs/6127f82d-ee4fad4fd52e6f1dc5121d1965a31e61.jpg
349
+ FAMILY_SAFE,/data/imgs/cc55d5b2-ee745023dec8ba83a3b401aaa5a34f2d.jpg
350
+ SUGGESTIVE,/data/imgs/ae6d504b-ee44eff2d80d58e6f2c6122fcc468c63.jpg
351
+ UNCERTAIN,/data/imgs/5fee8ad9-ee435d2ab53c469e63808c8d60c6351e.jpg
352
+ SUGGESTIVE,/data/imgs/a0a2d935-ee166c5de961d809600d8a47a8284e7e.jpg
353
+ FAMILY_SAFE,/data/imgs/8a5bf427-ee3086dce1a61b091b09bb8bf460d671.jpg
354
+ FAMILY_SAFE,/data/imgs/305abb91-ede68be22f91fbddc1f4e072b05c0ae5.jpg
355
+ SUGGESTIVE,/data/imgs/429234c0-edf1ded0501e179112b516a99a58f6b3.jpg
356
+ FAMILY_SAFE,/data/imgs/90e7a11a-edf5de76bd4db7ec201caf452ffd1519.jpg
357
+ SUGGESTIVE,/data/imgs/357576cd-edbca137d1801a86d305e4ad3f3a6305.jpg
358
+ SUGGESTIVE,/data/imgs/274e3d8d-edcdf84578e3103a185073e581089641.jpg
359
+ SUGGESTIVE,/data/imgs/09696d76-edd88c179c4b8d37223a74e58757921b.jpg
360
+ SUGGESTIVE,/data/imgs/2befe926-eddca7fbfe13ebce00a268c70550b580.jpg
361
+ UNCERTAIN,/data/imgs/dd0a59aa-edddf271573716e8e4e571451c634b85.jpg
362
+ FAMILY_SAFE,/data/imgs/52784190-ed8db5c9ad94f3f769b504dba5d12f3c.jpg
363
+ UNCERTAIN,/data/imgs/7c8e5c47-ed9f73ea5150c7871fa9ab71e2808929.jpg
364
+ SUGGESTIVE,/data/imgs/23660c64-ed78b3d3e8cf8fa817e55818ef219f2f.jpg
365
+ SUGGESTIVE,/data/imgs/36ccdc32-ed9326789faddcf165c85c0c46e61892.jpg
366
+ SUGGESTIVE,/data/imgs/eae0b0ad-eda271d3e424bcbddf17ba2795ca31ab.jpg
367
+ FAMILY_SAFE,/data/imgs/7817ce56-edb7db1fcb69296415e2f32cd5cac1ba.jpg
368
+ FAMILY_SAFE,/data/imgs/7151cdf8-edb3802789ea655bda76512662ef16fd.jpg
369
+ SUGGESTIVE,/data/imgs/420c8652-ed4fa0d4320a9474fcdbf9f260d5ccd9.jpg
370
+ SUGGESTIVE,/data/imgs/f12d507b-ed6ad32bca5a4012c154cea7d74675c1.jpg
371
+ SUGGESTIVE,/data/imgs/ea78c268-ed59c63ff419564a0091bf4dba0db57b.jpg
372
+ SUGGESTIVE,/data/imgs/8bc1df46-ed684d1f722a3e6fd6644a086a941908.jpg
373
+ FAMILY_SAFE,/data/imgs/6ac74b20-ed0dd06c432216aa905a2732eb14d356.jpg
374
+ UNCERTAIN,/data/imgs/f88fee24-ed21cb4f07ee87064a3203c18fd4cce1.jpg
375
+ FAMILY_SAFE,/data/imgs/2f604374-ed22e47a89b289fcddbd58d84fe4af7a.jpg
376
+ FAMILY_SAFE,/data/imgs/3afea32d-ece69a65ed45a3edf1fc00efbbfaedb7.jpg
377
+ SUGGESTIVE,/data/imgs/e4e420e1-ece99c6f98d2a711d94c11bb54cce29f.jpg
378
+ FAMILY_SAFE,/data/imgs/c356522a-ed0ab3e1587ed20eeace37e94f8d54ba.jpg
379
+ FAMILY_SAFE,/data/imgs/a9f4ce1f-ed0b80d5b8a1a6cd023555b1695c5037.jpg
380
+ FAMILY_SAFE,/data/imgs/5822bed3-ed0c697143d8cfcf7772d205537c1a53.jpg
381
+ UNCERTAIN,/data/imgs/8d880f44-ed01e05d1b0f341627595626f0d1fc19.jpg
382
+ UNCERTAIN,/data/imgs/d513daab-ed0590024f5fe63e2dca696949cd4a3b.jpg
383
+ SUGGESTIVE,/data/imgs/c80032d6-ecd074a8a73aafc255fb87c50ab46d32.jpg
384
+ SUGGESTIVE,/data/imgs/5cb76bcd-ecd461884c7d815ca300840ac7dff722.jpg
385
+ SUGGESTIVE,/data/imgs/475e3763-ecab477c7f479d98386c20ed15ddc8ed.jpg
386
+ SUGGESTIVE,/data/imgs/38faa256-ecb96a10b5007cac877671cd626e11bc.jpg
387
+ FAMILY_SAFE,/data/imgs/0a0d8662-ecb215bf839692ed00a48cf006405234.jpg
388
+ SUGGESTIVE,/data/imgs/fe38b006-ec912c8d68846d3d4cae46a6dc2e2e67.jpg
389
+ SUGGESTIVE,/data/imgs/61198ea6-eca396464fb1343904128cac952dccba.jpg
390
+ SUGGESTIVE,/data/imgs/f42a237d-ec8ba9e30ab570db99c521c4d75e877a.jpg
391
+ FAMILY_SAFE,/data/imgs/9ea2a68b-ec75da7bce977ab4b2d77224ad0ed08d.jpg
392
+ SUGGESTIVE,/data/imgs/b19e9aff-ec7752c4445664d6a594779d0cba33a6.jpg
393
+ FAMILY_SAFE,/data/imgs/cb8a1b42-ec4ed6c5f59cd751b1d4a8cbd5ef9730.jpg
394
+ SUGGESTIVE,/data/imgs/11f16074-ec4f3a4fceac2b83221995baa3ce6138.jpg
395
+ FAMILY_SAFE,/data/imgs/cf990f78-ec4898ce293c0fce9e3df490ef83741d.jpg
396
+ FAMILY_SAFE,/data/imgs/958ec76b-ec5156a1d4dad967c4ed14a44fc9c10f.jpg
397
+ FAMILY_SAFE,/data/imgs/b1c40d0c-ec5965d57ca71e648adc70401156b743.jpg
398
+ SUGGESTIVE,/data/imgs/5c8c7c7e-ec3c4b7b7261c385c7792663a153b2dc.jpg
399
+ SUGGESTIVE,/data/imgs/c8925d60-ec2488d58f5c6f80593119f44bdb6f36.jpg
400
+ SUGGESTIVE,/data/imgs/783f692a-ec3873aa10b64f2c5c0ae4044d8dd916.jpg
401
+ SUGGESTIVE,/data/imgs/c59d6aef-ec366037d7416be3f574f23f7e0fb3ef.jpg
402
+ UNCERTAIN,/data/imgs/ba90116c-ebfda352bd5113859294aff74239faed.jpg
403
+ FAMILY_SAFE,/data/imgs/74013397-ebfe9c315f7eba7ee13ffecfbe52cab8.jpg
404
+ SUGGESTIVE,/data/imgs/2827b91c-ec1a1c97dab7c740188280a871b78251.jpg
405
+ SUGGESTIVE,/data/imgs/07efebe4-ebd3a3a173aa3985f69c95a9bbeec91a.jpg
406
+ SUGGESTIVE,/data/imgs/34018f60-ebe7ee3f3605c66f1be4eb323e3ae05f.jpg
407
+ SUGGESTIVE,/data/imgs/a2dd1244-ebe59192b6950204b3fee2c0edf9242d.jpg
408
+ UNCERTAIN,/data/imgs/670193c9-ebef8223abe988c0821aefae3c6e6e98.jpg
409
+ SUGGESTIVE,/data/imgs/c91cb641-ebf05bafa1371d6feb6aa81ea7cbbf7a.jpg
410
+ SUGGESTIVE,/data/imgs/e91af0b1-ebf0503fe32e2e3a76346007e4aaf886.jpg
411
+ FAMILY_SAFE,/data/imgs/5fddd072-ebb2b0dd48dc25f919f57ff2a2e7312a.jpg
412
+ UNCERTAIN,/data/imgs/26c7e03e-ebcf6c5f871a5dc3e6e9f035bf8fba78.jpg
413
+ SUGGESTIVE,/data/imgs/19060fc3-ebd170644a805b3966416bc6f2d40528.jpg
414
+ SUGGESTIVE,/data/imgs/6a2a26d9-eb8a6ed9fea3fd6949774e598fed9d20.jpg
415
+ SUGGESTIVE,/data/imgs/61cf0086-eb8d76f9ea022d2b18f119288e0fb083.jpg
416
+ SUGGESTIVE,/data/imgs/71c87364-eb9f10122a8e23579c8d1a2cdc0e8db4.jpg
417
+ SUGGESTIVE,/data/imgs/9eebe5b1-eb905d1b7fc7b0eac9adea12bee291bc.jpg
418
+ SUGGESTIVE,/data/imgs/b7ac5915-eb915f5d723fe6d575e7471e8130924d.jpg
419
+ FAMILY_SAFE,/data/imgs/700eea71-eb7967ec45df17fadffae1e9b84a1c03.jpg
420
+ SUGGESTIVE,/data/imgs/dd925e69-eba026d7ab6dcbf77c05e9e1fce9f98b.jpg
421
+ FAMILY_SAFE,/data/imgs/01dc90a4-eba313f10bf5953b52dc8145a668f4b1.jpg
422
+ FAMILY_SAFE,/data/imgs/49462a8c-eb3e848d5f3969eb49f10ef14db11593.jpg
423
+ UNCERTAIN,/data/imgs/84cabf94-eb46a86b864004fb56c426f3e6859869.jpg
424
+ SUGGESTIVE,/data/imgs/8d99d164-eb630bc86c8b347b6e4f3f947ef03b45.jpg
425
+ FAMILY_SAFE,/data/imgs/a5dc7a8b-eb0b4aec28838b01b635ae2d906319fd.jpg
426
+ SUGGESTIVE,/data/imgs/c998ec26-eb0fd6ae406bcbf648f37716832167b7.jpg
427
+ UNCERTAIN,/data/imgs/9a363203-eb1efa483d18843e2d34330b324e49e7.jpg
428
+ SUGGESTIVE,/data/imgs/80174771-eb2bbc40d914d047f6a15d0d1db4af9b.jpg
429
+ SUGGESTIVE,/data/imgs/da470e08-eb214a887113aeae8902116d5ebcb84a.jpg
430
+ UNCERTAIN,/data/imgs/c1369917-eb396372a0cbb497fcb259ecf9859fab.jpg
431
+ SUGGESTIVE,/data/imgs/eaf48512-eae00de851425f14cf837f6238fb3111.jpg
432
+ SUGGESTIVE,/data/imgs/3ae42af7-ea9478ccf8264c91cf5485c93fecba1b.jpg
433
+ FAMILY_SAFE,/data/imgs/990348b4-ea889002933fd0689c1bd805505d00ca.jpg
434
+ SUGGESTIVE,/data/imgs/77e2c941-eaa26e78346e1d92ee8b34a80aff9826.jpg
435
+ SUGGESTIVE,/data/imgs/775910aa-eaac5564f212f117e0ea7174b0876484.jpg
436
+ SUGGESTIVE,/data/imgs/b8405e3c-eac0ebc831eeb117fb36c86452b6c5f5.jpg
437
+ SUGGESTIVE,/data/imgs/1e5eb554-ea5d2de8ab1fd0ec4b61ed153805d638.jpg
438
+ SUGGESTIVE,/data/imgs/ee2ed958-ea6df97b08a8c96a9587abe7764f9cc3.jpg
439
+ SUGGESTIVE,/data/imgs/27bffd86-ea6fffbf1d3afbbbeea92a3c1c6deffd.jpg
440
+ SUGGESTIVE,/data/imgs/bc246849-ea71edf190810bac9c56483239eae59a.jpg
441
+ UNCERTAIN,/data/imgs/39c155ed-ea4b1f27828cbd87b0f95f1f36cd7a54.jpg
442
+ UNCERTAIN,/data/imgs/2b92f3dc-ea5380a591b6e34d1382a67221b558aa.jpg
443
+ UNCERTAIN,/data/imgs/03579438-ea1f42c6e20979a40230b242e5d6bbee.jpg
444
+ SUGGESTIVE,/data/imgs/e5da72ea-ea20b59163f3b360f62d68e4f132393b.jpg
445
+ UNCERTAIN,/data/imgs/7fce3819-ea37c94a8cb1c50c4084d4c9cc9bd177.jpg
446
+ UNCERTAIN,/data/imgs/0b24edd3-e9d77067389acfaa2897de087ec279a1.jpg
447
+ UNCERTAIN,/data/imgs/b61339af-e9e395951ba5901de8ba2b15899689ee.jpg
448
+ SUGGESTIVE,/data/imgs/bb7c935c-e9eefa0852edb5311b63d6fbf85a9815.jpg
449
+ SUGGESTIVE,/data/imgs/3bcb2655-e9f9cb6790fcb4c6960e5b834abfe72c.jpg
450
+ SUGGESTIVE,/data/imgs/630fff65-e9f0689b5df3c0bbb17ec7a670ebacb8.jpg
451
+ SUGGESTIVE,/data/imgs/3c9f8955-e9b23e6e929900bbbbb29be5affa0ae5.jpg
452
+ UNCERTAIN,/data/imgs/e2b2a6ac-e9a15368497b12a5f502151ce2babdd1.jpg
453
+ SUGGESTIVE,/data/imgs/28c4871f-e9ab035913a3f11963041ef9b89caa2e.jpg
454
+ SUGGESTIVE,/data/imgs/e41d2daa-e96c2e00fce0f439d17ad2731eb76f06.jpg
455
+ FAMILY_SAFE,/data/imgs/31a90818-e983a4f33a2035ff412231c35d7fcfa5.jpg
456
+ FAMILY_SAFE,/data/imgs/4da9491c-e95cf7d4d15184aeb5847e9e6a51e9d0.jpg
data/sexualised_fashion.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:580215185586911f5ea382a9fdcd97cd45f5a52c1fa7407c24450c8581f019b1
3
+ size 50318850
data/test/Screenshot 2025-12-21 at 14.46.33.png ADDED

Git LFS Details

  • SHA256: e72697cdbc5858be346b1e0ea7daf00efa3d345d9b92e5c68a2e13a3625d9393
  • Pointer size: 131 Bytes
  • Size of remote file: 592 kB
data/test/Screenshot 2025-12-21 at 15.06.41.png ADDED

Git LFS Details

  • SHA256: ac33938b6027e23dfc9d155e175195530a5d6b24873e25bcda3bc24bb191f60a
  • Pointer size: 132 Bytes
  • Size of remote file: 1.21 MB
notebooks/eda.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
notebooks/nswf_test.ipynb ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "id": "f52f34d0",
7
+ "metadata": {},
8
+ "outputs": [
9
+ {
10
+ "name": "stderr",
11
+ "output_type": "stream",
12
+ "text": [
13
+ "/Users/youniss/Documents/GitHub/haram-police/.venv/lib/python3.13/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
14
+ " from .autonotebook import tqdm as notebook_tqdm\n",
15
+ "Using a slow image processor as `use_fast` is unset and a slow processor was saved with this model. `use_fast=True` will be the default behavior in v4.52, even if the model was saved with a slow processor. This will result in minor differences in outputs. You'll still be able to use a slow processor with `use_fast=False`.\n",
16
+ "Device set to use mps:0\n"
17
+ ]
18
+ }
19
+ ],
20
+ "source": [
21
+ "from transformers import pipeline\n",
22
+ "\n",
23
+ "pipe = pipeline(\"image-classification\", model=\"Falconsai/nsfw_image_detection\")"
24
+ ]
25
+ },
26
+ {
27
+ "cell_type": "code",
28
+ "execution_count": 2,
29
+ "id": "cb8aac6f",
30
+ "metadata": {},
31
+ "outputs": [
32
+ {
33
+ "data": {
34
+ "text/plain": [
35
+ "[{'label': 'normal', 'score': 0.9997637867927551},\n",
36
+ " {'label': 'nsfw', 'score': 0.00023620268621016294}]"
37
+ ]
38
+ },
39
+ "execution_count": 2,
40
+ "metadata": {},
41
+ "output_type": "execute_result"
42
+ }
43
+ ],
44
+ "source": [
45
+ "pipe(\"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/parrots.png\")\n"
46
+ ]
47
+ },
48
+ {
49
+ "cell_type": "code",
50
+ "execution_count": null,
51
+ "id": "9d21f66c",
52
+ "metadata": {},
53
+ "outputs": [],
54
+ "source": []
55
+ }
56
+ ],
57
+ "metadata": {
58
+ "kernelspec": {
59
+ "display_name": ".venv",
60
+ "language": "python",
61
+ "name": "python3"
62
+ },
63
+ "language_info": {
64
+ "codemirror_mode": {
65
+ "name": "ipython",
66
+ "version": 3
67
+ },
68
+ "file_extension": ".py",
69
+ "mimetype": "text/x-python",
70
+ "name": "python",
71
+ "nbconvert_exporter": "python",
72
+ "pygments_lexer": "ipython3",
73
+ "version": "3.13.5"
74
+ }
75
+ },
76
+ "nbformat": 4,
77
+ "nbformat_minor": 5
78
+ }
notebooks/processing.ipynb ADDED
@@ -0,0 +1,1691 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 53,
6
+ "id": "d3a1f52b",
7
+ "metadata": {},
8
+ "outputs": [
9
+ {
10
+ "data": {
11
+ "text/plain": [
12
+ "True"
13
+ ]
14
+ },
15
+ "execution_count": 53,
16
+ "metadata": {},
17
+ "output_type": "execute_result"
18
+ }
19
+ ],
20
+ "source": [
21
+ "import pandas as pd\n",
22
+ "from dotenv import load_dotenv\n",
23
+ "from pathlib import Path\n",
24
+ "import json\n",
25
+ "\n",
26
+ "load_dotenv()"
27
+ ]
28
+ },
29
+ {
30
+ "cell_type": "code",
31
+ "execution_count": 54,
32
+ "id": "bca20bcc",
33
+ "metadata": {},
34
+ "outputs": [
35
+ {
36
+ "data": {
37
+ "text/html": [
38
+ "<div>\n",
39
+ "<style scoped>\n",
40
+ " .dataframe tbody tr th:only-of-type {\n",
41
+ " vertical-align: middle;\n",
42
+ " }\n",
43
+ "\n",
44
+ " .dataframe tbody tr th {\n",
45
+ " vertical-align: top;\n",
46
+ " }\n",
47
+ "\n",
48
+ " .dataframe thead th {\n",
49
+ " text-align: right;\n",
50
+ " }\n",
51
+ "</style>\n",
52
+ "<table border=\"1\" class=\"dataframe\">\n",
53
+ " <thead>\n",
54
+ " <tr style=\"text-align: right;\">\n",
55
+ " <th></th>\n",
56
+ " <th>ImageId</th>\n",
57
+ " <th>EncodedPixels</th>\n",
58
+ " <th>Height</th>\n",
59
+ " <th>Width</th>\n",
60
+ " <th>ClassId</th>\n",
61
+ " <th>AttributesIds</th>\n",
62
+ " </tr>\n",
63
+ " </thead>\n",
64
+ " <tbody>\n",
65
+ " <tr>\n",
66
+ " <th>0</th>\n",
67
+ " <td>00000663ed1ff0c4e0132b9b9ac53f6e</td>\n",
68
+ " <td>6068157 7 6073371 20 6078584 34 6083797 48 608...</td>\n",
69
+ " <td>5214</td>\n",
70
+ " <td>3676</td>\n",
71
+ " <td>6</td>\n",
72
+ " <td>115,136,143,154,230,295,316,317</td>\n",
73
+ " </tr>\n",
74
+ " <tr>\n",
75
+ " <th>1</th>\n",
76
+ " <td>00000663ed1ff0c4e0132b9b9ac53f6e</td>\n",
77
+ " <td>6323163 11 6328356 32 6333549 53 6338742 75 63...</td>\n",
78
+ " <td>5214</td>\n",
79
+ " <td>3676</td>\n",
80
+ " <td>0</td>\n",
81
+ " <td>115,136,142,146,225,295,316,317</td>\n",
82
+ " </tr>\n",
83
+ " <tr>\n",
84
+ " <th>2</th>\n",
85
+ " <td>00000663ed1ff0c4e0132b9b9ac53f6e</td>\n",
86
+ " <td>8521389 10 8526585 30 8531789 42 8537002 46 85...</td>\n",
87
+ " <td>5214</td>\n",
88
+ " <td>3676</td>\n",
89
+ " <td>28</td>\n",
90
+ " <td>163</td>\n",
91
+ " </tr>\n",
92
+ " <tr>\n",
93
+ " <th>3</th>\n",
94
+ " <td>00000663ed1ff0c4e0132b9b9ac53f6e</td>\n",
95
+ " <td>12903854 2 12909064 7 12914275 10 12919485 15 ...</td>\n",
96
+ " <td>5214</td>\n",
97
+ " <td>3676</td>\n",
98
+ " <td>31</td>\n",
99
+ " <td>160,204</td>\n",
100
+ " </tr>\n",
101
+ " <tr>\n",
102
+ " <th>4</th>\n",
103
+ " <td>00000663ed1ff0c4e0132b9b9ac53f6e</td>\n",
104
+ " <td>10837337 5 10842542 14 10847746 24 10852951 33...</td>\n",
105
+ " <td>5214</td>\n",
106
+ " <td>3676</td>\n",
107
+ " <td>32</td>\n",
108
+ " <td>219</td>\n",
109
+ " </tr>\n",
110
+ " </tbody>\n",
111
+ "</table>\n",
112
+ "</div>"
113
+ ],
114
+ "text/plain": [
115
+ " ImageId \\\n",
116
+ "0 00000663ed1ff0c4e0132b9b9ac53f6e \n",
117
+ "1 00000663ed1ff0c4e0132b9b9ac53f6e \n",
118
+ "2 00000663ed1ff0c4e0132b9b9ac53f6e \n",
119
+ "3 00000663ed1ff0c4e0132b9b9ac53f6e \n",
120
+ "4 00000663ed1ff0c4e0132b9b9ac53f6e \n",
121
+ "\n",
122
+ " EncodedPixels Height Width ClassId \\\n",
123
+ "0 6068157 7 6073371 20 6078584 34 6083797 48 608... 5214 3676 6 \n",
124
+ "1 6323163 11 6328356 32 6333549 53 6338742 75 63... 5214 3676 0 \n",
125
+ "2 8521389 10 8526585 30 8531789 42 8537002 46 85... 5214 3676 28 \n",
126
+ "3 12903854 2 12909064 7 12914275 10 12919485 15 ... 5214 3676 31 \n",
127
+ "4 10837337 5 10842542 14 10847746 24 10852951 33... 5214 3676 32 \n",
128
+ "\n",
129
+ " AttributesIds \n",
130
+ "0 115,136,143,154,230,295,316,317 \n",
131
+ "1 115,136,142,146,225,295,316,317 \n",
132
+ "2 163 \n",
133
+ "3 160,204 \n",
134
+ "4 219 "
135
+ ]
136
+ },
137
+ "execution_count": 54,
138
+ "metadata": {},
139
+ "output_type": "execute_result"
140
+ }
141
+ ],
142
+ "source": [
143
+ "# Get project root (one level up from notebooks/ if running from notebooks directory)\n",
144
+ "current_dir = Path.cwd()\n",
145
+ "PROJECT_ROOT = current_dir.parent if current_dir.name == \"notebooks\" else current_dir\n",
146
+ "DATA_PATH = PROJECT_ROOT / \"data\"\n",
147
+ "\n",
148
+ "fashion_df = pd.read_csv(DATA_PATH / \"train.csv\")\n",
149
+ "fashion_df.head()\n"
150
+ ]
151
+ },
152
+ {
153
+ "cell_type": "code",
154
+ "execution_count": 55,
155
+ "id": "58f4f7b4",
156
+ "metadata": {},
157
+ "outputs": [
158
+ {
159
+ "data": {
160
+ "text/html": [
161
+ "<div>\n",
162
+ "<style scoped>\n",
163
+ " .dataframe tbody tr th:only-of-type {\n",
164
+ " vertical-align: middle;\n",
165
+ " }\n",
166
+ "\n",
167
+ " .dataframe tbody tr th {\n",
168
+ " vertical-align: top;\n",
169
+ " }\n",
170
+ "\n",
171
+ " .dataframe thead th {\n",
172
+ " text-align: right;\n",
173
+ " }\n",
174
+ "</style>\n",
175
+ "<table border=\"1\" class=\"dataframe\">\n",
176
+ " <thead>\n",
177
+ " <tr style=\"text-align: right;\">\n",
178
+ " <th></th>\n",
179
+ " <th>id</th>\n",
180
+ " <th>name</th>\n",
181
+ " <th>supercategory</th>\n",
182
+ " <th>level</th>\n",
183
+ " </tr>\n",
184
+ " </thead>\n",
185
+ " <tbody>\n",
186
+ " <tr>\n",
187
+ " <th>0</th>\n",
188
+ " <td>0</td>\n",
189
+ " <td>shirt, blouse</td>\n",
190
+ " <td>upperbody</td>\n",
191
+ " <td>2</td>\n",
192
+ " </tr>\n",
193
+ " <tr>\n",
194
+ " <th>1</th>\n",
195
+ " <td>1</td>\n",
196
+ " <td>top, t-shirt, sweatshirt</td>\n",
197
+ " <td>upperbody</td>\n",
198
+ " <td>2</td>\n",
199
+ " </tr>\n",
200
+ " <tr>\n",
201
+ " <th>2</th>\n",
202
+ " <td>2</td>\n",
203
+ " <td>sweater</td>\n",
204
+ " <td>upperbody</td>\n",
205
+ " <td>2</td>\n",
206
+ " </tr>\n",
207
+ " <tr>\n",
208
+ " <th>3</th>\n",
209
+ " <td>3</td>\n",
210
+ " <td>cardigan</td>\n",
211
+ " <td>upperbody</td>\n",
212
+ " <td>2</td>\n",
213
+ " </tr>\n",
214
+ " <tr>\n",
215
+ " <th>4</th>\n",
216
+ " <td>4</td>\n",
217
+ " <td>jacket</td>\n",
218
+ " <td>upperbody</td>\n",
219
+ " <td>2</td>\n",
220
+ " </tr>\n",
221
+ " <tr>\n",
222
+ " <th>5</th>\n",
223
+ " <td>5</td>\n",
224
+ " <td>vest</td>\n",
225
+ " <td>upperbody</td>\n",
226
+ " <td>2</td>\n",
227
+ " </tr>\n",
228
+ " <tr>\n",
229
+ " <th>6</th>\n",
230
+ " <td>6</td>\n",
231
+ " <td>pants</td>\n",
232
+ " <td>lowerbody</td>\n",
233
+ " <td>2</td>\n",
234
+ " </tr>\n",
235
+ " <tr>\n",
236
+ " <th>7</th>\n",
237
+ " <td>7</td>\n",
238
+ " <td>shorts</td>\n",
239
+ " <td>lowerbody</td>\n",
240
+ " <td>2</td>\n",
241
+ " </tr>\n",
242
+ " <tr>\n",
243
+ " <th>8</th>\n",
244
+ " <td>8</td>\n",
245
+ " <td>skirt</td>\n",
246
+ " <td>lowerbody</td>\n",
247
+ " <td>2</td>\n",
248
+ " </tr>\n",
249
+ " <tr>\n",
250
+ " <th>9</th>\n",
251
+ " <td>9</td>\n",
252
+ " <td>coat</td>\n",
253
+ " <td>wholebody</td>\n",
254
+ " <td>2</td>\n",
255
+ " </tr>\n",
256
+ " <tr>\n",
257
+ " <th>10</th>\n",
258
+ " <td>10</td>\n",
259
+ " <td>dress</td>\n",
260
+ " <td>wholebody</td>\n",
261
+ " <td>2</td>\n",
262
+ " </tr>\n",
263
+ " <tr>\n",
264
+ " <th>11</th>\n",
265
+ " <td>11</td>\n",
266
+ " <td>jumpsuit</td>\n",
267
+ " <td>wholebody</td>\n",
268
+ " <td>2</td>\n",
269
+ " </tr>\n",
270
+ " <tr>\n",
271
+ " <th>12</th>\n",
272
+ " <td>12</td>\n",
273
+ " <td>cape</td>\n",
274
+ " <td>wholebody</td>\n",
275
+ " <td>2</td>\n",
276
+ " </tr>\n",
277
+ " <tr>\n",
278
+ " <th>13</th>\n",
279
+ " <td>13</td>\n",
280
+ " <td>glasses</td>\n",
281
+ " <td>head</td>\n",
282
+ " <td>2</td>\n",
283
+ " </tr>\n",
284
+ " <tr>\n",
285
+ " <th>14</th>\n",
286
+ " <td>14</td>\n",
287
+ " <td>hat</td>\n",
288
+ " <td>head</td>\n",
289
+ " <td>2</td>\n",
290
+ " </tr>\n",
291
+ " <tr>\n",
292
+ " <th>15</th>\n",
293
+ " <td>15</td>\n",
294
+ " <td>headband, head covering, hair accessory</td>\n",
295
+ " <td>head</td>\n",
296
+ " <td>2</td>\n",
297
+ " </tr>\n",
298
+ " <tr>\n",
299
+ " <th>16</th>\n",
300
+ " <td>16</td>\n",
301
+ " <td>tie</td>\n",
302
+ " <td>neck</td>\n",
303
+ " <td>2</td>\n",
304
+ " </tr>\n",
305
+ " <tr>\n",
306
+ " <th>17</th>\n",
307
+ " <td>17</td>\n",
308
+ " <td>glove</td>\n",
309
+ " <td>arms and hands</td>\n",
310
+ " <td>2</td>\n",
311
+ " </tr>\n",
312
+ " <tr>\n",
313
+ " <th>18</th>\n",
314
+ " <td>18</td>\n",
315
+ " <td>watch</td>\n",
316
+ " <td>arms and hands</td>\n",
317
+ " <td>2</td>\n",
318
+ " </tr>\n",
319
+ " <tr>\n",
320
+ " <th>19</th>\n",
321
+ " <td>19</td>\n",
322
+ " <td>belt</td>\n",
323
+ " <td>waist</td>\n",
324
+ " <td>2</td>\n",
325
+ " </tr>\n",
326
+ " <tr>\n",
327
+ " <th>20</th>\n",
328
+ " <td>20</td>\n",
329
+ " <td>leg warmer</td>\n",
330
+ " <td>legs and feet</td>\n",
331
+ " <td>2</td>\n",
332
+ " </tr>\n",
333
+ " <tr>\n",
334
+ " <th>21</th>\n",
335
+ " <td>21</td>\n",
336
+ " <td>tights, stockings</td>\n",
337
+ " <td>legs and feet</td>\n",
338
+ " <td>2</td>\n",
339
+ " </tr>\n",
340
+ " <tr>\n",
341
+ " <th>22</th>\n",
342
+ " <td>22</td>\n",
343
+ " <td>sock</td>\n",
344
+ " <td>legs and feet</td>\n",
345
+ " <td>2</td>\n",
346
+ " </tr>\n",
347
+ " <tr>\n",
348
+ " <th>23</th>\n",
349
+ " <td>23</td>\n",
350
+ " <td>shoe</td>\n",
351
+ " <td>legs and feet</td>\n",
352
+ " <td>2</td>\n",
353
+ " </tr>\n",
354
+ " <tr>\n",
355
+ " <th>24</th>\n",
356
+ " <td>24</td>\n",
357
+ " <td>bag, wallet</td>\n",
358
+ " <td>others</td>\n",
359
+ " <td>2</td>\n",
360
+ " </tr>\n",
361
+ " <tr>\n",
362
+ " <th>25</th>\n",
363
+ " <td>25</td>\n",
364
+ " <td>scarf</td>\n",
365
+ " <td>others</td>\n",
366
+ " <td>2</td>\n",
367
+ " </tr>\n",
368
+ " <tr>\n",
369
+ " <th>26</th>\n",
370
+ " <td>26</td>\n",
371
+ " <td>umbrella</td>\n",
372
+ " <td>others</td>\n",
373
+ " <td>2</td>\n",
374
+ " </tr>\n",
375
+ " <tr>\n",
376
+ " <th>27</th>\n",
377
+ " <td>27</td>\n",
378
+ " <td>hood</td>\n",
379
+ " <td>garment parts</td>\n",
380
+ " <td>2</td>\n",
381
+ " </tr>\n",
382
+ " <tr>\n",
383
+ " <th>28</th>\n",
384
+ " <td>28</td>\n",
385
+ " <td>collar</td>\n",
386
+ " <td>garment parts</td>\n",
387
+ " <td>2</td>\n",
388
+ " </tr>\n",
389
+ " <tr>\n",
390
+ " <th>29</th>\n",
391
+ " <td>29</td>\n",
392
+ " <td>lapel</td>\n",
393
+ " <td>garment parts</td>\n",
394
+ " <td>2</td>\n",
395
+ " </tr>\n",
396
+ " <tr>\n",
397
+ " <th>30</th>\n",
398
+ " <td>30</td>\n",
399
+ " <td>epaulette</td>\n",
400
+ " <td>garment parts</td>\n",
401
+ " <td>2</td>\n",
402
+ " </tr>\n",
403
+ " <tr>\n",
404
+ " <th>31</th>\n",
405
+ " <td>31</td>\n",
406
+ " <td>sleeve</td>\n",
407
+ " <td>garment parts</td>\n",
408
+ " <td>2</td>\n",
409
+ " </tr>\n",
410
+ " <tr>\n",
411
+ " <th>32</th>\n",
412
+ " <td>32</td>\n",
413
+ " <td>pocket</td>\n",
414
+ " <td>garment parts</td>\n",
415
+ " <td>2</td>\n",
416
+ " </tr>\n",
417
+ " <tr>\n",
418
+ " <th>33</th>\n",
419
+ " <td>33</td>\n",
420
+ " <td>neckline</td>\n",
421
+ " <td>garment parts</td>\n",
422
+ " <td>2</td>\n",
423
+ " </tr>\n",
424
+ " <tr>\n",
425
+ " <th>34</th>\n",
426
+ " <td>34</td>\n",
427
+ " <td>buckle</td>\n",
428
+ " <td>closures</td>\n",
429
+ " <td>2</td>\n",
430
+ " </tr>\n",
431
+ " <tr>\n",
432
+ " <th>35</th>\n",
433
+ " <td>35</td>\n",
434
+ " <td>zipper</td>\n",
435
+ " <td>closures</td>\n",
436
+ " <td>2</td>\n",
437
+ " </tr>\n",
438
+ " <tr>\n",
439
+ " <th>36</th>\n",
440
+ " <td>36</td>\n",
441
+ " <td>applique</td>\n",
442
+ " <td>decorations</td>\n",
443
+ " <td>2</td>\n",
444
+ " </tr>\n",
445
+ " <tr>\n",
446
+ " <th>37</th>\n",
447
+ " <td>37</td>\n",
448
+ " <td>bead</td>\n",
449
+ " <td>decorations</td>\n",
450
+ " <td>2</td>\n",
451
+ " </tr>\n",
452
+ " <tr>\n",
453
+ " <th>38</th>\n",
454
+ " <td>38</td>\n",
455
+ " <td>bow</td>\n",
456
+ " <td>decorations</td>\n",
457
+ " <td>2</td>\n",
458
+ " </tr>\n",
459
+ " <tr>\n",
460
+ " <th>39</th>\n",
461
+ " <td>39</td>\n",
462
+ " <td>flower</td>\n",
463
+ " <td>decorations</td>\n",
464
+ " <td>2</td>\n",
465
+ " </tr>\n",
466
+ " <tr>\n",
467
+ " <th>40</th>\n",
468
+ " <td>40</td>\n",
469
+ " <td>fringe</td>\n",
470
+ " <td>decorations</td>\n",
471
+ " <td>2</td>\n",
472
+ " </tr>\n",
473
+ " <tr>\n",
474
+ " <th>41</th>\n",
475
+ " <td>41</td>\n",
476
+ " <td>ribbon</td>\n",
477
+ " <td>decorations</td>\n",
478
+ " <td>2</td>\n",
479
+ " </tr>\n",
480
+ " <tr>\n",
481
+ " <th>42</th>\n",
482
+ " <td>42</td>\n",
483
+ " <td>rivet</td>\n",
484
+ " <td>decorations</td>\n",
485
+ " <td>2</td>\n",
486
+ " </tr>\n",
487
+ " <tr>\n",
488
+ " <th>43</th>\n",
489
+ " <td>43</td>\n",
490
+ " <td>ruffle</td>\n",
491
+ " <td>decorations</td>\n",
492
+ " <td>2</td>\n",
493
+ " </tr>\n",
494
+ " <tr>\n",
495
+ " <th>44</th>\n",
496
+ " <td>44</td>\n",
497
+ " <td>sequin</td>\n",
498
+ " <td>decorations</td>\n",
499
+ " <td>2</td>\n",
500
+ " </tr>\n",
501
+ " <tr>\n",
502
+ " <th>45</th>\n",
503
+ " <td>45</td>\n",
504
+ " <td>tassel</td>\n",
505
+ " <td>decorations</td>\n",
506
+ " <td>2</td>\n",
507
+ " </tr>\n",
508
+ " </tbody>\n",
509
+ "</table>\n",
510
+ "</div>"
511
+ ],
512
+ "text/plain": [
513
+ " id name supercategory level\n",
514
+ "0 0 shirt, blouse upperbody 2\n",
515
+ "1 1 top, t-shirt, sweatshirt upperbody 2\n",
516
+ "2 2 sweater upperbody 2\n",
517
+ "3 3 cardigan upperbody 2\n",
518
+ "4 4 jacket upperbody 2\n",
519
+ "5 5 vest upperbody 2\n",
520
+ "6 6 pants lowerbody 2\n",
521
+ "7 7 shorts lowerbody 2\n",
522
+ "8 8 skirt lowerbody 2\n",
523
+ "9 9 coat wholebody 2\n",
524
+ "10 10 dress wholebody 2\n",
525
+ "11 11 jumpsuit wholebody 2\n",
526
+ "12 12 cape wholebody 2\n",
527
+ "13 13 glasses head 2\n",
528
+ "14 14 hat head 2\n",
529
+ "15 15 headband, head covering, hair accessory head 2\n",
530
+ "16 16 tie neck 2\n",
531
+ "17 17 glove arms and hands 2\n",
532
+ "18 18 watch arms and hands 2\n",
533
+ "19 19 belt waist 2\n",
534
+ "20 20 leg warmer legs and feet 2\n",
535
+ "21 21 tights, stockings legs and feet 2\n",
536
+ "22 22 sock legs and feet 2\n",
537
+ "23 23 shoe legs and feet 2\n",
538
+ "24 24 bag, wallet others 2\n",
539
+ "25 25 scarf others 2\n",
540
+ "26 26 umbrella others 2\n",
541
+ "27 27 hood garment parts 2\n",
542
+ "28 28 collar garment parts 2\n",
543
+ "29 29 lapel garment parts 2\n",
544
+ "30 30 epaulette garment parts 2\n",
545
+ "31 31 sleeve garment parts 2\n",
546
+ "32 32 pocket garment parts 2\n",
547
+ "33 33 neckline garment parts 2\n",
548
+ "34 34 buckle closures 2\n",
549
+ "35 35 zipper closures 2\n",
550
+ "36 36 applique decorations 2\n",
551
+ "37 37 bead decorations 2\n",
552
+ "38 38 bow decorations 2\n",
553
+ "39 39 flower decorations 2\n",
554
+ "40 40 fringe decorations 2\n",
555
+ "41 41 ribbon decorations 2\n",
556
+ "42 42 rivet decorations 2\n",
557
+ "43 43 ruffle decorations 2\n",
558
+ "44 44 sequin decorations 2\n",
559
+ "45 45 tassel decorations 2"
560
+ ]
561
+ },
562
+ "execution_count": 55,
563
+ "metadata": {},
564
+ "output_type": "execute_result"
565
+ }
566
+ ],
567
+ "source": [
568
+ "label_descriptions = json.load(open(DATA_PATH / \"label_descriptions.json\"))\n",
569
+ "\n",
570
+ "categories_df = pd.DataFrame(label_descriptions[\"categories\"])\n",
571
+ "categories_df"
572
+ ]
573
+ },
574
+ {
575
+ "cell_type": "code",
576
+ "execution_count": 56,
577
+ "id": "48d7ab2b",
578
+ "metadata": {},
579
+ "outputs": [
580
+ {
581
+ "data": {
582
+ "text/html": [
583
+ "<div>\n",
584
+ "<style scoped>\n",
585
+ " .dataframe tbody tr th:only-of-type {\n",
586
+ " vertical-align: middle;\n",
587
+ " }\n",
588
+ "\n",
589
+ " .dataframe tbody tr th {\n",
590
+ " vertical-align: top;\n",
591
+ " }\n",
592
+ "\n",
593
+ " .dataframe thead th {\n",
594
+ " text-align: right;\n",
595
+ " }\n",
596
+ "</style>\n",
597
+ "<table border=\"1\" class=\"dataframe\">\n",
598
+ " <thead>\n",
599
+ " <tr style=\"text-align: right;\">\n",
600
+ " <th></th>\n",
601
+ " <th>id</th>\n",
602
+ " <th>name</th>\n",
603
+ " <th>supercategory</th>\n",
604
+ " <th>level</th>\n",
605
+ " </tr>\n",
606
+ " </thead>\n",
607
+ " <tbody>\n",
608
+ " <tr>\n",
609
+ " <th>0</th>\n",
610
+ " <td>0</td>\n",
611
+ " <td>classic (t-shirt)</td>\n",
612
+ " <td>nickname</td>\n",
613
+ " <td>1</td>\n",
614
+ " </tr>\n",
615
+ " <tr>\n",
616
+ " <th>1</th>\n",
617
+ " <td>1</td>\n",
618
+ " <td>polo (shirt)</td>\n",
619
+ " <td>nickname</td>\n",
620
+ " <td>1</td>\n",
621
+ " </tr>\n",
622
+ " <tr>\n",
623
+ " <th>2</th>\n",
624
+ " <td>2</td>\n",
625
+ " <td>undershirt</td>\n",
626
+ " <td>nickname</td>\n",
627
+ " <td>1</td>\n",
628
+ " </tr>\n",
629
+ " <tr>\n",
630
+ " <th>3</th>\n",
631
+ " <td>3</td>\n",
632
+ " <td>henley (shirt)</td>\n",
633
+ " <td>nickname</td>\n",
634
+ " <td>1</td>\n",
635
+ " </tr>\n",
636
+ " <tr>\n",
637
+ " <th>4</th>\n",
638
+ " <td>4</td>\n",
639
+ " <td>ringer (t-shirt)</td>\n",
640
+ " <td>nickname</td>\n",
641
+ " <td>1</td>\n",
642
+ " </tr>\n",
643
+ " <tr>\n",
644
+ " <th>...</th>\n",
645
+ " <td>...</td>\n",
646
+ " <td>...</td>\n",
647
+ " <td>...</td>\n",
648
+ " <td>...</td>\n",
649
+ " </tr>\n",
650
+ " <tr>\n",
651
+ " <th>289</th>\n",
652
+ " <td>336</td>\n",
653
+ " <td>peacock</td>\n",
654
+ " <td>animal</td>\n",
655
+ " <td>2</td>\n",
656
+ " </tr>\n",
657
+ " <tr>\n",
658
+ " <th>290</th>\n",
659
+ " <td>337</td>\n",
660
+ " <td>zebra</td>\n",
661
+ " <td>animal</td>\n",
662
+ " <td>2</td>\n",
663
+ " </tr>\n",
664
+ " <tr>\n",
665
+ " <th>291</th>\n",
666
+ " <td>338</td>\n",
667
+ " <td>giraffe</td>\n",
668
+ " <td>animal</td>\n",
669
+ " <td>2</td>\n",
670
+ " </tr>\n",
671
+ " <tr>\n",
672
+ " <th>292</th>\n",
673
+ " <td>339</td>\n",
674
+ " <td>toile de jouy</td>\n",
675
+ " <td>textile pattern</td>\n",
676
+ " <td>1</td>\n",
677
+ " </tr>\n",
678
+ " <tr>\n",
679
+ " <th>293</th>\n",
680
+ " <td>340</td>\n",
681
+ " <td>plant</td>\n",
682
+ " <td>textile pattern</td>\n",
683
+ " <td>1</td>\n",
684
+ " </tr>\n",
685
+ " </tbody>\n",
686
+ "</table>\n",
687
+ "<p>294 rows × 4 columns</p>\n",
688
+ "</div>"
689
+ ],
690
+ "text/plain": [
691
+ " id name supercategory level\n",
692
+ "0 0 classic (t-shirt) nickname 1\n",
693
+ "1 1 polo (shirt) nickname 1\n",
694
+ "2 2 undershirt nickname 1\n",
695
+ "3 3 henley (shirt) nickname 1\n",
696
+ "4 4 ringer (t-shirt) nickname 1\n",
697
+ ".. ... ... ... ...\n",
698
+ "289 336 peacock animal 2\n",
699
+ "290 337 zebra animal 2\n",
700
+ "291 338 giraffe animal 2\n",
701
+ "292 339 toile de jouy textile pattern 1\n",
702
+ "293 340 plant textile pattern 1\n",
703
+ "\n",
704
+ "[294 rows x 4 columns]"
705
+ ]
706
+ },
707
+ "execution_count": 56,
708
+ "metadata": {},
709
+ "output_type": "execute_result"
710
+ }
711
+ ],
712
+ "source": [
713
+ "attributes_df = pd.DataFrame(label_descriptions[\"attributes\"])\n",
714
+ "attributes_df\n"
715
+ ]
716
+ },
717
+ {
718
+ "cell_type": "code",
719
+ "execution_count": 57,
720
+ "id": "b178ce00",
721
+ "metadata": {},
722
+ "outputs": [
723
+ {
724
+ "name": "stdout",
725
+ "output_type": "stream",
726
+ "text": [
727
+ "Found 0 potentially SUGGESTIVE categories\n",
728
+ "Found 4 potentially SUGGESTIVE attributes\n",
729
+ "\n",
730
+ "============================================================\n",
731
+ "POTENTIALLY SUGGESTIVE CATEGORIES:\n",
732
+ "============================================================\n",
733
+ "Empty DataFrame\n",
734
+ "Columns: [id, name, supercategory]\n",
735
+ "Index: []\n",
736
+ "\n",
737
+ "============================================================\n",
738
+ "POTENTIALLY SUGGESTIVE ATTRIBUTES:\n",
739
+ "============================================================\n",
740
+ " id name supercategory\n",
741
+ " 51 booty (shorts) nickname\n",
742
+ "106 bodycon (dress) nickname\n",
743
+ "148 micro (length) length\n",
744
+ "192 plunging (neckline) neckline type\n"
745
+ ]
746
+ }
747
+ ],
748
+ "source": [
749
+ "# ULTRA-RESTRICTIVE criteria for UNCERTAIN SUGGESTIVE content\n",
750
+ "# Only items that are clearly and unambiguously SUGGESTIVE/revealing\n",
751
+ "# Removed: crop tops, halter tops, tube tops, mini length, tight fit, etc. - too many false positives\n",
752
+ "\n",
753
+ "# Only the most obviously SUGGESTIVE items\n",
754
+ "revealing_keywords = {\n",
755
+ " 'categories': [\n",
756
+ " # Only inherently revealing categories - removed most as they had false positives\n",
757
+ " # 'booty', # removed - checking attribute instead\n",
758
+ " # 'bodycon', # removed - checking attribute instead\n",
759
+ " ],\n",
760
+ " 'attributes': [\n",
761
+ " # ONLY the most clearly SUGGESTIVE items\n",
762
+ " 'booty (shorts)', # very specific and clearly SUGGESTIVE\n",
763
+ " 'bodycon (dress)', # form-fitting, often revealing\n",
764
+ " # Removed: crop (top), halter (top), tube (top), camisole, slip (dress) - too many false positives\n",
765
+ " ]\n",
766
+ "}\n",
767
+ "\n",
768
+ "# Only the most revealing patterns\n",
769
+ "revealing_patterns = {\n",
770
+ " 'length': [\n",
771
+ " # Removed: mini (length) - too broad, many modest mini skirts\n",
772
+ " 'micro (length)', # only very short - but still might have false positives\n",
773
+ " ],\n",
774
+ " 'neckline type': [\n",
775
+ " 'plunging (neckline)', # only the most revealing neckline\n",
776
+ " # Removed: off-the-shoulder, one shoulder - can be modest\n",
777
+ " ],\n",
778
+ " 'silhouette': [\n",
779
+ " # Removed: tight (fit) - way too broad, many normal clothes are tight\n",
780
+ " ],\n",
781
+ " 'nickname': [\n",
782
+ " # Only the most clearly SUGGESTIVE\n",
783
+ " 'booty (shorts)',\n",
784
+ " 'bodycon (dress)',\n",
785
+ " ]\n",
786
+ "}\n",
787
+ "\n",
788
+ "def is_potentially_SUGGESTIVE(name: str, supercategory: str = None) -> bool:\n",
789
+ " \"\"\"Check if a category or attribute name suggests potentially SUGGESTIVE content.\n",
790
+ " ULTRA-RESTRICTIVE: Only matches clearly SUGGESTIVE items to avoid false positives.\"\"\"\n",
791
+ " name_lower = name.lower()\n",
792
+ " \n",
793
+ " # Special case: check for \"booty\" in any context (shorts) - very specific\n",
794
+ " if 'booty' in name_lower:\n",
795
+ " return True\n",
796
+ " \n",
797
+ " # Check for revealing patterns by supercategory - very restrictive\n",
798
+ " if supercategory:\n",
799
+ " if supercategory == 'length':\n",
800
+ " # Only micro length (very short) - removed mini as too broad\n",
801
+ " if 'micro (length)' in name_lower:\n",
802
+ " return True\n",
803
+ " elif supercategory == 'neckline type':\n",
804
+ " # Only plunging neckline - most revealing\n",
805
+ " if 'plunging (neckline)' in name_lower:\n",
806
+ " return True\n",
807
+ " elif supercategory == 'nickname':\n",
808
+ " # Only the most clearly SUGGESTIVE styles\n",
809
+ " for pattern in revealing_patterns['nickname']:\n",
810
+ " if pattern.lower() in name_lower:\n",
811
+ " return True\n",
812
+ " \n",
813
+ " # Check categories for inherently revealing items\n",
814
+ " for keyword in revealing_keywords['categories']:\n",
815
+ " if keyword.lower() in name_lower:\n",
816
+ " return True\n",
817
+ " \n",
818
+ " # Check attributes for inherently revealing items\n",
819
+ " for keyword in revealing_keywords['attributes']:\n",
820
+ " if keyword.lower() in name_lower:\n",
821
+ " return True\n",
822
+ " \n",
823
+ " return False\n",
824
+ "\n",
825
+ "# Filter categories\n",
826
+ "SUGGESTIVE_categories = categories_df[\n",
827
+ " categories_df['name'].apply(lambda x: is_potentially_SUGGESTIVE(x))\n",
828
+ "].copy()\n",
829
+ "\n",
830
+ "# Filter attributes\n",
831
+ "SUGGESTIVE_attributes = attributes_df[\n",
832
+ " attributes_df.apply(lambda row: is_potentially_SUGGESTIVE(row['name'], row['supercategory']), axis=1)\n",
833
+ "].copy()\n",
834
+ "\n",
835
+ "print(f\"Found {len(SUGGESTIVE_categories)} potentially SUGGESTIVE categories\")\n",
836
+ "print(f\"Found {len(SUGGESTIVE_attributes)} potentially SUGGESTIVE attributes\")\n",
837
+ "print(\"\\n\" + \"=\"*60)\n",
838
+ "print(\"POTENTIALLY SUGGESTIVE CATEGORIES:\")\n",
839
+ "print(\"=\"*60)\n",
840
+ "print(SUGGESTIVE_categories[['id', 'name', 'supercategory']].to_string(index=False))\n",
841
+ "print(\"\\n\" + \"=\"*60)\n",
842
+ "print(\"POTENTIALLY SUGGESTIVE ATTRIBUTES:\")\n",
843
+ "print(\"=\"*60)\n",
844
+ "print(SUGGESTIVE_attributes[['id', 'name', 'supercategory']].to_string(index=False))\n"
845
+ ]
846
+ },
847
+ {
848
+ "cell_type": "code",
849
+ "execution_count": 58,
850
+ "id": "7ff15a1c",
851
+ "metadata": {},
852
+ "outputs": [
853
+ {
854
+ "name": "stdout",
855
+ "output_type": "stream",
856
+ "text": [
857
+ "============================================================\n",
858
+ "BREAKDOWN BY SUPERCATEGORY:\n",
859
+ "============================================================\n",
860
+ "\n",
861
+ "Attributes by supercategory:\n",
862
+ "supercategory\n",
863
+ "nickname 2\n",
864
+ "length 1\n",
865
+ "neckline type 1\n",
866
+ "dtype: int64\n",
867
+ "\n",
868
+ "Detailed attribute breakdown:\n",
869
+ "\n",
870
+ "nickname:\n",
871
+ " - booty (shorts) (id: 51)\n",
872
+ " - bodycon (dress) (id: 106)\n",
873
+ "\n",
874
+ "length:\n",
875
+ " - micro (length) (id: 148)\n",
876
+ "\n",
877
+ "neckline type:\n",
878
+ " - plunging (neckline) (id: 192)\n",
879
+ "\n",
880
+ "============================================================\n",
881
+ "SUMMARY DATAFRAME (for export):\n",
882
+ "============================================================\n",
883
+ " type id name supercategory\n",
884
+ "0 attribute 51 booty (shorts) nickname\n",
885
+ "1 attribute 106 bodycon (dress) nickname\n",
886
+ "2 attribute 148 micro (length) length\n",
887
+ "3 attribute 192 plunging (neckline) neckline type\n"
888
+ ]
889
+ }
890
+ ],
891
+ "source": [
892
+ "# Create a detailed breakdown by supercategory\n",
893
+ "print(\"=\"*60)\n",
894
+ "print(\"BREAKDOWN BY SUPERCATEGORY:\")\n",
895
+ "print(\"=\"*60)\n",
896
+ "\n",
897
+ "if len(SUGGESTIVE_attributes) > 0:\n",
898
+ " print(\"\\nAttributes by supercategory:\")\n",
899
+ " print(SUGGESTIVE_attributes.groupby('supercategory').size().sort_values(ascending=False))\n",
900
+ " \n",
901
+ " print(\"\\nDetailed attribute breakdown:\")\n",
902
+ " for supercat in SUGGESTIVE_attributes['supercategory'].unique():\n",
903
+ " print(f\"\\n{supercat}:\")\n",
904
+ " subset = SUGGESTIVE_attributes[SUGGESTIVE_attributes['supercategory'] == supercat]\n",
905
+ " for _, row in subset.iterrows():\n",
906
+ " print(f\" - {row['name']} (id: {row['id']})\")\n",
907
+ "\n",
908
+ "# Create summary DataFrames for export\n",
909
+ "SUGGESTIVE_summary = {\n",
910
+ " 'type': ['category'] * len(SUGGESTIVE_categories) + ['attribute'] * len(SUGGESTIVE_attributes),\n",
911
+ " 'id': list(SUGGESTIVE_categories['id']) + list(SUGGESTIVE_attributes['id']),\n",
912
+ " 'name': list(SUGGESTIVE_categories['name']) + list(SUGGESTIVE_attributes['name']),\n",
913
+ " 'supercategory': list(SUGGESTIVE_categories['supercategory']) + list(SUGGESTIVE_attributes['supercategory'])\n",
914
+ "}\n",
915
+ "\n",
916
+ "SUGGESTIVE_summary_df = pd.DataFrame(SUGGESTIVE_summary)\n",
917
+ "print(\"\\n\" + \"=\"*60)\n",
918
+ "print(\"SUMMARY DATAFRAME (for export):\")\n",
919
+ "print(\"=\"*60)\n",
920
+ "print(SUGGESTIVE_summary_df)\n",
921
+ "\n",
922
+ "# Optionally save to CSV\n",
923
+ "# SUGGESTIVE_summary_df.to_csv(DATA_PATH / \"SUGGESTIVE_labels.csv\", index=False)\n"
924
+ ]
925
+ },
926
+ {
927
+ "cell_type": "code",
928
+ "execution_count": 59,
929
+ "id": "a46d616c",
930
+ "metadata": {},
931
+ "outputs": [
932
+ {
933
+ "name": "stdout",
934
+ "output_type": "stream",
935
+ "text": [
936
+ "SUGGESTIVE category IDs: set()\n",
937
+ "SUGGESTIVE attribute IDs: {192, 106, 51, 148}\n",
938
+ "\n",
939
+ "Total unique SUGGESTIVE category IDs: 0\n",
940
+ "Total unique SUGGESTIVE attribute IDs: 4\n",
941
+ "\n",
942
+ "============================================================\n",
943
+ "FILTERING RESULTS:\n",
944
+ "============================================================\n",
945
+ "Total images in fashion_df: 333401\n",
946
+ "Images with SUGGESTIVE content: 5218\n",
947
+ "Percentage: 1.57%\n",
948
+ "\n",
949
+ "Breakdown:\n",
950
+ " - Matched by category only: 0\n",
951
+ " - Matched by attribute only: 5218\n",
952
+ " - Matched by both: 0\n",
953
+ "\n",
954
+ "============================================================\n",
955
+ "SAMPLE OF SUGGESTIVE IMAGES (first 10 rows):\n",
956
+ "============================================================\n",
957
+ " ImageId ClassId \\\n",
958
+ "49 000b3a87508b0fa185fbd53ecbe2e4c6 33 \n",
959
+ "147 001a66b16b12f12dc45e2bba40e04683 10 \n",
960
+ "180 00211c06b1fe730097dde122cd4d3f8c 7 \n",
961
+ "304 003ae3da258f7ba7267af5f159dd3502 10 \n",
962
+ "369 0048f6c47de85cc4dc263912bd0ff6f5 33 \n",
963
+ "372 0048f6c47de85cc4dc263912bd0ff6f5 7 \n",
964
+ "445 005380bd939eb68085af3f804d387824 10 \n",
965
+ "456 0054564ae183ad9a1b152eef0bc11e1d 10 \n",
966
+ "465 0055347a114b215f8f469fec9e38c272 10 \n",
967
+ "526 005e9b75edcee7d655c390ea5416641d 33 \n",
968
+ "\n",
969
+ " AttributesIds \n",
970
+ "49 192 \n",
971
+ "147 106,115,127,142,149,229,295,316 \n",
972
+ "180 50,115,136,142,148,230,295,300,317 \n",
973
+ "304 106,127,141,150,295,316,317 \n",
974
+ "369 192 \n",
975
+ "372 50,115,136,142,148,317 \n",
976
+ "445 106,114,127,142,150,229,295,311,317 \n",
977
+ "456 106,115,127,142,149,229,295,316,317 \n",
978
+ "465 106,115,127,142,149,229,295,316,317 \n",
979
+ "526 192 \n"
980
+ ]
981
+ }
982
+ ],
983
+ "source": [
984
+ "# Get IDs of SUGGESTIVE categories and attributes\n",
985
+ "SUGGESTIVE_category_ids = set(SUGGESTIVE_categories['id'].tolist())\n",
986
+ "SUGGESTIVE_attribute_ids = set(SUGGESTIVE_attributes['id'].tolist())\n",
987
+ "\n",
988
+ "print(f\"SUGGESTIVE category IDs: {SUGGESTIVE_category_ids}\")\n",
989
+ "print(f\"SUGGESTIVE attribute IDs: {SUGGESTIVE_attribute_ids}\")\n",
990
+ "print(f\"\\nTotal unique SUGGESTIVE category IDs: {len(SUGGESTIVE_category_ids)}\")\n",
991
+ "print(f\"Total unique SUGGESTIVE attribute IDs: {len(SUGGESTIVE_attribute_ids)}\")\n",
992
+ "\n",
993
+ "# Function to check if AttributesIds string contains any SUGGESTIVE attribute ID\n",
994
+ "def has_SUGGESTIVE_attribute(attributes_str: str) -> bool:\n",
995
+ " \"\"\"Check if the comma-separated attributes string contains any SUGGESTIVE attribute ID.\"\"\"\n",
996
+ " if pd.isna(attributes_str) or attributes_str == '':\n",
997
+ " return False\n",
998
+ " # Parse comma-separated string and convert to integers\n",
999
+ " try:\n",
1000
+ " attr_ids = [int(x.strip()) for x in str(attributes_str).split(',')]\n",
1001
+ " return bool(SUGGESTIVE_attribute_ids.intersection(set(attr_ids)))\n",
1002
+ " except (ValueError, AttributeError):\n",
1003
+ " return False\n",
1004
+ "\n",
1005
+ "# Filter fashion_df for SUGGESTIVE images\n",
1006
+ "# An image is SUGGESTIVE if:\n",
1007
+ "# 1. Its ClassId matches a SUGGESTIVE category, OR\n",
1008
+ "# 2. Its AttributesIds contains any SUGGESTIVE attribute ID\n",
1009
+ "\n",
1010
+ "SUGGESTIVE_mask = (\n",
1011
+ " fashion_df['ClassId'].isin(SUGGESTIVE_category_ids) |\n",
1012
+ " fashion_df['AttributesIds'].apply(has_SUGGESTIVE_attribute)\n",
1013
+ ")\n",
1014
+ "\n",
1015
+ "SUGGESTIVE_fashion_df = fashion_df[SUGGESTIVE_mask].copy()\n",
1016
+ "\n",
1017
+ "print(\"\\n\" + \"=\"*60)\n",
1018
+ "print(\"FILTERING RESULTS:\")\n",
1019
+ "print(\"=\"*60)\n",
1020
+ "print(f\"Total images in fashion_df: {len(fashion_df)}\")\n",
1021
+ "print(f\"Images with SUGGESTIVE content: {len(SUGGESTIVE_fashion_df)}\")\n",
1022
+ "print(f\"Percentage: {len(SUGGESTIVE_fashion_df) / len(fashion_df) * 100:.2f}%\")\n",
1023
+ "\n",
1024
+ "# Show breakdown by type of match\n",
1025
+ "category_matches = fashion_df['ClassId'].isin(SUGGESTIVE_category_ids).sum()\n",
1026
+ "attribute_matches = fashion_df['AttributesIds'].apply(has_SUGGESTIVE_attribute).sum()\n",
1027
+ "both_matches = ((fashion_df['ClassId'].isin(SUGGESTIVE_category_ids)) & \n",
1028
+ " (fashion_df['AttributesIds'].apply(has_SUGGESTIVE_attribute))).sum()\n",
1029
+ "\n",
1030
+ "print(f\"\\nBreakdown:\")\n",
1031
+ "print(f\" - Matched by category only: {category_matches - both_matches}\")\n",
1032
+ "print(f\" - Matched by attribute only: {attribute_matches - both_matches}\")\n",
1033
+ "print(f\" - Matched by both: {both_matches}\")\n",
1034
+ "\n",
1035
+ "# Show sample of SUGGESTIVE images\n",
1036
+ "print(\"\\n\" + \"=\"*60)\n",
1037
+ "print(\"SAMPLE OF SUGGESTIVE IMAGES (first 10 rows):\")\n",
1038
+ "print(\"=\"*60)\n",
1039
+ "print(SUGGESTIVE_fashion_df[['ImageId', 'ClassId', 'AttributesIds']].head(10))\n"
1040
+ ]
1041
+ },
1042
+ {
1043
+ "cell_type": "code",
1044
+ "execution_count": 60,
1045
+ "id": "0e1b67fa",
1046
+ "metadata": {},
1047
+ "outputs": [
1048
+ {
1049
+ "name": "stdout",
1050
+ "output_type": "stream",
1051
+ "text": [
1052
+ "============================================================\n",
1053
+ "DIAGNOSTIC: BREAKDOWN OF MATCHES\n",
1054
+ "============================================================\n",
1055
+ "\n",
1056
+ "1. Matches by Category (ClassId):\n",
1057
+ " No category matches\n",
1058
+ "\n",
1059
+ "2. Matches by Attribute (AttributesIds):\n",
1060
+ " - micro (length) (id: 148): 3190 matches\n",
1061
+ " - bodycon (dress) (id: 106): 1144 matches\n",
1062
+ " - plunging (neckline) (id: 192): 966 matches\n",
1063
+ " - booty (shorts) (id: 51): 20 matches\n",
1064
+ "\n",
1065
+ "3. Sample rows with their matched attributes/categories:\n",
1066
+ " (First 5 rows showing ImageId, ClassId, and matched attributes)\n",
1067
+ "\n",
1068
+ " ImageId: 000b3a87508b0fa185fbd53ecbe2e4c6\n",
1069
+ " ClassId: 33 -> neckline\n",
1070
+ " Matched Attributes: ['plunging (neckline)']\n",
1071
+ "\n",
1072
+ " ImageId: 001a66b16b12f12dc45e2bba40e04683\n",
1073
+ " ClassId: 10 -> dress\n",
1074
+ " Matched Attributes: ['bodycon (dress)']\n",
1075
+ "\n",
1076
+ " ImageId: 00211c06b1fe730097dde122cd4d3f8c\n",
1077
+ " ClassId: 7 -> shorts\n",
1078
+ " Matched Attributes: ['micro (length)']\n",
1079
+ "\n",
1080
+ " ImageId: 003ae3da258f7ba7267af5f159dd3502\n",
1081
+ " ClassId: 10 -> dress\n",
1082
+ " Matched Attributes: ['bodycon (dress)']\n",
1083
+ "\n",
1084
+ " ImageId: 0048f6c47de85cc4dc263912bd0ff6f5\n",
1085
+ " ClassId: 33 -> neckline\n",
1086
+ " Matched Attributes: ['plunging (neckline)']\n"
1087
+ ]
1088
+ }
1089
+ ],
1090
+ "source": [
1091
+ "# DIAGNOSTIC: Show what's actually being matched\n",
1092
+ "# This helps identify which attributes/categories are causing matches\n",
1093
+ "\n",
1094
+ "print(\"=\"*60)\n",
1095
+ "print(\"DIAGNOSTIC: BREAKDOWN OF MATCHES\")\n",
1096
+ "print(\"=\"*60)\n",
1097
+ "\n",
1098
+ "# Create a mapping of attribute IDs to names\n",
1099
+ "attr_id_to_name = dict(zip(attributes_df['id'], attributes_df['name']))\n",
1100
+ "cat_id_to_name = dict(zip(categories_df['id'], categories_df['name']))\n",
1101
+ "\n",
1102
+ "# Analyze what's matching in the SUGGESTIVE_fashion_df\n",
1103
+ "print(\"\\n1. Matches by Category (ClassId):\")\n",
1104
+ "category_matches = SUGGESTIVE_fashion_df[SUGGESTIVE_fashion_df['ClassId'].isin(SUGGESTIVE_category_ids)]\n",
1105
+ "if len(category_matches) > 0:\n",
1106
+ " cat_counts = category_matches['ClassId'].value_counts()\n",
1107
+ " for cat_id, count in cat_counts.items():\n",
1108
+ " cat_name = cat_id_to_name.get(cat_id, f\"Unknown (id: {cat_id})\")\n",
1109
+ " print(f\" - {cat_name} (id: {cat_id}): {count} matches\")\n",
1110
+ "else:\n",
1111
+ " print(\" No category matches\")\n",
1112
+ "\n",
1113
+ "print(\"\\n2. Matches by Attribute (AttributesIds):\")\n",
1114
+ "# Find which attributes are matching\n",
1115
+ "matching_attributes = {}\n",
1116
+ "for idx, row in SUGGESTIVE_fashion_df.iterrows():\n",
1117
+ " if pd.notna(row['AttributesIds']) and row['AttributesIds'] != '':\n",
1118
+ " try:\n",
1119
+ " attr_ids = [int(x.strip()) for x in str(row['AttributesIds']).split(',')]\n",
1120
+ " matching_attr_ids = SUGGESTIVE_attribute_ids.intersection(set(attr_ids))\n",
1121
+ " for attr_id in matching_attr_ids:\n",
1122
+ " matching_attributes[attr_id] = matching_attributes.get(attr_id, 0) + 1\n",
1123
+ " except:\n",
1124
+ " pass\n",
1125
+ "\n",
1126
+ "if matching_attributes:\n",
1127
+ " for attr_id, count in sorted(matching_attributes.items(), key=lambda x: x[1], reverse=True):\n",
1128
+ " attr_name = attr_id_to_name.get(attr_id, f\"Unknown (id: {attr_id})\")\n",
1129
+ " print(f\" - {attr_name} (id: {attr_id}): {count} matches\")\n",
1130
+ "else:\n",
1131
+ " print(\" No attribute matches\")\n",
1132
+ "\n",
1133
+ "print(\"\\n3. Sample rows with their matched attributes/categories:\")\n",
1134
+ "print(\" (First 5 rows showing ImageId, ClassId, and matched attributes)\")\n",
1135
+ "for idx, row in SUGGESTIVE_fashion_df.head(5).iterrows():\n",
1136
+ " print(f\"\\n ImageId: {row['ImageId']}\")\n",
1137
+ " print(f\" ClassId: {row['ClassId']} -> {cat_id_to_name.get(row['ClassId'], 'Unknown')}\")\n",
1138
+ " if pd.notna(row['AttributesIds']) and row['AttributesIds'] != '':\n",
1139
+ " try:\n",
1140
+ " attr_ids = [int(x.strip()) for x in str(row['AttributesIds']).split(',')]\n",
1141
+ " matching_attr_ids = SUGGESTIVE_attribute_ids.intersection(set(attr_ids))\n",
1142
+ " if matching_attr_ids:\n",
1143
+ " print(f\" Matched Attributes: {[attr_id_to_name.get(aid, f'id:{aid}') for aid in matching_attr_ids]}\")\n",
1144
+ " except:\n",
1145
+ " pass\n"
1146
+ ]
1147
+ },
1148
+ {
1149
+ "cell_type": "code",
1150
+ "execution_count": 61,
1151
+ "id": "aaaf424a",
1152
+ "metadata": {},
1153
+ "outputs": [
1154
+ {
1155
+ "name": "stdout",
1156
+ "output_type": "stream",
1157
+ "text": [
1158
+ "============================================================\n",
1159
+ "UNIQUE IMAGE ANALYSIS:\n",
1160
+ "============================================================\n",
1161
+ "Total unique images in dataset: 45623\n",
1162
+ "Unique images with SUGGESTIVE content: 5079\n",
1163
+ "Percentage of unique images: 11.13%\n",
1164
+ "\n",
1165
+ "Average annotations per SUGGESTIVE image: 1.03\n",
1166
+ "Max annotations for a single image: 4\n",
1167
+ "Min annotations for a single image: 1\n",
1168
+ "\n",
1169
+ "============================================================\n",
1170
+ "DISTRIBUTION OF SUGGESTIVE CATEGORIES IN FILTERED DATA:\n",
1171
+ "============================================================\n",
1172
+ "ClassId\n",
1173
+ "10 1502\n",
1174
+ "33 965\n",
1175
+ "7 857\n",
1176
+ "4 684\n",
1177
+ "1 322\n",
1178
+ "0 317\n",
1179
+ "9 215\n",
1180
+ "8 123\n",
1181
+ "3 83\n",
1182
+ "2 79\n",
1183
+ "11 51\n",
1184
+ "5 11\n",
1185
+ "12 8\n",
1186
+ "37 1\n",
1187
+ "Name: count, dtype: int64\n",
1188
+ "\n",
1189
+ "Top SUGGESTIVE categories by count:\n",
1190
+ " - dress (id: 10): 1502 annotations\n",
1191
+ " - neckline (id: 33): 965 annotations\n",
1192
+ " - shorts (id: 7): 857 annotations\n",
1193
+ " - jacket (id: 4): 684 annotations\n",
1194
+ " - top, t-shirt, sweatshirt (id: 1): 322 annotations\n",
1195
+ " - shirt, blouse (id: 0): 317 annotations\n",
1196
+ " - coat (id: 9): 215 annotations\n",
1197
+ " - skirt (id: 8): 123 annotations\n",
1198
+ " - cardigan (id: 3): 83 annotations\n",
1199
+ " - sweater (id: 2): 79 annotations\n"
1200
+ ]
1201
+ }
1202
+ ],
1203
+ "source": [
1204
+ "# Get unique image IDs (since same image can have multiple annotations)\n",
1205
+ "unique_SUGGESTIVE_image_ids = SUGGESTIVE_fashion_df['ImageId'].unique()\n",
1206
+ "unique_total_image_ids = fashion_df['ImageId'].unique()\n",
1207
+ "\n",
1208
+ "print(\"=\"*60)\n",
1209
+ "print(\"UNIQUE IMAGE ANALYSIS:\")\n",
1210
+ "print(\"=\"*60)\n",
1211
+ "print(f\"Total unique images in dataset: {len(unique_total_image_ids)}\")\n",
1212
+ "print(f\"Unique images with SUGGESTIVE content: {len(unique_SUGGESTIVE_image_ids)}\")\n",
1213
+ "print(f\"Percentage of unique images: {len(unique_SUGGESTIVE_image_ids) / len(unique_total_image_ids) * 100:.2f}%\")\n",
1214
+ "\n",
1215
+ "# Count how many annotations per SUGGESTIVE image\n",
1216
+ "annotations_per_image = SUGGESTIVE_fashion_df.groupby('ImageId').size().sort_values(ascending=False)\n",
1217
+ "print(f\"\\nAverage annotations per SUGGESTIVE image: {annotations_per_image.mean():.2f}\")\n",
1218
+ "print(f\"Max annotations for a single image: {annotations_per_image.max()}\")\n",
1219
+ "print(f\"Min annotations for a single image: {annotations_per_image.min()}\")\n",
1220
+ "\n",
1221
+ "# Show distribution of SUGGESTIVE categories in the filtered data\n",
1222
+ "print(\"\\n\" + \"=\"*60)\n",
1223
+ "print(\"DISTRIBUTION OF SUGGESTIVE CATEGORIES IN FILTERED DATA:\")\n",
1224
+ "print(\"=\"*60)\n",
1225
+ "category_counts = SUGGESTIVE_fashion_df['ClassId'].value_counts()\n",
1226
+ "print(category_counts)\n",
1227
+ "\n",
1228
+ "# Map category IDs to names for better readability\n",
1229
+ "category_id_to_name = dict(zip(categories_df['id'], categories_df['name']))\n",
1230
+ "print(\"\\nTop SUGGESTIVE categories by count:\")\n",
1231
+ "for cat_id, count in category_counts.head(10).items():\n",
1232
+ " cat_name = category_id_to_name.get(cat_id, f\"Unknown (id: {cat_id})\")\n",
1233
+ " print(f\" - {cat_name} (id: {cat_id}): {count} annotations\")\n",
1234
+ "\n",
1235
+ "# Save the filtered DataFrame\n",
1236
+ "# SUGGESTIVE_fashion_df.to_csv(DATA_PATH / \"SUGGESTIVE_train.csv\", index=False)\n",
1237
+ "# pd.Series(unique_SUGGESTIVE_image_ids).to_csv(DATA_PATH / \"SUGGESTIVE_image_ids.csv\", index=False, header=['ImageId'])\n"
1238
+ ]
1239
+ },
1240
+ {
1241
+ "cell_type": "code",
1242
+ "execution_count": 62,
1243
+ "id": "a4736cf0",
1244
+ "metadata": {},
1245
+ "outputs": [
1246
+ {
1247
+ "name": "stdout",
1248
+ "output_type": "stream",
1249
+ "text": [
1250
+ "============================================================\n",
1251
+ "CREATING NEW DATASET\n",
1252
+ "============================================================\n",
1253
+ "Total unique SUGGESTIVE image IDs: 5079\n",
1254
+ "\n",
1255
+ "Created folder: /Users/youniss/Documents/GitHub/haram-police/data/new_dataset\n",
1256
+ "\n",
1257
+ "Copying images from /Users/youniss/Documents/GitHub/haram-police/data/train and /Users/youniss/Documents/GitHub/haram-police/data/test...\n",
1258
+ "\n",
1259
+ "✓ Successfully copied: 5079 images\n",
1260
+ "\n",
1261
+ "✓ Saved DataFrame to: /Users/youniss/Documents/GitHub/haram-police/data/SUGGESTIVE_fashion.csv\n",
1262
+ " Total rows: 5218\n",
1263
+ "\n",
1264
+ "============================================================\n",
1265
+ "SUMMARY:\n",
1266
+ "============================================================\n",
1267
+ " - Images folder: /Users/youniss/Documents/GitHub/haram-police/data/new_dataset\n",
1268
+ " - Images copied: 5079\n",
1269
+ " - CSV file: /Users/youniss/Documents/GitHub/haram-police/data/SUGGESTIVE_fashion.csv\n",
1270
+ " - CSV rows: 5218\n",
1271
+ " - Unique images: 5079\n"
1272
+ ]
1273
+ }
1274
+ ],
1275
+ "source": [
1276
+ "# Create new_dataset folder and copy all SUGGESTIVE images from train and test\n",
1277
+ "import shutil\n",
1278
+ "\n",
1279
+ "# Get unique image IDs from SUGGESTIVE_fashion_df\n",
1280
+ "unique_SUGGESTIVE_image_ids = set(SUGGESTIVE_fashion_df['ImageId'].unique())\n",
1281
+ "\n",
1282
+ "print(\"=\"*60)\n",
1283
+ "print(\"CREATING NEW DATASET\")\n",
1284
+ "print(\"=\"*60)\n",
1285
+ "print(f\"Total unique SUGGESTIVE image IDs: {len(unique_SUGGESTIVE_image_ids)}\")\n",
1286
+ "\n",
1287
+ "# Create new_dataset folder\n",
1288
+ "NEW_DATASET_PATH = DATA_PATH / \"new_dataset\"\n",
1289
+ "NEW_DATASET_PATH.mkdir(exist_ok=True)\n",
1290
+ "print(f\"\\nCreated folder: {NEW_DATASET_PATH}\")\n",
1291
+ "\n",
1292
+ "# Paths to source folders\n",
1293
+ "TRAIN_IMAGE_PATH = DATA_PATH / \"train\"\n",
1294
+ "TEST_IMAGE_PATH = DATA_PATH / \"test\"\n",
1295
+ "\n",
1296
+ "# Copy images from train and test folders\n",
1297
+ "copied_count = 0\n",
1298
+ "not_found_count = 0\n",
1299
+ "not_found_ids = []\n",
1300
+ "\n",
1301
+ "print(f\"\\nCopying images from {TRAIN_IMAGE_PATH} and {TEST_IMAGE_PATH}...\")\n",
1302
+ "\n",
1303
+ "for image_id in unique_SUGGESTIVE_image_ids:\n",
1304
+ " image_filename = f\"{image_id}.jpg\"\n",
1305
+ " source_path = None\n",
1306
+ " \n",
1307
+ " # Try train folder first\n",
1308
+ " train_path = TRAIN_IMAGE_PATH / image_filename\n",
1309
+ " if train_path.exists():\n",
1310
+ " source_path = train_path\n",
1311
+ " else:\n",
1312
+ " # Try test folder\n",
1313
+ " test_path = TEST_IMAGE_PATH / image_filename\n",
1314
+ " if test_path.exists():\n",
1315
+ " source_path = test_path\n",
1316
+ " \n",
1317
+ " if source_path:\n",
1318
+ " dest_path = NEW_DATASET_PATH / image_filename\n",
1319
+ " shutil.copy2(source_path, dest_path)\n",
1320
+ " copied_count += 1\n",
1321
+ " else:\n",
1322
+ " not_found_count += 1\n",
1323
+ " not_found_ids.append(image_id)\n",
1324
+ "\n",
1325
+ "print(f\"\\n✓ Successfully copied: {copied_count} images\")\n",
1326
+ "if not_found_count > 0:\n",
1327
+ " print(f\"⚠ Not found: {not_found_count} images\")\n",
1328
+ " print(f\" First 10 missing IDs: {not_found_ids[:10]}\")\n",
1329
+ "\n",
1330
+ "# Save the SUGGESTIVE_fashion_df to CSV\n",
1331
+ "csv_path = DATA_PATH / \"SUGGESTIVE_fashion.csv\"\n",
1332
+ "SUGGESTIVE_fashion_df.to_csv(csv_path, index=False)\n",
1333
+ "print(f\"\\n✓ Saved DataFrame to: {csv_path}\")\n",
1334
+ "print(f\" Total rows: {len(SUGGESTIVE_fashion_df)}\")\n",
1335
+ "\n",
1336
+ "print(\"\\n\" + \"=\"*60)\n",
1337
+ "print(\"SUMMARY:\")\n",
1338
+ "print(\"=\"*60)\n",
1339
+ "print(f\" - Images folder: {NEW_DATASET_PATH}\")\n",
1340
+ "print(f\" - Images copied: {copied_count}\")\n",
1341
+ "print(f\" - CSV file: {csv_path}\")\n",
1342
+ "print(f\" - CSV rows: {len(SUGGESTIVE_fashion_df)}\")\n",
1343
+ "print(f\" - Unique images: {len(unique_SUGGESTIVE_image_ids)}\")\n"
1344
+ ]
1345
+ },
1346
+ {
1347
+ "cell_type": "code",
1348
+ "execution_count": 63,
1349
+ "id": "a4bdc53c",
1350
+ "metadata": {},
1351
+ "outputs": [
1352
+ {
1353
+ "data": {
1354
+ "text/html": [
1355
+ "<div>\n",
1356
+ "<style scoped>\n",
1357
+ " .dataframe tbody tr th:only-of-type {\n",
1358
+ " vertical-align: middle;\n",
1359
+ " }\n",
1360
+ "\n",
1361
+ " .dataframe tbody tr th {\n",
1362
+ " vertical-align: top;\n",
1363
+ " }\n",
1364
+ "\n",
1365
+ " .dataframe thead th {\n",
1366
+ " text-align: right;\n",
1367
+ " }\n",
1368
+ "</style>\n",
1369
+ "<table border=\"1\" class=\"dataframe\">\n",
1370
+ " <thead>\n",
1371
+ " <tr style=\"text-align: right;\">\n",
1372
+ " <th></th>\n",
1373
+ " <th>ImageId</th>\n",
1374
+ " <th>EncodedPixels</th>\n",
1375
+ " <th>Height</th>\n",
1376
+ " <th>Width</th>\n",
1377
+ " <th>ClassId</th>\n",
1378
+ " <th>AttributesIds</th>\n",
1379
+ " </tr>\n",
1380
+ " </thead>\n",
1381
+ " <tbody>\n",
1382
+ " <tr>\n",
1383
+ " <th>49</th>\n",
1384
+ " <td>000b3a87508b0fa185fbd53ecbe2e4c6</td>\n",
1385
+ " <td>457283 2 458562 6 459841 9 461120 13 462400 15...</td>\n",
1386
+ " <td>1280</td>\n",
1387
+ " <td>852</td>\n",
1388
+ " <td>33</td>\n",
1389
+ " <td>192</td>\n",
1390
+ " </tr>\n",
1391
+ " <tr>\n",
1392
+ " <th>147</th>\n",
1393
+ " <td>001a66b16b12f12dc45e2bba40e04683</td>\n",
1394
+ " <td>64049 3 64548 10 65048 17 65548 23 65754 36 66...</td>\n",
1395
+ " <td>500</td>\n",
1396
+ " <td>375</td>\n",
1397
+ " <td>10</td>\n",
1398
+ " <td>106,115,127,142,149,229,295,316</td>\n",
1399
+ " </tr>\n",
1400
+ " <tr>\n",
1401
+ " <th>180</th>\n",
1402
+ " <td>00211c06b1fe730097dde122cd4d3f8c</td>\n",
1403
+ " <td>296470 1 297469 3 298468 5 299467 8 300466 10 ...</td>\n",
1404
+ " <td>1000</td>\n",
1405
+ " <td>665</td>\n",
1406
+ " <td>7</td>\n",
1407
+ " <td>50,115,136,142,148,230,295,300,317</td>\n",
1408
+ " </tr>\n",
1409
+ " <tr>\n",
1410
+ " <th>304</th>\n",
1411
+ " <td>003ae3da258f7ba7267af5f159dd3502</td>\n",
1412
+ " <td>129565 3 130583 9 131602 14 132621 19 133641 2...</td>\n",
1413
+ " <td>1024</td>\n",
1414
+ " <td>683</td>\n",
1415
+ " <td>10</td>\n",
1416
+ " <td>106,127,141,150,295,316,317</td>\n",
1417
+ " </tr>\n",
1418
+ " <tr>\n",
1419
+ " <th>369</th>\n",
1420
+ " <td>0048f6c47de85cc4dc263912bd0ff6f5</td>\n",
1421
+ " <td>4777361 1 4781320 3 4785279 5 4789239 7 479319...</td>\n",
1422
+ " <td>3960</td>\n",
1423
+ " <td>2640</td>\n",
1424
+ " <td>33</td>\n",
1425
+ " <td>192</td>\n",
1426
+ " </tr>\n",
1427
+ " <tr>\n",
1428
+ " <th>372</th>\n",
1429
+ " <td>0048f6c47de85cc4dc263912bd0ff6f5</td>\n",
1430
+ " <td>3982550 2 3986509 8 3990469 13 3994429 18 3998...</td>\n",
1431
+ " <td>3960</td>\n",
1432
+ " <td>2640</td>\n",
1433
+ " <td>7</td>\n",
1434
+ " <td>50,115,136,142,148,317</td>\n",
1435
+ " </tr>\n",
1436
+ " <tr>\n",
1437
+ " <th>445</th>\n",
1438
+ " <td>005380bd939eb68085af3f804d387824</td>\n",
1439
+ " <td>2317673 15 2320644 45 2323624 67 2326613 79 23...</td>\n",
1440
+ " <td>3000</td>\n",
1441
+ " <td>2001</td>\n",
1442
+ " <td>10</td>\n",
1443
+ " <td>106,114,127,142,150,229,295,311,317</td>\n",
1444
+ " </tr>\n",
1445
+ " <tr>\n",
1446
+ " <th>456</th>\n",
1447
+ " <td>0054564ae183ad9a1b152eef0bc11e1d</td>\n",
1448
+ " <td>195071 2 196093 5 197115 8 198134 13 199151 20...</td>\n",
1449
+ " <td>1024</td>\n",
1450
+ " <td>683</td>\n",
1451
+ " <td>10</td>\n",
1452
+ " <td>106,115,127,142,149,229,295,316,317</td>\n",
1453
+ " </tr>\n",
1454
+ " <tr>\n",
1455
+ " <th>465</th>\n",
1456
+ " <td>0055347a114b215f8f469fec9e38c272</td>\n",
1457
+ " <td>236337 20 237832 26 239327 33 240823 38 242320...</td>\n",
1458
+ " <td>1500</td>\n",
1459
+ " <td>1000</td>\n",
1460
+ " <td>10</td>\n",
1461
+ " <td>106,115,127,142,149,229,295,316,317</td>\n",
1462
+ " </tr>\n",
1463
+ " <tr>\n",
1464
+ " <th>526</th>\n",
1465
+ " <td>005e9b75edcee7d655c390ea5416641d</td>\n",
1466
+ " <td>480863 2 481943 3 483023 4 484102 6 485182 7 4...</td>\n",
1467
+ " <td>1080</td>\n",
1468
+ " <td>1080</td>\n",
1469
+ " <td>33</td>\n",
1470
+ " <td>192</td>\n",
1471
+ " </tr>\n",
1472
+ " <tr>\n",
1473
+ " <th>593</th>\n",
1474
+ " <td>006bb85ca0935680110f4ce67d88b4ee</td>\n",
1475
+ " <td>2461619 6 2463717 17 2465814 24 2467912 23 247...</td>\n",
1476
+ " <td>2096</td>\n",
1477
+ " <td>3000</td>\n",
1478
+ " <td>10</td>\n",
1479
+ " <td>106,115,127,142,149,295,316,317</td>\n",
1480
+ " </tr>\n",
1481
+ " <tr>\n",
1482
+ " <th>802</th>\n",
1483
+ " <td>009447b79fce7da1ee19a54401517cde</td>\n",
1484
+ " <td>23802163 9 23807451 27 23812746 37 23818049 40...</td>\n",
1485
+ " <td>5304</td>\n",
1486
+ " <td>7952</td>\n",
1487
+ " <td>7</td>\n",
1488
+ " <td>50,115,136,142,148,230,295,298,317</td>\n",
1489
+ " </tr>\n",
1490
+ " <tr>\n",
1491
+ " <th>884</th>\n",
1492
+ " <td>00af8f65bb93f4131499dc9807129a24</td>\n",
1493
+ " <td>1313044 41 1315994 123 1318943 207 1321893 289...</td>\n",
1494
+ " <td>3000</td>\n",
1495
+ " <td>2000</td>\n",
1496
+ " <td>4</td>\n",
1497
+ " <td>17,115,135,145,148,225,281,311,317</td>\n",
1498
+ " </tr>\n",
1499
+ " <tr>\n",
1500
+ " <th>1201</th>\n",
1501
+ " <td>00f7d06a8db722b86961d911fb9f1d96</td>\n",
1502
+ " <td>54821 5 55316 16 55811 27 56307 37 56802 48 57...</td>\n",
1503
+ " <td>500</td>\n",
1504
+ " <td>375</td>\n",
1505
+ " <td>10</td>\n",
1506
+ " <td>106,115,127,142,151,229,283,311</td>\n",
1507
+ " </tr>\n",
1508
+ " <tr>\n",
1509
+ " <th>1217</th>\n",
1510
+ " <td>00f843a44365248e179ad2a489734913</td>\n",
1511
+ " <td>1690956 5 1693572 11 1696188 15 1698804 18 170...</td>\n",
1512
+ " <td>2617</td>\n",
1513
+ " <td>1500</td>\n",
1514
+ " <td>33</td>\n",
1515
+ " <td>192</td>\n",
1516
+ " </tr>\n",
1517
+ " <tr>\n",
1518
+ " <th>1260</th>\n",
1519
+ " <td>01098396b79639e29db8de146c2d0064</td>\n",
1520
+ " <td>959078 8 962065 22 965051 38 968037 54 971024 ...</td>\n",
1521
+ " <td>3000</td>\n",
1522
+ " <td>2000</td>\n",
1523
+ " <td>7</td>\n",
1524
+ " <td>50,148,234,295,316,317</td>\n",
1525
+ " </tr>\n",
1526
+ " <tr>\n",
1527
+ " <th>1274</th>\n",
1528
+ " <td>010db49ecc226102e63815fcf5627319</td>\n",
1529
+ " <td>1205717 31 1208132 69 1210571 82 1213011 94 12...</td>\n",
1530
+ " <td>2448</td>\n",
1531
+ " <td>2448</td>\n",
1532
+ " <td>10</td>\n",
1533
+ " <td>112,115,119,145,148,229,295,306,323,325</td>\n",
1534
+ " </tr>\n",
1535
+ " <tr>\n",
1536
+ " <th>1311</th>\n",
1537
+ " <td>0116a12304c7f94686978f86100076f3</td>\n",
1538
+ " <td>32646 31 33110 78 33587 109 34065 136 34542 15...</td>\n",
1539
+ " <td>492</td>\n",
1540
+ " <td>354</td>\n",
1541
+ " <td>10</td>\n",
1542
+ " <td>106,115,127,142,150,229,295,316,317</td>\n",
1543
+ " </tr>\n",
1544
+ " <tr>\n",
1545
+ " <th>1356</th>\n",
1546
+ " <td>011afec5e443599a79261ece1a662043</td>\n",
1547
+ " <td>629287 14 631022 16 632757 18 634492 21 636227...</td>\n",
1548
+ " <td>1737</td>\n",
1549
+ " <td>1157</td>\n",
1550
+ " <td>4</td>\n",
1551
+ " <td>17,148,225,281,311,317</td>\n",
1552
+ " </tr>\n",
1553
+ " <tr>\n",
1554
+ " <th>1371</th>\n",
1555
+ " <td>011c59f7c25d18027f4f9b2b1cffd44a</td>\n",
1556
+ " <td>168345 3 169142 7 169938 12 170735 17 171531 2...</td>\n",
1557
+ " <td>800</td>\n",
1558
+ " <td>800</td>\n",
1559
+ " <td>10</td>\n",
1560
+ " <td>101,115,129,145,148,289,301,317</td>\n",
1561
+ " </tr>\n",
1562
+ " </tbody>\n",
1563
+ "</table>\n",
1564
+ "</div>"
1565
+ ],
1566
+ "text/plain": [
1567
+ " ImageId \\\n",
1568
+ "49 000b3a87508b0fa185fbd53ecbe2e4c6 \n",
1569
+ "147 001a66b16b12f12dc45e2bba40e04683 \n",
1570
+ "180 00211c06b1fe730097dde122cd4d3f8c \n",
1571
+ "304 003ae3da258f7ba7267af5f159dd3502 \n",
1572
+ "369 0048f6c47de85cc4dc263912bd0ff6f5 \n",
1573
+ "372 0048f6c47de85cc4dc263912bd0ff6f5 \n",
1574
+ "445 005380bd939eb68085af3f804d387824 \n",
1575
+ "456 0054564ae183ad9a1b152eef0bc11e1d \n",
1576
+ "465 0055347a114b215f8f469fec9e38c272 \n",
1577
+ "526 005e9b75edcee7d655c390ea5416641d \n",
1578
+ "593 006bb85ca0935680110f4ce67d88b4ee \n",
1579
+ "802 009447b79fce7da1ee19a54401517cde \n",
1580
+ "884 00af8f65bb93f4131499dc9807129a24 \n",
1581
+ "1201 00f7d06a8db722b86961d911fb9f1d96 \n",
1582
+ "1217 00f843a44365248e179ad2a489734913 \n",
1583
+ "1260 01098396b79639e29db8de146c2d0064 \n",
1584
+ "1274 010db49ecc226102e63815fcf5627319 \n",
1585
+ "1311 0116a12304c7f94686978f86100076f3 \n",
1586
+ "1356 011afec5e443599a79261ece1a662043 \n",
1587
+ "1371 011c59f7c25d18027f4f9b2b1cffd44a \n",
1588
+ "\n",
1589
+ " EncodedPixels Height Width \\\n",
1590
+ "49 457283 2 458562 6 459841 9 461120 13 462400 15... 1280 852 \n",
1591
+ "147 64049 3 64548 10 65048 17 65548 23 65754 36 66... 500 375 \n",
1592
+ "180 296470 1 297469 3 298468 5 299467 8 300466 10 ... 1000 665 \n",
1593
+ "304 129565 3 130583 9 131602 14 132621 19 133641 2... 1024 683 \n",
1594
+ "369 4777361 1 4781320 3 4785279 5 4789239 7 479319... 3960 2640 \n",
1595
+ "372 3982550 2 3986509 8 3990469 13 3994429 18 3998... 3960 2640 \n",
1596
+ "445 2317673 15 2320644 45 2323624 67 2326613 79 23... 3000 2001 \n",
1597
+ "456 195071 2 196093 5 197115 8 198134 13 199151 20... 1024 683 \n",
1598
+ "465 236337 20 237832 26 239327 33 240823 38 242320... 1500 1000 \n",
1599
+ "526 480863 2 481943 3 483023 4 484102 6 485182 7 4... 1080 1080 \n",
1600
+ "593 2461619 6 2463717 17 2465814 24 2467912 23 247... 2096 3000 \n",
1601
+ "802 23802163 9 23807451 27 23812746 37 23818049 40... 5304 7952 \n",
1602
+ "884 1313044 41 1315994 123 1318943 207 1321893 289... 3000 2000 \n",
1603
+ "1201 54821 5 55316 16 55811 27 56307 37 56802 48 57... 500 375 \n",
1604
+ "1217 1690956 5 1693572 11 1696188 15 1698804 18 170... 2617 1500 \n",
1605
+ "1260 959078 8 962065 22 965051 38 968037 54 971024 ... 3000 2000 \n",
1606
+ "1274 1205717 31 1208132 69 1210571 82 1213011 94 12... 2448 2448 \n",
1607
+ "1311 32646 31 33110 78 33587 109 34065 136 34542 15... 492 354 \n",
1608
+ "1356 629287 14 631022 16 632757 18 634492 21 636227... 1737 1157 \n",
1609
+ "1371 168345 3 169142 7 169938 12 170735 17 171531 2... 800 800 \n",
1610
+ "\n",
1611
+ " ClassId AttributesIds \n",
1612
+ "49 33 192 \n",
1613
+ "147 10 106,115,127,142,149,229,295,316 \n",
1614
+ "180 7 50,115,136,142,148,230,295,300,317 \n",
1615
+ "304 10 106,127,141,150,295,316,317 \n",
1616
+ "369 33 192 \n",
1617
+ "372 7 50,115,136,142,148,317 \n",
1618
+ "445 10 106,114,127,142,150,229,295,311,317 \n",
1619
+ "456 10 106,115,127,142,149,229,295,316,317 \n",
1620
+ "465 10 106,115,127,142,149,229,295,316,317 \n",
1621
+ "526 33 192 \n",
1622
+ "593 10 106,115,127,142,149,295,316,317 \n",
1623
+ "802 7 50,115,136,142,148,230,295,298,317 \n",
1624
+ "884 4 17,115,135,145,148,225,281,311,317 \n",
1625
+ "1201 10 106,115,127,142,151,229,283,311 \n",
1626
+ "1217 33 192 \n",
1627
+ "1260 7 50,148,234,295,316,317 \n",
1628
+ "1274 10 112,115,119,145,148,229,295,306,323,325 \n",
1629
+ "1311 10 106,115,127,142,150,229,295,316,317 \n",
1630
+ "1356 4 17,148,225,281,311,317 \n",
1631
+ "1371 10 101,115,129,145,148,289,301,317 "
1632
+ ]
1633
+ },
1634
+ "execution_count": 63,
1635
+ "metadata": {},
1636
+ "output_type": "execute_result"
1637
+ }
1638
+ ],
1639
+ "source": [
1640
+ "SUGGESTIVE_fashion_df.head(20)"
1641
+ ]
1642
+ },
1643
+ {
1644
+ "cell_type": "code",
1645
+ "execution_count": 64,
1646
+ "id": "a9e2133d",
1647
+ "metadata": {},
1648
+ "outputs": [],
1649
+ "source": [
1650
+ "# Show the \"EncodedPixels\" feature of the first SUGGESTIVE_fashion_df \n",
1651
+ "from PIL import Image\n",
1652
+ "\n",
1653
+ "# Get the first image ID from the SUGGESTIVE_fashion_df\n",
1654
+ "first_image_id = SUGGESTIVE_fashion_df.iloc[0]['ImageId']\n",
1655
+ "\n",
1656
+ "# Load the image\n",
1657
+ "image = Image.open((DATA_PATH / \"train\" / f\"{first_image_id}.jpg\"))\n",
1658
+ "image.show()"
1659
+ ]
1660
+ },
1661
+ {
1662
+ "cell_type": "code",
1663
+ "execution_count": null,
1664
+ "id": "2d6351ab",
1665
+ "metadata": {},
1666
+ "outputs": [],
1667
+ "source": []
1668
+ }
1669
+ ],
1670
+ "metadata": {
1671
+ "kernelspec": {
1672
+ "display_name": ".venv",
1673
+ "language": "python",
1674
+ "name": "python3"
1675
+ },
1676
+ "language_info": {
1677
+ "codemirror_mode": {
1678
+ "name": "ipython",
1679
+ "version": 3
1680
+ },
1681
+ "file_extension": ".py",
1682
+ "mimetype": "text/x-python",
1683
+ "name": "python",
1684
+ "nbconvert_exporter": "python",
1685
+ "pygments_lexer": "ipython3",
1686
+ "version": "3.13.5"
1687
+ }
1688
+ },
1689
+ "nbformat": 4,
1690
+ "nbformat_minor": 5
1691
+ }
pyproject.toml ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [project]
2
+ name = "haram-police"
3
+ version = "0.1.0"
4
+ description = "Add your description here"
5
+ readme = "README.md"
6
+ requires-python = ">=3.13"
7
+ dependencies = [
8
+ "datasets>=4.4.2",
9
+ "huggingface-hub>=0.36.0",
10
+ "ipykernel>=7.1.0",
11
+ "joblib>=1.4.2",
12
+ "matplotlib>=3.10.8",
13
+ "pandas>=2.3.3",
14
+ "pillow>=12.0.0",
15
+ "psycopg2>=2.9.11",
16
+ "python-dotenv>=1.2.1",
17
+ "rich>=14.2.0",
18
+ "scikit-learn>=1.8.0",
19
+ "scipy>=1.14.1",
20
+ "seaborn>=0.13.2",
21
+ "shap>=0.46.0",
22
+ "supabase>=2.27.0",
23
+ "torch>=2.9.1",
24
+ "transformers>=4.57.3",
25
+ ]
src/baseline.py ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from dotenv import load_dotenv
2
+ from pathlib import Path
3
+ import os
4
+ import json
5
+ import pandas as pd
6
+ from huggingface_hub import InferenceClient
7
+ from rich import print
8
+ from rich.progress import Progress, SpinnerColumn, TextColumn, BarColumn
9
+
10
+ load_dotenv()
11
+
12
+ DATA_PATH = Path(__file__).parent.parent / "data"
13
+ RESULTS_PATH = DATA_PATH / "results"
14
+ IMAGES_PATH = DATA_PATH / "imgs"
15
+
16
+ with open(DATA_PATH / "annotations.json", "r") as f:
17
+ annotations = json.load(f)
18
+
19
+ print(f"[bold]Loaded {len(annotations)} annotations from Label Studio[/bold]")
20
+
21
+ # Extract annotated images with their labels
22
+ # Files should now be in data/imgs/ with their file_upload names
23
+ annotated_images = []
24
+ for ann in annotations:
25
+ file_upload = ann.get("file_upload")
26
+ if not file_upload:
27
+ continue
28
+
29
+ # Get the annotation choice
30
+ choice = None
31
+ if ann.get("annotations") and len(ann["annotations"]) > 0:
32
+ result = ann["annotations"][0].get("result", [])
33
+ if result and len(result) > 0:
34
+ choices = result[0].get("value", {}).get("choices", [])
35
+ if choices:
36
+ choice = choices[0]
37
+
38
+ # File should be in data/imgs/ with the file_upload name
39
+ file_path = IMAGES_PATH / file_upload
40
+
41
+ annotated_images.append({
42
+ "file_upload": file_upload,
43
+ "file_path": file_path,
44
+ "choice": choice,
45
+ "annotation_id": ann.get("id")
46
+ })
47
+
48
+ # Check how many files actually exist
49
+ existing_files = [img for img in annotated_images if img["file_path"].exists()]
50
+ print(
51
+ f"[bold]Found {len(existing_files)}/{len(annotated_images)} annotated image files[/bold]")
52
+
53
+ # Initialize client
54
+ client = InferenceClient(
55
+ provider="hf-inference",
56
+ api_key=os.environ.get("HF_TOKEN"),
57
+ )
58
+
59
+ if not os.environ.get("HF_TOKEN"):
60
+ raise ValueError(
61
+ "HF_TOKEN environment variable not set. Please set it in .env file.")
62
+
63
+ # Filter to only images that exist
64
+ images_to_process = [
65
+ img for img in annotated_images if img["file_path"].exists()]
66
+
67
+ if not images_to_process:
68
+ print("[red]✗ No annotated image files found![/red]")
69
+ print("[yellow]Please copy files from Label Studio media directory first.[/yellow]")
70
+ print(f"[dim]Expected location: {IMAGES_PATH}[/dim]")
71
+
72
+ predictions = []
73
+ errors = []
74
+
75
+ print(f"[bold]Processing {len(images_to_process)} annotated images...[/bold]")
76
+
77
+ with Progress(
78
+ SpinnerColumn(),
79
+ TextColumn("[progress.description]{task.description}"),
80
+ BarColumn(),
81
+ TextColumn("[progress.percentage]{task.percentage:>3.0f}%"),
82
+ console=None,
83
+ ) as progress:
84
+ task = progress.add_task("Classifying images",
85
+ total=len(images_to_process))
86
+
87
+ for ann_img in images_to_process:
88
+ file_path = ann_img["file_path"]
89
+ file_upload = ann_img["file_upload"]
90
+ choice = ann_img.get("choice")
91
+ annotation_id = ann_img.get("annotation_id")
92
+
93
+ try:
94
+ if not file_path or not file_path.exists():
95
+ errors.append({
96
+ "annotation_id": annotation_id,
97
+ "file_upload": file_upload,
98
+ "error": "File not found"
99
+ })
100
+ progress.update(task, advance=1)
101
+ continue
102
+
103
+ # Classify image
104
+ output = client.image_classification(
105
+ str(file_path),
106
+ model="Falconsai/nsfw_image_detection"
107
+ )
108
+
109
+ # Flatten the output (list of dicts) and add metadata
110
+ result = {
111
+ "annotation_id": annotation_id,
112
+ "file_upload": file_upload,
113
+ "actual_filename": file_path.name,
114
+ "label_studio_choice": choice,
115
+ **{f"label_{i}": pred["label"] for i, pred in enumerate(output)},
116
+ **{f"score_{i}": pred["score"] for i, pred in enumerate(output)}
117
+ }
118
+ predictions.append(result)
119
+
120
+ except Exception as e:
121
+ errors.append({
122
+ "annotation_id": annotation_id,
123
+ "file_upload": file_upload,
124
+ "error": str(e)
125
+ })
126
+ print(f"[red]Error processing {file_upload}: {e}[/red]")
127
+
128
+ finally:
129
+ progress.update(task, advance=1)
130
+
131
+ # Save predictions
132
+ if predictions:
133
+ predictions_df = pd.DataFrame(predictions)
134
+ predictions_df.to_csv(RESULTS_PATH / "baseline.csv", index=False)
135
+ print(
136
+ f"[green]✓ Saved {len(predictions)} predictions to baseline.csv[/green]")
137
+ else:
138
+ print("[red]✗ No predictions generated[/red]")
139
+
140
+ # Save errors if any
141
+ if errors:
142
+ errors_df = pd.DataFrame(errors)
143
+ errors_df.to_csv(DATA_PATH / "falcons_errors.csv", index=False)
144
+ print(
145
+ f"[yellow]⚠ Saved {len(errors)} errors to falcons_errors.csv[/yellow]")
src/dataset.py ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pathlib import Path
2
+ import pandas as pd
3
+ from datasets import Dataset, DatasetDict
4
+ from sklearn.model_selection import train_test_split
5
+ import torch
6
+ from torch.utils.data import Dataset as TorchDataset
7
+ import numpy as np
8
+ from PIL import Image
9
+ from transformers import CLIPProcessor
10
+
11
+
12
+ DATA_PATH = Path(__file__).parent.parent / "data"
13
+ IMAGES_PATH = DATA_PATH / "imgs"
14
+ LABELS_CSV = DATA_PATH / "labels.csv"
15
+
16
+
17
+ def load_golden_dataset() -> pd.DataFrame:
18
+ df = pd.read_csv(LABELS_CSV)
19
+
20
+ # Convert image paths from /data/imgs/... to actual file paths
21
+ df["image"] = df["image"].apply(
22
+ lambda x: str(IMAGES_PATH / Path(x).name)
23
+ )
24
+
25
+ # Verify files exist
26
+ existing = df["image"].apply(lambda x: Path(x).exists())
27
+ missing_count = (~existing).sum()
28
+ if missing_count > 0:
29
+ print(f"Warning: {missing_count} image files not found")
30
+ df = df[existing].copy()
31
+
32
+ # Preprocess labels: combine UNCERTAIN with FAMILY_SAFE (0), SUGGESTIVE (1)
33
+ # 0 = FAMILY_SAFE/UNCERTAIN (closer to 0 means FAMILY_SAFE/UNCERTAIN)
34
+ # 1 = SUGGESTIVE (closer to 1 means SUGGESTIVE)
35
+ df["label"] = df["choice"].apply(
36
+ lambda x: 0 if x in ["FAMILY_SAFE", "UNCERTAIN"] else 1
37
+ )
38
+
39
+ return df
40
+
41
+
42
+ def create_dataset_splits(
43
+ train_size: float = 0.7,
44
+ test_size: float = 0.15,
45
+ val_size: float = 0.15,
46
+ random_state: int = 42
47
+ ) -> DatasetDict:
48
+ # Validate split sizes
49
+ assert abs(train_size + test_size + val_size - 1.0) < 1e-6, \
50
+ "Split sizes must sum to 1.0"
51
+
52
+ # Load data
53
+ df = load_golden_dataset()
54
+
55
+ print(f"Loaded {len(df)} golden self-labelled images")
56
+ print("Original label distribution:")
57
+ print(df["choice"].value_counts())
58
+ print("\nBinary label distribution (after preprocessing):")
59
+ print(df["label"].value_counts())
60
+ print(" (0 = FAMILY_SAFE/UNCERTAIN, 1 = SUGGESTIVE)")
61
+
62
+ # First split: train vs (test + val)
63
+ # Stratify by binary label to maintain distribution
64
+ train_df, temp_df = train_test_split(
65
+ df,
66
+ test_size=(test_size + val_size),
67
+ stratify=df["label"],
68
+ random_state=random_state
69
+ )
70
+
71
+ # Second split: test vs val
72
+ # Adjust test_size for the remaining data
73
+ test_proportion = test_size / (test_size + val_size)
74
+ test_df, val_df = train_test_split(
75
+ temp_df,
76
+ test_size=(1 - test_proportion),
77
+ stratify=temp_df["label"],
78
+ random_state=random_state
79
+ )
80
+
81
+ print("\nSplit sizes:")
82
+ print(f" Train: {len(train_df)} ({len(train_df)/len(df)*100:.1f}%)")
83
+ print(f" Test: {len(test_df)} ({len(test_df)/len(df)*100:.1f}%)")
84
+ print(f" val: {len(val_df)} ({len(val_df)/len(df)*100:.1f}%)")
85
+
86
+ # Convert to HuggingFace Datasets
87
+ train_ds = Dataset.from_pandas(train_df)
88
+ test_ds = Dataset.from_pandas(test_df)
89
+ val_ds = Dataset.from_pandas(val_df)
90
+
91
+ # Create DatasetDict
92
+ dataset_dict = DatasetDict({
93
+ "train": train_ds,
94
+ "test": test_ds,
95
+ "val": val_ds
96
+ })
97
+
98
+ return dataset_dict
99
+
100
+
101
+ def get_dataset(
102
+ train_size: float = 0.7,
103
+ test_size: float = 0.15,
104
+ val_size: float = 0.15,
105
+ random_state: int = 42
106
+ ) -> DatasetDict:
107
+ return create_dataset_splits(
108
+ train_size=train_size,
109
+ test_size=test_size,
110
+ val_size=val_size,
111
+ random_state=random_state
112
+ )
113
+
114
+
115
+ class ImageDataset(TorchDataset):
116
+ """PyTorch Dataset for image classification."""
117
+
118
+ def __init__(self, image_paths: list[str], labels: np.ndarray, processor: CLIPProcessor):
119
+ self.image_paths = image_paths
120
+ self.labels = torch.tensor(labels, dtype=torch.long)
121
+ self.processor = processor
122
+
123
+ def __len__(self) -> int:
124
+ return len(self.image_paths)
125
+
126
+ def __getitem__(self, idx: int) -> tuple[dict, torch.Tensor]:
127
+ # Single item fetching (PyTorch DataLoader handles batching automatically)
128
+ img_path = self.image_paths[idx]
129
+ image = Image.open(img_path).convert("RGB")
130
+
131
+ # Process image with CLIP processor
132
+ inputs = self.processor(images=image, return_tensors="pt")
133
+ # Remove batch dimension from processor output
134
+ pixel_values = inputs["pixel_values"].squeeze(0)
135
+
136
+ label = self.labels[idx]
137
+ return {"pixel_values": pixel_values}, label
src/inference.py ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import json
3
+ from pathlib import Path
4
+ from transformers import CLIPProcessor
5
+ from src.model import DISCO
6
+ from PIL import Image
7
+ from typing import Tuple, Optional
8
+
9
+ MODELS_DIR = Path(__file__).parent.parent / "models"
10
+
11
+
12
+ def load_model(
13
+ device: Optional[str] = None,
14
+ compile_model: bool = False
15
+ ) -> Tuple[DISCO, CLIPProcessor, float, dict]:
16
+ """
17
+ Load trained DISCO model, processor, threshold, and metadata.
18
+
19
+ Args:
20
+ device: Device to load model on (None = auto-detect)
21
+ compile_model: Whether to compile model with torch.compile (not implemented)
22
+
23
+ Returns:
24
+ Tuple of (model, processor, threshold, metadata)
25
+ """
26
+ if device is None:
27
+ device = "mps" if torch.backends.mps.is_available() else (
28
+ "cuda" if torch.cuda.is_available() else "cpu"
29
+ )
30
+
31
+ # Load model
32
+ model = DISCO.from_pretrained(MODELS_DIR)
33
+ model = model.to(device)
34
+ model.eval()
35
+
36
+ # Load processor
37
+ processor = CLIPProcessor.from_pretrained(MODELS_DIR)
38
+
39
+ # Load metadata for threshold and other info
40
+ metadata_path = MODELS_DIR / "model_metadata.json"
41
+ if not metadata_path.exists():
42
+ raise FileNotFoundError(
43
+ f"Model metadata not found at {metadata_path}. "
44
+ "Please run 'python src/train.py' first."
45
+ )
46
+
47
+ with open(metadata_path, "r") as f:
48
+ metadata = json.load(f)
49
+
50
+ threshold = metadata.get("threshold", 0.5)
51
+
52
+ # Store device for easy access
53
+ model._device = device
54
+
55
+ if compile_model:
56
+ # Future: could use torch.compile here if needed
57
+ pass
58
+
59
+ return model, processor, threshold, metadata
60
+
61
+
62
+ # Lazy-loaded default model (loaded on first use, not at import time)
63
+ _default_model = None
64
+ _default_processor = None
65
+ _default_threshold = None
66
+
67
+
68
+ def _get_default_model():
69
+ """Lazy-load default model on first use."""
70
+ global _default_model, _default_processor, _default_threshold
71
+ if _default_model is None:
72
+ _default_model, _default_processor, _default_threshold, _ = load_model()
73
+ return _default_model, _default_processor, _default_threshold
74
+
75
+
76
+ def run_DISCO(
77
+ image_path: str,
78
+ model: Optional[DISCO] = None,
79
+ processor: Optional[CLIPProcessor] = None,
80
+ threshold: Optional[float] = None
81
+ ) -> float:
82
+ """
83
+ Run DISCO inference on a single image.
84
+
85
+ Args:
86
+ image_path: Path to image file
87
+ model: DISCO model (uses default if None)
88
+ processor: CLIPProcessor (uses default if None)
89
+ threshold: Classification threshold (uses model default if None)
90
+
91
+ Returns:
92
+ Probability of SUGGESTIVE class (0-1)
93
+ """
94
+ # Use defaults if not provided
95
+ if model is None or processor is None:
96
+ default_model, default_processor, default_threshold = _get_default_model()
97
+ model = model or default_model
98
+ processor = processor or default_processor
99
+ threshold = threshold or default_threshold
100
+
101
+ # Get device from model
102
+ device = getattr(model, '_device', next(model.parameters()).device)
103
+
104
+ # Load and preprocess image
105
+ image = Image.open(image_path).convert("RGB")
106
+ inputs = processor(images=image, return_tensors="pt")
107
+ inputs = {k: v.to(device) for k, v in inputs.items()}
108
+
109
+ # Run inference
110
+ with torch.no_grad():
111
+ logits = model(**inputs)
112
+ proba = torch.softmax(logits, dim=-1)[0, 1].item()
113
+
114
+ return proba
src/model.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ from transformers import CLIPModel, PreTrainedModel, PretrainedConfig
4
+
5
+
6
+ class DISCOConfig(PretrainedConfig):
7
+ """Configuration for DISCO model."""
8
+ model_type = "clip_nsfw_detector"
9
+
10
+ def __init__(
11
+ self,
12
+ clip_model_name: str = "openai/clip-vit-base-patch32",
13
+ num_classes: int = 2,
14
+ threshold: float = 0.5,
15
+ **kwargs
16
+ ):
17
+ super().__init__(**kwargs)
18
+ self.clip_model_name = clip_model_name
19
+ self.num_classes = num_classes
20
+ self.threshold = threshold
21
+
22
+
23
+ class DISCO(PreTrainedModel):
24
+ """
25
+ DISCO model combining CLIP image encoder and classification head.
26
+ """
27
+ config_class = DISCOConfig
28
+
29
+ def __init__(self, config: DISCOConfig):
30
+ super().__init__(config)
31
+ self.clip_model = CLIPModel.from_pretrained(config.clip_model_name)
32
+ self.clip_model.eval() # Freeze CLIP, only classifier is trainable
33
+
34
+ # Get embedding dimension from CLIP config
35
+ embedding_dim = self.clip_model.config.projection_dim
36
+ # Direct linear classifier layer (equivalent to logistic regression)
37
+ self.classifier = nn.Linear(embedding_dim, config.num_classes)
38
+ self.threshold = config.threshold
39
+
40
+ def forward(self, pixel_values: torch.Tensor, **kwargs) -> torch.Tensor:
41
+ """
42
+ Forward pass through CLIP and classifier.
43
+
44
+ Args:
45
+ pixel_values: Preprocessed image tensors (batch_size, channels, height, width)
46
+
47
+ Returns:
48
+ Logits for binary classification
49
+ """
50
+ # Get image features from CLIP
51
+ with torch.no_grad():
52
+ image_features = self.clip_model.get_image_features(
53
+ pixel_values=pixel_values)
54
+ # Normalize embeddings (CLIP uses normalized embeddings)
55
+ image_features = image_features / \
56
+ image_features.norm(dim=-1, keepdim=True)
57
+
58
+ # Pass through classifier
59
+ logits = self.classifier(image_features)
60
+ return logits
61
+
62
+ def predict_proba(self, pixel_values: torch.Tensor) -> torch.Tensor:
63
+ """Get probability predictions."""
64
+ logits = self.forward(pixel_values)
65
+ return torch.softmax(logits, dim=-1)
66
+
67
+ def predict(self, pixel_values: torch.Tensor, threshold: float = None) -> torch.Tensor:
68
+ """Get binary predictions."""
69
+ if threshold is None:
70
+ threshold = self.threshold
71
+ proba = self.predict_proba(pixel_values)
72
+ return (proba[:, 1] >= threshold).long()
src/train.py ADDED
@@ -0,0 +1,389 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Train DISCO model using PyTorch end-to-end training.
3
+
4
+ This script trains the CLIP-based classifier directly in PyTorch,
5
+ avoiding the sklearn intermediate step.
6
+ """
7
+
8
+ import torch
9
+ import torch.nn as nn
10
+ import torch.optim as optim
11
+ from torch.utils.data import DataLoader
12
+ import numpy as np
13
+ import json
14
+ from pathlib import Path
15
+ from sklearn.metrics import (
16
+ roc_auc_score, average_precision_score, roc_curve, classification_report
17
+ )
18
+ from transformers import CLIPProcessor
19
+ from rich.progress import Progress, SpinnerColumn, TextColumn, BarColumn, TimeElapsedColumn
20
+ from src.dataset import get_dataset, ImageDataset
21
+ from src.model import DISCO, DISCOConfig
22
+
23
+
24
+ def tune_threshold(y_true: np.ndarray, y_scores: np.ndarray, metric: str = "f1") -> tuple[float, dict]:
25
+ """
26
+ Tune classification threshold on validation set.
27
+
28
+ Args:
29
+ y_true: Ground truth binary labels
30
+ y_scores: Predicted probability scores
31
+ metric: Metric to optimize ("f1", "precision", "recall", "balanced_accuracy")
32
+
33
+ Returns:
34
+ Best threshold and metrics at that threshold
35
+ """
36
+ fpr, tpr, thresholds = roc_curve(y_true, y_scores)
37
+
38
+ best_threshold = 0.5
39
+ best_score = 0.0
40
+ best_metrics = {}
41
+
42
+ for threshold in thresholds:
43
+ y_pred = (y_scores >= threshold).astype(int)
44
+
45
+ # Compute metrics
46
+ tp = np.sum((y_pred == 1) & (y_true == 1))
47
+ fp = np.sum((y_pred == 1) & (y_true == 0))
48
+ fn = np.sum((y_pred == 0) & (y_true == 1))
49
+ tn = np.sum((y_pred == 0) & (y_true == 0))
50
+
51
+ precision = tp / (tp + fp) if (tp + fp) > 0 else 0.0
52
+ recall = tp / (tp + fn) if (tp + fn) > 0 else 0.0
53
+ f1 = 2 * (precision * recall) / (precision +
54
+ recall) if (precision + recall) > 0 else 0.0
55
+ balanced_accuracy = (tpr[np.argmax(thresholds >= threshold)] +
56
+ (1 - fpr[np.argmax(thresholds >= threshold)])) / 2
57
+
58
+ score_map = {
59
+ "f1": f1,
60
+ "precision": precision,
61
+ "recall": recall,
62
+ "balanced_accuracy": balanced_accuracy
63
+ }
64
+
65
+ score = score_map.get(metric, f1)
66
+
67
+ if score > best_score:
68
+ best_score = score
69
+ best_threshold = threshold
70
+ best_metrics = {
71
+ "threshold": threshold,
72
+ "precision": precision,
73
+ "recall": recall,
74
+ "f1": f1,
75
+ "balanced_accuracy": balanced_accuracy,
76
+ "tp": int(tp),
77
+ "fp": int(fp),
78
+ "tn": int(tn),
79
+ "fn": int(fn)
80
+ }
81
+
82
+ return best_threshold, best_metrics
83
+
84
+
85
+ def train_epoch(model: nn.Module, dataloader: DataLoader, criterion: nn.Module,
86
+ optimizer: optim.Optimizer, device: str) -> float:
87
+ """Train for one epoch."""
88
+ model.train()
89
+ total_loss = 0.0
90
+ num_batches = 0
91
+
92
+ for inputs, labels in dataloader:
93
+ pixel_values = inputs["pixel_values"].to(device)
94
+ labels = labels.to(device)
95
+
96
+ # Forward pass
97
+ optimizer.zero_grad()
98
+ logits = model(pixel_values=pixel_values)
99
+ loss = criterion(logits, labels)
100
+
101
+ # Backward pass
102
+ loss.backward()
103
+ optimizer.step()
104
+
105
+ total_loss += loss.item()
106
+ num_batches += 1
107
+
108
+ return total_loss / num_batches if num_batches > 0 else 0.0
109
+
110
+
111
+ def evaluate(model: nn.Module, dataloader: DataLoader, device: str) -> tuple[np.ndarray, np.ndarray]:
112
+ """Evaluate model and return predictions and labels."""
113
+ model.eval()
114
+ all_proba = []
115
+ all_labels = []
116
+
117
+ with torch.no_grad():
118
+ for inputs, labels in dataloader:
119
+ pixel_values = inputs["pixel_values"].to(device)
120
+ labels = labels.to(device)
121
+
122
+ # Get predictions
123
+ proba = model.predict_proba(pixel_values)
124
+ all_proba.append(proba.cpu().numpy())
125
+ all_labels.append(labels.cpu().numpy())
126
+
127
+ proba = np.vstack(all_proba)
128
+ labels = np.concatenate(all_labels)
129
+
130
+ return proba, labels
131
+
132
+
133
+ def train(
134
+ num_epochs: int = 10,
135
+ batch_size: int = 32,
136
+ learning_rate: float = 1e-3,
137
+ weight_decay: float = 1e-4,
138
+ class_weight: str = "balanced"
139
+ ):
140
+ """
141
+ Train DISCO model using PyTorch.
142
+
143
+ Args:
144
+ num_epochs: Number of training epochs
145
+ batch_size: Batch size for training
146
+ learning_rate: Learning rate for optimizer
147
+ weight_decay: Weight decay (L2 regularization)
148
+ class_weight: Class weighting strategy ("balanced" or None)
149
+ """
150
+ print("=" * 60)
151
+ print("DISCO Model Training (PyTorch)")
152
+ print("=" * 60)
153
+
154
+ # Setup device
155
+ device = "mps" if torch.backends.mps.is_available() else (
156
+ "cuda" if torch.cuda.is_available() else "cpu")
157
+ print(f"\nUsing device: {device}")
158
+
159
+ # Load dataset splits
160
+ print("\n[1/6] Loading dataset splits...")
161
+ dataset = get_dataset()
162
+
163
+ train_paths = [str(Path(img_path))
164
+ for img_path in dataset["train"]["image"]]
165
+ val_paths = [str(Path(img_path)) for img_path in dataset["val"]["image"]]
166
+ test_paths = [str(Path(img_path)) for img_path in dataset["test"]["image"]]
167
+
168
+ train_labels = np.array(dataset["train"]["label"])
169
+ val_labels = np.array(dataset["val"]["label"])
170
+ test_labels = np.array(dataset["test"]["label"])
171
+
172
+ print(f" Train: {len(train_paths)} images")
173
+ print(f" Val: {len(val_paths)} images")
174
+ print(f" Test: {len(test_paths)} images")
175
+
176
+ # Load CLIP processor
177
+ print("\n[2/6] Loading CLIP processor...")
178
+ model_name = "openai/clip-vit-base-patch32"
179
+ processor = CLIPProcessor.from_pretrained(model_name)
180
+ print(f" Model: {model_name}")
181
+
182
+ # Create datasets and dataloaders
183
+ print("\n[3/6] Creating datasets and dataloaders...")
184
+ train_dataset = ImageDataset(train_paths, train_labels, processor)
185
+ val_dataset = ImageDataset(val_paths, val_labels, processor)
186
+ test_dataset = ImageDataset(test_paths, test_labels, processor)
187
+
188
+ train_loader = DataLoader(
189
+ train_dataset, batch_size=batch_size, shuffle=True, num_workers=0)
190
+ val_loader = DataLoader(
191
+ val_dataset, batch_size=batch_size, shuffle=False, num_workers=0)
192
+ test_loader = DataLoader(
193
+ test_dataset, batch_size=batch_size, shuffle=False, num_workers=0)
194
+
195
+ # Initialize model
196
+ print("\n[4/6] Initializing model...")
197
+ config = DISCOConfig(
198
+ clip_model_name=model_name,
199
+ num_classes=2,
200
+ threshold=0.5
201
+ )
202
+ model = DISCO(config).to(device)
203
+
204
+ # Only train the classifier, keep CLIP frozen
205
+ optimizer = optim.AdamW(
206
+ model.classifier.parameters(),
207
+ lr=learning_rate,
208
+ weight_decay=weight_decay
209
+ )
210
+
211
+ # Setup loss function with class weights if needed
212
+ if class_weight == "balanced":
213
+ # Compute class weights from training data
214
+ class_counts = np.bincount(train_labels)
215
+ total = len(train_labels)
216
+ class_weights = torch.tensor([
217
+ total / (2 * class_counts[0]),
218
+ total / (2 * class_counts[1])
219
+ ], dtype=torch.float32).to(device)
220
+ criterion = nn.CrossEntropyLoss(weight=class_weights)
221
+ print(f" Using balanced class weights: {class_weights.cpu().numpy()}")
222
+ else:
223
+ criterion = nn.CrossEntropyLoss()
224
+ print(" Using uniform class weights")
225
+
226
+ print(
227
+ f" Trainable parameters: {sum(p.numel() for p in model.classifier.parameters() if p.requires_grad):,}")
228
+
229
+ # Training loop
230
+ print("\n[5/6] Training model...")
231
+ best_val_f1 = 0.0
232
+ best_model_state = None
233
+
234
+ with Progress(
235
+ SpinnerColumn(),
236
+ TextColumn("[progress.description]{task.description}"),
237
+ BarColumn(),
238
+ TextColumn("[progress.percentage]{task.percentage:>3.0f}%"),
239
+ TimeElapsedColumn(),
240
+ console=None,
241
+ ) as progress:
242
+ train_task = progress.add_task("Training", total=num_epochs)
243
+
244
+ for epoch in range(num_epochs):
245
+ # Train
246
+ train_loss = train_epoch(
247
+ model, train_loader, criterion, optimizer, device)
248
+
249
+ # Validate
250
+ val_proba, val_labels_np = evaluate(model, val_loader, device)
251
+ val_scores = val_proba[:, 1]
252
+ val_roc_auc = roc_auc_score(val_labels_np, val_scores)
253
+
254
+ # Compute F1 at default threshold
255
+ val_pred = (val_scores >= 0.5).astype(int)
256
+ tp = np.sum((val_pred == 1) & (val_labels_np == 1))
257
+ fp = np.sum((val_pred == 1) & (val_labels_np == 0))
258
+ fn = np.sum((val_pred == 0) & (val_labels_np == 1))
259
+ precision = tp / (tp + fp) if (tp + fp) > 0 else 0.0
260
+ recall = tp / (tp + fn) if (tp + fn) > 0 else 0.0
261
+
262
+ val_f1 = 2 * (precision * recall) / (precision +
263
+ recall) if (precision + recall) > 0 else 0.0
264
+
265
+ progress.update(train_task, advance=1, description=f"Epoch {epoch+1}/{num_epochs} | Loss: {train_loss:.4f} | "
266
+ f"Val ROC-AUC: {val_roc_auc:.4f} | Val F1: {val_f1:.4f}")
267
+
268
+ # Save best model
269
+ if val_f1 > best_val_f1:
270
+ best_val_f1 = val_f1
271
+ best_model_state = model.state_dict().copy()
272
+
273
+ # Load best model
274
+ if best_model_state is not None:
275
+ model.load_state_dict(best_model_state)
276
+ print(f"\n Best validation F1: {best_val_f1:.4f}")
277
+
278
+ # Tune threshold on validation set
279
+ print("\n[6/6] Tuning threshold on validation set...")
280
+ val_proba, val_labels_np = evaluate(model, val_loader, device)
281
+ val_scores = val_proba[:, 1]
282
+ best_threshold, threshold_metrics = tune_threshold(
283
+ val_labels_np, val_scores, metric="f1")
284
+ print(f" Best threshold: {best_threshold:.4f}")
285
+ print(" Validation metrics at best threshold:")
286
+ print(f" Precision: {threshold_metrics['precision']:.4f}")
287
+ print(f" Recall: {threshold_metrics['recall']:.4f}")
288
+ print(f" F1: {threshold_metrics['f1']:.4f}")
289
+ print(
290
+ f" Balanced Accuracy: {threshold_metrics['balanced_accuracy']:.4f}")
291
+
292
+ # Update model threshold
293
+ model.threshold = best_threshold
294
+ config.threshold = best_threshold
295
+
296
+ # Evaluate on test set
297
+ print("\n" + "=" * 60)
298
+ print("Test Set Evaluation")
299
+ print("=" * 60)
300
+
301
+ test_proba, test_labels_np = evaluate(model, test_loader, device)
302
+ test_scores = test_proba[:, 1]
303
+ test_roc_auc = roc_auc_score(test_labels_np, test_scores)
304
+ test_pr_auc = average_precision_score(test_labels_np, test_scores)
305
+
306
+ print("\nTest Set Metrics (probability scores):")
307
+ print(f" ROC AUC: {test_roc_auc:.4f}")
308
+ print(f" PR AUC: {test_pr_auc:.4f}")
309
+
310
+ # Apply best threshold
311
+ test_pred = (test_scores >= best_threshold).astype(int)
312
+
313
+ print(f"\nTest Set Metrics (with threshold={best_threshold:.4f}):")
314
+ print(classification_report(test_labels_np, test_pred,
315
+ target_names=["FAMILY_SAFE/UNCERTAIN", "SUGGESTIVE"]))
316
+
317
+ # Confusion matrix
318
+ tp = np.sum((test_pred == 1) & (test_labels_np == 1))
319
+ fp = np.sum((test_pred == 1) & (test_labels_np == 0))
320
+ tn = np.sum((test_pred == 0) & (test_labels_np == 0))
321
+ fn = np.sum((test_pred == 0) & (test_labels_np == 1))
322
+
323
+ print("\nConfusion Matrix:")
324
+ print(" Predicted")
325
+ print(" FAMILY_SAFE SUGGESTIVE")
326
+ print(f"Actual FAMILY_SAFE {tn:4d} {fp:4d}")
327
+ print(f" SUGGESTIVE {fn:4d} {tp:4d}")
328
+
329
+ # Save model and metadata
330
+ print("\n" + "=" * 60)
331
+ print("Saving Model")
332
+ print("=" * 60)
333
+
334
+ models_dir = Path(__file__).parent.parent / "models"
335
+ models_dir.mkdir(exist_ok=True)
336
+
337
+ # Save Hugging Face model
338
+ config.save_pretrained(models_dir)
339
+ model.save_pretrained(models_dir)
340
+ print(f" Saved Hugging Face model to: {models_dir}")
341
+
342
+ # Save processor
343
+ processor.save_pretrained(models_dir)
344
+ print(f" Saved processor to: {models_dir}")
345
+
346
+ # Save metadata
347
+ metadata = {
348
+ "model_name": model_name,
349
+ "threshold": float(best_threshold),
350
+ "test_roc_auc": float(test_roc_auc),
351
+ "test_pr_auc": float(test_pr_auc),
352
+ "val_roc_auc": float(roc_auc_score(val_labels_np, val_scores)),
353
+ "val_pr_auc": float(average_precision_score(val_labels_np, val_scores)),
354
+ "threshold_metrics": {
355
+ k: float(v) if isinstance(v, (int, float, np.number)) else v
356
+ for k, v in threshold_metrics.items()
357
+ },
358
+ "embedding_dim": int(model.clip_model.config.projection_dim),
359
+ "model_type": "clip_nsfw_detector",
360
+ "framework": "pytorch",
361
+ "training_config": {
362
+ "num_epochs": num_epochs,
363
+ "batch_size": batch_size,
364
+ "learning_rate": learning_rate,
365
+ "weight_decay": weight_decay,
366
+ "class_weight": class_weight
367
+ }
368
+ }
369
+
370
+ metadata_path = models_dir / "model_metadata.json"
371
+ with open(metadata_path, "w") as f:
372
+ json.dump(metadata, f, indent=2)
373
+ print(f" Saved metadata to: {metadata_path}")
374
+
375
+ print("\nModel saved successfully!")
376
+ print(f"\nModel is ready for Hugging Face upload from: {models_dir}")
377
+
378
+ return {
379
+ "model": model,
380
+ "threshold": best_threshold,
381
+ "test_roc_auc": test_roc_auc,
382
+ "test_pr_auc": test_pr_auc,
383
+ "threshold_metrics": threshold_metrics,
384
+ "metadata_path": metadata_path
385
+ }
386
+
387
+
388
+ if __name__ == "__main__":
389
+ results = train()
uv.lock ADDED
The diff for this file is too large to render. See raw diff