Commit d5de3f5b by vincent

test cases for FaceLandmark68Net and FaceLandmark68TinyNet

parent 4d3706fd
[{"x": 15.145603939890862, "y": 42.00849384069443}, {"x": 16.228551417589188, "y": 58.02471041679382}, {"x": 18.641504645347595, "y": 73.78255426883698}, {"x": 21.99183627963066, "y": 89.28244113922119}, {"x": 27.241109311580658, "y": 103.89149487018585}, {"x": 35.77959090471268, "y": 117.20520257949829}, {"x": 47.162988781929016, "y": 128.52083444595337}, {"x": 60.60639023780823, "y": 137.3870998620987}, {"x": 76.22466087341309, "y": 139.8476779460907}, {"x": 91.47888422012329, "y": 136.8298441171646}, {"x": 104.65206205844879, "y": 127.64202654361725}, {"x": 115.92219471931458, "y": 116.16075038909912}, {"x": 124.51052069664001, "y": 102.82219648361206}, {"x": 129.76784706115723, "y": 87.81199157238007}, {"x": 132.6519101858139, "y": 72.15077430009842}, {"x": 134.51203107833862, "y": 56.30408674478531}, {"x": 135.33487915992737, "y": 40.10292738676071}, {"x": 24.932710826396942, "y": 32.96273946762085}, {"x": 32.57601857185364, "y": 28.00302878022194}, {"x": 42.381374537944794, "y": 27.10871994495392}, {"x": 52.198585867881775, "y": 29.124750941991806}, {"x": 61.5922674536705, "y": 32.90563523769379}, {"x": 85.18133461475372, "y": 31.272751092910767}, {"x": 94.89730596542358, "y": 26.85772553086281}, {"x": 105.1171749830246, "y": 24.783611297607422}, {"x": 115.2367115020752, "y": 25.725752860307693}, {"x": 123.13878536224365, "y": 30.079219490289688}, {"x": 73.67254793643951, "y": 43.12345236539841}, {"x": 73.7981915473938, "y": 55.55519610643387}, {"x": 73.8839328289032, "y": 67.69467741250992}, {"x": 73.96439015865326, "y": 79.91722226142883}, {"x": 62.394945323467255, "y": 85.0008487701416}, {"x": 68.01678389310837, "y": 87.24332749843597}, {"x": 74.27898198366165, "y": 88.8382226228714}, {"x": 80.42970299720764, "y": 86.84954345226288}, {"x": 85.87614297866821, "y": 84.31319296360016}, {"x": 35.7684463262558, "y": 44.57894414663315}, {"x": 42.30532944202423, "y": 41.117119789123535}, {"x": 50.501713156700134, "y": 41.50397926568985}, {"x": 56.56731426715851, "y": 45.83812057971954}, {"x": 50.084468722343445, "y": 48.037388920784}, {"x": 41.91972613334656, "y": 47.92611300945282}, {"x": 91.28680229187012, "y": 44.677162170410156}, {"x": 97.76994287967682, "y": 40.084308385849}, {"x": 105.72623312473297, "y": 39.8311972618103}, {"x": 111.95003092288971, "y": 42.97384321689606}, {"x": 106.4166247844696, "y": 46.30742222070694}, {"x": 98.37331473827362, "y": 46.70642763376236}, {"x": 51.94934159517288, "y": 102.49188244342804}, {"x": 60.71081757545471, "y": 101.18674635887146}, {"x": 68.67328137159348, "y": 100.15718936920166}, {"x": 74.38371777534485, "y": 101.07522904872894}, {"x": 80.5251270532608, "y": 99.71560835838318}, {"x": 88.56176733970642, "y": 100.32560527324677}, {"x": 96.980881690979, "y": 100.81177353858948}, {"x": 89.01146650314331, "y": 108.55080485343933}, {"x": 81.3762366771698, "y": 112.2200220823288}, {"x": 74.73004907369614, "y": 113.34742605686188}, {"x": 68.42194050550461, "y": 112.92429864406586}, {"x": 60.53387671709061, "y": 110.02114713191986}, {"x": 55.876149237155914, "y": 103.3714234828949}, {"x": 68.54872852563858, "y": 104.03825640678406}, {"x": 74.44304376840591, "y": 104.46503162384033}, {"x": 80.63703775405884, "y": 103.56011688709259}, {"x": 93.1486040353775, "y": 102.0165503025055}, {"x": 80.84633946418762, "y": 104.64600920677185}, {"x": 74.63692724704742, "y": 105.62551617622375}, {"x": 68.74832957983017, "y": 105.22661805152893}]
\ No newline at end of file
[{"x":12.409065663814545,"y":35.459357500076294},{"x":13.863831013441086,"y":53.03075462579727},{"x":17.257214337587357,"y":69.21994239091873},{"x":20.290792733430862,"y":83.73786807060242},{"x":25.19843727350235,"y":100.01502335071564},{"x":33.363962173461914,"y":114.15562033653259},{"x":42.67177730798721,"y":124.92083609104156},{"x":54.774945974349976,"y":134.97415781021118},{"x":73.93101006746292,"y":140.77884256839752},{"x":93.50163638591766,"y":135.3241503238678},{"x":106.89235031604767,"y":125.59508979320526},{"x":116.92832708358765,"y":115.29875993728638},{"x":125.80114603042603,"y":101.27357840538025},{"x":130.48838675022125,"y":84.83449816703796},{"x":133.11561048030853,"y":69.95338797569275},{"x":135.84416806697845,"y":53.477123379707336},{"x":137.16664016246796,"y":35.98061129450798},{"x":22.041092813014984,"y":26.081138849258423},{"x":29.21232059597969,"y":21.911372244358063},{"x":38.767728209495544,"y":21.422917395830154},{"x":47.85865992307663,"y":23.588016629219055},{"x":55.94828277826309,"y":26.723874360322952},{"x":88.98929357528687,"y":26.476483047008514},{"x":97.3086029291153,"y":23.411455750465393},{"x":106.5034031867981,"y":21.319837868213654},{"x":116.54528975486755,"y":21.732238680124283},{"x":124.39115345478058,"y":26.091013848781586},{"x":72.58472889661789,"y":44.89734023809433},{"x":72.1238225698471,"y":57.7533558011055},{"x":71.73694968223572,"y":70.3047975897789},{"x":71.81699573993683,"y":79.94250655174255},{"x":62.10947334766388,"y":83.842733502388},{"x":66.3440153002739,"y":85.69430708885193},{"x":72.36149311065674,"y":87.41167187690735},{"x":78.35066020488739,"y":85.74668169021606},{"x":83.0715000629425,"y":83.87293517589569},{"x":33.77652391791344,"y":40.25426656007767},{"x":39.713045954704285,"y":37.594060599803925},{"x":47.61984497308731,"y":37.72639185190201},{"x":55.496129393577576,"y":42.38396733999252},{"x":48.19572865962982,"y":44.55205053091049},{"x":39.7584468126297,"y":44.11860108375549},{"x":90.26297628879547,"y":42.310331761837006},{"x":97.85987734794617,"y":37.882326543331146},{"x":105.9216856956482,"y":37.697312235832214},{"x":112.38531768321991,"y":40.45048803091049},{"x":105.98326027393341,"y":44.305725395679474},{"x":97.26411402225494,"y":44.69909369945526},{"x":50.48552602529526,"y":100.74669420719147},{"x":58.16384553909302,"y":99.99362826347351},{"x":67.69992560148239,"y":98.86696636676788},{"x":72.78527766466141,"y":100.00039637088776},{"x":77.79269814491272,"y":98.80055487155914},{"x":88.17337453365326,"y":99.85068440437317},{"x":97.4126547574997,"y":100.27143359184265},{"x":87.91132271289825,"y":107.21607506275177},{"x":80.38677871227264,"y":111.03568375110626},{"x":73.13570827245712,"y":111.78229451179504},{"x":65.85598737001419,"y":111.23852133750916},{"x":58.75929147005081,"y":107.56462812423706},{"x":52.198053896427155,"y":100.71471333503723},{"x":66.12485200166702,"y":103.38914394378662},{"x":72.73153960704803,"y":103.6908209323883},{"x":79.6861320734024,"y":103.28285694122314},{"x":95.68716287612915,"y":100.31683444976807},{"x":79.67764735221863,"y":103.91019880771637},{"x":72.93425649404526,"y":104.61705923080444},{"x":66.34287983179092,"y":103.94268035888672}]
\ No newline at end of file
[{"x":12.591811269521713,"y":37.18056008219719},{"x":14.489217102527618,"y":54.375430941581726},{"x":18.031097576022148,"y":70.10978311300278},{"x":21.278046816587448,"y":83.95282924175262},{"x":26.40417516231537,"y":99.72459375858307},{"x":34.79916527867317,"y":113.51814866065979},{"x":44.21398043632507,"y":124.09239113330841},{"x":56.03765398263931,"y":134.3254119157791},{"x":75.41389167308807,"y":140.46012461185455},{"x":94.84915137290955,"y":134.49379205703735},{"x":107.92432129383087,"y":123.9702969789505},{"x":118.00838112831116,"y":113.45937252044678},{"x":126.69345438480377,"y":99.56673681735992},{"x":131.41701221466064,"y":83.40703547000885},{"x":133.99315774440765,"y":68.92484575510025},{"x":136.772882938385,"y":52.720874547958374},{"x":137.7272218465805,"y":35.40073335170746},{"x":21.938379853963852,"y":28.243593871593475},{"x":29.08402383327484,"y":24.014483392238617},{"x":38.46672624349594,"y":23.24410155415535},{"x":47.45165705680847,"y":24.920182675123215},{"x":55.57771772146225,"y":27.864713966846466},{"x":89.10931348800659,"y":27.321801334619522},{"x":97.32098579406738,"y":24.548690021038055},{"x":106.52551352977753,"y":22.409027069807053},{"x":116.49984419345856,"y":22.863386571407318},{"x":124.49341714382172,"y":26.976196467876434},{"x":72.84769266843796,"y":46.6731995344162},{"x":72.5912556052208,"y":59.78170037269592},{"x":72.49848246574402,"y":72.47795909643173},{"x":72.59156405925751,"y":82.31859505176544},{"x":63.02006542682648,"y":85.39192378520966},{"x":67.24515706300735,"y":87.40304410457611},{"x":73.31620305776596,"y":89.13427591323853},{"x":79.3295681476593,"y":87.3850017786026},{"x":83.98161828517914,"y":85.33579409122467},{"x":34.017493575811386,"y":42.064668238162994},{"x":39.69891518354416,"y":39.04064744710922},{"x":47.665129601955414,"y":39.02306109666824},{"x":55.84650635719299,"y":43.793052434921265},{"x":48.43880832195282,"y":46.189695596694946},{"x":39.91182893514633,"y":45.974622666835785},{"x":90.23652970790863,"y":43.494392931461334},{"x":97.89576530456543,"y":38.67722600698471},{"x":105.97457885742188,"y":38.45117390155792},{"x":112.57963478565216,"y":41.22479259967804},{"x":106.20929896831512,"y":45.47332227230072},{"x":97.40135371685028,"y":45.80201804637909},{"x":51.17177367210388,"y":100.92100203037262},{"x":58.8924765586853,"y":100.64716637134552},{"x":68.65793466567993,"y":99.5934247970581},{"x":73.81858080625534,"y":100.83856880664825},{"x":78.77743542194366,"y":99.58769381046295},{"x":89.21037912368774,"y":100.49387812614441},{"x":98.3612447977066,"y":100.58583319187164},{"x":88.92414271831512,"y":107.61089622974396},{"x":81.55436217784882,"y":111.79174482822418},{"x":74.08711463212967,"y":112.78842687606812},{"x":66.74499660730362,"y":112.13003396987915},{"x":59.4507560133934,"y":108.14197361469269},{"x":52.86548137664795,"y":100.84743797779083},{"x":67.18341708183289,"y":104.20102179050446},{"x":73.75064492225647,"y":104.48753535747528},{"x":80.83339333534241,"y":104.14700210094452},{"x":96.58516645431519,"y":100.67276358604431},{"x":80.59312999248505,"y":104.5551985502243},{"x":73.77402484416962,"y":105.33222556114197},{"x":67.1465814113617,"y":104.65545952320099}]
\ No newline at end of file
[{"x": 9.995004907250404, "y": 53.55449616909027}, {"x": 12.50796876847744, "y": 71.41348421573639}, {"x": 16.677917540073395, "y": 88.59677910804749}, {"x": 22.6475290954113, "y": 104.6014130115509}, {"x": 30.59161528944969, "y": 119.35952603816986}, {"x": 41.422560811042786, "y": 132.23226964473724}, {"x": 54.74700182676315, "y": 142.4335777759552}, {"x": 70.32481580972672, "y": 149.33189749717712}, {"x": 87.31497824192047, "y": 150.50972700119019}, {"x": 103.98584604263306, "y": 145.98273038864136}, {"x": 117.90181696414948, "y": 135.19554734230042}, {"x": 128.67935299873352, "y": 121.79077863693237}, {"x": 136.7296814918518, "y": 105.85636496543884}, {"x": 140.29521346092224, "y": 88.25878500938416}, {"x": 140.9232795238495, "y": 70.16736567020416}, {"x": 140.2374029159546, "y": 52.73242145776749}, {"x": 137.97148168087006, "y": 34.537942707538605}, {"x": 14.37721811234951, "y": 33.1049881875515}, {"x": 22.6781465113163, "y": 24.685607850551605}, {"x": 34.36600640416145, "y": 21.1758591234684}, {"x": 46.24761343002319, "y": 22.49436378479004}, {"x": 57.12086856365204, "y": 26.742971688508987}, {"x": 81.21025264263153, "y": 23.014162480831146}, {"x": 92.2086775302887, "y": 15.48520065844059}, {"x": 104.77548837661743, "y": 11.306393891572952}, {"x": 117.67798662185669, "y": 11.740228906273842}, {"x": 127.28274464607239, "y": 18.115675449371338}, {"x": 69.62742805480957, "y": 41.51403307914734}, {"x": 70.82946002483368, "y": 55.146731436252594}, {"x": 71.84555232524872, "y": 68.59723627567291}, {"x": 73.0046421289444, "y": 81.93029165267944}, {"x": 60.417647659778595, "y": 88.01697492599487}, {"x": 67.98770427703857, "y": 90.65443575382233}, {"x": 76.07284784317017, "y": 91.86699986457825}, {"x": 84.35145914554596, "y": 88.2117748260498}, {"x": 90.86072444915771, "y": 83.67109894752502}, {"x": 28.828849643468857, "y": 47.794362902641296}, {"x": 36.311765760183334, "y": 43.33548992872238}, {"x": 44.95347887277603, "y": 43.20283681154251}, {"x": 52.85406410694122, "y": 48.07424694299698}, {"x": 44.7566494345665, "y": 49.9691516160965}, {"x": 35.997654497623444, "y": 50.32083839178085}, {"x": 89.51361179351807, "y": 42.501528561115265}, {"x": 97.55686819553375, "y": 35.38782298564911}, {"x": 106.73499405384064, "y": 33.59129726886749}, {"x": 114.8474782705307, "y": 36.34611591696739}, {"x": 108.40394496917725, "y": 40.97002297639847}, {"x": 98.98389279842377, "y": 42.47862249612808}, {"x": 53.17014008760452, "y": 109.99322533607483}, {"x": 62.47727572917938, "y": 105.5664449930191}, {"x": 72.82306104898453, "y": 102.35638618469238}, {"x": 80.85319697856903, "y": 103.16510796546936}, {"x": 89.42103087902069, "y": 100.08856952190399}, {"x": 99.8135894536972, "y": 100.0435084104538}, {"x": 109.78849232196808, "y": 101.60946249961853}, {"x": 101.90783143043518, "y": 115.25328755378723}, {"x": 92.65078604221344, "y": 122.49988317489624}, {"x": 83.28675627708435, "y": 125.00075697898865}, {"x": 74.31002408266068, "y": 125.16917288303375}, {"x": 63.37641924619675, "y": 121.38420939445496}, {"x": 57.85811394453049, "y": 110.28821468353271}, {"x": 73.27612638473511, "y": 108.2253098487854}, {"x": 81.34059011936188, "y": 108.251291513443}, {"x": 89.9710088968277, "y": 105.99507093429565}, {"x": 104.85810041427612, "y": 103.1228095293045}, {"x": 90.87785482406616, "y": 112.19902038574219}, {"x": 82.05846548080444, "y": 114.52528238296509}, {"x": 73.8232746720314, "y": 114.64338898658752}]
\ No newline at end of file
[{"x":9.57956425845623,"y":52.39383280277252},{"x":12.517975643277168,"y":69.67290490865707},{"x":17.382895946502686,"y":85.59838235378265},{"x":22.254569828510284,"y":100.24277865886688},{"x":29.952556639909744,"y":115.30093252658844},{"x":40.607236325740814,"y":127.02118456363678},{"x":52.21455842256546,"y":135.75681746006012},{"x":66.94714576005936,"y":144.7398841381073},{"x":87.62003481388092,"y":148.519966006279},{"x":107.54483342170715,"y":139.5822286605835},{"x":120.26938498020172,"y":127.25696861743927},{"x":129.46229875087738,"y":116.31288528442383},{"x":136.60779297351837,"y":101.43148005008698},{"x":139.15124237537384,"y":84.36994850635529},{"x":139.66587781906128,"y":68.84740144014359},{"x":139.49655890464783,"y":52.11438238620758},{"x":138.19187879562378,"y":34.275998175144196},{"x":17.73911565542221,"y":34.247177839279175},{"x":23.905900865793228,"y":27.4917371571064},{"x":33.15091207623482,"y":23.992185294628143},{"x":42.38297492265701,"y":24.080870300531387},{"x":50.80330967903137,"y":25.668590515851974},{"x":82.72879421710968,"y":22.588082402944565},{"x":90.8599466085434,"y":18.972241133451462},{"x":100.4738599061966,"y":16.92224331200123},{"x":111.04867458343506,"y":17.707618698477745},{"x":120.33791542053223,"y":22.05384224653244},{"x":69.454425573349,"y":45.07347196340561},{"x":70.71190774440765,"y":59.0581476688385},{"x":71.70603275299072,"y":72.0032662153244},{"x":73.040771484375,"y":81.89877569675446},{"x":63.307446241378784,"y":87.61201500892639},{"x":68.28959137201309,"y":88.8374537229538},{"x":75.32510161399841,"y":89.66150879859924},{"x":81.8707287311554,"y":87.05066442489624},{"x":87.0687872171402,"y":84.28579866886139},{"x":31.470197439193726,"y":46.391429007053375},{"x":36.97886019945145,"y":42.39812046289444},{"x":45.00039964914322,"y":41.7159765958786},{"x":53.23628783226013,"y":45.5289289355278},{"x":46.301740407943726,"y":48.1160894036293},{"x":37.982627749443054,"y":48.80691468715668},{"x":87.06339597702026,"y":41.115787625312805},{"x":93.96767914295197,"y":35.74279770255089},{"x":102.04813778400421,"y":34.39944013953209},{"x":109.27990972995758,"y":36.874495446681976},{"x":102.8844952583313,"y":40.83576053380966},{"x":94.25925314426422,"y":42.34584420919418},{"x":51.57048851251602,"y":105.63550293445587},{"x":58.90470743179321,"y":101.6682118177414},{"x":70.55880725383759,"y":98.85237514972687},{"x":77.36653983592987,"y":99.13035929203033},{"x":83.67621302604675,"y":97.07690477371216},{"x":97.94619083404541,"y":96.29683792591095},{"x":109.81523394584656,"y":97.79501259326935},{"x":101.1863261461258,"y":112.63381540775299},{"x":92.58085191249847,"y":120.5494076013565},{"x":82.98978209495544,"y":123.54103624820709},{"x":73.21132868528366,"y":123.69250059127808},{"x":63.237668573856354,"y":118.47777664661407},{"x":53.231893479824066,"y":105.59755861759186},{"x":69.4526419043541,"y":103.36487889289856},{"x":78.06874215602875,"y":102.5748610496521},{"x":87.34851479530334,"y":101.16179287433624},{"x":108.10398459434509,"y":98.21300804615021},{"x":90.36072492599487,"y":113.51232826709747},{"x":81.56309723854065,"y":116.386878490448},{"x":72.68635332584381,"y":116.3683533668518}]
\ No newline at end of file
[{"x":10.509434714913368,"y":52.461858093738556},{"x":13.533616438508034,"y":69.72497999668121},{"x":18.125666677951813,"y":85.49389243125916},{"x":22.68524095416069,"y":99.90644752979279},{"x":29.770859330892563,"y":115.02401232719421},{"x":40.009237825870514,"y":127.17496454715729},{"x":51.13186240196228,"y":134.8838210105896},{"x":64.93598967790604,"y":142.67239272594452},{"x":86.1398845911026,"y":145.5208271741867},{"x":106.27160668373108,"y":137.6600593328476},{"x":119.85296308994293,"y":126.55811011791229},{"x":129.32697236537933,"y":115.91286063194275},{"x":136.9260460138321,"y":101.54499113559723},{"x":140.04463255405426,"y":85.47771871089935},{"x":140.39686918258667,"y":70.350381731987},{"x":140.93535840511322,"y":53.595203161239624},{"x":139.76540565490723,"y":35.78364551067352},{"x":18.718457221984863,"y":33.92140567302704},{"x":24.8894065618515,"y":27.165759354829788},{"x":34.25554856657982,"y":23.889242112636566},{"x":43.19920241832733,"y":23.89446794986725},{"x":51.55668407678604,"y":25.493214279413223},{"x":83.17877948284149,"y":22.116592526435852},{"x":91.0528689622879,"y":19.1002294421196},{"x":100.33524334430695,"y":17.00422614812851},{"x":110.7668548822403,"y":18.07868331670761},{"x":119.95638906955719,"y":22.73145094513893},{"x":69.94039714336395,"y":44.93928104639053},{"x":70.8938866853714,"y":58.68610739707947},{"x":71.92910313606262,"y":71.54497504234314},{"x":73.07412475347519,"y":81.73994421958923},{"x":63.52762430906296,"y":87.66357600688934},{"x":68.80622059106827,"y":89.00657594203949},{"x":75.79838633537292,"y":89.81735408306122},{"x":82.58680701255798,"y":87.12102770805359},{"x":87.82331049442291,"y":84.34564769268036},{"x":32.21326768398285,"y":45.98721116781235},{"x":37.76122033596039,"y":42.323389649391174},{"x":45.626114308834076,"y":41.58268868923187},{"x":53.76068651676178,"y":45.14274448156357},{"x":46.830734610557556,"y":47.79057204723358},{"x":38.68361413478851,"y":48.451441526412964},{"x":87.2931182384491,"y":41.23439937829971},{"x":93.99429559707642,"y":36.358749121427536},{"x":101.83376669883728,"y":35.318271070718765},{"x":109.02988314628601,"y":37.269607186317444},{"x":102.72921323776245,"y":41.246773302555084},{"x":94.33983564376831,"y":42.437638342380524},{"x":51.489101350307465,"y":106.93963766098022},{"x":59.81220602989197,"y":103.0700147151947},{"x":71.77513092756271,"y":100.07118880748749},{"x":78.22524905204773,"y":100.49879550933838},{"x":84.36182141304016,"y":98.41773211956024},{"x":98.11981916427612,"y":97.42594063282013},{"x":109.53287780284882,"y":98.12568426132202},{"x":99.13961291313171,"y":110.45710444450378},{"x":90.27182757854462,"y":117.69201457500458},{"x":80.78381717205048,"y":120.45529782772064},{"x":71.48520648479462,"y":120.73915600776672},{"x":62.03146129846573,"y":116.77920520305634},{"x":53.2006099820137,"y":106.71007633209229},{"x":70.40069103240967,"y":104.98761534690857},{"x":78.83743643760681,"y":104.08617854118347},{"x":88.0838692188263,"y":102.68035233020782},{"x":107.74409472942352,"y":98.4467625617981},{"x":88.4322077035904,"y":110.55790185928345},{"x":79.5111358165741,"y":113.10129761695862},{"x":71.03536427021027,"y":113.31479251384735}]
\ No newline at end of file
[{"x": 1.41040606983006, "y": 39.10264679789543}, {"x": 6.364097021520138, "y": 59.51536446809769}, {"x": 9.736957371234894, "y": 77.80020213127136}, {"x": 13.817122921347618, "y": 96.05930614471436}, {"x": 20.00808236002922, "y": 110.73724734783173}, {"x": 26.37610113620758, "y": 121.9759613275528}, {"x": 33.717534959316254, "y": 132.17582309246063}, {"x": 41.72355371713638, "y": 140.95428133010864}, {"x": 50.880420446395874, "y": 146.48704254627228}, {"x": 61.8572758436203, "y": 146.95429050922394}, {"x": 72.31115305423737, "y": 142.27578461170197}, {"x": 81.12127649784088, "y": 134.44229400157928}, {"x": 90.62704622745514, "y": 123.21754229068756}, {"x": 99.09188437461853, "y": 110.66853940486908}, {"x": 106.08789837360382, "y": 92.88722932338715}, {"x": 110.42981934547424, "y": 72.83273243904114}, {"x": 110.97252583503723, "y": 51.15715354681015}, {"x": 19.203872233629227, "y": 37.71118628978729}, {"x": 30.421346753835678, "y": 37.16629707813263}, {"x": 39.97739166021347, "y": 40.400769114494324}, {"x": 49.04381215572357, "y": 45.61803185939789}, {"x": 56.723132252693176, "y": 53.29851043224335}, {"x": 56.084791123867035, "y": 46.76303869485855}, {"x": 65.71077406406403, "y": 46.11447751522064}, {"x": 75.0335134267807, "y": 46.96638810634613}, {"x": 83.45012521743774, "y": 51.2211879491806}, {"x": 90.43923103809357, "y": 59.06730401515961}, {"x": 57.634793639183044, "y": 60.69884181022644}, {"x": 56.081126153469086, "y": 72.10934686660767}, {"x": 54.33526223897934, "y": 84.50968235731125}, {"x": 52.046833634376526, "y": 99.18286514282227}, {"x": 43.99328297376633, "y": 99.4484453201294}, {"x": 49.026043593883514, "y": 104.39998996257782}, {"x": 55.01739031076431, "y": 107.4150230884552}, {"x": 59.81684720516205, "y": 105.90647208690643}, {"x": 64.0739357471466, "y": 101.74840021133423}, {"x": 27.087938010692596, "y": 55.09133046865463}, {"x": 34.27653384208679, "y": 55.21461433172226}, {"x": 42.54729217290878, "y": 57.39108908176422}, {"x": 48.454275488853455, "y": 61.82331371307373}, {"x": 41.1783966422081, "y": 61.66855639219284}, {"x": 34.177026987075806, "y": 60.50751310586929}, {"x": 59.51743584871292, "y": 62.6235288977623}, {"x": 65.59782898426056, "y": 61.08310657739639}, {"x": 73.38363683223724, "y": 63.624403953552246}, {"x": 78.78980994224548, "y": 67.99472141265869}, {"x": 72.09050583839417, "y": 68.4499539732933}, {"x": 64.50075209140778, "y": 66.9551106095314}, {"x": 34.73506963253021, "y": 112.76923489570618}, {"x": 42.499454855918884, "y": 113.63057744503021}, {"x": 49.24748706817627, "y": 114.29424142837524}, {"x": 55.50651115179062, "y": 115.7518025636673}, {"x": 62.20475721359253, "y": 116.19831931591034}, {"x": 66.55372452735901, "y": 117.66684019565582}, {"x": 71.82598805427551, "y": 118.23190891742706}, {"x": 64.1076112985611, "y": 127.00456368923187}, {"x": 58.63429069519043, "y": 129.7624831199646}, {"x": 52.65244817733765, "y": 129.39003217220306}, {"x": 47.463079154491425, "y": 127.39845669269562}, {"x": 42.28087282180786, "y": 123.10187613964081}, {"x": 38.320072412490845, "y": 114.88845479488373}, {"x": 49.383214592933655, "y": 119.21215355396271}, {"x": 55.4133198261261, "y": 120.68333745002747}, {"x": 60.75339984893799, "y": 121.00764191150665}, {"x": 67.49378943443298, "y": 118.56007528305054}, {"x": 59.50732082128525, "y": 124.34931361675262}, {"x": 54.06349813938141, "y": 124.39959263801575}, {"x": 48.627867102622986, "y": 122.32591986656189}]
\ No newline at end of file
[{"x":9.103168368339539,"y":101.01195418834686},{"x":14.784232437610626,"y":109.96735978126526},{"x":20.72097545862198,"y":120.9920563697815},{"x":23.68257150053978,"y":127.4499876499176},{"x":33.172756016254425,"y":135.1237609386444},{"x":40.30949687957764,"y":136.57750260829926},{"x":46.08676642179489,"y":136.41320192813873},{"x":48.44881075620651,"y":143.47557425498962},{"x":58.82970488071442,"y":146.31987726688385},{"x":65.03185284137726,"y":143.93176698684692},{"x":70.69711172580719,"y":141.56521546840668},{"x":73.59640145301819,"y":140.66094636917114},{"x":85.81815421581268,"y":125.65490245819092},{"x":91.43581211566925,"y":117.32116794586182},{"x":93.22071814537048,"y":103.55141079425812},{"x":97.05579698085785,"y":97.57390463352203},{"x":89.83693969249725,"y":80.89369875192642},{"x":8.929109543561935,"y":95.41884541511536},{"x":15.941815882921219,"y":91.92907392978668},{"x":22.651149570941925,"y":87.75521492958069},{"x":25.080495923757553,"y":87.33296239376068},{"x":35.09866887331009,"y":87.67910146713257},{"x":55.91999834775925,"y":77.73741436004639},{"x":60.79969918727875,"y":76.88318556547165},{"x":72.479785323143,"y":77.81150668859482},{"x":72.09985733032227,"y":80.98973709344864},{"x":84.31956672668457,"y":76.90173119306564},{"x":46.01968437433243,"y":93.13016855716705},{"x":44.01630175113678,"y":100.97888398170471},{"x":40.80449330806732,"y":107.36412870883942},{"x":38.621174454689026,"y":114.48911905288696},{"x":33.12944173812866,"y":118.61227464675903},{"x":35.98146861791611,"y":119.76905286312103},{"x":43.14035201072693,"y":121.47148418426514},{"x":49.96515953540802,"y":119.40146112442017},{"x":54.14790153503418,"y":118.55489778518677},{"x":22.290891706943512,"y":101.89636206626892},{"x":26.193063497543335,"y":97.70843470096588},{"x":32.05891406536102,"y":95.37641751766205},{"x":36.877059400081635,"y":95.59315097332001},{"x":31.79427993297577,"y":98.80662655830383},{"x":26.30974444746971,"y":101.54476964473724},{"x":53.97727316617966,"y":88.98845142126083},{"x":59.00451451539993,"y":90.48788344860077},{"x":65.20665884017944,"y":89.76256692409515},{"x":72.8481148481369,"y":81.40269559621811},{"x":68.15013182163239,"y":88.9257538318634},{"x":59.68368661403656,"y":92.8312953710556},{"x":26.978514283895493,"y":124.41534793376923},{"x":37.64959371089935,"y":129.4168745279312},{"x":38.14149236679077,"y":127.94919180870056},{"x":44.06257927417755,"y":127.01305139064789},{"x":48.707089364528656,"y":122.96710205078125},{"x":57.109412133693695,"y":125.86821961402893},{"x":63.49719738960266,"y":116.9522500038147},{"x":51.657943189144135,"y":119.83492803573608},{"x":46.5363906621933,"y":126.18525648117065},{"x":43.10889798402786,"y":128.2001837491989},{"x":42.599557995796204,"y":130.2384203672409},{"x":31.888991057872772,"y":126.56950533390045},{"x":27.653676003217697,"y":126.88065385818481},{"x":44.846410274505615,"y":133.13909232616425},{"x":46.87078648805618,"y":129.8393074274063},{"x":52.942511677742004,"y":126.64793169498444},{"x":62.26701807975769,"y":119.98195624351501},{"x":47.63777244091034,"y":122.5474488735199},{"x":42.832436323165894,"y":123.82451903820038},{"x":39.61905354261398,"y":124.0300487279892}]
\ No newline at end of file
[{"x":28.1980222761631,"y":82.78948521614075},{"x":41.05900514125824,"y":94.1000794172287},{"x":45.85652047395706,"y":100.0026285648346},{"x":46.66536271572113,"y":103.72171652317047},{"x":46.17695450782776,"y":108.95469212532043},{"x":44.9439537525177,"y":113.12937867641449},{"x":41.77620494365692,"y":118.82230281829834},{"x":36.76300173997879,"y":120.5938982963562},{"x":40.35541081428528,"y":126.7483412027359},{"x":45.805581748485565,"y":129.04026460647583},{"x":52.93079322576523,"y":126.84588611125946},{"x":53.27251535654068,"y":126.36341333389282},{"x":55.39190810918808,"y":125.28188920021057},{"x":61.80034518241882,"y":123.59300637245178},{"x":70.61709320545197,"y":115.20878064632416},{"x":82.92120599746704,"y":111.2279531955719},{"x":81.62196671962738,"y":100.77173101902008},{"x":24.95584148168564,"y":76.60648649930954},{"x":32.25624072551727,"y":74.50906938314438},{"x":29.986725986003876,"y":73.17802804708481},{"x":37.48139047622681,"y":68.97298204898834},{"x":43.13521087169647,"y":72.66015625},{"x":66.04641699790955,"y":72.61856651306152},{"x":67.14672982692719,"y":77.07855653762817},{"x":75.16640496253967,"y":78.80701857805252},{"x":78.36494970321655,"y":81.77029263973236},{"x":83.96591889858246,"y":86.9630047082901},{"x":49.43720746040344,"y":86.65960651636124},{"x":45.592297196388245,"y":89.74523079395294},{"x":38.21692967414856,"y":95.09447729587555},{"x":36.639003574848175,"y":99.00447487831116},{"x":38.06128841638565,"y":99.63473975658417},{"x":38.76173406839371,"y":100.46630108356476},{"x":41.303012907505035,"y":101.67539536952972},{"x":44.19621616601944,"y":103.10262358188629},{"x":43.459695279598236,"y":107.30739903450012},{"x":35.52263468503952,"y":84.4736732840538},{"x":35.70898097753525,"y":81.59145677089691},{"x":39.94155639410019,"y":83.26475405693054},{"x":42.95827788114548,"y":86.43353658914566},{"x":39.764176189899445,"y":87.32476645708084},{"x":36.219153583049774,"y":85.95869213342667},{"x":64.10197567939758,"y":89.49556505680084},{"x":68.22205686569214,"y":86.13673758506775},{"x":71.8127316236496,"y":86.98408073186874},{"x":73.26841568946838,"y":89.27346312999725},{"x":71.92459321022034,"y":92.17298924922943},{"x":62.44171500205994,"y":93.04573714733124},{"x":31.96991491317749,"y":107.6513100862503},{"x":36.91116398572922,"y":108.80632710456848},{"x":37.83100974559784,"y":107.84696221351624},{"x":39.75290495157242,"y":108.15859878063202},{"x":41.08729958534241,"y":109.05613076686859},{"x":45.37723106145859,"y":114.44351887702942},{"x":49.86580538749695,"y":115.59975600242615},{"x":43.856497406959534,"y":108.97726941108704},{"x":41.35492968559265,"y":110.25707685947418},{"x":40.04151773452759,"y":111.69485104084015},{"x":36.815838396549225,"y":109.72805964946747},{"x":36.58897018432617,"y":108.29451870918274},{"x":32.02847445011139,"y":108.27437102794647},{"x":39.47241109609604,"y":111.86161315441132},{"x":40.09113299846649,"y":111.6380364894867},{"x":43.23629933595657,"y":113.00234961509705},{"x":49.69379901885986,"y":116.33892869949341},{"x":41.574267983436584,"y":107.91563832759857},{"x":39.02515745162964,"y":108.83277690410614},{"x":38.635754346847534,"y":107.74428224563599}]
\ No newline at end of file
[[-0.11301642656326294, 0.05311831831932068, 0.11299516260623932, 0.06697624176740646, -0.21439769864082336, 0.018440978601574898, -0.02246944047510624, -0.07858379185199738, 0.1299576610326767, -0.07627607882022858, 0.13028405606746674, -0.07381529361009598, -0.2666480243206024, 0.1386503130197525, -0.0318572111427784, 0.19745664298534393, -0.06815779209136963, -0.10036905854940414, -0.14179939031600952, -0.08129233121871948, 0.022137288004159927, 0.040264301002025604, 0.040526989847421646, 0.13235996663570404, -0.18518206477165222, -0.32066434621810913, -0.02661932446062565, -0.05834241956472397, 0.03743532672524452, -0.00874195247888565, -0.07306552678346634, 0.08665299415588379, -0.16994774341583252, -0.013914648443460464, 0.045591093599796295, 0.011259820312261581, -0.015375563874840736, -0.02478434517979622, 0.22394348680973053, 0.019354572519659996, -0.29177573323249817, 0.007424432784318924, 0.09004595875740051, 0.196985125541687, 0.17434047162532806, 0.07935666292905807, 0.10738393664360046, -0.08182166516780853, 0.09036535769701004, -0.35426175594329834, 0.004522169940173626, 0.14777712523937225, 0.03345843032002449, 0.019831661134958267, 0.05174245312809944, -0.21797265112400055, -0.0635240375995636, 0.1138913482427597, -0.14936882257461548, 0.13345786929130554, 0.09437544643878937, 0.013876287266612053, -0.05527258664369583, -0.09154847264289856, 0.19714784622192383, 0.12585902214050293, -0.1258784979581833, -0.14687272906303406, 0.15844950079917908, -0.22417423129081726, -0.009384687058627605, 0.16835945844650269, -0.0978832021355629, -0.23462620377540588, -0.2714555859565735, 0.013164130970835686, 0.5018162727355957, 0.15732169151306152, -0.17715050280094147, -0.05510217696428299, -0.028521616011857986, 0.016591474413871765, 0.06292184442281723, 0.06307955831289291, -0.05202113837003708, -0.04303480684757233, -0.06258511543273926, 0.04492054134607315, 0.2579847276210785, -0.030089672654867172, 0.034749776124954224, 0.2730059027671814, 0.10963069647550583, -0.018608057871460915, -0.03264498710632324, 0.17454616725444794, -0.14471100270748138, -0.05291951075196266, -0.15773987770080566, -0.00878031924366951, 0.013892430812120438, 0.03880078345537186, 0.06900060176849365, 0.07285363972187042, -0.1963559240102768, 0.1951112151145935, -0.1176108717918396, -0.0644276961684227, -0.05753452330827713, 0.0583438016474247, -0.13664516806602478, 0.008200451731681824, 0.18180623650550842, -0.19785352051258087, 0.08596935868263245, 0.18097352981567383, -0.02679232507944107, 0.0758017972111702, 0.04083810746669769, 0.06573939323425293, 0.028857335448265076, 0.02794247679412365, -0.1294119507074356, -0.12546013295650482, 0.09301090985536575, -0.18581253290176392, -0.00008967332541942596, 0.004743552301079035], [-0.09994355589151382, 0.10224375128746033, 0.05058574303984642, -0.007721252739429474, -0.017086468636989594, 0.07549440860748291, -0.035992272198200226, -0.05198703333735466, 0.21361662447452545, -0.12978722155094147, 0.240940660238266, 0.006456747651100159, -0.27226075530052185, -0.013018697500228882, -0.08444526791572571, 0.08976947516202927, -0.09226515889167786, -0.06434378027915955, -0.07935208082199097, -0.01867634989321232, 0.10694169998168945, 0.07422233372926712, 0.04553782194852829, -0.010077288374304771, -0.11393612623214722, -0.4091143012046814, -0.14219625294208527, -0.0598783977329731, -0.026971451938152313, -0.03787655383348465, 0.021513912826776505, -0.012842817232012749, -0.1919005811214447, -0.000048376619815826416, 0.014531563967466354, 0.06467536091804504, -0.07482472062110901, 0.012392744421958923, 0.1304527223110199, 0.014805854298174381, -0.13836951553821564, 0.02878289297223091, 0.033762313425540924, 0.28061288595199585, 0.10587205737829208, 0.0318145789206028, 0.00440259650349617, -0.11348624527454376, 0.036986637860536575, -0.26385852694511414, 0.1499217301607132, 0.14649057388305664, 0.11839955300092697, 0.10325036942958832, 0.17655009031295776, -0.09731947630643845, -0.03258107975125313, 0.14808624982833862, -0.15074148774147034, 0.10213347524404526, 0.06218596547842026, 0.06304526329040527, -0.019552389159798622, -0.10384533554315567, 0.13429109752178192, 0.14194521307945251, -0.16596026718616486, -0.19037191569805145, 0.04928822070360184, -0.1992926299571991, 0.017874792218208313, 0.1040906235575676, -0.08356981724500656, -0.2674674391746521, -0.26023608446121216, 0.12374836206436157, 0.42628446221351624, 0.20582066476345062, -0.14651867747306824, -0.026605937629938126, -0.057607077062129974, -0.06105601787567139, 0.06685034930706024, 0.00046340934932231903, -0.08286283910274506, 0.025767460465431213, -0.06461362540721893, 0.0723767876625061, 0.17591258883476257, -0.006310688331723213, -0.07715718448162079, 0.25646382570266724, -0.04985096678137779, 0.0062642693519592285, 0.00570443831384182, 0.046732913702726364, -0.10989770293235779, -0.003452849108725786, -0.1805979162454605, 0.024943644180893898, -0.07201632112264633, -0.10125844925642014, -0.04925733804702759, 0.021053487434983253, -0.13046781718730927, 0.1533353179693222, -0.01654619723558426, -0.06076410412788391, -0.014542249031364918, 0.05473938211798668, -0.26792800426483154, -0.009533338248729706, 0.1733490526676178, -0.29974472522735596, 0.20299524068832397, 0.1027199774980545, 0.08181609213352203, 0.16548770666122437, 0.1160709485411644, 0.08434373885393143, 0.01546089630573988, -0.02321481704711914, -0.11887650936841965, -0.07879133522510529, 0.04050300642848015, -0.018666662275791168, 0.02767147496342659, -0.0409514494240284], [-0.12437328696250916, 0.16371744871139526, 0.057088494300842285, -0.08345270156860352, -0.1361895501613617, -0.007239761762320995, -0.0027456339448690414, -0.0022191042080521584, 0.1767570823431015, -0.029083389788866043, 0.1353265941143036, -0.020310351625084877, -0.287823885679245, 0.03621964901685715, -0.1308278739452362, 0.1081429049372673, -0.23993228375911713, -0.10986220091581345, -0.05526617169380188, -0.16110815107822418, 0.0338473841547966, 0.1609116494655609, -0.031369976699352264, 0.04462018609046936, -0.12118063867092133, -0.26080891489982605, -0.005951732397079468, -0.1575908213853836, 0.0643172413110733, -0.1461418718099594, 0.07567547261714935, 0.107530377805233, -0.09414676576852798, -0.04453685134649277, 0.006743345409631729, 0.0339377298951149, -0.015679262578487396, -0.073453888297081, 0.21779049932956696, 0.05521396920084953, -0.1335650384426117, 0.010233767330646515, 0.0664336159825325, 0.430218368768692, 0.13693466782569885, -0.0009829048067331314, 0.0017257444560527802, -0.04437744617462158, 0.15366870164871216, -0.21540115773677826, 0.0167088583111763, 0.1910901665687561, 0.05646311119198799, 0.043141767382621765, 0.1210416778922081, -0.17660900950431824, 0.02089228481054306, 0.10505655407905579, -0.22187289595603943, 0.08246994763612747, 0.1212199255824089, 0.001875532791018486, 0.007675278931856155, -0.11065125465393066, 0.11531264334917068, -0.0005581285804510117, -0.08609281480312347, -0.12632550299167633, 0.11016186326742172, -0.18078474700450897, -0.1049041897058487, 0.1042267382144928, -0.10656270384788513, -0.11614145338535309, -0.22367611527442932, 0.02147454395890236, 0.3818414807319641, 0.19803355634212494, -0.04573599621653557, 0.03495173156261444, -0.02827727422118187, -0.07291625440120697, 0.09016091376543045, 0.022530820220708847, -0.16063527762889862, 0.008984813466668129, -0.06500966101884842, 0.06870897859334946, 0.1445840448141098, 0.07035897672176361, -0.09533844888210297, 0.16255708038806915, 0.03426520526409149, -0.07016268372535706, 0.020144084468483925, 0.0068038590252399445, -0.14746502041816711, 0.02669757604598999, -0.1343773752450943, -0.0007380247116088867, 0.036735646426677704, -0.16095727682113647, 0.003342229872941971, 0.09120983630418777, -0.18368342518806458, 0.12250301241874695, 0.014707496389746666, -0.011677264235913754, -0.09200786054134369, 0.054589901119470596, -0.17861320078372955, 0.08242300897836685, 0.2472871094942093, -0.2322787046432495, 0.17269502580165863, 0.16788843274116516, 0.047502290457487106, 0.1130535900592804, 0.10760728269815445, -0.010811767540872097, -0.047366999089717865, -0.04577387124300003, -0.12238828837871552, -0.1456669420003891, 0.06693950295448303, -0.025252800434827805, 0.12544143199920654, 0.0265400018543005], [0.025927569717168808, 0.15663708746433258, 0.058965474367141724, -0.028551187366247177, -0.12631410360336304, 0.022237226366996765, 0.01126374676823616, -0.1872863471508026, 0.1682029664516449, -0.002070157788693905, 0.15346597135066986, -0.18673506379127502, -0.278525710105896, 0.04948587715625763, -0.03619107976555824, 0.1413515955209732, -0.060395412147045135, -0.2583189606666565, -0.13808242976665497, -0.07600552588701248, 0.04279348626732826, -0.0666167140007019, 0.05459671467542648, 0.149562269449234, -0.23997187614440918, -0.3192921280860901, -0.06438620388507843, -0.06955230236053467, -0.016590990126132965, -0.13756340742111206, 0.016080018132925034, 0.10797879099845886, -0.1965179443359375, 0.0034376978874206543, 0.06646829843521118, 0.05213041231036186, -0.032798610627651215, -0.20469960570335388, 0.20994003117084503, 0.004714690148830414, -0.24007561802864075, -0.025683866813778877, 0.092221200466156, 0.29108813405036926, 0.21951010823249817, -0.012189175933599472, 0.11264907568693161, -0.060570698231458664, 0.03355713561177254, -0.25495976209640503, 0.05203044414520264, 0.2157290279865265, 0.04515017941594124, 0.07426977157592773, 0.045807648450136185, -0.12190262973308563, -0.033570460975170135, 0.16843782365322113, -0.1834886521100998, 0.09117748588323593, 0.15288689732551575, -0.06749839335680008, -0.08566926419734955, -0.19639848172664642, 0.2661381959915161, 0.18407370150089264, -0.1834886372089386, -0.16875605285167694, 0.12717457115650177, -0.18597885966300964, -0.11863835155963898, 0.05518629774451256, -0.18559770286083221, -0.16873560845851898, -0.28400951623916626, -0.014187514781951904, 0.45283856987953186, 0.17721779644489288, -0.2146177440881729, 0.011182520538568497, -0.09624088555574417, 0.10169383138418198, -0.035505618900060654, 0.1689070165157318, -0.0015639550983905792, 0.018879884853959084, -0.07630802690982819, 0.05508717522025108, 0.22385680675506592, -0.03961780667304993, -0.07674316316843033, 0.23865419626235962, -0.04872302711009979, -0.09690545499324799, -0.06860771775245667, 0.05698356404900551, -0.14728271961212158, 0.010753602720797062, -0.08920906484127045, -0.04629332199692726, -0.038761310279369354, 0.09933528304100037, 0.031854718923568726, 0.14741075038909912, -0.17927861213684082, 0.1629253327846527, -0.04969882220029831, 0.00284720491617918, -0.010596400126814842, -0.0009414497762918472, -0.046387046575546265, -0.0606590211391449, 0.14352722465991974, -0.3583222031593323, 0.06242058053612709, 0.1551140546798706, 0.052389003336429596, 0.04141424223780632, 0.01068437471985817, 0.10475203394889832, 0.11781509220600128, 0.034557536244392395, -0.16312718391418457, -0.06071166321635246, 0.024744128808379173, -0.029767779633402824, -0.00618806853890419, 0.03224271535873413], [-0.0962543934583664, -0.03510488569736481, -0.004949606955051422, 0.008284758776426315, -0.09557978063821793, -0.03148920461535454, -0.0035469243302941322, -0.03148280084133148, 0.15762394666671753, 0.018902912735939026, 0.20940224826335907, -0.0049227150157094, -0.23696963489055634, -0.006771348416805267, -0.053370341658592224, 0.06698818504810333, -0.13303788006305695, -0.08625766634941101, -0.08649979531764984, -0.10049654543399811, 0.06255536526441574, 0.11754642426967621, 0.02521955966949463, 0.08287493139505386, -0.13028612732887268, -0.29643961787223816, -0.11251382529735565, -0.1740148663520813, 0.02946341782808304, -0.14464221894741058, 0.003542322665452957, 0.15385982394218445, -0.14348679780960083, -0.08776889741420746, 0.06114386394619942, 0.044328175485134125, -0.028169168159365654, -0.019242623820900917, 0.1819373369216919, 0.12094853073358536, -0.11942562460899353, 0.013642464764416218, -0.00580492801964283, 0.4194585978984833, 0.17064036428928375, 0.03833707049489021, 0.023577354848384857, -0.0596885085105896, 0.10573002696037292, -0.3004778027534485, 0.13485471904277802, 0.162809818983078, 0.1528499722480774, 0.02323446422815323, 0.11265985667705536, -0.15413106977939606, 0.013475492596626282, 0.13343635201454163, -0.18546022474765778, 0.23613464832305908, 0.1127074807882309, -0.07481369376182556, -0.03090173937380314, -0.11048624664545059, 0.14306733012199402, 0.06088583171367645, -0.10998954623937607, -0.0625547245144844, 0.1647409200668335, -0.115761898458004, -0.07907391339540482, 0.11408128589391708, -0.17270313203334808, -0.2541918158531189, -0.265663743019104, 0.05659070611000061, 0.5032548904418945, 0.1484411507844925, -0.21916182339191437, -0.004813231527805328, -0.049820076674222946, -0.00413606408983469, 0.07484494149684906, 0.07051379978656769, -0.08695848286151886, -0.023705370724201202, -0.12480843812227249, 0.07716438174247742, 0.18726631999015808, 0.022125976160168648, -0.06583775579929352, 0.24017201364040375, -0.004352990537881851, -0.004003781825304031, 0.09011345356702805, 0.05776156485080719, -0.04413218796253204, -0.057881422340869904, -0.15213117003440857, -0.021110566332936287, -0.004055136814713478, -0.16205355525016785, -0.04073438048362732, 0.06350117921829224, -0.14136318862438202, 0.18425655364990234, 0.015558455139398575, -0.038499198853969574, -0.06519972532987595, -0.046765126287937164, -0.12038338929414749, 0.06919427961111069, 0.22361968457698822, -0.25389334559440613, 0.1741548627614975, 0.15434733033180237, 0.11286289244890213, 0.15635934472084045, -0.038396697491407394, 0.058131638914346695, -0.06190327927470207, -0.06887871026992798, -0.19518369436264038, -0.06716073304414749, 0.03750930726528168, -0.016213154420256615, -0.0019600093364715576, 0.03146345913410187], [-0.08438469469547272, 0.034433476626873016, 0.013390637934207916, -0.11032305657863617, -0.1721678525209427, -0.014739526435732841, 0.013159649446606636, -0.04383833706378937, 0.22945237159729004, -0.18055742979049683, 0.10724801570177078, -0.10486509650945663, -0.17328080534934998, 0.11445727944374084, -0.1428213119506836, 0.19179785251617432, -0.1129641979932785, -0.22180527448654175, -0.18176206946372986, -0.17263242602348328, 0.001636851578950882, 0.17328158020973206, -0.08476416766643524, 0.1016133576631546, -0.20712536573410034, -0.2548363208770752, -0.013701280578970909, -0.12087295949459076, 0.028648169711232185, -0.14270061254501343, 0.005408044904470444, 0.16749466955661774, -0.09364913403987885, 0.060463741421699524, 0.0917007252573967, 0.05608232319355011, -0.02542371302843094, -0.11898399889469147, 0.18762332201004028, 0.08870362490415573, -0.21150806546211243, -0.05339662358164787, 0.06960764527320862, 0.342587411403656, 0.24152815341949463, -0.055178068578243256, 0.006454486399888992, -0.12146948277950287, 0.1976870596408844, -0.29518774151802063, 0.03274869918823242, 0.12191275507211685, 0.030610322952270508, 0.14941972494125366, 0.09244397282600403, -0.18991874158382416, -0.0002718530595302582, 0.16477075219154358, -0.17079557478427887, 0.0982893779873848, 0.07169570028781891, -0.14121730625629425, -0.09334538877010345, -0.12710705399513245, 0.2545923888683319, 0.0946723222732544, -0.1666725128889084, -0.21636250615119934, 0.2331445813179016, -0.1981041133403778, -0.0874897837638855, 0.06129404529929161, -0.11788947135210037, -0.11157948523759842, -0.19723665714263916, 0.0467531718313694, 0.3331378996372223, 0.15040019154548645, -0.11666619032621384, 0.07890522480010986, -0.014858516864478588, 0.023824408650398254, -0.011289974674582481, 0.1570158302783966, -0.06161228567361832, -0.08446240425109863, -0.009107670746743679, 0.04418444260954857, 0.22349263727664948, -0.03572162613272667, -0.019860783591866493, 0.22091175615787506, -0.07901038229465485, -0.06882502138614655, -0.033531900495290756, 0.05211462080478668, -0.23550309240818024, 0.05773200839757919, -0.0063783712685108185, 0.00804441049695015, 0.0771300420165062, -0.01622505486011505, 0.031227124854922295, 0.15908673405647278, -0.12141232192516327, 0.24367079138755798, -0.15001045167446136, 0.03848479688167572, -0.008541088551282883, -0.055416084825992584, -0.03920590132474899, 0.006571357604116201, 0.17505057156085968, -0.2050420194864273, 0.187688946723938, 0.0819040909409523, 0.10374179482460022, 0.15251339972019196, 0.04850784316658974, 0.04916004836559296, 0.07320357859134674, 0.0493251234292984, -0.24662616848945618, -0.02634003758430481, 0.08344380557537079, -0.09143543243408203, -0.0650162473320961, 0.04578257352113724]]
\ No newline at end of file
[[-0.11634846031665802,0.028185132890939713,0.13153618574142456,0.06227055937051773,-0.19837689399719238,-0.00583399273455143,-0.010891655460000038,-0.08271414786577225,0.11471451073884964,-0.08123917877674103,0.1272391676902771,-0.07800211757421494,-0.2540743947029114,0.13588032126426697,-0.0307321697473526,0.21247778832912445,-0.06502771377563477,-0.11616527289152145,-0.16744843125343323,-0.09554856270551682,0.016675475984811783,0.04842761904001236,0.0588490292429924,0.11036078631877899,-0.1645691692829132,-0.30832183361053467,-0.027835555374622345,-0.05220288783311844,0.06043601036071777,0.004156157374382019,-0.07474485784769058,0.08250502496957779,-0.17208999395370483,-0.037208594381809235,0.06834948062896729,0.024218283593654633,-0.010694803670048714,-0.024457599967718124,0.23895882070064545,0.0037566320970654488,-0.3064382076263428,0.030196093022823334,0.11086738109588623,0.19818036258220673,0.17517082393169403,0.10740934312343597,0.08606544882059097,-0.0939248651266098,0.06063482165336609,-0.3545883893966675,0.004837671294808388,0.13817209005355835,0.05888642370700836,0.028967585414648056,0.0347638800740242,-0.24132761359214783,-0.04302773252129555,0.11134087294340134,-0.16212642192840576,0.12925370037555695,0.0809628814458847,0.002201097086071968,-0.03398092836141586,-0.07904710620641708,0.19987981021404266,0.12266958504915237,-0.1274474859237671,-0.14003297686576843,0.15968921780586243,-0.22903524339199066,0.0004762057214975357,0.1669495701789856,-0.09815587848424911,-0.21806499361991882,-0.2793239653110504,-0.03180350363254547,0.4801402688026428,0.1383672058582306,-0.1833477020263672,-0.06399453431367874,-0.035138167440891266,0.03462325036525726,0.04942454770207405,0.061923690140247345,-0.07346022129058838,-0.040264375507831573,-0.05405578389763832,0.023277772590517998,0.2506774067878723,-0.039019107818603516,0.029081715270876884,0.27154070138931274,0.11957047879695892,-0.017708241939544678,-0.03387603536248207,0.1796264499425888,-0.13068023324012756,-0.059437572956085205,-0.163712278008461,-0.018396830186247826,0.005119161680340767,0.028815362602472305,0.08526614308357239,0.08816809207201004,-0.22821713984012604,0.18867996335029602,-0.12276707589626312,-0.06185315549373627,-0.046965308487415314,0.07672704011201859,-0.10262928903102875,-0.0063423877581954,0.18558722734451294,-0.19441832602024078,0.09239181876182556,0.2472042441368103,-0.03909676522016525,0.07437402755022049,0.04587577283382416,0.06336627155542374,0.022940605878829956,0.03857211768627167,-0.14419977366924286,-0.11545783281326294,0.07552200555801392,-0.18762795627117157,0.007402816787362099,0.03894437104463577],[-0.09233951568603516,0.07520502805709839,0.0471360944211483,-0.010466556996107101,0.003500264137983322,0.08081695437431335,-0.03387965261936188,-0.03733523562550545,0.21020442247390747,-0.09404481947422028,0.23934143781661987,0.0215359665453434,-0.2780716121196747,-0.005734823644161224,-0.09574554115533829,0.09024519473314285,-0.10668793320655823,-0.05615261569619179,-0.09537789970636368,-0.027305345982313156,0.09641921520233154,0.10733666270971298,0.05930484086275101,-0.013045689091086388,-0.09188339114189148,-0.4106191396713257,-0.13550889492034912,-0.08697408437728882,-0.010390311479568481,-0.02942235767841339,0.007921183481812477,-0.02016676962375641,-0.20198071002960205,-0.006702449172735214,0.0251946821808815,0.06029396504163742,-0.0691690444946289,0.0019519403576850891,0.13320721685886383,0.025177819654345512,-0.12530605494976044,0.035982027649879456,0.05226357653737068,0.2662340998649597,0.11323805153369904,0.04958421364426613,0.010302948765456676,-0.14813672006130219,0.028508305549621582,-0.26059791445732117,0.16988331079483032,0.1463342010974884,0.13083839416503906,0.10920721292495728,0.17165569961071014,-0.12292535603046417,-0.028080930933356285,0.13421514630317688,-0.14230471849441528,0.10813888162374496,0.062350884079933167,0.10053247213363647,-0.02928139455616474,-0.10359776765108109,0.1341533064842224,0.13900268077850342,-0.1618596464395523,-0.19058766961097717,0.04828851297497749,-0.20807933807373047,0.010564304888248444,0.10633311420679092,-0.08496777713298798,-0.2655319571495056,-0.2463349997997284,0.12063290178775787,0.4247370660305023,0.1920347362756729,-0.1615685671567917,-0.011293299496173859,-0.05202388018369675,-0.06393720954656601,0.08093788474798203,0.013875342905521393,-0.10013435781002045,0.036751288920640945,-0.058927882462739944,0.06755547970533371,0.17270849645137787,-0.0017291456460952759,-0.06124574691057205,0.25276318192481995,-0.04711493104696274,0.01840146631002426,0.02631673403084278,0.05701182782649994,-0.09648337215185165,0.008126601576805115,-0.18521596491336823,0.024786625057458878,-0.0613083615899086,-0.08818185329437256,-0.045461710542440414,0.009258095175027847,-0.1212489977478981,0.14221984148025513,-0.01942368969321251,-0.07132497429847717,0.010565785691142082,0.03708035871386528,-0.23937927186489105,-0.017209507524967194,0.18730974197387695,-0.28828105330467224,0.20588818192481995,0.09859722852706909,0.06930434703826904,0.16871735453605652,0.10860501974821091,0.12005928158760071,0.003807918168604374,-0.014734912663698196,-0.15592357516288757,-0.05718443542718887,0.04462910443544388,-0.025487978011369705,0.017820971086621284,-0.03943900391459465],[-0.11277016252279282,0.16098354756832123,0.05988795682787895,-0.11505985260009766,-0.13764601945877075,-0.018125953152775764,-0.014698371291160583,0.006905023939907551,0.1821925789117813,-0.021563978865742683,0.15091851353645325,-0.03721225634217262,-0.3001912534236908,0.016060858964920044,-0.12370184063911438,0.10668390244245529,-0.23569780588150024,-0.10505135357379913,-0.04109210893511772,-0.15012146532535553,0.04892900958657265,0.14137962460517883,-0.02200571820139885,0.0619843527674675,-0.09620106220245361,-0.26027771830558777,-0.01522919349372387,-0.15103775262832642,0.07414765655994415,-0.16027425229549408,0.06372426450252533,0.0926533192396164,-0.09527619183063507,-0.05952545255422592,-0.00499257817864418,0.053665850311517715,-0.02825658954679966,-0.07893257588148117,0.20068708062171936,0.03903854638338089,-0.1258913278579712,0.024329684674739838,0.04781285673379898,0.4228176474571228,0.15255069732666016,0.015188868157565594,0.00788198597729206,-0.03629109263420105,0.1480657160282135,-0.21167446672916412,0.013895329087972641,0.19699665904045105,0.07824041694402695,0.022653454914689064,0.12728801369667053,-0.16246333718299866,0.015902653336524963,0.1294557750225067,-0.2278294563293457,0.09121247380971909,0.11945690214633942,0.005948325619101524,0.010278221219778061,-0.12374573945999146,0.12210510671138763,0.009221900254487991,-0.09743078798055649,-0.1204695850610733,0.12769396603107452,-0.18469031155109406,-0.11325005441904068,0.10493327677249908,-0.11931980401277542,-0.10646456480026245,-0.2169141173362732,0.00949372723698616,0.3720436990261078,0.18269558250904083,-0.057609107345342636,0.030739817768335342,-0.015986662358045578,-0.05097445100545883,0.07677760720252991,0.021433746442198753,-0.16229106485843658,0.006307758390903473,-0.07988199591636658,0.05474869906902313,0.1320134699344635,0.05897970125079155,-0.08336386829614639,0.15999802947044373,0.04017291218042374,-0.054922763258218765,0.025332026183605194,-0.00094560906291008,-0.12491174787282944,0.023214157670736313,-0.1378774344921112,0.009755957871675491,0.021487023681402206,-0.18244768679141998,-0.01072671078145504,0.08217877149581909,-0.17091482877731323,0.11223600804805756,0.017901957035064697,-0.0034023327752947807,-0.10113242268562317,0.06516841799020767,-0.16639231145381927,0.07399401813745499,0.25069838762283325,-0.2423848956823349,0.17325596511363983,0.18680664896965027,0.05174680054187775,0.09361712634563446,0.08969344943761826,0.001638549380004406,-0.03986165672540665,-0.05375079810619354,-0.11656538397073746,-0.14891071617603302,0.04558948427438736,-0.030017226934432983,0.12282832711935043,0.03200910612940788],[0.021662116050720215,0.13764943182468414,0.05227668210864067,-0.04084555804729462,-0.136458158493042,0.04590526968240738,0.0188397578895092,-0.17823219299316406,0.18527886271476746,-0.017288826406002045,0.15326520800590515,-0.18968583643436432,-0.25598442554473877,0.060747843235731125,-0.04009188339114189,0.13465838134288788,-0.05551907420158386,-0.25349706411361694,-0.1359531283378601,-0.08201169967651367,0.03630130738019943,-0.07565895467996597,0.04985193908214569,0.14912472665309906,-0.24933066964149475,-0.2989639341831207,-0.07440325617790222,-0.07236435264348984,0.007793022319674492,-0.14277496933937073,0.015350904315710068,0.11266208440065384,-0.20027145743370056,-0.004338625818490982,0.07565931975841522,0.06843876838684082,-0.029365116730332375,-0.18628890812397003,0.2189212441444397,-0.000688113272190094,-0.24855753779411316,-0.009830232709646225,0.09292665123939514,0.29166179895401,0.2243579626083374,-0.019622473046183586,0.08338182419538498,-0.0414104089140892,0.028232108801603317,-0.25774481892585754,0.0500769168138504,0.21481895446777344,0.05254105478525162,0.06516268849372864,0.05102384835481644,-0.10823389887809753,-0.02942315861582756,0.19098074734210968,-0.17240288853645325,0.09920914471149445,0.1515028476715088,-0.08890038728713989,-0.07990352064371109,-0.17328815162181854,0.24634182453155518,0.1733505129814148,-0.17413198947906494,-0.1718866229057312,0.12582910060882568,-0.17642448842525482,-0.09674461930990219,0.07569882273674011,-0.18644993007183075,-0.17691926658153534,-0.271274596452713,-0.0020926538854837418,0.46468114852905273,0.19371949136257172,-0.2178988754749298,0.025562258437275887,-0.08117910474538803,0.11249618977308273,-0.018396683037281036,0.16247515380382538,0.0001282915472984314,0.018031783401966095,-0.0700790137052536,0.056407809257507324,0.21364818513393402,-0.036533765494823456,-0.07337557524442673,0.23493605852127075,-0.05353518947958946,-0.09696853905916214,-0.06235939636826515,0.04659310728311539,-0.1344364881515503,-0.012207120656967163,-0.11146484315395355,-0.06294745206832886,-0.034940220415592194,0.10326141119003296,0.03179185464978218,0.1467847377061844,-0.19082942605018616,0.1522996425628662,-0.05432801693677902,-0.01577235758304596,-0.022400803864002228,-0.000452450942248106,-0.036078453063964844,-0.040513791143894196,0.15848314762115479,-0.36531639099121094,0.05641081556677818,0.16581213474273682,0.03930053859949112,0.039935994893312454,0.033740460872650146,0.08137931674718857,0.13187022507190704,0.0346924290060997,-0.14783744513988495,-0.06158893555402756,0.02527773752808571,-0.04104948788881302,0.008458022028207779,0.015803828835487366],[-0.10051324218511581,-0.07279844582080841,-0.001282472163438797,0.020856289193034172,-0.06919786334037781,-0.024345869198441505,-0.010619491338729858,-0.013137751258909702,0.15405389666557312,0.016517357900738716,0.23002102971076965,-0.015056679956614971,-0.22843948006629944,-0.016521401703357697,-0.0438958965241909,0.1028967946767807,-0.11149217933416367,-0.08401092886924744,-0.08860547840595245,-0.07365550100803375,0.015243172645568848,0.1272270232439041,-0.016565930098295212,0.09345664083957672,-0.10889355093240738,-0.2854938209056854,-0.08980125188827515,-0.17001305520534515,0.040808405727148056,-0.15409760177135468,-0.035941049456596375,0.17426718771457672,-0.11924068629741669,-0.09771641343832016,0.09447836130857468,0.05560728535056114,-0.02027113363146782,-0.019314222037792206,0.22869902849197388,0.10169412195682526,-0.1377193033695221,-0.024289095774292946,0.011040525510907173,0.39462143182754517,0.1453857123851776,0.009099407121539116,0.015952548012137413,-0.060002267360687256,0.1221776157617569,-0.290526419878006,0.11363663524389267,0.15084052085876465,0.1706993579864502,0.04950060695409775,0.07974418997764587,-0.19215790927410126,-0.013606296852231026,0.141824871301651,-0.19528064131736755,0.21193517744541168,0.0698196291923523,-0.09058252722024918,-0.03922167792916298,-0.10907114297151566,0.1396980583667755,0.041026197373867035,-0.12431930005550385,-0.06791575998067856,0.17491401731967926,-0.0957411453127861,-0.03721051663160324,0.11379620432853699,-0.15487349033355713,-0.2650289833545685,-0.2548701763153076,0.054208435118198395,0.42744243144989014,0.11221148818731308,-0.2419632524251938,0.018017631024122238,-0.01796664670109749,-0.05460192635655403,0.042545948177576065,0.08495937287807465,-0.06071644648909569,0.007114706560969353,-0.07861480861902237,0.05576465278863907,0.1764492690563202,0.03052772767841816,-0.008522302843630314,0.21389426290988922,-0.024614224210381508,-0.0032321978360414505,0.10226888954639435,0.09135359525680542,-0.03673003613948822,-0.06905606389045715,-0.14689134061336517,-0.005894586443901062,0.002682933583855629,-0.15733204782009125,-0.007744046859443188,0.05100136250257492,-0.14602890610694885,0.20678772032260895,0.019124047830700874,-0.033549193292856216,-0.05248647928237915,-0.058607012033462524,-0.08463816344738007,0.06208709627389908,0.24236707389354706,-0.23599296808242798,0.17222557961940765,0.11931703239679337,0.09810569137334824,0.17590343952178955,-0.04135902225971222,0.06896808743476868,-0.06859633326530457,-0.06886428594589233,-0.2056688368320465,-0.061193596571683884,0.05314784497022629,-0.03325532376766205,0.002381695434451103,0.028421763330698013],[-0.07063059508800507,0.012398346327245235,-0.004086121916770935,-0.11135143041610718,-0.18017756938934326,-0.007133690640330315,0.008719323202967644,-0.051081277430057526,0.20928916335105896,-0.17685115337371826,0.10001912713050842,-0.10795890539884567,-0.1953105628490448,0.10430538654327393,-0.14811086654663086,0.18155619502067566,-0.11601020395755768,-0.21843558549880981,-0.19842198491096497,-0.15676547586917877,0.0026221834123134613,0.1657426804304123,-0.059600405395030975,0.11585110425949097,-0.18960151076316833,-0.2675485610961914,-0.0053065381944179535,-0.12873941659927368,0.021590830758213997,-0.14794206619262695,0.004776075482368469,0.17095273733139038,-0.09962760657072067,0.06954251229763031,0.08001348376274109,0.05619659274816513,-0.016173699870705605,-0.12300732731819153,0.20254217088222504,0.08233268558979034,-0.21961311995983124,-0.048164475709199905,0.060059789568185806,0.32081910967826843,0.24595360457897186,-0.05270609259605408,0.009464621543884277,-0.12156415730714798,0.19719916582107544,-0.3005487322807312,0.039065174758434296,0.1353994607925415,0.03396362066268921,0.13116101920604706,0.08811722695827484,-0.1892748475074768,0.009918665513396263,0.16392973065376282,-0.17915968596935272,0.0866990014910698,0.07109914720058441,-0.13285279273986816,-0.08271284401416779,-0.1261787712574005,0.26777613162994385,0.08791659772396088,-0.17506252229213715,-0.21035519242286682,0.2307121753692627,-0.2084561437368393,-0.08969969302415848,0.05810422822833061,-0.124051533639431,-0.11081314086914062,-0.20859161019325256,0.04635366052389145,0.33170226216316223,0.15251074731349945,-0.12201156467199326,0.086480051279068,-0.032260552048683167,0.015889232978224754,-0.021775195375084877,0.15573810040950775,-0.06982384622097015,-0.0784318596124649,-0.017058737576007843,0.04233776032924652,0.21266897022724152,-0.02595417946577072,-0.022498363628983498,0.2330653816461563,-0.06956781446933746,-0.07128044962882996,-0.016569793224334717,0.05142243206501007,-0.22927971184253693,0.047855496406555176,-0.007895056158304214,0.028033968061208725,0.06995373964309692,-0.02436123788356781,0.030047452077269554,0.1494320034980774,-0.11787243187427521,0.2352072298526764,-0.1698865294456482,0.02632801979780197,-0.007137699984014034,-0.07222921401262283,-0.05340973287820816,0.004369648173451424,0.17783141136169434,-0.22402727603912354,0.1835222989320755,0.07480072975158691,0.1268501579761505,0.15066304802894592,0.05315959453582764,0.05652406066656113,0.06715844571590424,0.05193927139043808,-0.2589290142059326,-0.031068526208400726,0.10136425495147705,-0.09585824608802795,-0.05503473058342934,0.05280270799994469]]
\ No newline at end of file
[[{"x":78.70259515941143,"y":52.51417603031282},{"x":77.29212034493685,"y":67.79463638797883},{"x":75.96786513924599,"y":81.19702972904328},{"x":77.55778755992651,"y":95.10474457279328},{"x":82.7516676671803,"y":107.26841797367219},{"x":90.95986064523458,"y":118.21680511966828},{"x":102.14005157351494,"y":128.21510376468783},{"x":114.62478905916214,"y":135.2918554736722},{"x":127.32324719429016,"y":138.03325714603548},{"x":138.40828508138657,"y":134.74910034671908},{"x":146.35919749736786,"y":126.07305206791047},{"x":152.45407491922379,"y":117.23459686771515},{"x":158.06465715169907,"y":108.20900024906281},{"x":162.75949746370316,"y":97.26863159671906},{"x":166.2566688656807,"y":88.79356445804719},{"x":168.04164320230484,"y":79.34612335697297},{"x":169.36942607164383,"y":70.26872314945344},{"x":102.91276805102825,"y":50.643921513711255},{"x":111.27321466803551,"y":49.04517044559602},{"x":120.5909226834774,"y":48.130798955117505},{"x":130.22007316350937,"y":49.942017216836255},{"x":137.50274896621704,"y":54.37205566898469},{"x":151.10849559307098,"y":56.971192021523755},{"x":157.206868827343,"y":54.84915985599641},{"x":163.5188040137291,"y":54.879048009072584},{"x":168.17984849214554,"y":56.56761230960969},{"x":170.71705728769302,"y":59.195000310097974},{"x":144.00014102458954,"y":65.82685913578156},{"x":143.64073395729065,"y":73.73413528934601},{"x":144.01135712862015,"y":80.87621368900422},{"x":143.81918132305145,"y":89.1312643481839},{"x":127.48411267995834,"y":91.08588470951203},{"x":134.3283948302269,"y":93.52732910648469},{"x":139.52339559793472,"y":96.25963654056672},{"x":144.6911182999611,"y":94.77147736087922},{"x":148.38068902492523,"y":93.12768616214875},{"x":110.77253341674805,"y":61.845120091592115},{"x":116.32553532719612,"y":61.369480748330396},{"x":121.9557535648346,"y":62.41514648929719},{"x":126.42488598823547,"y":64.1528707934964},{"x":121.1322371661663,"y":64.05634369388703},{"x":115.86301743984222,"y":63.73924698368196},{"x":151.31528049707413,"y":67.09088959232453},{"x":156.5901842713356,"y":67.58717407718781},{"x":160.71268141269684,"y":67.98275055423859},{"x":164.26825791597366,"y":69.03151001468781},{"x":159.96803760528564,"y":70.4249998523343},{"x":155.32326072454453,"y":69.34288086429719},{"x":109.29639756679535,"y":99.49584259525422},{"x":120.37595704197884,"y":98.69051422611359},{"x":130.81436574459076,"y":99.85762085453156},{"x":135.84903299808502,"y":101.38172974125031},{"x":141.50265127420425,"y":100.36422028080109},{"x":146.36948823928833,"y":100.81127228275422},{"x":148.87848913669586,"y":103.27265228763703},{"x":145.39085745811462,"y":111.92646851078156},{"x":139.0690517425537,"y":116.24958862796906},{"x":133.29149305820465,"y":117.21682800785187},{"x":126.7722275853157,"y":115.69017853275422},{"x":117.6860836148262,"y":110.5495001269925},{"x":112.19027310609818,"y":100.30053009525422},{"x":128.99872034788132,"y":102.20095123783234},{"x":135.47163724899292,"y":103.91561188236359},{"x":140.5216109752655,"y":104.06739868656281},{"x":147.77944058179855,"y":103.93721832767609},{"x":139.77415084838867,"y":110.27076782718781},{"x":134.04826045036316,"y":111.13681854740265},{"x":129.13511961698532,"y":109.6996466113675}],[{"x":234.0432442203164,"y":72.18237426973158},{"x":234.07302695512772,"y":85.62781944967085},{"x":234.37448344379663,"y":97.4441898176747},{"x":237.17955499887466,"y":109.70111182428175},{"x":241.91123768687248,"y":120.36310103631789},{"x":248.58186745643616,"y":130.7120940992909},{"x":256.8855963945389,"y":140.60736063218886},{"x":265.9586812257767,"y":147.82223680711562},{"x":276.25926327705383,"y":150.3243668387013},{"x":285.8509864807129,"y":148.31700566507155},{"x":294.7637438774109,"y":140.88661578393751},{"x":301.7397997379303,"y":133.12361434198195},{"x":309.3003182411194,"y":123.77570560670668},{"x":315.0203056335449,"y":113.1747544119435},{"x":318.7541444301605,"y":102.62603953576857},{"x":320.53608107566833,"y":91.02094796396071},{"x":321.9833137989044,"y":79.67927816606337},{"x":243.00755888223648,"y":73.02197197175795},{"x":249.12357711791992,"y":70.65327099061781},{"x":256.6056842803955,"y":71.09805408216292},{"x":264.78340232372284,"y":72.58571747041518},{"x":271.8189814090729,"y":76.387691766985},{"x":287.77085518836975,"y":77.74872616029555},{"x":296.0825273990631,"y":74.829839498766},{"x":304.0993046760559,"y":74.12636736131483},{"x":311.1268253326416,"y":75.38659361100966},{"x":315.988929271698,"y":78.4906996796208},{"x":280.03022742271423,"y":84.97809437013441},{"x":279.16452836990356,"y":94.6116987774449},{"x":279.08406925201416,"y":103.45783117509657},{"x":278.3811960220337,"y":112.86081102586562},{"x":266.2560445070267,"y":112.55670645929152},{"x":271.9997515678406,"y":115.64479592538649},{"x":277.2981472015381,"y":118.46189263559157},{"x":282.88522934913635,"y":116.32307294107252},{"x":287.3393099308014,"y":114.4629829237538},{"x":250.71771156787872,"y":82.93822291589552},{"x":255.54227709770203,"y":81.77080169416243},{"x":261.47561633586884,"y":82.18437436319167},{"x":266.8718521595001,"y":85.09909179902846},{"x":261.02278220653534,"y":85.3523221323567},{"x":255.04803681373596,"y":85.51701000428969},{"x":289.57169246673584,"y":86.59227958417708},{"x":296.12601137161255,"y":85.3894476006108},{"x":301.7222509384155,"y":85.33728733754927},{"x":306.4811248779297,"y":87.00033477044875},{"x":301.593781709671,"y":89.3077004263478},{"x":295.20851707458496,"y":88.81555894113356},{"x":255.08908998966217,"y":120.65163496232802},{"x":262.8024332523346,"y":120.9952745745259},{"x":270.70326828956604,"y":122.40383675790602},{"x":275.5565803050995,"y":124.17473438478285},{"x":281.3999750614166,"y":122.6351008722859},{"x":288.9069309234619,"y":122.48449710107619},{"x":295.68931913375854,"y":123.3941626856404},{"x":289.19691920280457,"y":131.8845453569966},{"x":280.730872631073,"y":135.16087916589552},{"x":274.73176169395447,"y":135.9497754881459},{"x":269.14574098587036,"y":134.31138041711623},{"x":261.4882484674454,"y":129.7903356859761},{"x":257.0808787345886,"y":121.76479747987563},{"x":269.8720760345459,"y":124.05334284997755},{"x":275.90254950523376,"y":125.26417449212843},{"x":281.2652223110199,"y":125.28600934243971},{"x":293.8986005783081,"y":124.10085681176955},{"x":280.6464831829071,"y":130.53398588395888},{"x":274.9977023601532,"y":131.01732567048842},{"x":270.30089259147644,"y":129.57399228311354}],[{"x":53.439819291234016,"y":280.0604960024357},{"x":51.78455471992493,"y":295.82864955067635},{"x":50.52304560318589,"y":309.732116997242},{"x":51.996403969824314,"y":323.6099224090576},{"x":55.675161108374596,"y":336.0948809981346},{"x":61.96380540728569,"y":348.32347297668457},{"x":70.6162890791893,"y":359.93272376060486},{"x":80.40928453207016,"y":369.4880121946335},{"x":91.329245865345,"y":373.68778198957443},{"x":102.01146513223648,"y":372.54405105113983},{"x":111.70319825410843,"y":365.45324832201004},{"x":120.67031770944595,"y":358.51266556978226},{"x":130.24644166231155,"y":350.4673351049423},{"x":138.3169224858284,"y":340.3098750114441},{"x":144.8827138543129,"y":330.19956386089325},{"x":149.44279700517654,"y":318.41588428616524},{"x":153.5925915837288,"y":306.7800603210926},{"x":65.65944314002991,"y":287.4393824636936},{"x":74.17677998542786,"y":286.2525469958782},{"x":83.42234998941422,"y":288.1453210115433},{"x":92.45077580213547,"y":291.6930521428585},{"x":100.51797538995743,"y":297.3068634867668},{"x":118.6282268166542,"y":301.29853051900864},{"x":127.82300025224686,"y":299.62827998399734},{"x":136.26429945230484,"y":299.9250599741936},{"x":144.1239109635353,"y":301.3865695595741},{"x":148.95386010408401,"y":305.0852126777172},{"x":108.77183586359024,"y":309.15458089113235},{"x":106.31233364343643,"y":318.45475602149963},{"x":105.28086930513382,"y":327.17767184972763},{"x":103.4764102101326,"y":336.8808351159096},{"x":89.56375032663345,"y":334.2973544597626},{"x":95.11743992567062,"y":338.2826396226883},{"x":100.4269888997078,"y":342.33478063344955},{"x":107.09357768297195,"y":340.92600989341736},{"x":111.45647674798965,"y":339.16702830791473},{"x":74.23168629407883,"y":299.72840997576714},{"x":80.10014206171036,"y":300.2405780553818},{"x":86.55913084745407,"y":301.92818266153336},{"x":92.06215351819992,"y":305.3237600326538},{"x":85.29800087213516,"y":304.93414691090584},{"x":78.56964975595474,"y":303.802222430706},{"x":118.96386057138443,"y":311.23431676626205},{"x":125.75672775506973,"y":311.30804657936096},{"x":131.75824791193008,"y":312.1569736003876},{"x":136.9495204091072,"y":313.76811495423317},{"x":130.84956914186478,"y":315.8736974000931},{"x":124.32669311761856,"y":314.29629921913147},{"x":73.89956772327423,"y":338.6452066898346},{"x":83.92988950014114,"y":341.8424386382103},{"x":92.97652751207352,"y":345.22819715738297},{"x":97.08906918764114,"y":347.40902799367905},{"x":103.12756806612015,"y":346.28637260198593},{"x":109.98074918985367,"y":346.54456919431686},{"x":116.1731830239296,"y":346.1622644662857},{"x":108.54592829942703,"y":355.2732748389244},{"x":100.48217684030533,"y":358.47334402799606},{"x":94.37009304761887,"y":358.60381096601486},{"x":88.47060412168503,"y":356.5071900486946},{"x":80.98365873098373,"y":350.6593140363693},{"x":77.15098470449448,"y":340.4296311736107},{"x":91.45873099565506,"y":346.6854547262192},{"x":97.10512071847916,"y":348.816522359848},{"x":102.38213449716568,"y":349.28899598121643},{"x":113.6016657948494,"y":347.39245051145554},{"x":101.5955975651741,"y":352.2493990659714},{"x":95.40374487638474,"y":352.52306592464447},{"x":91.18230849504471,"y":350.25800210237503}],[{"x":253.64455546438694,"y":274.96428267994236},{"x":255.63555194437504,"y":286.48764054813694},{"x":257.851626470685,"y":296.23062263765644},{"x":261.372583928518,"y":306.3042299036057},{"x":265.716976583004,"y":315.1606678847344},{"x":271.16881239414215,"y":323.31880401411365},{"x":278.9179730415344,"y":330.80829064884495},{"x":287.70828092098236,"y":335.8823236111672},{"x":297.32989490032196,"y":337.5626749877007},{"x":307.2697219848633,"y":337.14021955766987},{"x":316.2518972158432,"y":331.886222172168},{"x":323.5890635251999,"y":326.10143922605823},{"x":330.2825126647949,"y":317.92637084760975},{"x":335.62895596027374,"y":308.1591898683579},{"x":339.1303542852402,"y":298.46708123722385},{"x":341.2391484975815,"y":288.10848497190784},{"x":343.8476446866989,"y":277.8678704980881},{"x":257.7795196324587,"y":265.5684605125458},{"x":262.86759052053094,"y":259.46244253554653},{"x":271.30318570137024,"y":258.1320998553307},{"x":280.2511401772499,"y":259.1452731970818},{"x":288.77513176202774,"y":262.10564820804905},{"x":300.88161540031433,"y":262.23092802205394},{"x":311.1703190803528,"y":259.23369329014133},{"x":320.83708584308624,"y":259.57886569538425},{"x":329.8163455724716,"y":262.03275864162754},{"x":335.06606125831604,"y":268.59239073434185},{"x":295.74934458732605,"y":272.0405581776173},{"x":295.10603761672974,"y":281.74871687927555},{"x":294.78596317768097,"y":290.4453236345322},{"x":294.52324163913727,"y":299.96156142988514},{"x":283.94295251369476,"y":300.7173269275696},{"x":289.2285826802254,"y":303.9793581847222},{"x":294.77881556749344,"y":307.2272955063851},{"x":300.44683516025543,"y":304.92734794655155},{"x":305.3025699853897,"y":303.13202046194385},{"x":267.63354451954365,"y":273.45072929897617},{"x":271.67723220586777,"y":269.8547673110039},{"x":277.1182727217674,"y":269.4767764691384},{"x":282.23915058374405,"y":273.35298531093906},{"x":276.9609106183052,"y":274.3409555439026},{"x":271.4951269328594,"y":275.01823853292774},{"x":306.1736521720886,"y":273.4907934550316},{"x":311.9750416278839,"y":270.6327790502579},{"x":317.42995393276215,"y":270.95207189359974},{"x":321.920796751976,"y":274.85076408424686},{"x":317.8245964050293,"y":276.6930876258881},{"x":311.29924952983856,"y":276.1408682648213},{"x":279.1467461884022,"y":314.23833452501606},{"x":284.48106986284256,"y":313.8286061767609},{"x":290.1339142918587,"y":313.8490322712929},{"x":294.4958354830742,"y":315.5466157678635},{"x":299.6633150577545,"y":313.5960527543099},{"x":306.1217950582504,"y":314.4668222550423},{"x":312.643159031868,"y":316.36552153864216},{"x":306.774823307991,"y":320.4127126220734},{"x":300.28556072711945,"y":321.05349503794025},{"x":294.83206647634506,"y":321.65074037351917},{"x":289.9620077610016,"y":320.5292926911385},{"x":284.2809522151947,"y":318.41614382305454},{"x":280.899098277092,"y":314.7755777720482},{"x":289.82488214969635,"y":316.4206280592949},{"x":295.0254775881767,"y":317.5740782503159},{"x":299.5264849662781,"y":317.32291888037037},{"x":310.37555599212646,"y":316.52424393930744},{"x":299.7602632045746,"y":316.030502903846},{"x":294.2890642285347,"y":316.5608839873345},{"x":290.4010553956032,"y":315.42048167028736}],[{"x":458.6051552891731,"y":217.72117600517888},{"x":460.09398763626814,"y":230.39350793438572},{"x":461.8694317564368,"y":241.38930038290638},{"x":465.2278592949733,"y":252.93564961033482},{"x":469.7518924251199,"y":263.28325144129417},{"x":476.1563876569271,"y":272.5680155523362},{"x":485.33472272753716,"y":280.3438511856141},{"x":495.19925662875175,"y":285.54824075775764},{"x":505.49679857492447,"y":287.5497344501557},{"x":517.0163440704346,"y":286.52682790833137},{"x":528.832253575325,"y":281.7315962679925},{"x":538.1082131266594,"y":275.27146718578956},{"x":545.7302697896957,"y":266.1297963030877},{"x":550.5768427848816,"y":254.52256647425313},{"x":554.072232067585,"y":242.63067278938908},{"x":554.7430681586266,"y":229.65774825888295},{"x":555.9324762821198,"y":217.0304150350632},{"x":464.2269563060254,"y":212.73671243267674},{"x":469.75961059704423,"y":209.3460837967934},{"x":477.53361535072327,"y":208.5074197419228},{"x":485.2873308509588,"y":209.6281631358208},{"x":492.1645346879959,"y":212.7300988801064},{"x":509.10780626535416,"y":212.85144624786992},{"x":518.4267295002937,"y":209.07269889789242},{"x":527.5292375683784,"y":208.5795753963532},{"x":536.2015252709389,"y":209.3796590931954},{"x":542.8177468776703,"y":212.6919245489182},{"x":501.580209761858,"y":221.49086973744053},{"x":500.3731763958931,"y":230.08853492813725},{"x":500.1400006711483,"y":238.13611183243412},{"x":499.29766792058945,"y":247.00497171955723},{"x":491.3476411700249,"y":249.0014759667458},{"x":496.11430510878563,"y":251.5378865964951},{"x":500.55614736676216,"y":253.75804135876317},{"x":505.92355754971504,"y":252.01613936501164},{"x":511.2390627861023,"y":250.3659447796883},{"x":473.7797954529524,"y":223.44442883806843},{"x":477.8101897537708,"y":221.86633915382046},{"x":484.2290563881397,"y":221.8739053078236},{"x":489.7755623757839,"y":224.0043203301968},{"x":483.90396946668625,"y":225.28688494043965},{"x":478.22655925154686,"y":225.68062556462903},{"x":515.0914766192436,"y":223.67829639392514},{"x":520.7296285629272,"y":222.6548081405701},{"x":526.719929933548,"y":222.64345110135693},{"x":532.6925768852234,"y":223.93850103693623},{"x":527.5918874144554,"y":225.99143520670552},{"x":520.3674954771996,"y":225.9896002777161},{"x":487.79902869462967,"y":262.3062415488305},{"x":492.6807407736778,"y":261.1754646070542},{"x":498.5045930147171,"y":260.4150388010087},{"x":502.8779262602329,"y":262.09455320912025},{"x":507.8618753552437,"y":259.85850093441627},{"x":515.5100157856941,"y":260.53184179144523},{"x":522.529854118824,"y":263.0671280391755},{"x":516.0406350493431,"y":268.1145648129525},{"x":509.29703161120415,"y":269.5725134976449},{"x":503.7219538986683,"y":270.14516750651023},{"x":498.86963579058647,"y":268.82049713211677},{"x":493.03908091783524,"y":266.78845772820137},{"x":490.25995284318924,"y":262.70426497536323},{"x":498.5697175562382,"y":263.05846873598716},{"x":503.7999505698681,"y":264.6741432316842},{"x":508.1411578655243,"y":264.4359304078164},{"x":519.9255567789078,"y":263.10483387785575},{"x":508.362724006176,"y":264.35242161827705},{"x":502.9432258605957,"y":264.6728236444535},{"x":499.6765456497669,"y":263.62174508648536}],[{"x":575.6323959156871,"y":97.81703020103517},{"x":576.2381174787879,"y":110.7464268899733},{"x":577.1207508929074,"y":122.03858585126939},{"x":579.777023255825,"y":133.77679456241668},{"x":584.0378794074059,"y":144.10788560875},{"x":590.4641489386559,"y":153.66901643045486},{"x":599.8314836025238,"y":162.39560646780075},{"x":609.7557654380798,"y":168.6680013037497},{"x":620.3408677577972,"y":170.72851402528823},{"x":630.3204867839813,"y":168.76506347425521},{"x":639.1392222642899,"y":162.16524405248703},{"x":646.3353884220123,"y":155.17852164276184},{"x":652.9094681739807,"y":146.6903299189383},{"x":657.3339067697525,"y":136.69562412269653},{"x":660.4557708501816,"y":127.19812996156755},{"x":662.051419377327,"y":116.94922510750833},{"x":663.7066377401352,"y":106.84000776179376},{"x":586.5404289513826,"y":98.32077897556367},{"x":593.4320383369923,"y":96.36920688517633},{"x":601.3935153484344,"y":96.69368816383424},{"x":609.6317137479782,"y":98.59984148510041},{"x":616.5242365002632,"y":102.5144240654284},{"x":632.4123371839523,"y":103.04483480222764},{"x":640.0241969823837,"y":100.34534380801263},{"x":647.2620248794556,"y":99.55671287544313},{"x":654.129354596138,"y":100.25115479000154},{"x":659.0634310245514,"y":102.63225520618501},{"x":624.9623003005981,"y":109.84366706975045},{"x":624.2144320011139,"y":118.4606404400641},{"x":624.1961280107498,"y":126.39726979501786},{"x":623.8329563140869,"y":134.92106182344497},{"x":612.6639273762703,"y":135.8878824210936},{"x":617.6502031683922,"y":138.31433464057983},{"x":622.2424348592758,"y":140.77128500707687},{"x":627.0541898012161,"y":139.33917314775528},{"x":630.7270992994308,"y":137.66990662582458},{"x":595.4028062522411,"y":108.46945513256135},{"x":600.3049533367157,"y":107.04665152199807},{"x":606.116753757,"y":107.49907577999177},{"x":610.7790024876595,"y":110.7087984777266},{"x":605.489963054657,"y":111.36523569591584},{"x":599.8057773709297,"y":111.40001646645608},{"x":634.6385422945023,"y":112.09705091484132},{"x":640.4470851421356,"y":110.56770468719544},{"x":645.5006678104401,"y":110.40809006460252},{"x":650.1414160728455,"y":112.40711540945115},{"x":645.6796168088913,"y":114.66480738885942},{"x":639.6736890077591,"y":114.49185062416139},{"x":602.1105405688286,"y":143.5170047379309},{"x":610.0115154385567,"y":144.67639989622177},{"x":616.9459272027016,"y":145.61259479291977},{"x":620.7917128801346,"y":146.8697983122641},{"x":625.5570113658905,"y":145.48805750377716},{"x":631.3872159719467,"y":145.44158322580398},{"x":637.3369463682175,"y":145.60786254175247},{"x":631.6403584480286,"y":151.87812722690643},{"x":624.9396952390671,"y":154.0825080371672},{"x":620.1312247514725,"y":154.83688754804672},{"x":615.6493668556213,"y":153.58939088352264},{"x":608.7029096484184,"y":150.48222155340255},{"x":604.0386838912964,"y":144.4577150440985},{"x":616.3138701319695,"y":147.00049645669998},{"x":621.2553536891937,"y":148.18779403932632},{"x":625.1526666879654,"y":148.3215981221968},{"x":635.5966547727585,"y":146.52967573173584},{"x":624.8098908662796,"y":149.64450467594207},{"x":620.2795970439911,"y":149.9581789470488},{"x":616.9711862206459,"y":148.92591042287887}]]
\ No newline at end of file
[[{"x":78.88453498482704,"y":54.340515751992505},{"x":78.80174972116947,"y":67.42203964725617},{"x":79.41133201122284,"y":79.55764832035187},{"x":80.87148245424032,"y":90.45394958988312},{"x":83.65095367655158,"y":103.08840240970734},{"x":90.00872641801834,"y":113.85682739750031},{"x":98.88908013701439,"y":122.59016479984406},{"x":110.19187986850739,"y":132.62888397709017},{"x":123.95810306072235,"y":138.49772705570345},{"x":136.95235967636108,"y":134.42995514408236},{"x":142.33598232269287,"y":126.9210821582425},{"x":147.8650164604187,"y":120.19905151859406},{"x":153.60961079597473,"y":110.54403748050812},{"x":159.75567817687988,"y":99.66677155033234},{"x":163.89759451150894,"y":89.78836121097687},{"x":166.517576277256,"y":80.12262024418},{"x":166.97096794843674,"y":69.13838638797883},{"x":101.14158697426319,"y":48.7663084460843},{"x":109.53669220209122,"y":45.81676353946809},{"x":117.78285771608353,"y":45.70639671817903},{"x":124.79132235050201,"y":47.50745834842805},{"x":130.46167314052582,"y":50.689716954385084},{"x":151.67625218629837,"y":53.574116368447584},{"x":156.42495572566986,"y":52.002991337930005},{"x":161.256083548069,"y":51.58568253055696},{"x":166.25041037797928,"y":52.67973007694368},{"x":168.02350252866745,"y":56.0030027820218},{"x":139.7132870554924,"y":65.73578323856476},{"x":140.8638072013855,"y":74.94289841190461},{"x":141.84472680091858,"y":83.16134705082062},{"x":141.3910087943077,"y":90.50144257084015},{"x":128.617801964283,"y":91.91793121830109},{"x":132.71707564592361,"y":94.04132904544953},{"x":137.27396100759506,"y":95.4687887622464},{"x":141.28654569387436,"y":94.48701538578156},{"x":143.8589584827423,"y":93.67591156498078},{"x":109.83383402228355,"y":59.16733994022493},{"x":115.58296576142311,"y":58.19477142826204},{"x":121.17200314998627,"y":58.62158646122102},{"x":125.14821708202362,"y":62.44804062381868},{"x":121.36037021875381,"y":63.82070984378938},{"x":114.78775784373283,"y":62.54481186405305},{"x":146.6951486468315,"y":65.14801468387726},{"x":152.43364095687866,"y":62.580219884072584},{"x":158.494673371315,"y":63.33990921512727},{"x":159.57544267177582,"y":65.69073929325226},{"x":156.95089668035507,"y":67.93409409061555},{"x":151.64972066879272,"y":66.9153219653714},{"x":110.81738442182541,"y":102.46230377689484},{"x":121.06627717614174,"y":100.86323608890656},{"x":131.50526702404022,"y":100.96113647953156},{"x":135.66662937402725,"y":101.99545349613312},{"x":139.55124586820602,"y":101.70082916751984},{"x":145.57576447725296,"y":104.24478210941437},{"x":147.33246833086014,"y":106.75124420658234},{"x":141.4960440993309,"y":114.78596558109406},{"x":136.66154563426971,"y":118.56308044925812},{"x":130.54882258176804,"y":119.1232305957425},{"x":124.78052198886871,"y":117.28310455814484},{"x":117.97604158520699,"y":112.96259369388703},{"x":111.7592890560627,"y":103.06800140873078},{"x":127.85126686096191,"y":103.7278219653714},{"x":134.48065489530563,"y":104.94294037357453},{"x":139.40277218818665,"y":105.46841492191437},{"x":145.6920874118805,"y":106.89988770023469},{"x":137.0137956738472,"y":113.12150635257844},{"x":131.9087651371956,"y":113.30772461429719},{"x":126.09670430421829,"y":111.97380127445344}],[{"x":230.35409008711576,"y":76.48713436818892},{"x":231.32800871878862,"y":88.98580232358748},{"x":232.9434676747769,"y":100.94655373788649},{"x":234.67413983494043,"y":110.8506565401631},{"x":237.67880927026272,"y":122.19467714525038},{"x":243.33399283885956,"y":131.75854900575453},{"x":250.60516518354416,"y":139.53664401269728},{"x":260.6413799524307,"y":148.7868421385365},{"x":275.1246545314789,"y":153.69684174753004},{"x":289.2145631313324,"y":149.69657686448866},{"x":297.723708152771,"y":141.7915036985951},{"x":304.31809639930725,"y":135.26991513467604},{"x":310.15464186668396,"y":125.56473901964003},{"x":314.48908019065857,"y":114.62088111139113},{"x":316.87436509132385,"y":104.21722486711317},{"x":319.2071588039398,"y":93.50209012723738},{"x":319.9787652492523,"y":81.70821490979964},{"x":241.29130882024765,"y":70.10276725984389},{"x":247.62181669473648,"y":67.91886738038832},{"x":254.63222289085388,"y":68.07646480298811},{"x":261.27166974544525,"y":69.60374274946028},{"x":267.1634376049042,"y":72.26310375428969},{"x":289.5264410972595,"y":73.65641334749037},{"x":295.1576931476593,"y":71.68943074441725},{"x":301.7056484222412,"y":70.84351006246382},{"x":308.6310956478119,"y":71.41338721013838},{"x":313.5512583255768,"y":73.57223716474348},{"x":277.74836778640747,"y":85.97259298063094},{"x":277.7395558357239,"y":95.77593258119398},{"x":277.6018691062927,"y":105.088952572115},{"x":277.0711143016815,"y":112.56092408395583},{"x":268.3519619703293,"y":112.92281702256972},{"x":271.9692051410675,"y":115.1969049284535},{"x":276.8920214176178,"y":116.6187560865956},{"x":281.53438234329224,"y":115.31924370027357},{"x":285.0949912071228,"y":113.99634078241164},{"x":249.88221472501755,"y":79.41814842916304},{"x":254.2900288105011,"y":78.42612508035475},{"x":260.09243297576904,"y":78.6968239853459},{"x":265.1237539052963,"y":82.23297038770491},{"x":260.5498933792114,"y":83.62710276342207},{"x":254.27618503570557,"y":82.63636890149886},{"x":289.2370285987854,"y":83.55092278219038},{"x":294.7169153690338,"y":80.5464356253224},{"x":300.86022186279297,"y":81.0058490345555},{"x":304.41960406303406,"y":83.01301661229903},{"x":300.4358162879944,"y":85.69828143811995},{"x":294.3155460357666,"y":85.09616366124922},{"x":255.21712112426758,"y":121.53793075776869},{"x":262.8897992372513,"y":121.6964166472035},{"x":272.0220493078232,"y":122.16711047387892},{"x":276.60698986053467,"y":123.12763646341139},{"x":281.10380840301514,"y":122.24365690446669},{"x":290.48466062545776,"y":123.39597419000441},{"x":297.0332818031311,"y":123.55629924035841},{"x":289.114342212677,"y":132.51426437593275},{"x":282.61101245880127,"y":136.3083288977223},{"x":275.5814690589905,"y":137.46408251024062},{"x":269.35472190380096,"y":136.106339246996},{"x":262.0876613855362,"y":131.79087260461623},{"x":256.09996592998505,"y":122.10302332139784},{"x":269.7251617908478,"y":124.58125117517287},{"x":276.5752167701721,"y":125.28405955529982},{"x":283.01117515563965,"y":125.34827116227919},{"x":295.4524829387665,"y":123.87910655237013},{"x":282.24452543258667,"y":131.15521434045607},{"x":275.948046207428,"y":132.09439638353163},{"x":269.59646224975586,"y":131.0175676653462}],[{"x":52.89241414517164,"y":282.7266910672188},{"x":50.87797347456217,"y":296.89296850562096},{"x":49.71260245889425,"y":310.34687554836273},{"x":49.50424597132951,"y":322.08700078725815},{"x":50.409748582169414,"y":336.39450591802597},{"x":55.15722617506981,"y":349.3232504725456},{"x":62.49335914850235,"y":360.313629090786},{"x":72.71078884601593,"y":371.9817545413971},{"x":87.83086746931076,"y":380.3500460386276},{"x":104.21213418245316,"y":378.6363449692726},{"x":114.80719953775406,"y":372.0393912792206},{"x":123.89140039682388,"y":366.18297278881073},{"x":132.48398214578629,"y":356.70495879650116},{"x":139.61599975824356,"y":345.4006921648979},{"x":144.25993472337723,"y":334.65290147066116},{"x":149.00599032640457,"y":323.61125260591507},{"x":151.8666437268257,"y":310.911751717329},{"x":67.48781859874725,"y":283.3429951071739},{"x":75.35115391016006,"y":282.75306625664234},{"x":83.2165738940239,"y":285.16011513769627},{"x":90.33202439546585,"y":289.1681001484394},{"x":96.4085391163826,"y":293.61568254232407},{"x":121.10100895166397,"y":299.9678646326065},{"x":127.67173558473587,"y":298.52197524905205},{"x":135.01537948846817,"y":298.0430044233799},{"x":142.36321359872818,"y":298.94229823350906},{"x":146.83973103761673,"y":301.76432624459267},{"x":105.43120414018631,"y":309.11801970005035},{"x":103.4981182217598,"y":318.78210747241974},{"x":101.45671278238297,"y":327.84984415769577},{"x":99.53793495893478,"y":335.4310358762741},{"x":89.49993461370468,"y":333.841296851635},{"x":93.19077640771866,"y":336.89287608861923},{"x":98.23556751012802,"y":339.2234809398651},{"x":103.67715865373611,"y":338.73299968242645},{"x":107.70168215036392,"y":337.7921968102455},{"x":74.69314396381378,"y":296.5739365518093},{"x":80.14858573675156,"y":297.56556755304337},{"x":86.56933814287186,"y":298.90682503581047},{"x":91.52818530797958,"y":303.0784338712692},{"x":86.24918073415756,"y":303.6382160782814},{"x":79.09003406763077,"y":301.4291281700134},{"x":118.30803662538528,"y":309.0543663203716},{"x":125.0142565369606,"y":307.85860392451286},{"x":131.8498483300209,"y":309.31628438830376},{"x":135.02473145723343,"y":311.04234552383423},{"x":130.3895464539528,"y":313.3754262328148},{"x":123.57992440462112,"y":311.814509421587},{"x":73.74992281198502,"y":341.166852414608},{"x":82.1018448472023,"y":342.58997851610184},{"x":91.98869973421097,"y":344.52026331424713},{"x":96.75153106451035,"y":346.0399171113968},{"x":101.20932966470718,"y":346.01455879211426},{"x":110.74226409196854,"y":348.3536369204521},{"x":117.45747834444046,"y":349.5986934900284},{"x":107.76521474123001,"y":356.0601131916046},{"x":100.55026322603226,"y":358.1020730137825},{"x":93.41589421033859,"y":357.8789767026901},{"x":87.21731215715408,"y":355.56834787130356},{"x":80.43258100748062,"y":350.9654130935669},{"x":74.80048149824142,"y":341.89357817173004},{"x":88.80335599184036,"y":346.7158262729645},{"x":95.74061542749405,"y":348.37989485263824},{"x":102.56206899881363,"y":349.5257633328438},{"x":115.78181892633438,"y":349.6036605834961},{"x":101.4380207657814,"y":352.6228076219559},{"x":95.14025956392288,"y":352.4510815143585},{"x":88.81180793046951,"y":350.6978974342346}],[{"x":253.42183826863766,"y":272.33237447181057},{"x":254.645193323493,"y":283.81189538874935},{"x":256.80082605034113,"y":294.49671291151355},{"x":259.1452670022845,"y":303.39569072761844},{"x":262.62326591834426,"y":313.8439553860695},{"x":268.03879207372665,"y":322.1283790353806},{"x":274.28707036376,"y":328.6552868370087},{"x":282.563962161541,"y":336.6665140871079},{"x":295.7026590704918,"y":341.3614055398972},{"x":309.2031053304672,"y":337.19024919309925},{"x":317.6761395931244,"y":329.91151605882953},{"x":324.4288823604584,"y":323.80863277950596},{"x":330.1851190328598,"y":314.6357821110756},{"x":334.1619029045105,"y":304.2468012455971},{"x":336.12103617191315,"y":294.20779072084736},{"x":338.0927973985672,"y":283.9055248681576},{"x":338.74841034412384,"y":272.77573021092724},{"x":260.76146980468184,"y":263.1945459429295},{"x":265.89059007167816,"y":260.37073077597927},{"x":272.02435222268105,"y":260.124662238744},{"x":277.91902008652687,"y":261.1794025782616},{"x":283.2442576289177,"y":263.57395942845653},{"x":305.61311280727386,"y":263.53190775552105},{"x":311.03955817222595,"y":261.3390071574719},{"x":317.3484830856323,"y":260.11370300093006},{"x":324.39085733890533,"y":260.55342193284343},{"x":329.6131602525711,"y":263.34477781095813},{"x":294.1689177751541,"y":276.0578458491833},{"x":294.0910659432411,"y":284.60743563213657},{"x":293.79795438051224,"y":292.4886583570511},{"x":293.3342087864876,"y":299.0591311339409},{"x":287.4225970506668,"y":300.58938663044285},{"x":290.1897984147072,"y":302.35011737385105},{"x":294.4143977165222,"y":303.4319332722695},{"x":298.62971901893616,"y":302.21711413898777},{"x":301.9501842260361,"y":301.3114898685486},{"x":269.1988005787134,"y":272.1574137095482},{"x":272.7045285999775,"y":270.833574045089},{"x":278.24089962244034,"y":270.82111893930744},{"x":283.33060455322266,"y":273.9352161768944},{"x":278.9782513678074,"y":275.6633411828549},{"x":273.0677897334099,"y":274.9888163093598},{"x":306.43324649333954,"y":274.1463497463734},{"x":311.48669731616974,"y":270.9408232454331},{"x":317.2671401500702,"y":271.0014146153004},{"x":321.12052023410797,"y":273.04276879468273},{"x":317.2139995098114,"y":275.7725465182335},{"x":311.281822681427,"y":275.4820482615502},{"x":277.7817610502243,"y":310.25390015878986},{"x":283.16760993003845,"y":309.13203405180286},{"x":290.7126435637474,"y":308.8409360531838},{"x":294.7775342464447,"y":309.4422331337006},{"x":298.55551266670227,"y":308.73483054676365},{"x":307.3698855638504,"y":310.28692780771564},{"x":314.2446427345276,"y":311.4532375816376},{"x":306.7817746400833,"y":318.6829243783028},{"x":300.91874945163727,"y":322.1013697270424},{"x":294.64789366722107,"y":322.99555008449863},{"x":289.2275020480156,"y":321.95475374498676},{"x":283.4413164258003,"y":318.63401751556705},{"x":278.51254960894585,"y":310.6321838978798},{"x":289.0830457806587,"y":311.44657765665363},{"x":294.83759093284607,"y":311.940667379287},{"x":300.5313273668289,"y":311.98795633354496},{"x":312.7565504312515,"y":311.62313889303516},{"x":300.40817058086395,"y":317.09120928087543},{"x":294.90167462825775,"y":317.9201293472321},{"x":289.45734149217606,"y":317.0948914174111}],[{"x":460.38254826515913,"y":226.86179668384213},{"x":461.868938408792,"y":239.01152131634373},{"x":464.2647043634206,"y":251.17557010727543},{"x":467.1906138891354,"y":260.80727634506843},{"x":471.15491477400064,"y":271.47034541445396},{"x":476.7369782626629,"y":279.180373466784},{"x":483.58512631058693,"y":284.52350709515235},{"x":492.1849847435951,"y":289.930207348639},{"x":505.92298462986946,"y":292.64942375498435},{"x":519.4783981442451,"y":289.30719820337913},{"x":529.468401491642,"y":284.01056245642326},{"x":537.524211525917,"y":278.7225001223626},{"x":544.3073756098747,"y":269.8340806730332},{"x":549.2690418362617,"y":259.2791630991044},{"x":552.0619995594025,"y":248.67283628063817},{"x":554.902642250061,"y":236.79101518469471},{"x":556.1653257608414,"y":224.22224742847104},{"x":465.896798262489,"y":214.67206279116292},{"x":471.0363594889641,"y":210.2688578732552},{"x":477.5265970826149,"y":209.1275984116139},{"x":484.0630382746458,"y":210.16732383447308},{"x":490.25007528066635,"y":212.04160619454998},{"x":513.647204041481,"y":211.24619571047444},{"x":520.0041263699532,"y":208.71019501166958},{"x":527.8550698161125,"y":207.4011332459988},{"x":535.9308312535286,"y":208.35862652140278},{"x":542.1029657125473,"y":212.3012642629685},{"x":501.67312091588974,"y":226.1231011219563},{"x":501.1025060117245,"y":234.8415866263451},{"x":500.3694550693035,"y":242.82483950930256},{"x":499.4915482401848,"y":250.10161349850316},{"x":494.7648799419403,"y":254.96258244591374},{"x":497.4780028760433,"y":256.4378731616082},{"x":501.41095703840256,"y":257.54796615915916},{"x":505.93551459908485,"y":256.1370541222634},{"x":509.78952783346176,"y":255.31036785917897},{"x":474.8673604428768,"y":224.3134863443913},{"x":478.4822910428047,"y":222.59203014450688},{"x":484.7031727582216,"y":222.44134343343396},{"x":490.5410310328007,"y":225.68867582755703},{"x":485.6805647313595,"y":227.69031397181172},{"x":479.1615803539753,"y":227.4026244350018},{"x":515.9134415388107,"y":224.7869722016396},{"x":521.3856536149979,"y":220.8381074138226},{"x":527.5773840546608,"y":220.89433822708745},{"x":532.6406374573708,"y":223.42468578296322},{"x":527.8728144168854,"y":226.2335638471188},{"x":521.3024847507477,"y":226.10652429538388},{"x":487.6637692153454,"y":269.516349054152},{"x":492.53167286515236,"y":268.0014941461625},{"x":498.14372247457504,"y":266.67949417906425},{"x":501.7443406879902,"y":267.2075164683404},{"x":505.5012784898281,"y":266.1977042921128},{"x":513.518238723278,"y":268.66181871967933},{"x":521.1821981072426,"y":269.4167241223397},{"x":514.5015707612038,"y":274.0143846638741},{"x":508.83223447203636,"y":276.6928109891953},{"x":502.9551590383053,"y":277.3477010496201},{"x":498.2226978838444,"y":276.7360996969285},{"x":492.5024300813675,"y":274.6970875628533},{"x":488.61172875761986,"y":269.74010888415},{"x":497.2433471083641,"y":270.23124519663475},{"x":502.03609746694565,"y":270.4881977208199},{"x":507.3701456785202,"y":270.1044398911538},{"x":519.4412326216698,"y":269.5110785134377},{"x":508.12173959612846,"y":271.158454335505},{"x":503.025142788887,"y":271.7769581444802},{"x":498.2751730978489,"y":271.27668622809074}],[{"x":575.4289033189416,"y":96.69157714613023},{"x":575.0089431256056,"y":108.45554218657556},{"x":575.3803079351783,"y":119.523285935002},{"x":576.5040263161063,"y":129.0130630827719},{"x":578.7652788180858,"y":139.67856867082656},{"x":584.0118243247271,"y":149.07947898872436},{"x":590.9061988592148,"y":157.3375187612349},{"x":600.3024386763573,"y":166.4939910865599},{"x":612.8085069060326,"y":171.9522984123999},{"x":625.6007747650146,"y":169.0268743134314},{"x":633.3883430957794,"y":162.2059975362593},{"x":640.3246023654938,"y":156.89696020849289},{"x":647.0983740091324,"y":148.92544485099853},{"x":652.5749768018723,"y":139.6908329821402},{"x":656.2116791009903,"y":130.98511714704574},{"x":659.2619792222977,"y":121.89113349683824},{"x":661.1847828626633,"y":111.414895633536},{"x":590.0366688966751,"y":97.08435080416741},{"x":597.0658887326717,"y":96.30971253879609},{"x":604.1793435811996,"y":96.69334376819673},{"x":610.7020010948181,"y":98.28364802368226},{"x":616.2523672580719,"y":100.93162317045274},{"x":635.8122313022614,"y":103.33054924972596},{"x":641.2868106365204,"y":101.84838841326776},{"x":647.3791997432709,"y":101.46065313585343},{"x":653.8026149272919,"y":102.04919339187684},{"x":657.612220287323,"y":103.94504354365411},{"x":624.058953166008,"y":112.44106070168557},{"x":623.6372038125992,"y":120.77518958814683},{"x":622.8375760316849,"y":128.73957468040527},{"x":621.6722447872162,"y":135.39052409895004},{"x":612.4750370383263,"y":134.6447736120993},{"x":615.8726144433022,"y":137.04947150714935},{"x":620.1995922327042,"y":138.6095454788977},{"x":624.4806340932846,"y":137.6083363390738},{"x":627.6450690031052,"y":136.39595527418197},{"x":597.6459639370441,"y":105.5917936063582},{"x":602.4066888689995,"y":105.266802111941},{"x":607.8324901461601,"y":105.51706613071504},{"x":612.0137300491333,"y":108.55084411271157},{"x":607.8006891012192,"y":109.66328666575494},{"x":601.8653501868248,"y":108.63868732221665},{"x":634.0711723566055,"y":111.0689470268065},{"x":639.5331710577011,"y":108.75894517667832},{"x":645.2980335950851,"y":109.52156786091867},{"x":648.0892332792282,"y":111.30079225667062},{"x":644.3416757583618,"y":113.4692985213572},{"x":638.816011428833,"y":112.59843675263467},{"x":598.5345310270786,"y":140.68911475904525},{"x":606.1386110186577,"y":141.5585543013388},{"x":614.658336520195,"y":142.71628488071502},{"x":618.7739044427872,"y":143.67765254743637},{"x":622.4421609640121,"y":143.17031312950195},{"x":630.0008096694946,"y":144.08841449983657},{"x":634.7515724897385,"y":144.11787945993484},{"x":627.894369840622,"y":151.4219178057486},{"x":622.2482999563217,"y":154.68191588886322},{"x":616.2834253907204,"y":155.18153191574157},{"x":610.9317002892494,"y":153.5865209198767},{"x":604.8389323949814,"y":149.88512880571426},{"x":599.5437785983086,"y":141.30464542873443},{"x":612.1623980402946,"y":144.4239004946524},{"x":618.0768132209778,"y":145.4545554614836},{"x":623.376920580864,"y":145.64860327013076},{"x":633.1576541662216,"y":144.4289133644873},{"x":622.6006407737732,"y":149.94578708179534},{"x":617.3486320972443,"y":150.5229176379019},{"x":611.8957805037498,"y":149.23444427021087}]]
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import {
bufferToImage,
createFaceLandmarkNet,
Dimensions,
isTensor3D,
NetInput,
Point,
TMediaElement,
toNetInput,
} from '../../../src';
import { bufferToImage, Dimensions, isTensor3D, NetInput, Point, TMediaElement, toNetInput } from '../../../src';
import { FaceLandmarks68 } from '../../../src/classes/FaceLandmarks68';
import { createFaceLandmarkNet } from '../../../src/faceLandmarkNet';
import { FaceLandmark68Net } from '../../../src/faceLandmarkNet/FaceLandmark68Net';
import { describeWithNets, expectAllTensorsReleased, expectMaxDelta } from '../../utils';
import { describeWithNets, expectAllTensorsReleased, expectMaxDelta, expectPointClose } from '../../utils';
function getInputDims (input: tf.Tensor | TMediaElement): Dimensions {
if (input instanceof tf.Tensor) {
......@@ -22,7 +14,7 @@ function getInputDims (input: tf.Tensor | TMediaElement): Dimensions {
return input
}
describe('faceLandmarkNet', () => {
describe('faceLandmark68Net', () => {
let imgEl1: HTMLImageElement
let imgEl2: HTMLImageElement
......@@ -43,71 +35,71 @@ describe('faceLandmarkNet', () => {
faceLandmarkPositionsRect = await (await fetch('base/test/data/faceLandmarkPositionsRect.json')).json()
})
describeWithNets('uncompressed weights', { withFaceLandmarkNet: { quantized: false } }, ({ faceLandmarkNet }) => {
describeWithNets('uncompressed weights', { withFaceLandmark68Net: { quantized: false } }, ({ faceLandmark68Net }) => {
it('computes face landmarks for squared input', async () => {
const { width, height } = imgEl1
const result = await faceLandmarkNet.detectLandmarks(imgEl1) as FaceLandmarks68
const result = await faceLandmark68Net.detectLandmarks(imgEl1) as FaceLandmarks68
expect(result.getImageWidth()).toEqual(width)
expect(result.getImageHeight()).toEqual(height)
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach(({ x, y }, i) => {
expectMaxDelta(x, faceLandmarkPositions1[i].x, 1)
expectMaxDelta(y, faceLandmarkPositions1[i].y, 1)
result.getPositions().forEach((pt, i) => {
const { x, y } = faceLandmarkPositions1[i]
expectPointClose(pt, { x, y }, 1)
})
})
it('computes face landmarks for rectangular input', async () => {
const { width, height } = imgElRect
const result = await faceLandmarkNet.detectLandmarks(imgElRect) as FaceLandmarks68
const result = await faceLandmark68Net.detectLandmarks(imgElRect) as FaceLandmarks68
expect(result.getImageWidth()).toEqual(width)
expect(result.getImageHeight()).toEqual(height)
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach(({ x, y }, i) => {
expectMaxDelta(x, faceLandmarkPositionsRect[i].x, 2)
expectMaxDelta(y, faceLandmarkPositionsRect[i].y, 2)
result.getPositions().forEach((pt, i) => {
const { x, y } = faceLandmarkPositionsRect[i]
expectPointClose(pt, { x, y }, 2)
})
})
})
describeWithNets('quantized weights', { withFaceLandmarkNet: { quantized: true } }, ({ faceLandmarkNet }) => {
describeWithNets('quantized weights', { withFaceLandmark68Net: { quantized: true } }, ({ faceLandmark68Net }) => {
it('computes face landmarks for squared input', async () => {
const { width, height } = imgEl1
const result = await faceLandmarkNet.detectLandmarks(imgEl1) as FaceLandmarks68
const result = await faceLandmark68Net.detectLandmarks(imgEl1) as FaceLandmarks68
expect(result.getImageWidth()).toEqual(width)
expect(result.getImageHeight()).toEqual(height)
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach(({ x, y }, i) => {
expectMaxDelta(x, faceLandmarkPositions1[i].x, 2)
expectMaxDelta(y, faceLandmarkPositions1[i].y, 2)
result.getPositions().forEach((pt, i) => {
const { x, y } = faceLandmarkPositions1[i]
expectPointClose(pt, { x, y }, 2)
})
})
it('computes face landmarks for rectangular input', async () => {
const { width, height } = imgElRect
const result = await faceLandmarkNet.detectLandmarks(imgElRect) as FaceLandmarks68
const result = await faceLandmark68Net.detectLandmarks(imgElRect) as FaceLandmarks68
expect(result.getImageWidth()).toEqual(width)
expect(result.getImageHeight()).toEqual(height)
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach(({ x, y }, i) => {
expectMaxDelta(x, faceLandmarkPositionsRect[i].x, 6)
expectMaxDelta(y, faceLandmarkPositionsRect[i].y, 6)
result.getPositions().forEach((pt, i) => {
const { x, y } = faceLandmarkPositionsRect[i]
expectPointClose(pt, { x, y }, 6)
})
})
})
describeWithNets('batch inputs', { withFaceLandmarkNet: { quantized: false } }, ({ faceLandmarkNet }) => {
describeWithNets('batch inputs', { withFaceLandmark68Net: { quantized: false } }, ({ faceLandmark68Net }) => {
it('computes face landmarks for batch of image elements', async () => {
const inputs = [imgEl1, imgEl2, imgElRect]
......@@ -118,7 +110,7 @@ describe('faceLandmarkNet', () => {
faceLandmarkPositionsRect
]
const results = await faceLandmarkNet.detectLandmarks(inputs) as FaceLandmarks68[]
const results = await faceLandmark68Net.detectLandmarks(inputs) as FaceLandmarks68[]
expect(Array.isArray(results)).toBe(true)
expect(results.length).toEqual(3)
results.forEach((result, batchIdx) => {
......@@ -143,7 +135,7 @@ describe('faceLandmarkNet', () => {
faceLandmarkPositionsRect
]
const results = await faceLandmarkNet.detectLandmarks(inputs) as FaceLandmarks68[]
const results = await faceLandmark68Net.detectLandmarks(inputs) as FaceLandmarks68[]
expect(Array.isArray(results)).toBe(true)
expect(results.length).toEqual(3)
results.forEach((result, batchIdx) => {
......@@ -153,8 +145,8 @@ describe('faceLandmarkNet', () => {
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach(({ x, y }, i) => {
expectMaxDelta(x, faceLandmarkPositions[batchIdx][i].x, 1)
expectMaxDelta(y, faceLandmarkPositions[batchIdx][i].y, 1)
expectMaxDelta(x, faceLandmarkPositions[batchIdx][i].x, 3)
expectMaxDelta(y, faceLandmarkPositions[batchIdx][i].y, 3)
})
})
})
......@@ -168,7 +160,7 @@ describe('faceLandmarkNet', () => {
faceLandmarkPositionsRect
]
const results = await faceLandmarkNet.detectLandmarks(inputs) as FaceLandmarks68[]
const results = await faceLandmark68Net.detectLandmarks(inputs) as FaceLandmarks68[]
expect(Array.isArray(results)).toBe(true)
expect(results.length).toEqual(3)
results.forEach((result, batchIdx) => {
......@@ -178,15 +170,15 @@ describe('faceLandmarkNet', () => {
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach(({ x, y }, i) => {
expectMaxDelta(x, faceLandmarkPositions[batchIdx][i].x, 1)
expectMaxDelta(y, faceLandmarkPositions[batchIdx][i].y, 1)
expectMaxDelta(x, faceLandmarkPositions[batchIdx][i].x, 3)
expectMaxDelta(y, faceLandmarkPositions[batchIdx][i].y, 3)
})
})
})
})
describeWithNets('no memory leaks', { withFaceLandmarkNet: { quantized: true } }, ({ faceLandmarkNet }) => {
describeWithNets('no memory leaks', { withFaceLandmark68Net: { quantized: true } }, ({ faceLandmark68Net }) => {
describe('NeuralNetwork, uncompressed model', () => {
......@@ -218,7 +210,7 @@ describe('faceLandmarkNet', () => {
it('single image element', async () => {
await expectAllTensorsReleased(async () => {
const netInput = new NetInput([imgEl1])
const outTensor = await faceLandmarkNet.forwardInput(netInput)
const outTensor = await faceLandmark68Net.forwardInput(netInput)
outTensor.dispose()
})
})
......@@ -226,7 +218,7 @@ describe('faceLandmarkNet', () => {
it('multiple image elements', async () => {
await expectAllTensorsReleased(async () => {
const netInput = new NetInput([imgEl1, imgEl1, imgEl1])
const outTensor = await faceLandmarkNet.forwardInput(netInput)
const outTensor = await faceLandmark68Net.forwardInput(netInput)
outTensor.dispose()
})
})
......@@ -236,7 +228,7 @@ describe('faceLandmarkNet', () => {
await expectAllTensorsReleased(async () => {
const netInput = new NetInput([tensor])
const outTensor = await faceLandmarkNet.forwardInput(netInput)
const outTensor = await faceLandmark68Net.forwardInput(netInput)
outTensor.dispose()
})
......@@ -248,7 +240,7 @@ describe('faceLandmarkNet', () => {
await expectAllTensorsReleased(async () => {
const netInput = new NetInput(tensors)
const outTensor = await faceLandmarkNet.forwardInput(netInput)
const outTensor = await faceLandmark68Net.forwardInput(netInput)
outTensor.dispose()
})
......@@ -259,7 +251,7 @@ describe('faceLandmarkNet', () => {
const tensor = tf.tidy(() => tf.fromPixels(imgEl1).expandDims()) as tf.Tensor4D
await expectAllTensorsReleased(async () => {
const outTensor = await faceLandmarkNet.forwardInput(await toNetInput(tensor))
const outTensor = await faceLandmark68Net.forwardInput(await toNetInput(tensor))
outTensor.dispose()
})
......@@ -271,7 +263,7 @@ describe('faceLandmarkNet', () => {
.map(el => tf.tidy(() => tf.fromPixels(el).expandDims())) as tf.Tensor4D[]
await expectAllTensorsReleased(async () => {
const outTensor = await faceLandmarkNet.forwardInput(await toNetInput(tensors))
const outTensor = await faceLandmark68Net.forwardInput(await toNetInput(tensors))
outTensor.dispose()
})
......@@ -284,13 +276,13 @@ describe('faceLandmarkNet', () => {
it('single image element', async () => {
await expectAllTensorsReleased(async () => {
await faceLandmarkNet.detectLandmarks(imgEl1)
await faceLandmark68Net.detectLandmarks(imgEl1)
})
})
it('multiple image elements', async () => {
await expectAllTensorsReleased(async () => {
await faceLandmarkNet.detectLandmarks([imgEl1, imgEl1, imgEl1])
await faceLandmark68Net.detectLandmarks([imgEl1, imgEl1, imgEl1])
})
})
......@@ -298,7 +290,7 @@ describe('faceLandmarkNet', () => {
const tensor = tf.fromPixels(imgEl1)
await expectAllTensorsReleased(async () => {
await faceLandmarkNet.detectLandmarks(tensor)
await faceLandmark68Net.detectLandmarks(tensor)
})
tensor.dispose()
......@@ -309,7 +301,7 @@ describe('faceLandmarkNet', () => {
await expectAllTensorsReleased(async () => {
await faceLandmarkNet.detectLandmarks(tensors)
await faceLandmark68Net.detectLandmarks(tensors)
})
tensors.forEach(t => t.dispose())
......@@ -319,7 +311,7 @@ describe('faceLandmarkNet', () => {
const tensor = tf.tidy(() => tf.fromPixels(imgEl1).expandDims()) as tf.Tensor4D
await expectAllTensorsReleased(async () => {
await faceLandmarkNet.detectLandmarks(tensor)
await faceLandmark68Net.detectLandmarks(tensor)
})
tensor.dispose()
......@@ -330,7 +322,7 @@ describe('faceLandmarkNet', () => {
.map(el => tf.tidy(() => tf.fromPixels(el).expandDims())) as tf.Tensor4D[]
await expectAllTensorsReleased(async () => {
await faceLandmarkNet.detectLandmarks(tensors)
await faceLandmark68Net.detectLandmarks(tensors)
})
tensors.forEach(t => t.dispose())
......
import * as tf from '@tensorflow/tfjs-core';
import { bufferToImage, Dimensions, isTensor3D, NetInput, Point, TMediaElement, toNetInput } from '../../../src';
import { FaceLandmarks68 } from '../../../src/classes/FaceLandmarks68';
import { createFaceLandmarkNet } from '../../../src/faceLandmarkNet';
import { FaceLandmark68TinyNet } from '../../../src/faceLandmarkNet/FaceLandmark68TinyNet';
import { describeWithNets, expectAllTensorsReleased, expectMaxDelta, expectPointClose } from '../../utils';
function getInputDims (input: tf.Tensor | TMediaElement): Dimensions {
if (input instanceof tf.Tensor) {
const [height, width] = input.shape.slice(isTensor3D(input) ? 0 : 1)
return { width, height }
}
return input
}
describe('faceLandmark68TinyNet', () => {
let imgEl1: HTMLImageElement
let imgEl2: HTMLImageElement
let imgElRect: HTMLImageElement
let faceLandmarkPositions1: Point[]
let faceLandmarkPositions2: Point[]
let faceLandmarkPositionsRect: Point[]
beforeAll(async () => {
const img1 = await (await fetch('base/test/images/face1.png')).blob()
imgEl1 = await bufferToImage(img1)
const img2 = await (await fetch('base/test/images/face2.png')).blob()
imgEl2 = await bufferToImage(img2)
const imgRect = await (await fetch('base/test/images/face_rectangular.png')).blob()
imgElRect = await bufferToImage(imgRect)
faceLandmarkPositions1 = await (await fetch('base/test/data/faceLandmarkPositions1Tiny.json')).json()
faceLandmarkPositions2 = await (await fetch('base/test/data/faceLandmarkPositions2Tiny.json')).json()
faceLandmarkPositionsRect = await (await fetch('base/test/data/faceLandmarkPositionsRectTiny.json')).json()
})
describeWithNets('uncompressed weights', { withFaceLandmark68TinyNet: { quantized: false } }, ({ faceLandmark68TinyNet }) => {
it('computes face landmarks for squared input', async () => {
const { width, height } = imgEl1
const result = await faceLandmark68TinyNet.detectLandmarks(imgEl1) as FaceLandmarks68
expect(result.getImageWidth()).toEqual(width)
expect(result.getImageHeight()).toEqual(height)
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach((pt, i) => {
const { x, y } = faceLandmarkPositions1[i]
expectPointClose(pt, { x, y }, 5)
})
})
it('computes face landmarks for rectangular input', async () => {
const { width, height } = imgElRect
const result = await faceLandmark68TinyNet.detectLandmarks(imgElRect) as FaceLandmarks68
expect(result.getImageWidth()).toEqual(width)
expect(result.getImageHeight()).toEqual(height)
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach((pt, i) => {
const { x, y } = faceLandmarkPositionsRect[i]
expectPointClose(pt, { x, y }, 5)
})
})
})
describeWithNets('quantized weights', { withFaceLandmark68TinyNet: { quantized: true } }, ({ faceLandmark68TinyNet }) => {
it('computes face landmarks for squared input', async () => {
const { width, height } = imgEl1
const result = await faceLandmark68TinyNet.detectLandmarks(imgEl1) as FaceLandmarks68
expect(result.getImageWidth()).toEqual(width)
expect(result.getImageHeight()).toEqual(height)
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach((pt, i) => {
const { x, y } = faceLandmarkPositions1[i]
expectPointClose(pt, { x, y }, 5)
})
})
it('computes face landmarks for rectangular input', async () => {
const { width, height } = imgElRect
const result = await faceLandmark68TinyNet.detectLandmarks(imgElRect) as FaceLandmarks68
expect(result.getImageWidth()).toEqual(width)
expect(result.getImageHeight()).toEqual(height)
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach((pt, i) => {
const { x, y } = faceLandmarkPositionsRect[i]
expectPointClose(pt, { x, y }, 5)
})
})
})
describeWithNets('batch inputs', { withFaceLandmark68TinyNet: { quantized: false } }, ({ faceLandmark68TinyNet }) => {
it('computes face landmarks for batch of image elements', async () => {
const inputs = [imgEl1, imgEl2, imgElRect]
const faceLandmarkPositions = [
faceLandmarkPositions1,
faceLandmarkPositions2,
faceLandmarkPositionsRect
]
const results = await faceLandmark68TinyNet.detectLandmarks(inputs) as FaceLandmarks68[]
expect(Array.isArray(results)).toBe(true)
expect(results.length).toEqual(3)
results.forEach((result, batchIdx) => {
const { width, height } = getInputDims(inputs[batchIdx])
expect(result.getImageWidth()).toEqual(width)
expect(result.getImageHeight()).toEqual(height)
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach((pt, i) => {
const { x, y } = faceLandmarkPositions[batchIdx][i]
expectPointClose(pt, { x, y }, 5)
})
})
})
it('computes face landmarks for batch of tf.Tensor3D', async () => {
const inputs = [imgEl1, imgEl2, imgElRect].map(el => tf.fromPixels(el))
const faceLandmarkPositions = [
faceLandmarkPositions1,
faceLandmarkPositions2,
faceLandmarkPositionsRect
]
const results = await faceLandmark68TinyNet.detectLandmarks(inputs) as FaceLandmarks68[]
expect(Array.isArray(results)).toBe(true)
expect(results.length).toEqual(3)
results.forEach((result, batchIdx) => {
const { width, height } = getInputDims(inputs[batchIdx])
expect(result.getImageWidth()).toEqual(width)
expect(result.getImageHeight()).toEqual(height)
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach((pt, i) => {
const { x, y } = faceLandmarkPositions[batchIdx][i]
expectPointClose(pt, { x, y }, 3)
})
})
})
it('computes face landmarks for batch of mixed inputs', async () => {
const inputs = [imgEl1, tf.fromPixels(imgEl2), tf.fromPixels(imgElRect)]
const faceLandmarkPositions = [
faceLandmarkPositions1,
faceLandmarkPositions2,
faceLandmarkPositionsRect
]
const results = await faceLandmark68TinyNet.detectLandmarks(inputs) as FaceLandmarks68[]
expect(Array.isArray(results)).toBe(true)
expect(results.length).toEqual(3)
results.forEach((result, batchIdx) => {
const { width, height } = getInputDims(inputs[batchIdx])
expect(result.getImageWidth()).toEqual(width)
expect(result.getImageHeight()).toEqual(height)
expect(result.getShift().x).toEqual(0)
expect(result.getShift().y).toEqual(0)
result.getPositions().forEach((pt, i) => {
const { x, y } = faceLandmarkPositions[batchIdx][i]
expectPointClose(pt, { x, y }, 3)
})
})
})
})
describeWithNets('no memory leaks', { withFaceLandmark68TinyNet: { quantized: true } }, ({ faceLandmark68TinyNet }) => {
describe('NeuralNetwork, uncompressed model', () => {
it('disposes all param tensors', async () => {
await expectAllTensorsReleased(async () => {
const res = await fetch('base/weights_uncompressed/face_landmark_68_model.weights')
const weights = new Float32Array(await res.arrayBuffer())
const net = createFaceLandmarkNet(weights)
net.dispose()
})
})
})
describe('NeuralNetwork, quantized model', () => {
it('disposes all param tensors', async () => {
await expectAllTensorsReleased(async () => {
const net = new FaceLandmark68TinyNet()
await net.load('base/weights')
net.dispose()
})
})
})
describe('forwardInput', () => {
it('single image element', async () => {
await expectAllTensorsReleased(async () => {
const netInput = new NetInput([imgEl1])
const outTensor = await faceLandmark68TinyNet.forwardInput(netInput)
outTensor.dispose()
})
})
it('multiple image elements', async () => {
await expectAllTensorsReleased(async () => {
const netInput = new NetInput([imgEl1, imgEl1, imgEl1])
const outTensor = await faceLandmark68TinyNet.forwardInput(netInput)
outTensor.dispose()
})
})
it('single tf.Tensor3D', async () => {
const tensor = tf.fromPixels(imgEl1)
await expectAllTensorsReleased(async () => {
const netInput = new NetInput([tensor])
const outTensor = await faceLandmark68TinyNet.forwardInput(netInput)
outTensor.dispose()
})
tensor.dispose()
})
it('multiple tf.Tensor3Ds', async () => {
const tensors = [imgEl1, imgEl1, imgEl1].map(el => tf.fromPixels(el))
await expectAllTensorsReleased(async () => {
const netInput = new NetInput(tensors)
const outTensor = await faceLandmark68TinyNet.forwardInput(netInput)
outTensor.dispose()
})
tensors.forEach(t => t.dispose())
})
it('single batch size 1 tf.Tensor4Ds', async () => {
const tensor = tf.tidy(() => tf.fromPixels(imgEl1).expandDims()) as tf.Tensor4D
await expectAllTensorsReleased(async () => {
const outTensor = await faceLandmark68TinyNet.forwardInput(await toNetInput(tensor))
outTensor.dispose()
})
tensor.dispose()
})
it('multiple batch size 1 tf.Tensor4Ds', async () => {
const tensors = [imgEl1, imgEl1, imgEl1]
.map(el => tf.tidy(() => tf.fromPixels(el).expandDims())) as tf.Tensor4D[]
await expectAllTensorsReleased(async () => {
const outTensor = await faceLandmark68TinyNet.forwardInput(await toNetInput(tensors))
outTensor.dispose()
})
tensors.forEach(t => t.dispose())
})
})
describe('detectLandmarks', () => {
it('single image element', async () => {
await expectAllTensorsReleased(async () => {
await faceLandmark68TinyNet.detectLandmarks(imgEl1)
})
})
it('multiple image elements', async () => {
await expectAllTensorsReleased(async () => {
await faceLandmark68TinyNet.detectLandmarks([imgEl1, imgEl1, imgEl1])
})
})
it('single tf.Tensor3D', async () => {
const tensor = tf.fromPixels(imgEl1)
await expectAllTensorsReleased(async () => {
await faceLandmark68TinyNet.detectLandmarks(tensor)
})
tensor.dispose()
})
it('multiple tf.Tensor3Ds', async () => {
const tensors = [imgEl1, imgEl1, imgEl1].map(el => tf.fromPixels(el))
await expectAllTensorsReleased(async () => {
await faceLandmark68TinyNet.detectLandmarks(tensors)
})
tensors.forEach(t => t.dispose())
})
it('single batch size 1 tf.Tensor4Ds', async () => {
const tensor = tf.tidy(() => tf.fromPixels(imgEl1).expandDims()) as tf.Tensor4D
await expectAllTensorsReleased(async () => {
await faceLandmark68TinyNet.detectLandmarks(tensor)
})
tensor.dispose()
})
it('multiple batch size 1 tf.Tensor4Ds', async () => {
const tensors = [imgEl1, imgEl1, imgEl1]
.map(el => tf.tidy(() => tf.fromPixels(el).expandDims())) as tf.Tensor4D[]
await expectAllTensorsReleased(async () => {
await faceLandmark68TinyNet.detectLandmarks(tensors)
})
tensors.forEach(t => t.dispose())
})
})
})
})
import * as tf from '@tensorflow/tfjs-core';
import {
FaceDetectionNet,
FaceLandmarkNet,
FaceRecognitionNet,
IPoint,
IRect,
Mtcnn,
NeuralNetwork,
TinyYolov2,
} from '../src/';
import { FaceDetectionNet, FaceRecognitionNet, IPoint, IRect, Mtcnn, NeuralNetwork, TinyYolov2 } from '../src/';
import { allFacesMtcnnFactory, allFacesSsdMobilenetv1Factory, allFacesTinyYolov2Factory } from '../src/allFacesFactory';
import { FaceDetection } from '../src/classes/FaceDetection';
import { FaceLandmarks } from '../src/classes/FaceLandmarks';
import { FullFaceDescription } from '../src/classes/FullFaceDescription';
import { FaceLandmark68Net } from '../src/faceLandmarkNet/FaceLandmark68Net';
import { FaceLandmark68TinyNet } from '../src/faceLandmarkNet/FaceLandmark68TinyNet';
import { allFacesMtcnnFunction, allFacesSsdMobilenetv1Function, allFacesTinyYolov2Function } from '../src/globalApi';
jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000
......@@ -106,7 +99,8 @@ export type InjectNetArgs = {
allFacesTinyYolov2: allFacesTinyYolov2Function
allFacesMtcnn: allFacesMtcnnFunction
faceDetectionNet: FaceDetectionNet
faceLandmarkNet: FaceLandmarkNet
faceLandmark68Net: FaceLandmark68Net
faceLandmark68TinyNet: FaceLandmark68TinyNet
faceRecognitionNet: FaceRecognitionNet
mtcnn: Mtcnn
tinyYolov2: TinyYolov2
......@@ -118,7 +112,8 @@ export type DescribeWithNetsOptions = {
withAllFacesTinyYolov2?: boolean
withAllFacesMtcnn?: boolean
withFaceDetectionNet?: WithNetOptions
withFaceLandmarkNet?: WithNetOptions
withFaceLandmark68Net?: WithNetOptions
withFaceLandmark68TinyNet?: WithNetOptions
withFaceRecognitionNet?: WithNetOptions
withMtcnn?: WithNetOptions
withTinyYolov2?: WithTinyYolov2Options
......@@ -148,12 +143,13 @@ export function describeWithNets(
describe(description, () => {
let faceDetectionNet: FaceDetectionNet = new FaceDetectionNet()
let faceLandmarkNet: FaceLandmarkNet = new FaceLandmarkNet()
let faceLandmark68Net: FaceLandmark68Net = new FaceLandmark68Net()
let faceLandmark68TinyNet: FaceLandmark68TinyNet = new FaceLandmark68TinyNet()
let faceRecognitionNet: FaceRecognitionNet = new FaceRecognitionNet()
let mtcnn: Mtcnn = new Mtcnn()
let tinyYolov2: TinyYolov2 = new TinyYolov2(options.withTinyYolov2 && options.withTinyYolov2.withSeparableConv)
let allFacesSsdMobilenetv1 = allFacesSsdMobilenetv1Factory(faceDetectionNet, faceLandmarkNet, faceRecognitionNet)
let allFacesTinyYolov2 = allFacesTinyYolov2Factory(tinyYolov2, faceLandmarkNet, faceRecognitionNet)
let allFacesSsdMobilenetv1 = allFacesSsdMobilenetv1Factory(faceDetectionNet, faceLandmark68Net, faceRecognitionNet)
let allFacesTinyYolov2 = allFacesTinyYolov2Factory(tinyYolov2, faceLandmark68Net, faceRecognitionNet)
let allFacesMtcnn = allFacesMtcnnFactory(mtcnn, faceRecognitionNet)
beforeAll(async () => {
......@@ -162,7 +158,8 @@ export function describeWithNets(
withAllFacesTinyYolov2,
withAllFacesMtcnn,
withFaceDetectionNet,
withFaceLandmarkNet,
withFaceLandmark68Net,
withFaceLandmark68TinyNet,
withFaceRecognitionNet,
withMtcnn,
withTinyYolov2
......@@ -175,10 +172,17 @@ export function describeWithNets(
)
}
if (withFaceLandmarkNet || withAllFacesSsdMobilenetv1 || withAllFacesTinyYolov2) {
await initNet<FaceLandmarkNet>(
faceLandmarkNet,
!!withFaceLandmarkNet && !withFaceLandmarkNet.quantized && 'face_landmark_68_model.weights'
if (withFaceLandmark68Net || withAllFacesSsdMobilenetv1 || withAllFacesTinyYolov2) {
await initNet<FaceLandmark68Net>(
faceLandmark68Net,
!!withFaceLandmark68Net && !withFaceLandmark68Net.quantized && 'face_landmark_68_model.weights'
)
}
if (withFaceLandmark68TinyNet) {
await initNet<FaceLandmark68TinyNet>(
faceLandmark68TinyNet,
!!withFaceLandmark68TinyNet && !withFaceLandmark68TinyNet.quantized && 'face_landmark_68_tiny_model.weights'
)
}
......@@ -208,7 +212,7 @@ export function describeWithNets(
afterAll(() => {
faceDetectionNet && faceDetectionNet.dispose()
faceLandmarkNet && faceLandmarkNet.dispose()
faceLandmark68Net && faceLandmark68Net.dispose()
faceRecognitionNet && faceRecognitionNet.dispose()
mtcnn && mtcnn.dispose(),
tinyYolov2 && tinyYolov2.dispose()
......@@ -219,7 +223,8 @@ export function describeWithNets(
allFacesTinyYolov2,
allFacesMtcnn,
faceDetectionNet,
faceLandmarkNet,
faceLandmark68Net,
faceLandmark68TinyNet,
faceRecognitionNet,
mtcnn,
tinyYolov2
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment