├── 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 | ![This is an image](images/version2/banner.png) 2 | 3 | ![GitHub](https://img.shields.io/github/license/DFGANDP/StyleGan2-Ada_Encoder_projector) 4 | 5 | > Neural netwrok and statistical analysis for solving TikTok captcha (NOT FINISHED) 6 | 7 | ![ComfyUIImage](images/version2/output_image_with_angle_text.png) 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 | ![Menu](images/version1/image.jpg) 125 | 126 | 1. ### Preprocessed Image 127 | ![Menu](images/version1/preprocessed.jpg) 128 | Angle = 90 129 | 130 | 3. ### Train/Test loss 131 | ![Menu](images/version2/testloss.png) 132 | 133 | 4. ### Accuracy of model 134 | ![Menu](images/version2/accuracy.png) 135 | 136 | 137 | 138 | ## 💬 TODO 139 | 140 | * Real time solver with selenium 141 | * Augumentation like little distortion in image 142 | 143 | ![Menu](images/version2/DistirbutionFN.png) 144 | ![Menu](images/version2/Confidence.png) 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 | --------------------------------------------------------------------------------