From d7a6831c738189ec0301c11d6c79d22eb52d32ac Mon Sep 17 00:00:00 2001 From: JohnConnor123 <106041597+JohnConnor123@users.noreply.github.com> Date: Sun, 16 Feb 2025 21:50:37 +0300 Subject: [PATCH 1/7] Commented out unnecessary uninformative logging for loading each image, which clogs the console. --- a00_common_functions.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/a00_common_functions.py b/a00_common_functions.py index b83dffa..7b81ba8 100644 --- a/a00_common_functions.py +++ b/a00_common_functions.py @@ -69,11 +69,11 @@ def save_history(history, path, columns=('loss', 'val_loss')): def prepare_image_from_camera(im_path): img = cv2.imread(im_path) - print('Read image: {} Shape: {}'.format(im_path, img.shape)) + # print('Read image: {} Shape: {}'.format(im_path, img.shape)) # Take central part of image with size 224х224 img = img[8:-8, 48:-48] - print('Reduced shape: {}'.format(img.shape)) + # print('Reduced shape: {}'.format(img.shape)) # Convert to grayscale with human based formulae https://samarthbhargav.wordpress.com/2014/05/05/image-processing-with-python-rgb-to-grayscale-conversion/ # Divider here is 16 for easier implementation of division in verilog for FPGA. @@ -95,8 +95,8 @@ def prepare_image_from_camera(im_path): # Check dynamic range min_pixel = output_image.min() max_pixel = output_image.max() - print('Min pixel: {}'.format(min_pixel)) - print('Max pixel: {}'.format(max_pixel)) + # print('Min pixel: {}'.format(min_pixel)) + # print('Max pixel: {}'.format(max_pixel)) # Rescale dynamic range if needed (no Verilog implementation, so skip) if 0: From 6842d548f5fc328c71e605108c77a6e20b8f5c3e Mon Sep 17 00:00:00 2001 From: JohnConnor123 Date: Sun, 16 Feb 2025 22:52:45 +0300 Subject: [PATCH 2/7] The code has been updated to correctly call functions in a newer version of the library; hyperparameters have been moved as constants to the beginning of the file --- a00_common_functions.py | 8 ++--- ..._neural_net_and_prepare_initial_weights.py | 36 +++++++++---------- r05_verilog_generator_neural_net_structure.py | 26 +++++++------- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/a00_common_functions.py b/a00_common_functions.py index 7b81ba8..34afa04 100644 --- a/a00_common_functions.py +++ b/a00_common_functions.py @@ -29,8 +29,8 @@ def show_resized_image(P, w=1000, h=1000): def load_mnist_data(type='channel_last'): from keras.datasets import mnist - from keras.utils import np_utils - + from keras.utils import to_categorical + # input image dimensions nb_classes = 10 img_rows, img_cols = 28, 28 @@ -51,8 +51,8 @@ def load_mnist_data(type='channel_last'): print(X_test.shape[0], 'test samples') # convert class vectors to binary class matrices - Y_train = np_utils.to_categorical(y_train, nb_classes) - Y_test = np_utils.to_categorical(y_test, nb_classes) + Y_train = to_categorical(y_train, nb_classes) + Y_test = to_categorical(y_test, nb_classes) return X_train, Y_train, X_test, Y_test diff --git a/r01_train_neural_net_and_prepare_initial_weights.py b/r01_train_neural_net_and_prepare_initial_weights.py index 3e050a3..9564520 100644 --- a/r01_train_neural_net_and_prepare_initial_weights.py +++ b/r01_train_neural_net_and_prepare_initial_weights.py @@ -10,6 +10,10 @@ import random +epochs = 20 +optimizer = 'Adam' +learning_rate = 0.003 + gpu_use = 0 os.environ["KERAS_BACKEND"] = "tensorflow" os.environ["CUDA_VISIBLE_DEVICES"] = "{}".format(gpu_use) @@ -178,12 +182,10 @@ def evaluate_generator_train(X_test, Y_test, batch_size): Y_train = np.concatenate((Y_train, np.zeros((Y_train.shape[0], 1))), axis=1) Y_test = np.concatenate((Y_test, np.zeros((Y_test.shape[0], 1))), axis=1) - optimizer = 'Adam' - learning_rate = 0.001 if optimizer == 'SGD': - optim = SGD(lr=learning_rate, decay=1e-6, momentum=0.9, nesterov=True) + optim = SGD(learning_rate=learning_rate, decay=1e-6, momentum=0.9, nesterov=True) else: - optim = Adam(lr=learning_rate) + optim = Adam(learning_rate=learning_rate) model.compile(optimizer=optim, loss='categorical_crossentropy', metrics=['accuracy']) if continue_training == 1: print('Continue training. Loading weights from: {}'.format(cache_model_path)) @@ -197,19 +199,17 @@ def evaluate_generator_train(X_test, Y_test, batch_size): ModelCheckpoint(cache_model_path, monitor='val_loss', save_best_only=True, verbose=0), ] - history = model.fit_generator(generator=batch_generator_train(X_train, Y_train, batch_size, 'train'), - epochs=2000, - steps_per_epoch=200, - validation_data=batch_generator_train(X_test, Y_test, batch_size, 'valid'), - validation_steps=200, - verbose=2, - max_queue_size=20, - callbacks=callbacks) - - save_history(history, final_model_path, columns=('acc', 'val_acc')) - score = model.evaluate_generator(generator=evaluate_generator_train(X_test, Y_test, batch_size, 'valid'), - steps=X_test.shape[0] // batch_size, - max_queue_size=1) + history = model.fit(batch_generator_train(X_train, Y_train, batch_size, 'train'), + epochs=epochs, + steps_per_epoch=200, + validation_data=batch_generator_train(X_test, Y_test, batch_size, 'valid'), + validation_steps=200, + verbose=2, + callbacks=callbacks) + + save_history(history, final_model_path, columns=('accuracy', 'val_accuracy')) + score = model.evaluate(evaluate_generator_train(X_test, Y_test, batch_size), + steps=X_test.shape[0] // batch_size) print('Test score:', score[0]) print('Test accuracy:', score[1]) model.load_weights(cache_model_path) @@ -235,5 +235,5 @@ def evaluate_generator_train(X_test, Y_test, batch_size): print('Accuracy: {:.2f}%'.format(100*accuracy / len(pred_answers))) ''' -Accuracy: 97.39% +Accuracy after 2000 epochs: 97.39% ''' \ No newline at end of file diff --git a/r05_verilog_generator_neural_net_structure.py b/r05_verilog_generator_neural_net_structure.py index 1ffeea1..1f455c9 100644 --- a/r05_verilog_generator_neural_net_structure.py +++ b/r05_verilog_generator_neural_net_structure.py @@ -1254,8 +1254,8 @@ def TOP(directory, size, razmer, max_address_value, output_neurons_count, max_we for i in range(len(layers)): layer = layers[i] if 'Conv2D' in str(type(layer)): - mem = layer.output_shape[3]-1 - filt = layer.input_shape[3]-1 + mem = layer.output.shape[3]-1 + filt = layer.input.shape[3]-1 if (start == 0): file.write(" if ((TOPlvl=="+str(TOPlvl)+")&&(step=="+str(step)+")) nextstep = 1;\n") else: start = 0 @@ -1269,7 +1269,7 @@ def TOP(directory, size, razmer, max_address_value, output_neurons_count, max_we file.write(" conv_en = 1;\n") file.write(" mem = "+str(mem)+";\n") file.write(" filt = "+str(filt)+";\n") - file.write(" matrix = "+str(layer.input_shape[1])+";\n") + file.write(" matrix = "+str(layer.input.shape[1])+";\n") if 'GlobalMaxPooling2D' in str(type(layers[i+2])): file.write(" globmaxp_en = 1;\n") else: file.write(" globmaxp_en = 0;\n") @@ -1282,7 +1282,7 @@ def TOP(directory, size, razmer, max_address_value, output_neurons_count, max_we TOPlvl += 1 elif 'MaxPooling2D' in str(type(layer)): if not 'GlobalMaxPooling2D' in str(type(layer)): - for i in range(int(layer.input_shape[3]/4)): + for i in range(int(layer.input.shape[3]/4)): file.write(" if ((TOPlvl=="+str(TOPlvl)+")&&(STOP_maxp==0))\n") file.write(" begin\n") file.write(" memstartp = "+str(one)+"+"+str(i)+"*matrix2*((4 >> (num_conv >> 1)));\n") @@ -1301,8 +1301,8 @@ def TOP(directory, size, razmer, max_address_value, output_neurons_count, max_we file.write(" begin \n") file.write(" globmaxp_en = 0; \n") file.write(" nextstep = 1; \n") - file.write(" in_dense = "+str(layer.input_shape[1])+"; \n") - file.write(" out_dense = "+str(layer.output_shape[1])+"; \n") + file.write(" in_dense = "+str(layer.input.shape[1])+"; \n") + file.write(" out_dense = "+str(layer.output.shape[1])+"; \n") file.write(" end \n") step += 2 @@ -1541,9 +1541,9 @@ def convert_to_fix_point(arr1, bit): layer = model.layers[i] if 'Conv2D' in str(type(layer)): total_conv_layers_number += 1 - conv_inputs.append(layer.input_shape[1]) - conv_mem.append(layer.input_shape[3]) - conv_filt.append(layer.output_shape[3]) + conv_inputs.append(layer.input.shape[1]) + conv_mem.append(layer.input.shape[3]) + conv_filt.append(layer.output.shape[3]) w = layer.get_weights() conv_block_size_1 = len(w[0]) conv_block_size_2 = len(w[0][0]) @@ -1553,18 +1553,18 @@ def convert_to_fix_point(arr1, bit): max_weights_per_layer = max_weights_per_layer_1 elif 'MaxPooling2D' in str(type(layer)): if not 'GlobalMaxPooling2D' in str(type(layer)): - total_maxp_layers_number += int(layer.input_shape[3]/4) + total_maxp_layers_number += int(layer.input.shape[3]/4) elif 'Dense' in str(type(layer)): w = layer.get_weights() total_dense_layers_number += 1 - dense_inputs.append(layer.input_shape[1]) - dense_outputs.append(layer.output_shape[1]) + dense_inputs.append(layer.input.shape[1]) + dense_outputs.append(layer.output.shape[1]) max_address_value += len(layer.get_weights()[0][0]) * len(w[0]) max_weights_per_layer_1 = int(len(w[0][0]) * len(w[0])/(conv_block_size_1*conv_block_size_2)) + 1 if max_weights_per_layer_1 > max_weights_per_layer: max_weights_per_layer = max_weights_per_layer_1 if i == len(model.layers) - 1: - output_neurons_count = layer.output_shape[1] + output_neurons_count = layer.output.shape[1] max_input_image_size = max(conv_inputs) steps_count = 2 + (total_conv_layers_number*2) + (total_dense_layers_number*2) + 1 From 26cb3f3d8547104eb145889882f91c514b58533d Mon Sep 17 00:00:00 2001 From: JohnConnor123 Date: Sun, 16 Feb 2025 23:01:18 +0300 Subject: [PATCH 3/7] The weights folder with training results has been removed so that users can train the neural network themselves. --- .gitignore | 2 + .../keras_model_low_weights_digit_detector.h5 | Bin 108440 -> 0 bytes ...as_model_low_weights_digit_detector.h5.csv | 113 ------------------ ...as_model_low_weights_digit_detector.h5.png | Bin 22288 -> 0 bytes ...del_low_weights_digit_detector_rescaled.h5 | Bin 58888 -> 0 bytes weights/optimal_bit.pklz | Bin 42 -> 0 bytes 6 files changed, 2 insertions(+), 113 deletions(-) create mode 100644 .gitignore delete mode 100644 weights/keras_model_low_weights_digit_detector.h5 delete mode 100644 weights/keras_model_low_weights_digit_detector.h5.csv delete mode 100644 weights/keras_model_low_weights_digit_detector.h5.png delete mode 100644 weights/keras_model_low_weights_digit_detector_rescaled.h5 delete mode 100644 weights/optimal_bit.pklz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..49a130d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__ +weights \ No newline at end of file diff --git a/weights/keras_model_low_weights_digit_detector.h5 b/weights/keras_model_low_weights_digit_detector.h5 deleted file mode 100644 index 79ae9bef65f1b52c29d7529738a568565d22291c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108440 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%0A2nc~>UhS_fCW&_I^;S>$u2w$ES(-9 zj7oJR@5T>=8AoPe_pYaeL6^oNEzwy^f=xy{0GTVF^9GXXhcoWdhI80RAt|H}68YFd!Bs;D~ z175Bl0uDQ7LgSK$#IFB&P`cWVJlx}mL|rhEkCej4XKIMfE7D*yg$u!1r7wGlD6%(= zBACyjb&O=pgEbFm@;Ku)ob+1Bezv{XkbJNPTe9kSOp|{ z^=6YEcY$uQ%Aj~tUbF{4XcKvW7amw$gZwlKh}YBA%%?{yNaE-tu@9CoFm~rDn7MHy zj2tP+CTT5$nq{+4K?{ex9!Qb#5fTvd?1*ShmXMGuI*#OL2?;)4AsD;!HIe-w7rT75 z3^AUb0rvZ5!pPT08Iy6tk?t!!FsW8xQ)jnBuZmi@V(!TP$e(n7Ik_O(TUFegz$Dh2 zoce)lmfb9jlUXciwbEm(!gs*kZF7*beJ|MfaWD~1%SJ0Ul#vl1cm1rt_}o@O;@W7k zRkw|~K0t^0kw5ItRH#0j464^sP*n3UV$yw!z<=Hb*sIjQR3u&|{OF5JaQR#K!Mo~4 z3cCOP2AS0@geYE;K@XFr$Bw#qQ?PIDMCieI5%(DzZA(P+OPSnh$V{Y&*Sh{7_jVG| zZ)*5imzsArV>&3CQF$n2Hv2sJiPOye$c&EI2_dIV9y9*Hm_7@LOHu2Mj#r)mx9kiu=z|j&KX*quSTg*dpo>V{-1M@afsHM38(KZe**WSD6P8sf;FmS9Qs>>hEZ)!tkH%R~j)Bv2BBkU1u7aLz*6 zXgmzI5TXyR9pk5Yjxn)g$u?J6^cHy4eAsCI8+FY(s);;n$XET^HC)|GO?^DHQkSWw4ZW9Y^ZjN}2zE|~$^VctA_Vrf8D&70C_~|Cb zZF3y#>2(X{dp#s$H6=jZ|0P;J&;RGWYE;?@^!pEJ?C@#Kzym6*np$#Py+R2*9&{8I zSM4IH`Uw2n_kzaLTf)Mw#mq@`0P5ZT-$d}4iGr%*%uk$u+#+&= z9ESs&))R@3(bhWWb09uKU}$q z^jf3IrOGl!^}u4r<&{+2sxFzRddgUEvYJP}49`QdUrsYd-RXK!M(OS# zY+F@Da);g{mK(MfJ3o}ft~XwhioheFw%iie?@stBfA-V^K-^xE3zL^H3vVR;?7w%C zZ!%}rK7;vv5lqkz7YwCi(9tf%;1#PcxE^Q=|Bt;lkH+$Q`-Tyfp-2>^NJ5z-uKn33 zNm7&u(L8F@JV>*-3?);hj42{g64!ZNnnZ?@W=SeZB}tN`!E=4De&6-Jf4u8n>%G_W zKI{GC_RqQ2wvX!=_H^uHAN#Wv4l80{`dpFxIk|J$9nGV;-pjEpzwXuL-vhKlB_ap2 z-!#^f$2ZjlX@4Z4KQ*T0mCj~zP(PL(D?OV`%2-3|KA#kg|LHIDs8w+`+U%3rb-WQ= z`^%WnL3>lU>~$*4dndw$o37=w#?C{|0w=~T+)f}7^bHSug*oe9Cq%LiG!|p_{;J}} zDZ8`B+>VQ6Qu|N}g^6>SWort#1>zML7Mj2s_m5z-(l+u<=lQXTvwP{HxC~MMF^qgm z(sW(9M?J;t?3-6O*O*@+*`ErzB|jU%uHMPHU6Eqe1sBqF>=4d;)dhO8qlZpevk&b( zsv`L(e11(2AB#qJl^8!FWtyn}A19-s)i97cY7}xA2VBv+Q;&11j78L|>0D2Y6kW7s z1H1SALJ|Lt?@4q=ycTEpCz8zQ3Lrg^7mwbYvXHx!eTAM*|G?TR^Vt~x2ztG1ACub` z%$=HK#jGmt;A$SqigX>Qpv8?A>*d@J#Iv#?;v$(&Z}DdzAKg#)v^?UnSMFvH_uQf> z)w?*W&;Hchdl!{%45cT#i$wG;6~h?S_H6b_RXL}bI7U>~82y%gD!+%_slO0~Gu1hX z{%Fj|;%H*T1-^UbAi8~%KDTptm8kCipfYk!m@DB}B3_cHc~PXlR^B|w|MubU&QTOt z^*YffZFAXx`4U{o&;ahe6h{?bY~lNM1c~ThtdeHb9!s$&&e|E=y;YPuSye&{zPs`@O>0H;FMD%^XJ;zh@k#w9*XsX?Gl+@3 z5DX&5YcBJRzxQ(=O(W@vL%y8HvxjV{_iE01(^Bf4=Eh#WCML4g`3Gvu+Prv_8J}UB zt>%m7gsWGg$*M*BXxc2xlC84MY~~?JZq<(AmZdp?0%NNw+_t+8g2<7Z=s&#vtlUOA z?>h;^^b}d?hH?=-tsliDu8Bh3y_?*Simz~vpT(X@&!wuVC1`YAMGMsS3iIOaMEqCi zo+dwrdGp^Nu_PO0|IVL5lHYiBk2C3el7Pjjz7W0!$UYX{Gbl5X4GL{#p83_{ebUmr%C6v`S>ZxB69F_JV;-eCct7`!D3yj=PVz zm%fa^PEla2be1lOi=~g$wMFBHTq>ZeKON&n6*#bu#Yc!_O01OPVkW3F3)D5~tM*j# z(?*j^?3l$go5->*NlI*wX*E|(W{c|j*W4g#bv}Z`;91+|%{uxI{mmP7{OA`8InDKX+^;5e zdRV_A)SzP~;~qAi#;iEU4$M%djJylgRWIZnKbDL?HCn7DD+xj0P!X^Fh9|JQ^AcMg zcZ-zx?-AK_ty2)Uo;^>k5B=mTDjQ%@8R+wQg*3A82pt&JOFiQB>61rdBL3A6Jh^~7 z@`6D+OW5S<>7qHg-Q1f@3R{P3Por^S{s4}@Q;}WIFQ6j_#Ihj=Vll+Rk{f(GSY+$? z(MS1@M!RvXE{^Q_N=aJ3eN^Z~;e9s4M`^5E?hR5peKY5tx|erxgfr`H+sbcNZ)SBD zctK-Ol!#u^d;~{7`f|tTeBw^t78CI&7bermJNeY9z?3^9p~A^eF{P$ww3!DLeO#6C zZ%Y4MqALR*is*UT^Qcdlil8EQtYDe`P?1iDnvcWgv=P(qx|mv8t!JAcixDqk8U5=` z+=ade6w`tsI3_DreX=;u&AeMVm=5HG8_)9Ty*PgKUc+ zn16~I20r4{?xZkFFDKDo3$Kd!U-=|U7j&o!RA*6H zz!80c-HGK?X=5T^+D(Vuw6l`vYLDc#$y9Gi(VD#F1D5SoUoyp&br*NP8KV$vZUbd-}OhacoM753|7RkS4WFNH|wTSBuF~gzH5=?ggi_kCI^_j;T z^o4hiZgNXUi7~d5BdMXpG2*++kd$CHoyVKc&NweEvejI{V!GyxJGZB!ob8i(E*k$; z?GvemuQB7`WzDK@6{7{hytr?>Zqfz6KC#uaS5u8EyNKC=zkOxQjPJaUoE6-Z@`MYE z7@Id`dT3heSoYRYWm;r^lIyg*LABq1KASWXBypH;C2SG(W^9t-ECKk%eS~dMwxeb`{nxI?5^yYN6XYB?O(P)tI4U zis-3dNh10T`&v5ms+>Tw(Lvz5W0^>%-#KN%v-5$BZ@UFo<%_dL5TBnT;dZH6Q=Ze+j%f(GMsG>G~< zE)nTEJ=G5$7dHyBjn)b#&-_IvL=8Dw86hEXC3avomU782gXpF==Iorsy6m|tL#g-v z-^lqI#Jv#a9{n@c*S|=ozpPea&c!5lc44citl3(U->|=czpHYjV6z|&fi7vh58@}e z!K*cKDP%Y^;LKd+^txpt{rgsD(KC(D*fir|g6UzCL^|z05z2jAeU~nwnY81_Z}w#9 zRIby^pE;E?lUsjn1rssU8NAz*MC;GqgA?&-W00WQM~EALFq8fx)2@0$X4&>#R84%G zVBR9oN<$y2?!BJP|LV!856+{m{eG;k-1fh+7EWS{*QN1CXs!{g6;BhbpFi%a(~5E9 zxRx4Ueym+GtKDu*?U#fw>n9&(@9!VZRK)8Ds-;(mbKA!%v9E#h@DG!QOReCc}A znQXq?U;jT$yq}dDAx*7zN(-Fcc0dCDLtkMNCYeCHF;bgvkDC zV?t=hwdKN`WC?+ZiLS{0W@n7Ju0<@pSm(?3l<9JvO6Kf>YqOY`NyE4)GeSP3!lG_-~fG%`R*AX4rQof&fMWW|aLAc=mWuGwXD^Lpet@S1w5vw*Occ&aCSK7cnzVWWV~wOSpR@Zqw`6#uEkQ zFs`6zA!{f+3v5-jqt16V7@h6YIse47qPmjjib`(zC2(shTEzPObj z<&O{k8Na^+=CF=^i<#!KLv&Kl3~oiM4;OKIIb(aqK=3`zovEu^!G11cMf9VlB=Vhq zhzlOMJz|f{8%Ga4+Zt-@tpU6HLSOz)H~T&~hqWDR&(9T1Vr#Dp=RsfH$u^fA`A0fm zi`x2BwF)Mkcf!W#OPsXR8j=3KT}045)ds)j>T*++{gLLsrDRTAJI(G}O2eINVMKGe zst5Z;{NIV~Wrt+1=T@XI7QS=wcmF&t{{-tb_7u6lwS{X8Tu(zEIkFm+tEu$UyKLa> zO!~{<2oXH_yMHK<8^LVWvgNWH7w}jAy3D>fekN3N!A*MP;-hGVe`&37#PrWSaE4Tg}rNJYW1pI3g1R=BJu=(n^I3&*?r`&K3-RPjgzMxSQRp8I}9lWNg>p_|Gdp2~?GpaRu9Tia!cU z`F@YDg}C)c(^bOwQE0vl#$S>boSSb(Z=5QkcT7hKS_Tp7yWWxBQLz^BZ*%ctTLM0F zw@r1pT}46+klvKggl;h^(d9=KLaSM=E&Xgy*nIf-FC#7Y_Ojt?_p& zpU+WGU19%gSkC!6*ogYXNsS8b*hVSFE&2(Uv|=>PuMcOr3(IiT>jeMSj8=@z3Z$#c zMu_Nrr0rv_?ka~TeRPqo4nJ4o^Je28yZ&%_ljwB zgEQE&?!WQ(l6~^b`P0_yM(0qrfPab1@;n@JeDYG}lUz5if91y)rdi6hn7a3vMyTa^~8GW;f| zW|@x0;+@O}?@QcNHA&{zRu{7HPr9hBWDaiTE3}yj^1f;asv3ri%CdJ0xbUS_{L9-Y zyXQd}H^Ooi4P+0|(s6{#7Ghg0zzi;n%M{fes2j~@J!t3GZ;9rWtb4`&qrY*7D<^*T zu@FzBio5#wG47fA;oX}vbYs$Iwykg^v+DbPI(X3)5&fi}(hRQWaIG^>m0YUv5z*h= zYs)#*&t~4$T_i1%LENfg6~sqrK3`{kKF5qTz=>!}nnZ#``k(*to#f<82zo!pvR7m0 zGDdrUg-T8;;>I>TBxjb);+}OEQ~3@0T+u2&E<@XsT^K%$idipYb7HrO=&O^=sKx_R zwy*b`V7Eq@NT!&mZ8TwnFy5;_on00o&3YGZr(*Lw7@x(Pxco!)^v~5`u6v5uUsMZL# z;Ymq$5JdEP+Ks61)uyE<4|9>-AtL_OherwfVgR)&0yi-ui?b>{%ob+epv&*tbJZ!< zO!b>6dSY#sXs@O=>z6R5lf^cv1aV#F=ehlUI!7Ze{-DqHofW=|(}vAW9-LEhIQ`gY z!qj!W;k-}GXI|V$pzbmP5&wC@d2GqOb%HCW#t2?jX^G~agHkiOIoIoHw&F?j_KQJN zaxL|i12d)8mYr^-!PIYA!X*iFz5eMd%X5@*{-uF%U0#fzI@WaEz(JvN;)G{MNxigk z_AGq5>neD)z>0NSBzz;L$&d53>89DMH`04c{+@pr*{8A59S^xCu^{fQM>ZZWF$nFJ zb7CCg<}$V;9NAZ^7{MQ>eU$6JNw4>BWBseln3=Z}s7=D(xvFKEJ>6&hj0^dEko!6G z6!(uzWm5TUX0tCdhO6Tq)}^4~l`aYnHPJ;IwYUtq3Cthi-rm8XU1aMRpHLcITge^T zd5&9@@tgfwm3!obrzC6iMxGgWe>&%B1ZJq4n&Cx!V`a%0G@NdK1dH8ih8hQw`D#V_~2Z^J~r>ti1nT2Z&{Z@K6sA9}rg z@Rgz^l1#Al96I`QCI$~yfPGV%i2mX0kF<5qO?FfE4%Ra_Qq(6T%Y)c=U{-gvt2 z&vP$4(Q+gL<`ok=D{N_ckQ=Scabx890= z^HsAHr&b}sHQbUFWZPXM=H{B{zGcPT%yuB*2QJX7JKN}oml7gbWk!b5%RB9<=Kw?Q zl&;QS|7&?Cn_wixZ5gzSOT9aszI-}JU|~0!n@*Qf@m4u*+@^Efg4)0F&wZIySh6jH zy*W*jD;4HB{L_D35;k&8Z6-A4^efK8{5tAJr0{#UB@s=pbWUOaQtB?HirY&+iq^WZ z-3rXo6O^8^uSRLQJogX1TW({ClA9j)#qv1Sm?|c?zi=*R%kE&e2v%{0hdi0}x0JZr z@TVePtAF*wklJwGubDG4Ahjgm-Zh9v64~}lN7A*N5Piq>} z7=29{cEPK3rqU&gZ@KwC{?WDLs0W6$922aN;ke{$f8(dWQpU6WF45HU*fsu{U5wZaE(2 z5-aq%>ccbHtJW1v_R;yM3KwHe2r;$>E!rlcH+#1i%dGxzhMVjJPYs@n%36G4>4F|@ z=5jNH*f2rY4%HbFAQ`98FHN>UfK3r*%3RBap&E?bCO1HMP>1? zJ=qgy?~+>Cg>=yDo9wB(kJ&PEfMLpAxL%J+dUXBw61B%iM0H>8&4GcwJ)7O?FHqdH zPsCqt{tR}(xj4r2gD=O+xJc51Jve9OUfO;0B`e`;#1v{;v+}lo{m+LVS^7pRmOpiM zCwrnWRAhg7K@dJ#y`auwEGJiVoYm3^;& z&7|40A3M3fIFkd#{zX;D9{6A5JudjC@r8dSgZ}G!|Dsy>NdMRMeE$BN*io7Py57uj|GCr`{{a|GM6Ps{L>K{C9CA2LDHbfAJ&!{r-y|@qhjQzm1#Y_SX{sXK@w( zw;A?-e(3+v0{?IO+rRzj-|xTu?BDOd<^O*F`?w`43;#3n{s*^8*m48JRaX7S9{+<| z_17M|{$mfV|9i*&KacaHD`NluJr0yg{9k?l|AhnfukByF8A(Q*N+Tmmen9PE1i94w zlQ4@-A@wejth^+PnweVU`b9bHb~z6BHCOTC)h=YG%OE4l0`gWp=r0;Y$0dzs6!TK) zD4D5DXJsxudgU^GQBy@XcPtU+o2!z|*L_ewEe~(3H0a#(Wu!4y7TN{Rh}ZmL+_<`v z7wxD+M%q2Vn$Ok5aCa-I@lk=McoLDJ^C0PyM`~VAg!ZliXf4u*-=DpBZ*&+g4|wqX zEJM9l*iobOv5bO720baf8@~V9X?jKJHvJhUpy7Iy*%T1Xlhb#CiE9*U?$4%MQdXf& z=O~f+?T);dc9ahaw%F0#%Uky@7&pboBXadG^1)af+vax=GqF5WjrmT7%8$bPN!Rfx zznw^>nL%%>1tjjJll__X7~5w`-(`iN~yLkR+@)A0fNt=vU7d(BHI_Oiq-8zS1x9IQs+i=MT4duHeZ#qV$+( z?$`p=QS0$%fiGD*RR_$2GK7DBPU@H;IQBG87~@=nUFVLW%he0Ksl$;j#4*`_=P=EZ z9?Q5Y4rlh;YBP`tq%qb%X+&cTmG;$S9P-t8ngPN)d+|xQcHe^r-m${-G<^c6-56do zlx{Y7YN51Vkt|C*MKn%@U`ulVYAv=9uOHSp&V0d!>Y=z~{*x3xx`N-f@x&wA2K-t_ zL>DHJnfoNDyM;65<&9&c$Bt&y=GZgKm0W3u=`))6Hh>Ef{ zKC-P|kb?IL)c?srpkn-f-(i_?eVo{a&b$NoaFNteaq+qFdEoew#^xB@pu2MTjg zKU!FvcELX952)JqniMK1;r0b5Trqrx$J>v<*m4}Kc1eP{E=`|@?xXAnd1i2$7E{u6 zgi5#`qjiC;)U1Ci%@$V^zLOlpd-l5yetI0XR-4ip-wd(AaSbVb9gBm@b?HerH8S6* zk)%z%OI*L_<6e{x_AhzKGuBYY?2dX!_DCVLK?2`q?!YN!dpzt|iMt&-7+g?6Rwn&` z`=}{2b@^!KzOf!-8+VcJ_!K}5UO%Q?KI|`!q^cJbMT5;s8o^h+*=Y0Nl$pCUT0EBAXrfaE^mO#_l>LSlGb8eJUOh4X zql;qNN;K#3=qc_uaNh;@!mMfG^E>3BlMcp>w?MZ1BQp4A8wynt_$s3olZhVFgy=KGcvzlhmJa^NjFRj zqvfY%p?6yg87X(rRDFQh=dGpMkOrlZmOWiPgh-zCkxGPKd{n()q8A2wC*qx&PwX!mG&nw}*CkIHs3 z-*G8Y7aG%=N3F!e$qFi?2a=}XQeyTZ0q0*&!0^{{G^xRgE-u!_;*U46%QT8yjk`-S zKMUufHL^H=b`p)qI*B(uIpm9ZHd$$_N^T9ZAX;V)m^dboSUx%h#rzQTcz(jO@nY1& zx0$FDCBS+lRum-g4pdwrce57LKQdCZ{|X;L&CAKQZa?zDv;aQUpGn8@lhp3UQ2M0n zHhEI~ne2`WBy?5`Y3_5zxm#C>Yv5ZPpDaxSLMyS_q!S%3$Lj*bdjBH8{XGBkyuN z$djRtFoHBOQp?6pgF;BiZX#dT6TDxy0e<=lFth6>RU^{KkYJEKZ_McUD$&fuyw&7W67Fl^+iFQkCQNh*{ zjCvUZwe!aiv{@S$w@TpJ_F`f(!w199<Nw~DHW*R*qBQ|E4PmfwACKcL1>{E%ki6n1 z?H3*>1pK^D_iY7ze@ctS)g8e+^U0Vr(*OyhRcWhK2kCwm&)ede%M0$CL_VMp4&qi2 zuX~Me>on*dF*i)ys*GXxoJj8ofATi(6k5+{feW^#oUagzz(5~kxT&O7ER^i?f5@8~ z_Lg+F1rU?sB$RuXp!wT5n11Vp@-!g2VAFTO-p`&sfQ+_{^u#=u`NXDHy_1&!mxIf2hLPi z6WN{1$$Z&di+fZ9J7=CJW0}YJuuYDRk==t|l@2sn`vesIbMft18ro;;V$NP372Xx^$ zwnwW{f3F%`OUps7i3b+jnGlnQRXodJ2jmR6K~_F7pexf{v8ib}Y`i^*!Fo4h$~((j zzQ=(a>+RqTvl$CZyA-5^NRr>~()8o0V<=zehsRpEI9d0Dkfuly*gA&Za(ssKWjb`` z`6QIBttPz_c0#GVj(q1pt1soF&(sA|`C=q*>^kz~TriJsGYXcgD~Kw|5b8CU&ImsS znap!^<%ffCbLS)8rUmt>x_ELg0FRcRr($7|m_A3D`Tbm#UOFRBM`VnkdW(E8`tdoa z9G0bqrbA)A?WaZOta@JHmMGr7z9jgkGl*X&z*(n0Xe9ZgN%IbG#vNm_@QoxHwah}e zUTPtIjToJ-r;FW>2vnNGiL%E@vgy$g^4nt)*>~80loiyG^ChPcG^>GxFCRxgyx)%( z&sSk!d^~oQg%b1StFc#7f_@Nh$Bd;e@O=aPNG&5%tgYbKq=S<$XVF-x7Z7(dLfG5{ zqJN}~)H{Tc56uIh6;np;Zd(S0t77za-5DsII6~h$&4XE241QOv3cmj%c9HEWdSllv|1wYIggE}%$HTW)4{HNjG(I&_+ z-uP`bh}!8NgLLR){C+zf`jt0fRBwXGxtVy-9tq8rM=;<`2;6s@;K1Gwvm60e+f==RyJxJif7-eE1Uc3h5-JwJF)S|o7i+a^5Z zW+1xdArap<1W%*Bl0Qm`kg%yCksWSutdhojO?SM}DW#9IE^Wt{luNj!S-<`h`+TSDP4u6wPrMS>*(SG zGXOKidx*}rKGHqm4(V-^z~yW2$n^U=;d!ow+*@siRVNz>@8kgJN2nq5xf#x%N+L5l zHBq$02v-Fh-0lpZF$b=ZW})8{I6WR6pA4`sipA>rVelW&g9lTDcYlZOMgHede6hL& z$2YsMnmdORr?jwbh9exDguZ;`N^(=HpGa>I?u)Ft$&LnLvclG3Nb(MY`T879vo2%0`yf=<2(c=K^H$dv1$=Ri!D`Fv!nbLZ>B|R2 z_+;@B9wGOU#ool`#g8HNRGVg5N`b%OJ>L5~fvSrce))8fwy!b7wCOF$+4_oH8O0~F zOtXdUJs;lu<7kQcP0UW6!1!iG)XuiY4vFz#qt@ff>czM>b`U+IYy!hKE8u^+0H#M@ zAu-EHjfaVL4^r$(uv~bDrsxx&tQPvT zHxiFwYK0!kR`GCLGZ*XDZiBgO5mY}sCwlf<;c_V)%6B61G*JRWn>N6{HWBjAwa{2- z0;L>nIQv>+(0yeHq72X+y8<=rc*u*pqjJSpvc66kBj5UAR*D_UZ=5E^{j1PiVS~<+ z959oV=+HOsNX1A$B&Z}qdX)(ZCSQi(VL$W@{EXZ;#o$$J#53`uklvLF>468axAGz& zC??h|_s9X+^-$=OC3oX$i1@M&GG@|Ca&FRil$wcQcla6{Fqs73%W8OiTNa$sH!{-d zDY;Oq0+pT!LWOhWi{It&b(cq5)pWR@O2NbJq3CW?p!W;TB4fEC-8=6rLRa2|fny3* zE&7PjW%`H{dxa|NWR&>llMi(r*t>2%-q|MMe0(5M1CsEj_dHUjDCwU+VwJN3`~G}O*~dS^dpvwJYf1ljkHgWB$;N{$>w#EP+x6=b;lL($I1_0 zpMH`G;oP&dN&%eHFzh@0fRxyn!8>&b`s<=FSh58t9nO%LkS-EtupLFhbL5|f!zuUv zCVF=(Qb^t_VsxFs4s-YOXU*$vlxl%VIk3pc`s zLFM2SB(7FQhlVj!Yvv(f{~dBo?>ljjPs7C}+W3-noTSz}VOEbk-mbfZmaI1@(^h~D z7lFjliIBNvkH|wgsIS^1oKqWM|1KSNU+3eRQ4qGg_-op;NPno}ciZ z>$JHZsvoQ{55DGp zGL(DwV~p5)sLnWt*;(;W7#IZKtHlV>cn^c=Kao3Cf&Lz5O|#epnCwo5hwL3VH%_9a zLpPyExbJ&D;1|ZeS`W{n6U3@{H`%>tD%_qaU|3BDS-WH&3Sxf~+l~XcGE|ZXHciL2 z3?m${i9=tJJ|dTXBXwo=n3t?h1NHBc_gPV}NuNYFdzIoub_gmx{c%=36r(pzp<~SB zh)(lulzzMc93DxPbmK5&gfmXz2wvGGfbO_SHs6)Q3iD9>lp2S<7fs+`Zhc}{M z717Kxa@2JmCRi@V?zmV~*msj>F}5&>b;Hf2L*O!Zr0{m~K$zx#AOc(8 z9)j;V{iJcR39kMeh@hI;I8-(OiBpH*_G%eu`A}3Ju*RWvCYW;aDhYV<0&0oHAg351 z4q_$Zy@kH?YGL1=+=nC9CD0mbNIfNvD2g``{TElzPLo=N-Bg+97jg3LTp}6K{jWsmJUT1P{}u zUK?7_a`7wdAC{qVZyh#Ot;chv6XeU`VvKvDgcl1YVOm5G-XC;Ar%E|$9|Vw~k$Z7& zQY4~spTnie9#fkmFmP8eA{MxyRB=5z>t|tz!4c@1$iegdQrPAm#Q2XocrY*mN6QD` zSFbWQLY_yNpSe?lf0I|%(83v6vjf=9$yx?%N51lQT)<(w=;7tBMD;RRe&T!6Ny z1hk$m$FNy5P*xEOC*l5v^kiVo>onn;I7LEywHmVFQz$01jv>ay6-4)V8xafdCr>5x zVdgjx$IsZ}{aInEUhr@{UZ99l^$zl0OAlE?rC`wRN9>aF;jAG?*G+9A`N@TtYa58R z=KHb${U;$5$qPGlS71 zH z6?l9y6u#HS@lr2ufxtxt(l(DUKJY5;4lRd^o(@$}=41HU`)DuDhhgI%h*g$gs8StH z&I-o#%jsBJe+drh3Z!9e0jA|YCx??gp!~}M(}%mj)UpJ*$E!)rZc{w@6orkWg2AcI z$A^O}U=yQ*t=cQmRB!;>uV{ilDi15zKg8w59K3q960ttBk>eVHu^Hz`+Mb^zV`(Z3 zPmaS3)lPD_-3mL8n&WWcRY-koK*=3D%ro?YrO!ENbBmzXbsi%v&5>pm23B48hSh9K z;hr`e0doqG_bLU6E6>60dp!yBDj;XhY9l~r1qnY`K<<8jLF6n8N$$$A*ymVIJiRBN z&8&lbo!w2&e0@XS+xC&M7GfB7_c}3AO(4{@1>P6^fOFH~(0T{1E{EaX<_C?)eV7?> z6jDWlsYS6LF<;|_8zu2zCV$1OCmT__)(^`oy`Wz*kM5D_!5q&rOza;+Z`(y6;8zXm zW*x<3t$XO!+)PUb))9$as(9zuj_1jP=pUP7&>qwUrA1jNJ7S8x2AyPAwip=|CyUM_ z=_K0oHSwJ<#PVq=!MMwQ#L4g;xjoYfc4Z47zHk;f zJ;f63S8Y*rNCESN`y)AhH?nHzT(Yyk2PD)O`2owYP1OY(Hf+bI2^n}Yj-WnhHH_aG z<6~tMUc@vIYjc$E3zP^k-X)8kfSNziKUtj#w-)&%=h+@ zZ=F5l@!U@0WMzakM}Cvoz$@hGTv^(FtrwRY#-V#n9~MV#g7w=>Yz>To#Nc8iIcU=k zJt;K#9mKt3_wckpl1f=6A+7T)HdX{7Hph@od!|dvyu1*{7pEKgT_N#%FqO57!@Imr zEP1(^ew!JAZH}cR_3cei8*4;r(6F%pB;8+ zwi(#o?+1&vG`y|4iPQDMe5JBC#CX>=L_QbB@w8Q_!m@9e8Xtw-%EdUvCZfkN8KeG; zBumQAz$APR`JAv69}f!my5+Wb`Slp`E=?nsH%&pElo_U|T!CT#8YuRck;em+kQL*B zpSu@B|BE7;0uEq9t`Zc&m*d)U3!GJ)f>G&baCXvKa$n&(*%DEX_bU$KQ1LM`ZQ4>; zjNOPaZ-yeItr*TDnn`!PA5oKy!E9mt$tZd|x>xeh5aJBMxC9jGO~8fbK!gu<65gBH zfr8!`xXSgDN?{x*M@)!!a7B(xmG&T?n>t8!!)vnAaR^im-V;rC2K$9)HA5D(lLZM@ zn6~%>$yXYNC#fAI`gtMwsMw7a8^+NC&n}Q1;jMUgNMAT+`RJAQ#c-)I*fmX}Z+E-k zr{7}SjPF24B_AYL7}t9qg$?)Tff#`Tl`xCIg&oaYr_<*-!6l^ ziQ^GdnE`V_HPKCeO9qyn#Hlz7I7bY@+52TYiOY9M%-JTSr#R5&yguGG!;6sU@g;AM zwBpH+(@-g@z=0PNDY+GgntkyQ!h_+)jS7^Nd=th~SD`q=AJq!`uw&FEI1g^*&EB4m zWxssM%Y}Oo_CODHafaY$oq$S5F?r?si#Q!Qg5JqXU}*0T)_Vo1EfU9?qNNB>af5u( zeX{W76_gDhjU_(}@I!M5!ueKEZpp#87$L@KqS;-yz8fe|Y-YcBH~2h3tD7 z!TZ@OoZrO;Pn3AHfOI)cK%DTs7k$Ao;@2?QbX1WwzDZT%d`l@(ybnQgdbvf;^GhiB z=#OnKDKMyAjPx8K_VtPQ@e5;QAn_p^E60?YcT44)JFmBytXHjLK^p^jlDX2n%Mr>% z`Gyqnwu!eW$qD2s{XE1Ql0JwGahr?c?j-H=^EG&V=89z9IZ5;3O_Vn$AanBgRf=RB z6GFu62NC|dTO{VdV6yXU08ii)OFTA=gif|Ud2J>}^-n5{>&=ZJ-**f|`@nU)@VDE| zPbi3)4qkZD!aw61xnL7RT04)C?;X*kt0$9e*G(V>)P@+?ti`lF^AS6~O6P9EL}C;w zL+UmTe8nLb7lp=C`-#?*Ve|(Vh}Y6) zI_f@$pxNX=mgc^+2zH;tgRQZdrurJ)D#^L%dY#8Bq_8nqjO>_K zY_U;VpXc1a%53MelcaPZ4}vFe$;AvY+P-Nh@zvi%%xabKAj%PT;U`IV+#8Z$e_nfr z#{?YH%OS%r&b1g}+ibDZ?~Ca%nXA11GrP#pRN>y~ats2W9pYWzq)FcF48&k=r~AtU;iS`00)Hy^|eHT~K0+&tODjWk`=CaEbV zL|OebPtGZU%y|>S+cm0*rzN|FV2JQ;g~ebEDK}lb>eeHMLmJJ4OONw%5(CUWT;lVT zo@l{r%`s#ptwA}d<5eVQkoW0Dhfr+>?X#bWLJnmdcZtTZ2QD zIc9mg*gDP#twbXpFFSVQ4WIiV2h5qlhzDvCOZbxBdS~|X9<7r&Fr-5;L zZX{r36|ZnqhhB>?=5RsmJ_O~${D2fU61i2GY~PoGV^{9LZuSD9ujEWO4A8*t6`tdm zwlfxDS*LJ#dfAj!(J#%5*kz`ioT0_c>}$L=5j8x^!XqSJ;VJLL`e+_cC6K3f=rM1Z z{Z`((2gA^pFjr%I)J`&B+DdY%e2~SBIZrL#U8yqdN$lml+PNH?&L@#z$Y7byY2F&+ zP9l6vg?O=kh&*_ns2+U@2fa^fod+{Wn)6c3IrrK^wyxaVZHBnnT=`y$)y=MC&sI+| z@yR%Jd>uy`E{fxB;WJ*vI{``AWKHASSs9w@XTwl#5Y{)`{N%IhCzY}&#tC96i7V{TGXoWq0P2zJS zkyNk5YsuR(;`@-5!g~tx3YX zmz6Z<;Yd2yBSh1oX)B_dPh)O-InN>X;*{W^@A_rd^LeXtRj^p;8gbW<;$7j?$*;vl z#3?3{?EM_gQ~4PQ8Fy`-uB6}i`5jAmJIrlJ>TE5G3q=}JB;5=WKIR>fxP1V9Z;x9l2R!-M@WSZBq5RtQIr&wP?Sze2Ne~as8CYTo_l-W@4deF-TVFHcm1yK z+WWe`f6R4{Io4dy9Ohw+ao^*9_~F553GAA!g*&%AguaY>==k(2K26x8R5bJxWD1@E zS#3wk%cJ0%inuW+(uVO*bY}EoZn)O89Xt8}WnKpWne`N+iY~xMrL#m|ENSj*t6Fj zD;4&cXi2D2RUIlU{fkY6S?5XY1Po9j;3?$v*OIBlo5AAsFe#n23L*=5fPcd8*1yWfLo3~Mq)3WhIRW#OQxC1D> zA!Xf7_=D+3^I2}e6G~Pzd-ra9$QVrVFZm9N-)P+Xion;PvWG**LdjyOdfJ;G`% zeP>d!wgoo#CJ>gx84@b(0?sFYg37xe1hQ_CYRw7wP`!b;%{Zkz>M@QyWb_Y7*OVzU zmt`FG`a**~IYTOUaxv(*24Q398SwRKB}va7Q4%Iu;JKI=y61W@`Lo+_q0M4t>F#%s zT$ccu6a}+tR!}?(Q*`T#Dq*;rkG8GM!pKx=mvcB?ZaE4X7&I~ z@~>4;Zpwk2t}3+r(n5JFu&75C-&bRP0`S=p?)+P;% zTX-EcT-RZhUaF!<#c@((vld56)X4f+O9<*SG$>=9r*dnXVVv?2^jTto-fKcoYr2{UD{&8TYY4&o8RfWPdBSwn4Q)g};S*(U0OZ4&cuIX5kKVxd5HdAt z33{?-ASK^R?xnfGvD|Q6#ApRu)yAPuKrNm=F%B1IPEtNH^8n=)c@Ko2sKQe5Z@9K0 zo>RqQ*3B)^f(SQHD7Zb0#XP+DQYM9nas|Nhlsni-&LbAueqcG(LiPQxFqk$z2_kJ( zh+}&-%A}PTrEllZS9b~04>s(=$^?Gw^jHt8$I{F(t*|!riJBvYb zvpzO3b3<$=F>F(}!u=I{amN)wH6}F{%9je@8;zF`wl5QZRWuk?+fAY^-af;2cSW?? zF`MB8bkN$$6W2PV6JLQav1Wn+qL)J?|}j1IE-`SQu%}1p*!1_ zBYRg16*wh$YjGIXGxN$?1rqRcye(EqMB>z_Y$&Z0oEv4J)T!wfJwc?D*9hm!GZYsx%)Drc_hc5<#W0;X-8h`EfGrE}|i;7k}L32nM?kLl~K zY77M1Z&K)|TBLOSWD>qDDkIxo#gn+G8yMgEmA%;YCW<{s1lJEQAm#f2Gbe&j#RDK% z;17ZeVnJL_jy#<_M3z{e)qc(N=Zs{u!PLE(V)t4>Yt|E^!JKz+IJgIPt{I0xvW)iI z?Gb5Po(G$w8o@9L;hDT&Z{dM=Sx^&}~0`AL`LQ+Bda z5qY%04hAN1Q3gw);j%ulnK1;E%RGqiQ^FTdnf`W}Bn>N^R9tJHq41nHpcV9qoGCpD zcb!BS*KS9XaJKgF74UK=Ysk?!IUVBDVLS)-_J0!|*2jioFX} za;qUqWj5ViHOf&N4yG-?r+~LI4~8{c(k&exI5%)2>?}G03lGIZe9QzgdBro3@Zr~X zadtvs=RI)ROBRK!MxfX^!%#wECq{kIp_N*8!`3~kVAp0L?(Ycri@;n8k^EGXWEsIXZ8*GvM{^5$c*A z0Q-ug(6YA!WQwvF&c+2&8GZAR`w97g-ZijCX$DH|Qh)*bBNW>~mJ|3$3VwkBXb*ga z=qXaTYVk~R{jvfE@NR;($8LBq*q-6X^3m%^x4PVr50XXXox(Xt`o;u>br4Zff*et_Xzb@PN4Pf??mdJ50;J()oOM3gL47WbYB?5(^ky_ zddXoU@0UZMTM~}J0qgMd_hfk1ERLBkvhnpsPjuMriIp9vP*a2tD*Jb9iAV>-$@fdq zXUA1yI^Y17^*`7m{L-jBQ;z0Xq@h)b6LRNIg`9m=ILY%iz85S+v(d@)qoxjwzxG;d zd=n2|2oa%WKLA`Oi-5o3344~4D6TrML)SLnz|ooQIKp}irCl}XHDwZwXL|6s)B~o^ z#81Z+9aNiBorXGxMCkibrHr<7KNWE(&yerr33B(Y7k;(42GbNJ$aM92`2Kq#%saw| zDN=nP`$QPG2*<(BM*=Eq-&nz0&wNTZC&fUKXe@xHAfVNloW&RZUmyj;3UVama zRWEE+VsuPulktG$Vs-0GM-*#L1F5b-%%9m#1hXv-w`C!SUOR)`Ii-}*2oJjQnbVhE z6r*LVghFEU_W?F8DBf zYy)%z3{v2i3Rt`lw7(TV?$^6y!-*zjYYHlf@0*T=&L@cQi)?Z}O#|Gwywp#9Ac(#( zVYq%Y1-VZBQesY) zF>5luJ(`0bxL-(&ei3UR+Y8t=EG)`%gJ#hTsJXfd%by3}Vx>tKzflW=f84_w*>R=iSo0YWazRGrGF}a09)5!yt+N23IWNdh*(8%62lpE+;Atk( z>%39-yCtsD%=*v1F`O)X1N)c7!yEx=Op~p}GJQrv)|jJY6*~=uQWF>sI0Ex^gmF7> zkw(J)^Qf1?tU2J@4eOm59m(AWR0-XHsjs@QAtDs3FJ?f(dVLtjcUdiR`x|5%ULh`W3{UlyjYAB-T__{~ z2T!+Xu-&ggsrwX&Rop?1rq85KKe?@^Gh3aAGrqsO`7F`;#9@-sxRB_oTEK+|`=BW7 z5h!d;r``0baZlQa%ya!Yz!$p}SgkbLuZbo~6Zh!v7J5N^-e17xU<0uF@|vVxmd2KC z<#?(i9lN$gp~Of6+THVmdGm%fvd96GfMv<}%9kR?ykjBL_bz8n(0I6hw3y6GA0!z| z6q)?k?jSJU2V(bo5>C-2!nw4FlGd3FCWj@J$|WaaUQR0|8kq)JQ#Ru4+#18=R8htc zPk{DdO~j8=P9Aei3QQrk77}D?X)4o&Mcy^ zJ=rKHn?r=}i;|>e;^=&HGAb{rBFPiqku45IWX|QC5E6L_+8Hie@mZ7V=}s&B5TOH1 z8fi*T_7r3chqA+sQ^8|+fQT8K1sjne96S?43eOD@g~fc}Y-0cv2zNe&gL%RG$ z(f~hx1rsO5oiJ*>g{*kC&PYR+10|ClfXzn@9QLn;Ov}q~kQv8cUZsXB{gz;7kr^uT ztpS;x`8p!Qr(w9p0`;gGC^{=lQ|1#nBde|GV8KRoe|iMgMW&$~>S2Vo33h!hLD{dS zD61=vMk_9X!@W{<_27+Ax`LS#tSN$U0~!2O-oPGFN@UjW9Kyy+;&}V>EBNtL6)S@* zQK35))4PJOFQgD&SzjQJt_W&Z)TR>ADhf4&<4M93JM^Ai%z1tH9;UXP#4AJAc*#VB z7WM6fPOTXzCVvb&8}4FI%r1OFW}>;n2AwnCYhgipJgQ6@A+2@7bg#cXr+b?n?V6c^ zBWD~i>(XW#f6Ag77&5xot+?y_d<@abf%`X)f#jw^rK6HM`1$7$@Ldapt~cfILTVyA zu+0%K-X4#oqn4mM8c&wKegJ#-dqV2VV=%$K8n!D;hn~GUaQdU8%KJ?tMAak#A~jr~ zVm%MslbFUPt|bijz60DYe}FpqUXT%A2~0XFhC{hbx)pPQ-?fXhnVlm`QBj=WGN*?vzPujyTfVX~Px-*V+#o5=8Qo5VpNn<9HFbx~&13E2DG6E>gE zCIwxyz-PrvDo8t@9NM&$kL;^=B!F*l7a&Q%BVnOi==}78dF(%pl)uA=q6yB}O12wXcE`59tLRZ?ryJMl`)UETxAkB;F>Pv*0W4c5J0A zu3$2*uV02wz6W7JOC(5!-q8Nsas{>oGwT~ZZAYHfG-gTG8B!{HP~Ut4ldt^-h>0x6 zJ0Iub^((h=S+q9opIC~8lf^N+ybMy`a=C303wf4oYC-16omqc($>OK&0Fos2veQevuBItOy6lNO8;)wGI+}RTVXZjhf)InYtd1i+F z>Jw1EdKVniV{3Cp`oZ63HN@v^g&h%jIK^~6JDC}$2z`pd9{V;bdH(_oa%Q31?P{1^ z%SNl?hsoXpvShi!4#KbeOWoh%24R~A!uBjN)SU1J3J+u(ZSr8ogRR@~TunJ>?(Tuy zy^n#%vkY^3bdVBWiEC!vfQZA@#Nx(VEtl8ZiTA-c%ol2e(6`~3V;j$L3pkFkFVY~_ z;XPTy=#}oyWacP+<>A)AIIs@-Nup8&Nbj}_tQC3JK7$^hJJgg0m z@qLG&s4%EjI*jUp`(WzAA~K=z5S+S^3SHAwk?ZsX0}8%D@a|yY0CQQsxVD1S4I({)jgQYKouCTpCe*sJN=&aXN zn_eC+=pBM0xdGJA=GD@hG>2|;NX3=kR2jbd2CmerLVZ(D_+Dp<1H(m7DdGu^xvRkc zoP=tD`Y4Egkp*t+EV@vAFIE41so_SCuhhC|OH4EMqVBz{gD)*Tm_3WpTh;c%C%zg+ zuP#k;{ccg`8ichfY!gfd*7#sW=vxyLwP1jKTQ#|>5$mO5z$0}Pa+1nnxyw#cqGJiI zPx{H!aUY?4X&Q2a2tIGhQYehngDq|P&_@}-F`21YK;~)Q`fwJ7lWlQ++%!ga@di#F zpMtGs-SFeRJhKk%0F=)%g!0lXFgfBn-A*l!NN5^EX^#gaHS;k#hAho1g|=8@R}B~U z5VXH0iU;fNLRZRa2(L?nSwmmIWtjomS}upKY$J`YS1ZAI@CEpA9wYw|adInlf@ZCY z4=D2v<7%%4n6pbLufMPMJ2jei6lGdLh313h6fc zq;3#rL()RuVYcu|e9q?#F9Qt>2j9zS1GkkO&vAm*!Z!f z5S>B}8Qht75h=A0Tx7ikq9@4U$nY^VtjU1%cdy}H;$jp}P9jY_iG{f;(HgnS=nr<9wD09L^rm(Cbli$9emlh30CALFZjY$Yvzr~nVy3DGy7)S*jBDm~3&3BAg=l<6UDf$arK z?8?M^_K9tchV5TYvu6ZN;7rM#Zs_A6z|lQw#J=Vz#A(d)J)!aSt9$$Hgw6>6MRiXw8Uv zdV!??m#2co{mJB{wb)2==PV20R(T%6n>kK&%J$Rrv`wXS(jo~isOxft96r+ax^w9g zJ!5WnNHe|tQaIQAEyK2s|PDAJo(e53F7576-~W;79%;fl1GaqpcPM|VA*$+ajr zM%y3WhZ|PkQakE0UHvJqq59Y0`)aQ3=IWKj{OTJ;qQ&Z~=(iy+@Y&5|?yYzu`ouyX zZjzZgcmL!`rg}41aJ?P(bKhvla3B2W(N_xy!hj+~N<~Oe&p5M3s z@4ixk7Gs_@zdNIip}+bD{q89DyTi@Dc01;$H=d{cx1Wu4`TflQ`#9eGR@|QX_w~O0 zR*#ka_w@vS+dcE}-`D%^qxs)c`mejLge}I-`hWLz^{;CWv46J*b3q95jQK6{@lN}9 zd;C*-NdKQ`kFn>l0FN~9*xfxZ=eG}I@GpP0e%tMJFa+1oIhdXKVg$UVd_tq{0YOK zup#Te3jPs~;aGrw;IRPzz+(aafyV;;1CIsx2ObOX4?Gs&A9yUlKk!(9|G-9L@%?`H RuKfMO?+yL$?f=&n_zz&`1EBx_ diff --git a/weights/keras_model_low_weights_digit_detector.h5.csv b/weights/keras_model_low_weights_digit_detector.h5.csv deleted file mode 100644 index e5a314b..0000000 --- a/weights/keras_model_low_weights_digit_detector.h5.csv +++ /dev/null @@ -1,113 +0,0 @@ -,acc,loss,val_acc,val_loss -0,0.14480000004172325,2.332716575860977,0.3657000002264976,1.940880570411682 -1,0.5096999994665384,1.5004599249362947,0.6249000035226345,1.1573940351605416 -2,0.6917000043392182,1.0036688259243964,0.7458000001311302,0.8244462838768959 -3,0.7473000010848045,0.8241036903858184,0.7950999954342842,0.6666760271787644 -4,0.785299996137619,0.7105176268517971,0.8117999941110611,0.6336127550899983 -5,0.8019999942183494,0.6574664333462715,0.8300999948382377,0.5492963694781064 -6,0.817699992954731,0.621597159653902,0.8526999947428703,0.5030765601992607 -7,0.8275999954342842,0.5890815941244364,0.8517999947071075,0.5084334528446197 -8,0.8433999961614609,0.5281209848821163,0.857999994456768,0.4760124896466732 -9,0.8442999964952469,0.52149852655828,0.8676999953389167,0.44864600598812104 -10,0.8503999933600426,0.5145990862697363,0.8675999963283538,0.44688226595520975 -11,0.8629999929666519,0.4660138565301895,0.8769999933242798,0.4221752982214093 -12,0.8620999932289124,0.470705124810338,0.8805999964475631,0.4040695134550333 -13,0.8655999946594238,0.4533840284496546,0.8880999943614006,0.37315953217446807 -14,0.8661999940872193,0.4592504046857357,0.892599995136261,0.3593304694443941 -15,0.8794999948143959,0.4121225866302848,0.8913999941945076,0.3651063744351268 -16,0.8751999923586845,0.43371115751564504,0.8989999976754188,0.34171108704060316 -17,0.886699997484684,0.40090336129069326,0.8974999976158142,0.34770245127379895 -18,0.8844999945163727,0.3971354412287474,0.9010999971628189,0.346512359008193 -19,0.8849999961256981,0.3963772598654032,0.901999996304512,0.32660636559128764 -20,0.8867999947071076,0.3837300253659487,0.9122999960184097,0.30710811603814364 -21,0.8926999959349632,0.3731368577852845,0.9078999957442284,0.3082481313124299 -22,0.8937999945878983,0.3658948715031147,0.9012999966740608,0.3317734618857503 -23,0.890299996137619,0.39109805822372434,0.9089999970793724,0.318887062817812 -24,0.9024999982118607,0.33675482150167224,0.9108999967575073,0.3098191745392978 -25,0.8958999952673912,0.36182733993977306,0.9186999985575676,0.2866941334679723 -26,0.9039999973773957,0.3430688890442252,0.9132999956607819,0.2968542552553117 -27,0.899999994635582,0.34679223500192163,0.920699996650219,0.2738042222894728 -28,0.9008999961614609,0.3392597429081798,0.9183999979496003,0.2711991260200739 -29,0.905999995470047,0.3187558839842677,0.9228999960422516,0.2595774453133345 -30,0.9051999968290328,0.3252930263243616,0.9223999962210655,0.27255827525630594 -31,0.907299996316433,0.3176384773105383,0.9216999977827072,0.27490714119747284 -32,0.9063999971747398,0.3245595881342888,0.9316999968886376,0.24394322481006384 -33,0.9102999970316887,0.31437698274850845,0.9241999962925911,0.2549916139058769 -34,0.9084999969601631,0.31468543846160174,0.9298999956250191,0.24417812775820494 -35,0.9096999970078469,0.30900180131196975,0.9246999967098236,0.2576153626292944 -36,0.9117999964952469,0.30438628379255533,0.9261999949812889,0.2583180397748947 -37,0.9113999956846237,0.30020493514835833,0.928399997651577,0.23957732137292623 -38,0.9167999961972236,0.28512523978948595,0.9240999975800515,0.25242267139256 -39,0.9101999974250794,0.2996239547803998,0.9322999984025955,0.23439424199983477 -40,0.918999999165535,0.2820792306959629,0.92759999781847,0.24631707645952702 -41,0.9213999956846237,0.26844542991369963,0.9320999988913536,0.23713302221149207 -42,0.9153999948501587,0.2961079835519195,0.9330999979376793,0.23046575279906392 -43,0.9160999968647957,0.28141010394319893,0.9286999955773354,0.24296756317839027 -44,0.9227999964356423,0.26615199809893964,0.9319999957084656,0.22649294950067997 -45,0.9219999971985817,0.270990860722959,0.9310999983549118,0.23347077134996652 -46,0.9175999942421913,0.27431231886148455,0.9406999969482421,0.20919407103210688 -47,0.9203999951481819,0.2739733869768679,0.9373999971151352,0.2096912495419383 -48,0.9193999955058098,0.2707438086345792,0.9393999990820885,0.207667807424441 -49,0.9208999970555305,0.2695534597709775,0.9360999971628189,0.22460849283263087 -50,0.9194999960064888,0.2776785035803914,0.9326000002026558,0.23272963535040617 -51,0.9217999970912933,0.25866919798776505,0.9380999964475631,0.21163134153932334 -52,0.9175999984145164,0.2612895669788122,0.9371000000834465,0.21325067438185216 -53,0.9188999986648559,0.2702373833023012,0.9429999965429307,0.1966700266767293 -54,0.9319999971985817,0.2340214175824076,0.9416999965906143,0.19071207840926946 -55,0.9261999952793122,0.2564167821779847,0.9413999956846237,0.2076547955814749 -56,0.9309999966621398,0.23571158461272718,0.941699996292591,0.20360792850144208 -57,0.924599996805191,0.25228555329144003,0.9394999983906746,0.20631139900535345 -58,0.9274999964237213,0.2366632217168808,0.9332999965548515,0.22291755659505724 -59,0.9284999963641166,0.2495058481581509,0.9393999981880188,0.20075991143472494 -60,0.9271999961137771,0.24663682278245688,0.9428999960422516,0.19365881813690067 -61,0.9229999962449074,0.2567033608444035,0.9398999986052513,0.20746710017323494 -62,0.9286999946832657,0.24215635284781456,0.9371999976038933,0.2147757281549275 -63,0.9284999966621399,0.24129647597670556,0.9385999971628189,0.2083776726014912 -64,0.9330999973416328,0.2322425721026957,0.9422999975085259,0.20303289166651667 -65,0.9269999969005585,0.24707445442676546,0.9369999969005585,0.21578125387430191 -66,0.9315999990701676,0.23854061368852852,0.9441999971866608,0.1887903433572501 -67,0.9280999982357026,0.24643137523904443,0.9421999979019166,0.20218531328253447 -68,0.9316999983787536,0.23088546209037303,0.9349999976158142,0.22004522326402365 -69,0.9295999953150749,0.2407047502323985,0.9428999954462052,0.19458124835509807 -70,0.9290999987721443,0.24287387907505034,0.9397999975085258,0.20189521454274653 -71,0.930499997138977,0.2370672501809895,0.9446999976038932,0.18993815986439586 -72,0.9327999979257584,0.23447497623041272,0.9426999974250794,0.19636906949803234 -73,0.9263999968767166,0.23995254658162593,0.9474999982118607,0.17938992579467594 -74,0.9352999973297119,0.2185019730217755,0.9445999976992607,0.19245103249326348 -75,0.9346999952197075,0.22136791477911175,0.9481000000238419,0.18109421845525503 -76,0.9362999972701073,0.21728788467124105,0.9375999969244003,0.2065681700501591 -77,0.937299997806549,0.21818352488800882,0.9470999982953071,0.18214992865920066 -78,0.9360999971628189,0.21092526479624213,0.9450999972224235,0.18346170762553812 -79,0.9320999965071678,0.22914187690243126,0.9494999986886978,0.17210238488391041 -80,0.9297999975085258,0.2329116986505687,0.9498999959230423,0.1701709069032222 -81,0.9315000003576279,0.22486743313260377,0.9524000000953674,0.161642564246431 -82,0.9382999986410141,0.20666892854496838,0.9425999993085861,0.182600562190637 -83,0.9366999986767769,0.22227641992270947,0.9464999973773957,0.17944465924054384 -84,0.9327999955415726,0.22943209510296583,0.9441999986767768,0.1831274047587067 -85,0.937599996626377,0.20832004267722368,0.9449999958276749,0.1805387006048113 -86,0.9416999977827072,0.20026189532130956,0.9460999995470047,0.18613601623103024 -87,0.936799997985363,0.2145126561820507,0.9533999979496002,0.1653504073061049 -88,0.9375999963283539,0.21247202087193728,0.9452999994158745,0.1872996025066823 -89,0.9327999973297119,0.22139025243930519,0.9460999968647957,0.18036706981249154 -90,0.9361999991536141,0.2060837645456195,0.950499999821186,0.16860484106466175 -91,0.9372999969124794,0.22412634030915796,0.9460999983549118,0.18898268716409802 -92,0.9415999990701676,0.2013957654684782,0.9491000005602837,0.1722827635053545 -93,0.936599996984005,0.21638908384367825,0.9439999970793724,0.1925447213742882 -94,0.9428999984264373,0.19933335797861218,0.9428999990224838,0.19462450494989753 -95,0.9364999958872795,0.21260569581761957,0.9478000000119209,0.17150656652636825 -96,0.937499997317791,0.2011501393467188,0.9495999988913536,0.17399185378104448 -97,0.9389999982714653,0.21122252950444817,0.942899999320507,0.1825796721689403 -98,0.9405999994277954,0.20876008285209535,0.9460999968647957,0.18288551620207727 -99,0.9347999981045723,0.21590894730761648,0.952199998497963,0.16483145479112862 -100,0.9363999968767166,0.20709685197100045,0.9524000003933907,0.16294661602936686 -101,0.9374999976158143,0.2075620036618784,0.946799995303154,0.19098302518948912 -102,0.942499997317791,0.19080870031379163,0.9476999986171722,0.17602290999144315 -103,0.9414999976754188,0.1999104794859886,0.946599999666214,0.17387369198724628 -104,0.9406999987363815,0.20018710697069764,0.950499997138977,0.16697491962462663 -105,0.9419999998807908,0.20334971852600575,0.9481999996304512,0.1723383666947484 -106,0.9369999971985817,0.21182444581761956,0.9477999991178513,0.1775572015810758 -107,0.9400999972224235,0.20136518388055266,0.9479999974370003,0.18246053057722747 -108,0.9377999979257584,0.21549792733043432,0.9454999962449073,0.18589407104067504 -109,0.9405999970436096,0.2061981282569468,0.947699998319149,0.18134062291122974 -110,0.9385999983549118,0.2018117493763566,0.9428999981284142,0.18089816082268953 -111,0.9383999979496003,0.21409924895502627,0.9506999990344047,0.16659923865459858 diff --git a/weights/keras_model_low_weights_digit_detector.h5.png b/weights/keras_model_low_weights_digit_detector.h5.png deleted file mode 100644 index dcb0d7fc7ca4f28c53502553415f2ab903616a4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22288 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 RI1CEqyvN1<$u8et{{-U)&~pF) diff --git a/weights/keras_model_low_weights_digit_detector_rescaled.h5 b/weights/keras_model_low_weights_digit_detector_rescaled.h5 deleted file mode 100644 index a6df5f35b9ff83d81341c3c8b022d171ccf839c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58888 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 diff --git a/weights/optimal_bit.pklz b/weights/optimal_bit.pklz deleted file mode 100644 index 8887f05676fa51926d89041bc50c6db9ede494aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42 xcmb2|=HO^O-x_N)vH3;<*l4>14$ From c2f0475159b56af7c22f15f3961fb7ab0d4973ed Mon Sep 17 00:00:00 2001 From: JohnConnor123 Date: Sun, 16 Feb 2025 23:11:35 +0300 Subject: [PATCH 4/7] Added requirements.txt --- .gitignore | 3 ++- requirements.txt | Bin 0 -> 3636 bytes 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index 49a130d..fa84fd0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ __pycache__ -weights \ No newline at end of file +weights +venv diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..85f68d9f375aaa38f016961a9a20e894e6f93a9a GIT binary patch literal 3636 zcmaKvPj4be5XJi(DIaAb1F^k($RX!srIm7saQzz_p1C@ekfB}5BhA%m(rF_zu_|p`?=4v ztXui-CoXdB&WtZRAj9ra$V5DsNo9`rSzD{-<1Sn2n8y6YhJ zoe+0rt-q~w?r+_)J2CxvfX=;mPQw@cD_QZl>F?jjvW~M@$j10&>4N*S&S$oWk!&QZ zqheg0ZUfn|uJVI8Pi2SOgFa->)v1{uD@!nZh#RemT17H=9aZ`eUJK!&oMDE2 z*FxtvVnLP~dBN-P#A#B<#{YRXI-RGe_3Z2pSMmG~R0)^q$+JdI=C;ZXd4wyuyA4g4 z!=qx#TD#7ibsd(fXV;_J<}=GULBH%|Zxt!Xbi%lN)X(e4kiCeV3gSWJlc?Mf=T+S1 z$`^g(npiK1^CZh$KAGuJ++oc=345mdGfPBArP7LGj>3iMT_|^{f1~o`Q~UQR^fmNG zo$hq>dHWq)lrDb`jtF}ed# z>lazLc`x5pc?lHIGZR*;GeqZ32RNB$SNoG}JK@cR^x9Vpj<-=wCeP5?=uYO+P&-Tm zS2nT8{~tO@$7Rf(I&cT`AP*+iVNk`?TB2R@baB0&}Ln%_18vm z9;A(}PP-nQuagwruVs5XoyYEMawGlL$Y(E%?wkHXQ_e#t4(n5n+?A=$OI=Rnc$w!W z*n$4iXL{I8=1QH-%#(pL2dS}*{OsfY%seN|%U-B^n7e9cqTEXhQ)#X$j|rLF@aUAo zRI^#5@YpZ5T_)7hR{-r`$T)SIMEHMqG)wxOvu^82FLtGb9k5stE;G4Shtapvh4 za@GkEJN(c~;#cdPFgA+*SxA>P`dL^Dd3mDcJ_Cy>ToJPxwUVi`>XXW%FX+nlEDJ;j zCTzE2h5Bne2fareYkkSMlE;`$oiZ~HkBLsXhv5EK`L%p1zlX&=Q`L18=DK|Cak0X| ze9`S!@pBi}xV>9kg>QW>Z&fgf$+7ID9A0q5!pwHeRxJwjeno>HL&^K-d+V)(ETCt37j8T2FrSkSC_Q=Zr0E8Z+`%rxUX-b;pD5Sg95-SNdh9pRkzsnImU)%Ut%X z*o{!wm35Dhox1tHcb*x}s}F@WQFC`7@p#J+=kPQyvYY^}>}8he*Ywq1N)_lcUyeRo zYk27ncEv`#7OEHfm6x}B>Zsp2QQyP7zcc%nuQ@)O=p{r?C s|0yoKIQYK~+9Gz&Qy+VrzqmSS|2=z7!5#E`hrLE#*cw=C&pERH0CwgW*#H0l literal 0 HcmV?d00001 From 519596e7a5e45db91a512e493f635f9177042974 Mon Sep 17 00:00:00 2001 From: JohnConnor123 <106041597+JohnConnor123@users.noreply.github.com> Date: Sun, 16 Feb 2025 23:37:00 +0300 Subject: [PATCH 5/7] Added installation guide in README.md --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e838884..bd6ebb8 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,18 @@ production ready to use in real device. It can be easily extended to be used wit different neural net structure. ## Requirements -Python 3.5, Tensorflow 1.4.0, Keras 2.1.3 +Python 3.10 + +## Installation +* git clone https://github.com/ZFTurbo/Verilog-Generator-of-Neural-Net-Digit-Detector-for-FPGA.git +* cd Verilog-Generator-of-Neural-Net-Digit-Detector-for-FPGA +* python3.10 -m venv venv + +For windows (in powershell): +* ./venv/Scripts/Activate.ps1 + +For Linux (platform not tested): +* source venv/bin/activate ## How to run: * python r01_train_neural_net_and_prepare_initial_weights.py From 30a888ff92e58e702198a4ebac27541212abeae1 Mon Sep 17 00:00:00 2001 From: JohnConnor123 <106041597+JohnConnor123@users.noreply.github.com> Date: Sun, 16 Feb 2025 23:53:54 +0300 Subject: [PATCH 6/7] Updated formatting in README.md --- README.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index bd6ebb8..232b26e 100644 --- a/README.md +++ b/README.md @@ -6,18 +6,16 @@ production ready to use in real device. It can be easily extended to be used wit different neural net structure. ## Requirements -Python 3.10 +Python 3.10, libraries listed in requirements.txt ## Installation -* git clone https://github.com/ZFTurbo/Verilog-Generator-of-Neural-Net-Digit-Detector-for-FPGA.git -* cd Verilog-Generator-of-Neural-Net-Digit-Detector-for-FPGA -* python3.10 -m venv venv - -For windows (in powershell): -* ./venv/Scripts/Activate.ps1 - -For Linux (platform not tested): -* source venv/bin/activate +Open powershell in your working directory and paste these commands: +``` +git clone https://github.com/ZFTurbo/Verilog-Generator-of-Neural-Net-Digit-Detector-for-FPGA.git +cd Verilog-Generator-of-Neural-Net-Digit-Detector-for-FPGA +python3.10 -m venv venv +./venv/Scripts/Activate.ps1 +``` ## How to run: * python r01_train_neural_net_and_prepare_initial_weights.py From d39151f8b5b10c716f106e22a83725f2c5c94bfe Mon Sep 17 00:00:00 2001 From: JohnConnor123 <106041597+JohnConnor123@users.noreply.github.com> Date: Sun, 16 Feb 2025 23:58:07 +0300 Subject: [PATCH 7/7] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 232b26e..a28dfdb 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ git clone https://github.com/ZFTurbo/Verilog-Generator-of-Neural-Net-Digit-Detec cd Verilog-Generator-of-Neural-Net-Digit-Detector-for-FPGA python3.10 -m venv venv ./venv/Scripts/Activate.ps1 +pip3.10 install -r requirements.txt ``` ## How to run: