├── EfficentNet.png
├── torch_version.txt
├── images
├── version1
│ ├── banner.png
│ ├── image.jpg
│ ├── result0.png
│ ├── result1.png
│ ├── result2.png
│ ├── result3.png
│ └── preprocessed.jpg
└── version2
│ ├── banner.png
│ ├── accuracy.png
│ ├── inference.png
│ ├── testloss.png
│ ├── trainloss.png
│ ├── Confidence.png
│ ├── DistirbutionFN.png
│ ├── PreprocessedImages.png
│ └── output_image_with_angle_text.png
├── requirements.txt
├── .gitignore
├── LICENSE
├── edaideads.txt
├── README.md
└── training_results.csv
/EfficentNet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/EfficentNet.png
--------------------------------------------------------------------------------
/torch_version.txt:
--------------------------------------------------------------------------------
1 | pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
--------------------------------------------------------------------------------
/images/version1/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version1/banner.png
--------------------------------------------------------------------------------
/images/version1/image.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version1/image.jpg
--------------------------------------------------------------------------------
/images/version2/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version2/banner.png
--------------------------------------------------------------------------------
/images/version1/result0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version1/result0.png
--------------------------------------------------------------------------------
/images/version1/result1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version1/result1.png
--------------------------------------------------------------------------------
/images/version1/result2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version1/result2.png
--------------------------------------------------------------------------------
/images/version1/result3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version1/result3.png
--------------------------------------------------------------------------------
/images/version2/accuracy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version2/accuracy.png
--------------------------------------------------------------------------------
/images/version2/inference.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version2/inference.png
--------------------------------------------------------------------------------
/images/version2/testloss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version2/testloss.png
--------------------------------------------------------------------------------
/images/version2/trainloss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version2/trainloss.png
--------------------------------------------------------------------------------
/images/version2/Confidence.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version2/Confidence.png
--------------------------------------------------------------------------------
/images/version1/preprocessed.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version1/preprocessed.jpg
--------------------------------------------------------------------------------
/images/version2/DistirbutionFN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version2/DistirbutionFN.png
--------------------------------------------------------------------------------
/images/version2/PreprocessedImages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version2/PreprocessedImages.png
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | pandas
2 | imagesize
3 | tqdm
4 | opencv-python
5 | Pillow
6 | numpy
7 | matplotlib
8 | jupyterlab
9 | scikit-learn
10 | seaborn
--------------------------------------------------------------------------------
/images/version2/output_image_with_angle_text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DFGANDP/Rotnet-Captcha-Solver/HEAD/images/version2/output_image_with_angle_text.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | test.py
2 | .venv
3 | ComfyUI_00102_.png
4 | .ipynb_checkpoints
5 | best_model_efficentnetb3.pth
6 | best_model.pth
7 | cleaned_images.csv
8 | inference_results_with_confidence.csv
9 | model_checkpoint_all_data.pth
10 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Wojtek AI
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/edaideads.txt:
--------------------------------------------------------------------------------
1 | 1. Analiza ogólnej dokładności i błędów sieci
2 | Średnia dokładność i strata: Oblicz średnią dokładność i stratę dla całego zbioru danych, aby zrozumieć ogólną wydajność modelu.
3 | Macierz pomyłek (Confusion Matrix): Stwórz macierz pomyłek, aby zobaczyć, które klasy (rotowane/nierotowane) są najczęściej mylone przez model.
4 | Analiza błędów False Positives/Negatives: Zbadaj przypadki, w których model niepoprawnie klasyfikuje obrazy jako rotowane lub nierotowane. Sprawdź, czy istnieje wzorzec w kątach rotacji, które są często mylone.
5 |
6 | 2. Analiza pewności modelu (Confidence Analysis)
7 | Rozkład confidence score: Zbadaj rozkład pewności modelu dla prawidłowych i nieprawidłowych klasyfikacji. Sprawdź, czy model jest pewny swoich błędów (czyli wysokie confidence score dla błędnych klasyfikacji).
8 | Pewność vs. kąt rotacji: Analizuj, jak pewność modelu zmienia się w zależności od kąta rotacji. Może się okazać, że model jest mniej pewny przy pewnych kątach.
9 |
10 | 3. Wpływ kąta rotacji na wyniki
11 | Dokładność w zależności od kąta rotacji: Sprawdź, jak model radzi sobie z różnymi kątami rotacji. Czy są kąty, przy których model ma wyraźnie niższą dokładność?
12 | Błędy w funkcji kąta rotacji: Zbadaj, jakie błędy popełnia model w zależności od kąta. Może się okazać, że model myli obrazy, gdy kąt rotacji jest bardzo mały lub bardzo duży.
13 |
14 | 4. Analiza rozkładu etykiet prawdziwych vs. przewidywanych
15 | Porównanie rozkładu prawdziwych i przewidywanych etykiet: Zobacz, czy model ma tendencję do przewidywania jednej klasy częściej niż drugiej, co może wskazywać na problem z niezbalansowanymi klasami.
16 |
17 | 5. Analiza na poziomie pojedynczych obrazów
18 | Wizualizacja błędnych klasyfikacji: Wyświetl przykłady obrazów, które zostały niepoprawnie sklasyfikowane przez model. Sprawdź, czy istnieją wspólne cechy (np. szumy, podobne wzorce), które prowadzą do błędów.
19 | Grad-CAM lub inne metody interpretacji modeli: Użyj technik takich jak Grad-CAM, aby zobaczyć, które części obrazów są najważniejsze dla modelu przy podejmowaniu decyzji. To pomoże zrozumieć, dlaczego model popełnia błędy na niektórych obrazach.
20 |
21 |
22 | 6. Analiza przykładów outliers
23 | Identifikacja outliers: Wykryj przypadki, gdzie confidence score jest bardzo niski dla prawidłowych klasyfikacji lub bardzo wysoki dla błędnych klasyfikacji. Te przypadki mogą być interesujące do dalszej analizy, jako potencjalne outliers.
24 | Analiza outliers: Zbadaj outliers, aby zrozumieć, dlaczego model ma problem z ich klasyfikacją. Może to być spowodowane np. nietypowym oświetleniem, kształtem obiektu lub szumem w obrazie.
25 |
26 |
27 | 7. Analiza wydajności sieci na różnych grupach obrazów
28 | Grupowanie obrazów: Spróbuj podzielić obrazy na różne grupy według cech takich jak kolor, jasność, tekstura, itp. Sprawdź, jak model radzi sobie na różnych grupach obrazów.
29 | Test na zestawach trudnych przykładów: Stwórz zbiór "trudnych" przykładów (np. bardzo małe kąty rotacji, obrazy z zakłóceniami) i sprawdź, jak model na nich działa.
30 |
31 | 8. Analiza wyników na poziomie confidence threshold
32 | Dostosowanie progu confidence score: Sprawdź, jak zmiana progu pewności (confidence threshold) wpływa na wyniki modelu. Możesz zbadać, czy istnieje optymalny próg, który minimalizuje liczbę błędów.
33 | Precision-Recall Curve: Wygeneruj krzywą Precision-Recall, aby zobaczyć, jak zmiana progu wpływa na precyzję i czułość modelu.
34 |
35 |
36 | 9. Analiza wyników na różnych etapach treningu
37 | Porównanie wyników dla różnych epok treningowych: Jeśli masz zapisy modeli z różnych etapów treningu, możesz porównać, jak wyniki modelu zmieniały się w czasie. To może pomóc zrozumieć, czy model przetrenowuje się na pewnych kątach lub obrazach.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | 
4 |
5 | > Neural netwrok and statistical analysis for solving TikTok captcha (NOT FINISHED)
6 |
7 | 
8 |
9 |
10 |
11 |
12 | ## 🚩 Table of Contents
13 |
14 | - [Environment](#-environment)
15 | - [Features](#-features)
16 | - [Examples](#-examples)
17 | - [Pipeline explained](#-pipeline-explained)
18 | - [Changes](#-changes)
19 | - [TODO](#-todo)
20 | - [License](#-license)
21 |
22 |
23 |
24 |
25 |
26 | ## 📦 Environment
27 |
28 | ### Python version and libraries
29 |
30 | | Version | Info |
31 | | --- | --- |
32 | |Python 3.11.7 | Jupyterlab code |
33 |
34 | ### Main libraries used in project
35 |
36 | | Name | Description |
37 | | --- | --- |
38 | | numpy | Tensors |
39 | | torch torchvision | Uses cuda 124 |
40 | | pandas | Dataframes |
41 | | sklearn | EDA and thershold |
42 | | matplotlib | Visualize charts |
43 | | PIL, opencv | Image preprocessing |
44 |
45 |
46 | > For more info look at requirements.txt and torch_version.txt
47 |
48 |
49 | ## 🎨 Features
50 |
51 | ### 🤖 What is RotNet captcha solver?
52 | It is a prototype of a tool focused on solving captcha. Whether you're looking to preprocess images, build neural networks, train them or make EDA of output tool has got you covered. Future updates will introduce advanced features such as real time worker with selenium and better performance.
53 |
54 | Available now:
55 | * Image preprocessing
56 | * Different model builder and trainer (even vision-transformers)
57 | * EDA of network output
58 |
59 |
60 | ## 🐾 Examples
61 |
62 | ### Preprocessing of images
63 | This section provides an example output demonstrating the preprocessed images.
64 |
65 | * Image examples
66 |
67 |
68 |
69 | * Output data
70 |
71 |
72 |
73 |
74 | ### Actually available models: EfficientNetb3, Resnet(any), SwinV2T
75 |
76 |
77 | ## 🌏 Pipeline explained
78 |
79 | ### INPUT
80 | > Data on which model was trained is subset of ImageNet
81 |
82 |
83 | ### Files
84 | | File | desc |
85 | | --- | --- |
86 | |1. images/version1/RotNetDataGenerator.ipynb | Old version
87 | |2. RotNetSecondVersion.ipynb| Actual version
88 |
89 |
90 | ### Process
91 | * Just look at files
92 |
93 |
94 | ### Output
95 | For any given image, after preprocessing, there is **classification** pred if it was rotated
96 |
97 |
98 |
99 | ## 🔧 Changes
100 |
101 | ### Things improved in comparison to first version
102 |
103 | 1. Accuracy - By using EfficientNetb3 and more complex classificator head accuracy improved from 78 to 85 % (Without fine-tuning)
104 | 2. Cod is refactored, easier to read and all in english
105 | 3. Problem with bad color channels resolved
106 | 4. Model was trained using much more data over 100k images
107 | 5. Possibility of using vision transofmrers
108 | 6. Faster inference
109 | 7. EDA of output in order to better understand limitations and path of development
110 | 8. Explained way of how to use it with selenium
111 |
112 |
113 |
114 | ## 📈 Result
115 | ```
116 | First test model was trained with ResNet-18 and got:
117 | * HIGHREST ACCURACY: 0.7892497518082542
118 |
119 | Newest model was trained on Efficentnet and got:
120 | * HIGHREST ACCURACY: ~ 85%
121 | ```
122 |
123 | 0. ### Example image
124 | 
125 |
126 | 1. ### Preprocessed Image
127 | 
128 | Angle = 90
129 |
130 | 3. ### Train/Test loss
131 | 
132 |
133 | 4. ### Accuracy of model
134 | 
135 |
136 |
137 |
138 | ## 💬 TODO
139 |
140 | * Real time solver with selenium
141 | * Augumentation like little distortion in image
142 |
143 | 
144 | 
145 |
146 | * Looking at EDA (look at code for more info) it seems to be reasonable to have 2 networks one small which will in general classify stuff and second which will be responsible in looking only on very hard examples. Or something like this. For sure there is some paper which resolved similiar issue
147 | * Make finetuning with W&B - easy improvement
148 | * Train with different models
149 | * **The way it is trained can be improved** by other function loss and way model is feeded with data, after initial training it could be best to train it further only on very hard examples something like online-mining in FaceNet? (looking at loss and confidence score)
150 | * Visualization of original/preprocessed bad examples for better understanding of limitation
151 |
152 | ## 📜 License
153 |
154 | This software is licensed under the [MIT](https://github.com/nhn/tui.editor/blob/master/LICENSE) © [NHN Cloud](https://github.com/nhn).
155 |
156 |
--------------------------------------------------------------------------------
/training_results.csv:
--------------------------------------------------------------------------------
1 | Train Loss,Test Loss,Accuracy,Base Loss,Interval Loss
2 | 0.44072998237948047,0.3760913415065664,0.8335145771839884,10.398933717746608,"0.623185715505055, 0.5522650718688965, 0.5281760979266393, 0.5116943895816803, 0.4938939801284245, 0.48444932798544565, 0.4779035860178422, 0.47213138469627924, 0.4691692336211129, 0.46448430453028, 0.46103565623233844, 0.45853423568464463, 0.45539433805497137, 0.453089904541872, 0.4508552223160153, 0.44903452987117426, 0.4462093592691822, 0.44460885311876025, 0.4427113632062324, 0.44049758451325555"
3 | 0.40517380079056353,0.3803407589331368,0.8339806327999586,10.398933717746608,"0.4250267710004534, 0.42103220181805745, 0.42114133011727106, 0.41562136667115346, 0.41197072233472554, 0.41028114145710354, 0.4092638921980955, 0.4106218317789691, 0.4099530478318532, 0.40991904607840945, 0.4101509985985694, 0.40923272924763815, 0.40864865262429795, 0.40864444143918094, 0.4076993065788632, 0.40717081422252316, 0.40712520209681086, 0.4067716731438561, 0.406203543019474, 0.4056407623631614"
4 | 0.39508065501003403,0.3657656985008164,0.8411786028688313,10.398933717746608,"0.40080580796514237, 0.41102224843842644, 0.40383907556533816, 0.40112743909869875, 0.4008675811971937, 0.39895743628342945, 0.3997264272096206, 0.4014324991830758, 0.4004741028187767, 0.39973539922918594, 0.3990188974064666, 0.39665562616927286, 0.3956492510470715, 0.39519016067592466, 0.3956180640061696, 0.39553268040929523, 0.39464057348355525, 0.3952768619098361, 0.3950586376333595, 0.39467402500765664"
5 | 0.3874386267881867,0.3650868127480248,0.8443374242659624,10.398933717746608,"0.39632647633552553, 0.38399507573672703, 0.3815662179674421, 0.38133892097643446, 0.3836166068485805, 0.3842892316125688, 0.38480205389918115, 0.3867918002818312, 0.38640019581431434, 0.3861428007057735, 0.3869020038610929, 0.386290041179884, 0.38701326506478445, 0.3872476906192546, 0.387919138386136, 0.3888368958341224, 0.3900606951292823, 0.3884529328535474, 0.3884178402280449, 0.38777461856603623"
6 | 0.38828380949108315,0.36970698527547696,0.8481176531510538,10.398933717746608,"0.3974664807319641, 0.4038487272603171, 0.39330663879712424, 0.3891613185405731, 0.3857137705598559, 0.3857878486315409, 0.38668378141461585, 0.38560876750520295, 0.3866479844327957, 0.38669306422982896, 0.3864037557855829, 0.38658415526151657, 0.3864232246692364, 0.38745509161024677, 0.3879638262022109, 0.3890539141105754, 0.3886024492127555, 0.38792426042140477, 0.3875870485054819, 0.3879459294251033"
7 | 0.38138343763689625,0.3629923742141155,0.8498783077002745,10.398933717746608,"0.38475293261664256, 0.37510929916586194, 0.37933250353449866, 0.38081117336239134, 0.3827289693696158, 0.38053321043650307, 0.3790608510679128, 0.37970660903624126, 0.38059643847601754, 0.3798275945016316, 0.3795759146089678, 0.3794507414102554, 0.3804057450084896, 0.3820238318978524, 0.3812325010413215, 0.3814688242971897, 0.3807415768378923, 0.38080235790638695, 0.38122327112613763, 0.381304654947349"
8 | 0.38003159406337333,0.36913033273835844,0.8473408937911036,10.398933717746608,"0.3969047827380044, 0.3829696467944554, 0.3823761976900555, 0.38168022739035745, 0.3804591817515237, 0.3784731772683916, 0.3784211179431604, 0.3788998621915068, 0.3775075935182117, 0.37738304504326414, 0.37780122873070954, 0.37751595995255877, 0.37764934694374, 0.37753476348458503, 0.37857581984429134, 0.379004445033414, 0.3786579969550381, 0.3793639628187058, 0.3793835830867739, 0.3799255472847394"
9 | 0.3795875356975177,0.3461494671785279,0.8504997151882346,10.398933717746608,"0.37639164498874117, 0.373902627825737, 0.3754809898989541, 0.37755186153309683, 0.38095314400536673, 0.3797638210512343, 0.3791242528934868, 0.37793426534959246, 0.3803990057536534, 0.38092556519167764, 0.3816253291322039, 0.3814309355758485, 0.3807227634466611, 0.38027960141094364, 0.3803517171882448, 0.3795946472457477, 0.3796591090054071, 0.37929548465070273, 0.3785459900260868, 0.3789839292849813"
10 | 0.36806029436436105,0.5968540754934021,0.854072808244006,10.398933717746608,"0.36634310398783004, 0.3729110845497676, 0.36770274951344445, 0.3656670436263084, 0.3693725725582668, 0.36628931037017276, 0.3680233764405153, 0.3693088621965476, 0.3691312192924439, 0.36872316356216156, 0.3687099098385154, 0.36866639540309, 0.3676387448887249, 0.36715611493100925, 0.36781998696781343, 0.367319653449314, 0.36787285955012344, 0.3677248486923793, 0.3679795503168178, 0.3675035462634904"
11 | 0.3666011097794729,0.3424617760623528,0.8521050178654653,10.398933717746608,"0.3848276913166046, 0.372713902592659, 0.3706618740445092, 0.3669640451669693, 0.3649155330657959, 0.36256263490234103, 0.3648430130311421, 0.3647837654288326, 0.36498918329912516, 0.36411526786429543, 0.36414082750871585, 0.36541895110692296, 0.3668883136013052, 0.367010828883064, 0.3665309323867162, 0.3664877265425665, 0.36725018287406247, 0.36723143945610714, 0.3666090185929062, 0.366716710967677"
12 | 0.3596352337628392,0.3467493661192079,0.8508104189322148,10.398933717746608,"0.3648359928812299, 0.3651551476546696, 0.3604147411528088, 0.35921544092042107, 0.36057678733553206, 0.3605347932094619, 0.3608851696155509, 0.362173407258732, 0.3623845746119817, 0.3615963192071234, 0.36212198304665555, 0.36104074478858994, 0.3608897654892324, 0.3610973854150091, 0.3609390897126425, 0.36183737572282554, 0.3612635039732236, 0.361457744359024, 0.36077242356942113, 0.3597604349255562"
13 | 0.3624132271565444,0.3380709458265873,0.8588369323183678,10.398933717746608,"0.3680694213935307, 0.3635270316685949, 0.3580267037664141, 0.361656719659056, 0.3640274478707995, 0.36408005285830725, 0.3643683225524669, 0.36445352105157713, 0.3640031047283657, 0.36469444700649806, 0.36428898603885207, 0.3648904036198344, 0.3646612154913473, 0.36555400049808073, 0.3654429475750242, 0.3645647398063115, 0.36363099941185545, 0.36292835192547906, 0.3625020968510692, 0.3621664766115802"
14 | 0.36285478939824073,0.3342841682055139,0.8577494692144374,10.398933717746608,"0.3710474286760603, 0.36666676572390966, 0.367213374376297, 0.36744043976068497, 0.3687323771204267, 0.36651493098054616, 0.3653938187628376, 0.3652109867760113, 0.36364920773203413, 0.3642504453659058, 0.3647035115725034, 0.36457924246788026, 0.365314347075892, 0.3646396815776825, 0.36435998070807685, 0.36469189918466977, 0.3638353156692841, 0.364640274904077, 0.3635886480261509, 0.3627167913956302"
15 | 0.3608263483706941,0.33344008225873606,0.8570244938118171,10.398933717746608,"0.359850742987224, 0.3657543386731829, 0.35845955979256405, 0.3624394118785858, 0.36147308579513004, 0.36185399428719567, 0.3616460776450683, 0.3619775328785181, 0.3621645180951981, 0.36179237169878825, 0.3632981130055019, 0.3609050568370592, 0.3603910033519451, 0.36067654022148676, 0.3599442971888043, 0.3610367977725608, 0.3608494339369926, 0.3604216341461454, 0.35984689499202527, 0.36053022589002337"
16 | 0.3549100232673875,0.3491049715817369,0.8544870799026462,10.398933717746608,"0.3442481577396393, 0.35099030307361057, 0.3515704359327044, 0.3498625610555921, 0.3520170874255044, 0.35479018361795517, 0.3545691437867223, 0.35409241425139565, 0.35570417292534356, 0.35654768398829867, 0.3560877340180533, 0.3570883074686641, 0.3565345563731351, 0.3558116316491244, 0.3553970600593658, 0.3552514369200383, 0.35557185959916154, 0.35489861291079294, 0.35495562008897164, 0.35471884814756255"
17 |
--------------------------------------------------------------------------------