From d6acce366e888a28bf4234fe88c43ff71b84ffa1 Mon Sep 17 00:00:00 2001 From: Arcnilya Date: Fri, 18 Mar 2022 16:11:01 +0100 Subject: [PATCH] Paper update X1 --- img/data_sets.png | Bin 0 -> 6823 bytes ref.bib | 7 ++++ wAiFu.aux | 56 +++++++++++++------------ wAiFu.bbl | 5 +++ wAiFu.blg | 58 +++++++++++++------------- wAiFu.log | 101 +++++++++++++++++++++++++--------------------- wAiFu.out | 4 +- wAiFu.pdf | Bin 1281908 -> 1299835 bytes wAiFu.tex | 43 ++++++++++++-------- 9 files changed, 155 insertions(+), 119 deletions(-) create mode 100644 img/data_sets.png diff --git a/img/data_sets.png b/img/data_sets.png new file mode 100644 index 0000000000000000000000000000000000000000..89c262100cd65a7fba3878f4f3b2a6408f1b4501 GIT binary patch literal 6823 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 At^fc4 literal 0 HcmV?d00001 diff --git a/ref.bib b/ref.bib index 47c3d98..f5db0f9 100644 --- a/ref.bib +++ b/ref.bib @@ -42,3 +42,10 @@ month = mar, year = {2022}, howpublished={\url{https://github.com/foobar167/junkyard/blob/master/zoom\_advanced.py}} } +@MISC{thighdeology, +author = {Reddit}, +title = {Thighdeology Subreddit}, +month = mar, +year = {2022}, +howpublished={\url{www.reddit.com/r/thighdeology}} +} diff --git a/wAiFu.aux b/wAiFu.aux index 61168d5..b9f7bb1 100644 --- a/wAiFu.aux +++ b/wAiFu.aux @@ -28,6 +28,7 @@ \newlabel{fig:ai}{{1}{1}{Relation between Artificial Intelligence, Machine Learning and Deep Learning}{figure.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {II-B}}Hentai and Thighdeology}{1}{subsection.2.2}\protected@file@percent } \newlabel{sec:hentai}{{\mbox {II-B}}{1}{Hentai and Thighdeology}{subsection.2.2}{}} +\citation{thighdeology} \citation{fastai} \@writefile{toc}{\contentsline {section}{\numberline {III}Method}{2}{section.3}\protected@file@percent } \newlabel{sec:method}{{III}{2}{Method}{section.3}{}} @@ -37,45 +38,48 @@ \newlabel{sec:design}{{IV}{2}{Design}{section.4}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IV-A}}Data Collection}{2}{subsection.4.1}\protected@file@percent } \newlabel{sec:datacollection}{{\mbox {IV-A}}{2}{Data Collection}{subsection.4.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IV-B}}Data Transformation}{2}{subsection.4.2}\protected@file@percent } -\newlabel{sec:datatransformation}{{\mbox {IV-B}}{2}{Data Transformation}{subsection.4.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IV-B}}Data Preparation}{2}{subsection.4.2}\protected@file@percent } +\newlabel{sec:dataprep}{{\mbox {IV-B}}{2}{Data Preparation}{subsection.4.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IV-C}}Data Labeling}{2}{subsection.4.3}\protected@file@percent } \newlabel{sec:datalabeling}{{\mbox {IV-C}}{2}{Data Labeling}{subsection.4.3}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IV-D}}fastai}{2}{subsection.4.4}\protected@file@percent } \newlabel{sec:fastai}{{\mbox {IV-D}}{2}{fastai}{subsection.4.4}{}} \citation{zoom-advanced} -\bibdata{ref} -\bibcite{zoom-advanced}{1} -\bibcite{fastai}{2} -\bibcite{deeplearning}{3} \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces The protocol of reviewing thighs using boolean labeling}}{3}{figure.2}\protected@file@percent } \newlabel{fig:protocol}{{2}{3}{The protocol of reviewing thighs using boolean labeling}{figure.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {V}Implementation}{3}{section.5}\protected@file@percent } \newlabel{sec:implementation}{{V}{3}{Implementation}{section.5}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {V-A}}Data Transformations}{3}{subsection.5.1}\protected@file@percent } -\newlabel{sec:datatfms}{{\mbox {V-A}}{3}{Data Transformations}{subsection.5.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Visualization of the three sets of data}}{3}{figure.3}\protected@file@percent } +\newlabel{fig:data_sets}{{3}{3}{Visualization of the three sets of data}{figure.3}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Training image without batch transforms}}{3}{figure.4}\protected@file@percent } +\newlabel{fig:wobt}{{4}{3}{Training image without batch transforms}{figure.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {V-A}}Data Preparation}{3}{subsection.5.1}\protected@file@percent } +\newlabel{sec:datatfms}{{\mbox {V-A}}{3}{Data Preparation}{subsection.5.1}{}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {V-A}1}Convert and Rename}{3}{subsubsection.5.1.1}\protected@file@percent } \@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {V-A}2}Cropping Images}{3}{subsubsection.5.1.2}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {V-B}}Label App: Hentai Tinder}{3}{subsection.5.2}\protected@file@percent } \newlabel{sec:impl_labelapp}{{\mbox {V-B}}{3}{Label App: Hentai Tinder}{subsection.5.2}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Training image without batch transforms}}{3}{figure.3}\protected@file@percent } -\newlabel{fig:wobt}{{3}{3}{Training image without batch transforms}{figure.3}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Training image with batch transforms}}{3}{figure.4}\protected@file@percent } -\newlabel{fig:wbt}{{4}{3}{Training image with batch transforms}{figure.4}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {V-C}}Deep Learning with fastai}{3}{subsection.5.3}\protected@file@percent } -\newlabel{sec:impl_deeplearning}{{\mbox {V-C}}{3}{Deep Learning with fastai}{subsection.5.3}{}} -\@writefile{toc}{\contentsline {section}{\numberline {VI}Results}{3}{section.6}\protected@file@percent } -\newlabel{sec:results}{{VI}{3}{Results}{section.6}{}} -\@writefile{toc}{\contentsline {section}{\numberline {VII}Discussion}{3}{section.7}\protected@file@percent } -\newlabel{sec:discussion}{{VII}{3}{Discussion}{section.7}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-A}}Transforms}{3}{subsection.7.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-B}}Limitations}{3}{subsection.7.2}\protected@file@percent } -\newlabel{sec:limitations}{{\mbox {VII-B}}{3}{Limitations}{subsection.7.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-C}}Future Work}{3}{subsection.7.3}\protected@file@percent } -\newlabel{sec:futurework}{{\mbox {VII-C}}{3}{Future Work}{subsection.7.3}{}} -\@writefile{toc}{\contentsline {section}{\numberline {VIII}Conclusion}{3}{section.8}\protected@file@percent } +\bibdata{ref} +\bibcite{zoom-advanced}{1} +\bibcite{fastai}{2} +\bibcite{deeplearning}{3} \bibcite{machinelearning}{4} +\bibcite{thighdeology}{5} \bibstyle{plain} -\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Comparing with and without batch transforms on error\_rate, train\_loss and valid\_loss}}{4}{figure.5}\protected@file@percent } -\newlabel{fig:btgraph}{{5}{4}{Comparing with and without batch transforms on error\_rate, train\_loss and valid\_loss}{figure.5}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Training image with batch transforms}}{4}{figure.5}\protected@file@percent } +\newlabel{fig:wbt}{{5}{4}{Training image with batch transforms}{figure.5}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Comparing with and without batch transforms on error\_rate, train\_loss and valid\_loss}}{4}{figure.6}\protected@file@percent } +\newlabel{fig:btgraph}{{6}{4}{Comparing with and without batch transforms on error\_rate, train\_loss and valid\_loss}{figure.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {V-C}}Deep Learning with fastai}{4}{subsection.5.3}\protected@file@percent } +\newlabel{sec:impl_deeplearning}{{\mbox {V-C}}{4}{Deep Learning with fastai}{subsection.5.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {VI}Results}{4}{section.6}\protected@file@percent } +\newlabel{sec:results}{{VI}{4}{Results}{section.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {VII}Discussion}{4}{section.7}\protected@file@percent } +\newlabel{sec:discussion}{{VII}{4}{Discussion}{section.7}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-A}}Transforms}{4}{subsection.7.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-B}}Limitations}{4}{subsection.7.2}\protected@file@percent } +\newlabel{sec:limitations}{{\mbox {VII-B}}{4}{Limitations}{subsection.7.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-C}}Future Work}{4}{subsection.7.3}\protected@file@percent } +\newlabel{sec:futurework}{{\mbox {VII-C}}{4}{Future Work}{subsection.7.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {VIII}Conclusion}{4}{section.8}\protected@file@percent } \@writefile{toc}{\contentsline {section}{References}{4}{section*.2}\protected@file@percent } diff --git a/wAiFu.bbl b/wAiFu.bbl index 40e1920..bd28b08 100644 --- a/wAiFu.bbl +++ b/wAiFu.bbl @@ -22,4 +22,9 @@ Tom~M Mitchell et~al. \newblock Machine learning. \newblock 1997. +\bibitem{thighdeology} +Reddit. +\newblock Thighdeology subreddit. +\newblock \url{www.reddit.com/r/thighdeology}, March 2022. + \end{thebibliography} diff --git a/wAiFu.blg b/wAiFu.blg index 2b2810e..f53279f 100644 --- a/wAiFu.blg +++ b/wAiFu.blg @@ -4,45 +4,45 @@ The top-level auxiliary file: wAiFu.aux The style file: plain.bst Database file #1: ref.bib Warning--empty journal in machinelearning -You've used 4 entries, +You've used 5 entries, 2118 wiz_defined-function locations, - 522 strings with 4384 characters, -and the built_in function-call counts, 1114 in all, are: -= -- 106 -> -- 51 + 526 strings with 4459 characters, +and the built_in function-call counts, 1324 in all, are: += -- 126 +> -- 58 < -- 0 -+ -- 20 -- -- 16 -* -- 73 -:= -- 199 -add.period$ -- 12 -call.type$ -- 4 -change.case$ -- 19 ++ -- 23 +- -- 18 +* -- 81 +:= -- 234 +add.period$ -- 15 +call.type$ -- 5 +change.case$ -- 23 chr.to.int$ -- 0 -cite$ -- 5 -duplicate$ -- 39 -empty$ -- 90 -format.name$ -- 16 -if$ -- 225 +cite$ -- 6 +duplicate$ -- 46 +empty$ -- 112 +format.name$ -- 18 +if$ -- 271 int.to.chr$ -- 0 -int.to.str$ -- 4 +int.to.str$ -- 5 missing$ -- 3 -newline$ -- 23 -num.names$ -- 8 -pop$ -- 21 +newline$ -- 28 +num.names$ -- 10 +pop$ -- 29 preamble$ -- 1 -purify$ -- 15 +purify$ -- 18 quote$ -- 0 -skip$ -- 31 +skip$ -- 38 stack$ -- 0 -substring$ -- 54 -swap$ -- 3 +substring$ -- 59 +swap$ -- 4 text.length$ -- 0 text.prefix$ -- 0 top$ -- 0 -type$ -- 16 +type$ -- 20 warning$ -- 1 -while$ -- 11 -width$ -- 5 -write$ -- 43 +while$ -- 13 +width$ -- 6 +write$ -- 53 (There was 1 warning) diff --git a/wAiFu.log b/wAiFu.log index 4693292..bb741d6 100644 --- a/wAiFu.log +++ b/wAiFu.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2021.10.22) 17 MAR 2022 18:59 +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2021.10.22) 18 MAR 2022 16:00 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -454,55 +454,70 @@ Package pdftex.def Info: img/ai_diagram.pdf used on input line 53. pdfTeX warning: pdflatex (file ./img/thighs_diagram.drawio.pdf): PDF inclusion: found PDF version <1.7>, but at most version <1.5> allowed - + File: img/thighs_diagram.drawio.pdf Graphic file (type pdf) -Package pdftex.def Info: img/thighs_diagram.drawio.pdf used on input line 123. +Package pdftex.def Info: img/thighs_diagram.drawio.pdf used on input line 122. (pdftex.def) Requested size: 258.0pt x 161.67961pt. -Overfull \hbox (6.0pt too wide) in paragraph at lines 123--124 +Overfull \hbox (6.0pt too wide) in paragraph at lines 122--123 [][] [] - -LaTeX Warning: `h' float specifier changed to `ht'. - [2] - +LaTeX Font Info: Trying to load font information for OT1+pcr on input line 1 +35. + (/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1pcr.fd +File: ot1pcr.fd 2001/06/04 font definitions for OT1/pcr. +) + +File: img/data_sets.png Graphic file (type png) + +Package pdftex.def Info: img/data_sets.png used on input line 138. +(pdftex.def) Requested size: 258.0pt x 61.5058pt. + +Overfull \hbox (6.0pt too wide) in paragraph at lines 138--139 +[][] + [] + + File: img/no_batch_transform1.png Graphic file (type png) -Package pdftex.def Info: img/no_batch_transform1.png used on input line 178. +Package pdftex.def Info: img/no_batch_transform1.png used on input line 185. (pdftex.def) Requested size: 258.0pt x 106.71788pt. -Overfull \hbox (12.79999pt too wide) in paragraph at lines 178--179 +Overfull \hbox (12.79999pt too wide) in paragraph at lines 185--186 [][] [] - + File: img/with_batch_transform2.png Graphic file (type png) -Package pdftex.def Info: img/with_batch_transform2.png used on input line 184. +Package pdftex.def Info: img/with_batch_transform2.png used on input line 191. (pdftex.def) Requested size: 258.0pt x 106.71788pt. -Overfull \hbox (12.79999pt too wide) in paragraph at lines 184--185 +Overfull \hbox (12.79999pt too wide) in paragraph at lines 191--192 [][] [] - + File: img/with_vs_without_batch_transforms.png Graphic file (type png) Package pdftex.def Info: img/with_vs_without_batch_transforms.png used on inpu -t line 190. +t line 197. (pdftex.def) Requested size: 258.0pt x 247.09715pt. -Overfull \hbox (6.0pt too wide) in paragraph at lines 190--191 +Overfull \hbox (6.0pt too wide) in paragraph at lines 197--198 [][] [] -(./wAiFu.bbl [3 <./img/thighs_diagram.drawio.pdf> <./img/no_batch_transform1.pn -g> <./img/with_batch_transform2.png>]) + +Underfull \vbox (badness 5460) has occurred while \output is active [] + + [3 <./img/thighs_diagram.drawio.pdf> <./img/data_sets.png (PNG copy)> <./img/n +o_batch_transform1.png>] (./wAiFu.bbl) ** Conference Paper ** Before submitting the final camera ready copy, remember to: @@ -514,39 +529,35 @@ Before submitting the final camera ready copy, remember to: uses only Type 1 fonts and that every step in the generation process uses the appropriate paper size. -Package atveryend Info: Empty hook `BeforeClearDocument' on input line 211. -[4 - - <./img/with_vs_without_batch_transforms.png>] -Package atveryend Info: Empty hook `AfterLastShipout' on input line 211. +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 220. +[4 <./img/with_batch_transform2.png> <./img/with_vs_without_batch_transforms.pn +g>] +Package atveryend Info: Empty hook `AfterLastShipout' on input line 220. (./wAiFu.aux) -Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 211. -Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 211. +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 220. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 220. Package rerunfilecheck Info: File `wAiFu.out' has not changed. -(rerunfilecheck) Checksum: EB6C63F2C37B78372EA8BED5864B53A7;1419. - - -LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. - -Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 211. +(rerunfilecheck) Checksum: 0EC91037E12490871CD5DA593DEDCF9F;1412. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 220. ) Here is how much of TeX's memory you used: - 7800 strings out of 483183 - 117939 string characters out of 5966291 - 384804 words of memory out of 5000000 - 22632 multiletter control sequences out of 15000+600000 - 576908 words of font info for 112 fonts, out of 8000000 for 9000 + 7845 strings out of 483183 + 118597 string characters out of 5966291 + 385892 words of memory out of 5000000 + 22670 multiletter control sequences out of 15000+600000 + 577423 words of font info for 114 fonts, out of 8000000 for 9000 14 hyphenation exceptions out of 8191 - 34i,11n,37p,877b,455s stack positions out of 5000i,500n,10000p,200000b,80000s + 34i,11n,37p,1356b,455s stack positions out of 5000i,500n,10000p,200000b,80000s {/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on wAiFu.pdf (4 pages, 1281908 bytes). +-dist/fonts/type1/urw/courier/ucrr8a.pfb> +Output written on wAiFu.pdf (4 pages, 1299835 bytes). PDF statistics: - 223 PDF objects out of 1000 (max. 8388607) - 191 compressed objects within 2 object streams - 45 named destinations out of 1000 (max. 500000) - 218 words of extra memory for PDF output out of 10000 (max. 10000000) + 230 PDF objects out of 1000 (max. 8388607) + 196 compressed objects within 2 object streams + 46 named destinations out of 1000 (max. 500000) + 223 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/wAiFu.out b/wAiFu.out index e587b03..0f822e2 100644 --- a/wAiFu.out +++ b/wAiFu.out @@ -6,11 +6,11 @@ \BOOKMARK [2][-]{subsection.3.1}{wAiFu Framework}{section.3}% 6 \BOOKMARK [1][-]{section.4}{Design}{}% 7 \BOOKMARK [2][-]{subsection.4.1}{Data Collection}{section.4}% 8 -\BOOKMARK [2][-]{subsection.4.2}{Data Transformation}{section.4}% 9 +\BOOKMARK [2][-]{subsection.4.2}{Data Preparation}{section.4}% 9 \BOOKMARK [2][-]{subsection.4.3}{Data Labeling}{section.4}% 10 \BOOKMARK [2][-]{subsection.4.4}{fastai}{section.4}% 11 \BOOKMARK [1][-]{section.5}{Implementation}{}% 12 -\BOOKMARK [2][-]{subsection.5.1}{Data Transformations}{section.5}% 13 +\BOOKMARK [2][-]{subsection.5.1}{Data Preparation}{section.5}% 13 \BOOKMARK [3][-]{subsubsection.5.1.1}{Convert and Rename}{subsection.5.1}% 14 \BOOKMARK [3][-]{subsubsection.5.1.2}{Cropping Images}{subsection.5.1}% 15 \BOOKMARK [2][-]{subsection.5.2}{Label App: Hentai Tinder}{section.5}% 16 diff --git a/wAiFu.pdf b/wAiFu.pdf index ac60882628a9263ee103f355980b3c2aee4683d6..228fb6733981269ecb4bffad3881a30240076f7c 100644 GIT binary patch delta 52160 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 z zASE)05a4&csO>V+9c#D3A~->@FNpaa4o$+KoeSpk2s7VBgsH!jo*>E*6kKD^rD9xa^&|8#B~1x`?VG_~&;1rFu&cx@>P`w#U}3WaTh!$wOCU}mn=^3zPn zLd9jc^4$;gN&?eVe3~%v;l6@qe`>l^ukNuXt~ysJ<;jkPsK4Ht{46U!pf6nr!bjcN zH8nu1bp6O6A=aCDpxqiKGaK7HvX!61M1JpW*gUevR5=S3GUghyl_-Z0O&A!T!(0d+O}e(%`RD9PI6&u>wPhx61wuPRuSTjAI5{* z3#56X#XDz?h~*)3q?Y7Pm!rj?k#b;8rs3cq_ks_}^2#~}R0CF_Ej&c|eC4yD5 zP#}%N+>qp1l3}yTWG2b;y~8HKcb*$E2 z+zUd%TXD(Ko2<_0wtUz~{e|nDz5jH6o@T_Z<^1Ebd%MQ|qyE5*bEs5Yw`5XqCN8R+ zYgjp=oOI%&SjnUG>H!OK|D}HykkiP)f(~QR>M?OlPjTF60FY^C&4!L1iG5YdH*(YR z%k~q>cV$+Gitw7Hlz+dt{#*DQE_P1CZm~j2`ck~hNFuJhiATT(VGhmFZH5Dv^SqET zK};1aobo5t=v&99n0e7QILtd)cJPQ?61p==wIvKSHO&VUUYY_&RP}x@Jc5AfaPkn_ zJPF3FEvPULQ6R4D-cmGf=mk!64NWh^g`d5DIyHtxg1`190^ruzoR<8UyL-kBbu)nR zzebzGJ11G0BfeJ&5YF|2Rm28!`qqJ?jj{%J16AIV?&eCSa?ur&dfC zAY4s)vFCWOmlwu+6vI}D3jEe-(l)k@wf^)imRZN+e&-WjC|bTyp-IZ<^Z;5gN`$;s z^S(Tu3hQqeRJF0hT7(eizOZ0njVL%MWtAyETqXNK!Dxw9NNQM@_;_m`-x|(zUM+m& z4I+hhqa~k8TNZ)uwt9hR*&=RMiPdt1ad?8ot;>nG-ZD2+amC&F_byw78HNuS80qOf4iu z{xACg7-)EEq%d5(&VE9)NZ&n%2z2t?}NUW{95 zRm&2efgvILvgWXVWpNE9XQ`BXmH%1rOA6EJ+iFRnyvu3+blhDb z&n_l%sISvBBDG@mxqH-IGmG0M1EXQyS-%rs^h&nPt9R3|cfU-M%5W~$Yr=IP#~ha9 zkk)bQM@Zs3;;rd-`5B0G>sxf`bdq)?-hUL1!eu?;zDw;akjQcVDu7- za)Z_y{4+KA&sv3lllcEx%D~R?U*9;$czJmF{_7iPWx{`bB;(`a|F6v)YqUM}=A6=D zKB1KeMqXT~fR`$k;zt%{hTs#FKtqXlln}zpAE&XDN@f)bLPP1_tzW)8_<29(uU{s% z*KT@D`CfSBd*mM?adx+mw02?7VN@eUw7K8jUde-To#!yEZxN_P3$(H<4I^KfVGY~Z z=!A!a)Ox8!WBkTu0{4LjS|I2`#KFM9!FoZ-L_C~g=qG2;jg3D%q3iLFdaOWMSI_DD z-f(@hr=)pN*{*_waKZcAgT!ZWo?Z}=MxZCp9n?%Xo1&P z*b#tf^`WsL9l`zfYW&;;2|jl&W(G$zfl?ni0G0p{gOSnw9J}xaKDp+>GWqg>!37J3 ziF=_g_T`b)-@4%9_TeLWG=vS3_JDi21|uWExdk4DFk+d(g7bIiztLQowMM>^?;(YW zNbw0jk@Phcy6W=5*&LoB_>5H6l)U1q>KYcDUaq-z!t#RIzoC7ChHigjIZnI;Kj=S2 zXbS5CuQgL$+-zq8`oS0l+Zriee&i)$Q4maa~^1A=usY5%BK>T^R z@JnE5_@q9eR)3pWVA8IU4C(d=)*r0c-x-YkPbp^}DP8-susmWAGlseK#s!Ju>qDaA z!bM2WM&1KvlL{2J?SVg&jXYVV=?+U^XjMA&Sr^P5;`y-goTat~EnY8Dge_~~_WEg% zZU^Nc$zK6dt-l*rWHW2i4|@|8mICjY>$L#2pMD7hBs4$x=RaefXT`?N0ko80x5bFn z223{Q4_}`N@O~UOP!s41*mTD?jSR>%#o4kCaBA2QYkXf~Cnj&eQ5s)jeze{#`67-@ z_2Y5@Yd_<7lRfbj{?DKWKQkEPN41pL`<)W;gE3lL#2Ppb<6bWliB3hO;e*q3oOwR5 z$E+LMUSzVR)w?x-Fc0zajL-=cowcP0-bV$ecZo!uPOpIa18%ledT1_9Dk`ny<=cVZ z$J8{>K@&nh`%n8bilAMk&ddV=Ne&5o%RPjg+vJCF2dm|{U>?1gvpZx;-L+L@FGw9F zU0KgZ>zdsj`;Tuq;U-SmQgaEbs);o~2}WFoI4lFD%TE-V{Z-Um+&yNj^1}q4C@35H z;!irAUmqtr5MGec6h>cRXZcMZ3`&AR?*)RoHWSt&0%)gLYr@VihF3KHS}%K;Q5@^R zZ+n%Eba1CRXL{FHuHA_69GJGVs7MUu6SQ12`o&8Q*(mC_>TAl7VaUHIEvRt0ZLshN0ZeLZXiloEj zi<5}ePDSTgewhX)K4?F|_KsYo9>0C1w4(17{FW6#(i#Rem2m;Hb=4d|0ga3&R{C3* z{qK{bB)sfrUs53G_Ls!~rjmC&;4~QQ1--2$*AL@;93m&_$oSng@BY^b-lx(pHFr%% zRGghCclAB_ff>@{!hY2+rjy?qO_%bAX&z42&9XY#y6i_jy)JRBq;hD?U#R1RfAuFp z9f7YU_@gT4r|Addr4K%rlpi(s;S(9|-dq^Fq7-zZ>1q?i5=!3VDyhOr4T#*8tK>2a z5e+?u^-zNQ^*x5n4>8YP5OH47cydJHg|aIRvIvX5$RX|5eswE&p3^I~nb}%JTuq<3 zaJ38DX3@-2*k6qd5xFb1m6D(ez>;xjehr&4hcc+BdS!=H0*}cY4DM5)if<`^dBH6` zuWH5PZG1j+zWp(`wH=e|4g3Tz{ucVSp*2>asXiBEPqSWR(jo=g>XbNT!*um&Ryw6D zFXwUpy(f_aUbita=QV}I@RP*o-9dGX-*kIK5@03&wJlk9GP3Zi zF%d%bpg^5~qR$hrrB8Ahq0v!He=qL(=IK59F<;=TIp>ae+IN`PQy z0VTGb&W_mhjFr-NC#kr8nH%97RSCNV{hWbr^PYRoG()k~-=MSHr?FdN($blPO3COg zWS-W&Q?{GO(`UetCu)q5*A?S(F{f~OyR6Od{xh{p-e2god0TB1niFkt#Fk6#sG-DB zVUCiZsToq#9%iT2a?~i1+Q>oAd1{On;E3^d_Hr-JQzM&VOm;-4N}^r<>rFwkDZ=_E zt<{l-SkF2UevVN@GNR%2l|fsbx(jLRo^BkeD-+;)+YvyGAW;5g4Cc00+v?|V%lbvw zszWyh29L*7TK*R2$FPi#qmxV||CFLufJNPyq6Y_rZ{vO%+X`KClE6=j>>y{26Td=5 zqiXHN$wN!b7<}i(KgZI;iDmZ)y(ABcTDl4MwEV*>CdKlnddu26$EfO1kS7xbLd<8y zp+@)(=AfDB>`IbIcYBhzN%!Z#9nF}ZvIsnaFsVzT#2){)SV6QabzX@k8WqaOia?@%h37kJqX}j3~}{Yd)(J0rrcqlivXP4^rdoGexOm2ZL+ zcE(#cmCN?SwXv62T~1Acs)Gq3`V$4tU;AZ6wG_J0pEQgPD;5^MuiXt5mk{SBQX@xk zFLJ8^;3E&*6%cG^+P?Sr{x4?Lem|KBCZZR>FTIpQGj5xb2*Sd){ba5=;>t>ra%_fR zVoSzry~bM~$o9Jnn?xAyCdNL%Uh-6~Xw}OLUhz)t*r{n&&%WgL$OdxeXPcy&YD)dt z>bGEy5mK!Nmp$(4F9#11aVaQX%kgpRD6mfg#}BGR`!`CE(gBFZ=FkpOyLL`^H&II|&5o?dFW%MKfOyolJR3H1)x@ z5bCp4`Rh1Y5+w8~g}SL~%T}qiSKJ;V8%uM2pSOp&-e7xO!?1jZvA!~5*8NJw)RXcV z@Q1hg_PNt#`ENd9Izb2&^)2xu|WkKa?wYF*B(0%YYC)cC=eiBY{ZM>UPqF&A@XIwTwmGo@Q!Fzy~QhQATT zWsy}Mi-j3H-NZ>3Ig?L~s^y6w4KA#^F zAZ5P#`KXMnn$);7w=!_=P%KHAI`W0vgORfg5i6`Uk@?dew7)};lOhN4S1TO6SQs2^ zg7&q6i!xs`UH*=Oy31s)94Wz!Xu!wLG!@ZWjwH}A8kvy6MU*pe#bw2)xYeg{6gvlH z*w%aCHcb1BpDq|9$*q@0s^$s7?~koWEz5IH@eF0+ntE-eeQJ@wc7?EH_LWI_-a}zE@1><|i;WdBe;`*^9V+#FIM5@0Cl5X(&^RAv?Hnl0Qb}NdQ_^EgqC>aQ4RhT&$QU7J5fW(V&y2)p1EPPx7Wn?JdQU zS@-1)Hafd3pJ3=zN{^>7{qjdIP`DVSC;#|5dQmIKk2*NSn!g`m=jMg8^7@*1@yEz@ zoJA-9{6X8FskVH=np;n+IHwf*?UJXe&9M26U*tEG&8kn00+&O^k|@Al)Nq(;LRZ=R z-B|e(o&2N?0|5%JnL?Gh^Zx4X{q3QrJ4EcRGfe~*x*Q#+1kRNcy{ZA8LWrdprSBt)C=5v|6<~Ss5`D#U>lo~42+!&QA4*fqeTFfiBtV_KU3IW*+tG(17wDICS;2CZ{HG~c-*&s z`q2%VQes-L=RiKdl-Ax+G6?2M!SlRghC&h+V8Lfs88ZaBba4sJ)q;nxDdtmV#G^|dM+8c)q(taKB_x%IO!f@Oth z+P9rXizj^9HHB5_UDPb>&=NOav@Wo0O zncJzE0Ek%ZMOsvdch~{*!h zem_tobT{=J=pNdPnhsebkk6h(1t!AnL zZ7s@%5Z-|D7wj6?S*sfzyvDhO%8GQpjf`ru5chg17hLq>yNHI^qGV=R%|PgJ*gQkN zF8(yUR<#QzlhsAzU-?sSvk(Q(e2NxaCIoi znZOjxQrfvzF}te0#XJ{{gRO`eIHjgn$QwFqQ5=a0>#pBYHLMMB>b25h!P*~sn1&zB z%H?6skhbm5>y;vTPVrxqj77eGm}kNO+jP8Xgj%x#nW>>M+;GbrN`=ZvS?2PRCLCR2 zs8*gh`%Ckf(jW4~U6t3E+TU*;j9s4Sa{-)dlhrBkQ}3So=)LIaI)^6QG-c|fl82-Q zbN6_)uc^qKP5a7W`>H_}g~C4JWfm5(Z~G{E8;?kfjpz4LSjO!?hW<)*5mc+rr6L=7 zLm$ovnxDCP6WLyF^S{`P)KqqBVT#DwZYUua*w;fq>yRV)eKcawciGlC!O&KIjRA`N zm~!{|Ivh$PU|c#iV0rT_l*!oIe(_Z#v^+Xi?e>xX70YfQhscQ|$B5a_zj=}$FD>C~;$qw0VXWRB*v3g8oS{d2dpA|d)!d{SnD)QO5DZws8rcDT~F?0~7{*(?*Mf^V5ToO|H0!uEur%0_M|E6d)(ilETw=Ldvx z9IPs?az12{$)GTlOeu-%M^_212xA*V11rhRCa~24ZzJu~ZxYH$ci~9qKYdR%lvpQ@ z^G!_9&P{5zEwtT+Ouc!2>P^mH9HZCxaIMX^t7lkmDRJ_qMo22gU+@7qzBP+a*!kQ&-qJ@!gW&+R_*G{FjU&VNTv2q#Zhmz(Dx%I`crc z*`w(wBN3n0eT)UG-f}f2_BM~?u$P<+%{KOLt||2);jh&qqI{BkAJ8S3j0|(!BJ;0OcNAo zer!)k$xqj`%fIJzoE=`NPKWiTflftux?$cL^_;{Z`P2oV^KgdO2Y9VQ)naC7xQO>*40@+j@p%$#@nyB5jT28WA^(8M!SyQ+7XR%uem&)ux3 zCMR@gtl+gO`A*QiF|wI4@Whw&MZQmMUd>~8TVo^R{pEy;X(smI4BDPdd?DU()t0wsH&!tNj)V}A|!b_opEW|BOO+g zj~*&BAOga=SA+PxmS2BHNOKfT0e__n~{m zyC%NBCn?}yy0eC+g<7gI>8qdP20?GbVQHaMF_blH`eXVJ$}f>P4`rJObxSt4{TX?# z^rkZ!`kq*FH@m})=RJ&ZlVLLAo@)+j$E7O06+<&UGFV*%94M%>QBgE3Jsf5t1=8TyX#NM zuM?Q%|BNe81oCh;n}=tp%VZuI{9CGT z`@erBKXUbZ+?-Ev1Fb+B03 zbz7>c(fm0NI#cAg$!{2X@6BC$7O1bS84KEdj1}0AWnN6tN1;Ci+Z!YnJGyp!fWx^w zE@sTf81j}qj}|9qt<}c(FdkMy-k{K2c}E%xZO$?y>23e?zR+TZMQifeW&MzdTd&05 zZQ_Pe>293CdkoUv+#W;GK5q3!2+CGlT0+@OVoM5{4agCmcibkSrsVcV>t01Zmkw+B zmefU)G_?4a8fq!U!>sKT^}R=AfG4EK8e~etWPcW{Wx-R3OOx_t?GI=a!}v;tx`39t zi4eu7%_K}(42wK9V%{u5;5}rS2W)6_=QEl9D+wEc^|D)1?~hg^p7aXQw^>bt>{ZQl&7pJ!``tD>`p zrO`0+2YF<79s0`D;@|!SrPcb)&!}S+tJosCCF-T zel>iSD~5)3Jw)plP3-*`K#0T9MPCZuFXtX!+Rn#_tQjgQ=a!~d4^f_bpZ=92G)RRy z&osSy6ho*1sKG&qTJ+964ObithAndac(jP1gMS9h; z=7$H;q!M{y8m>yBuOjPmWFO1N52FkQ3bq+$;S@H`pyRg9=?~AQ`iUiFd5nRjqGgXj-sraW=la1B@?Xav5RH#+3Cxm1y$<>xN{p3HJlnq6WwyWI*#h!jvgCc2dx| ztyL{jDsk-|*9vnp_Kh)&_@9ZnexHB7(-CQ@WvTuZNr(6gg9s75D8onI(RA$7_wdJ7 z&vD;5D^q`lJGF_ZRgv9KC!$ob>ECDE1Bmw>It%fqhd5e@Sb+(j#C5qnbc#edDW3_; z8SU@3ZygDUmPNqlAm@qV;;cR4kT~Z^8fM>R(GKmKIdf`d_d=9d#hUv1xY+3lroJE9 zpq;dD@trO%{FgiWw4(Gr1mN4_&UoA1rd?>@FVp&06q>TD3b2H1+@+EN8w_B}T%iGTP%#}RDWrT zqG0KILs<)ec~;$_ex2mo?h0@*iJ*q_P2N<|(ROyKn*lzvUp%t*gj;_nI~3%nfN)g~ z=hOY%AgqomeU**+H3mhu^g&ca^v$3_Ll5vveG9jf%KcVn9T#;Tez*?1eU?8`6mV70@v^Fc0}$l#o7#_Q&5Kr^45}p`9O@P)M>@&yd#PjL+wD zif3s1EKAg`h4A&C^8mx502KW)E>%L>E>;J>brmq-wMY*is8u1FD>TJN!I-S5l>?F@ z_LUOk?s#8e$>sC2(Qo5;COKbYdplR<7@3Z4;eP=7cNTlR-vS8_zxFVPbd=7BwU&TwsH zDDc0<(Bg-YZbZXamkL6j>jr#M86hzjZ3sQ04@P8TJpB0%S+|5&`u|KoPTvf`goa?_ zZS^h0P!s^?Zyj32=pu$-XKxMri;<`Z!OoeEC5=f5$YYZQI3)d90Ec1|$g@GRgwJ5uAy>fsqNsq}Fu(VUP4GC{%u=BL~pfT$b-3Zm~oEVv?q8;z`}pd7Sq z9eBaFBwa{3FsBfdOJzC%e0@VaNGs;Jkd_27f?)a)aI?2W$UZzP2a9W62OuHt(nul! zOftBb`1jI|Fw&7dQqv1!5$qB;u_F@^@g@MtLu_We3WB4I>Ws)wiXWwB7tT0_-6&j<-Xe= zyPV}75JM9hED1pLiRoUM0_}0ZV3>%qf)0|ck877!UMM&~`u3ikxx+&p!Vx%%7^fsG zrb9vTuHdBLqiO4Hoe20xslTM4phIhKu{hxWW{ZqtCR@-aSvXB*oF}lT&Gx4sj zo_nE!bM#KuIbbl~MYM^a7Nx3jM59{K?_rH*xz2Za%G%m)*_m$qX{Ebg#nGWM0cy*a zrw|ukS@-_{Pe8E0e-7FjWeXSGo@GpZ{x(87_8P$br9%PxyL7zaff%eRJ}t3{e2z3VY_w-=rUpu zDEJI*WP z6CG=p%|MFhwIA%sECDO{d@;#FkP#=(CsKkat&-F##wj9;gdR!eDf*7Uup zT}(jn6lbDlOF5Nt{bQJ=VW`P&-pD7uOs%{^l!~NsE9|7yaOi`N8JnHH03Pknp6rMs zsjQLds?E0*f1~-8Hf_ROE;nU3DCYtheD7 zXDoA029aFLcp|YFuZIDp$V;ABHnlNFeMakgTZDb$zQWjpJyx~@$&{TBl3N)bsBN8 z*f$WhJjRF~V&+9(zVIUC5LDrI7<(I`O39xD@@wd<+Cv&)Zl$9LKqG}`R1}4NK2Kb1 zersb=e`etAzLKI!AjVBa#^&eLYY~D7J<`^hhS;Z@t3MQPyY8Zb3|B3T7`GV^?d_`Q zg!j6(TVNC?^mY4vn2+uz=Yqn64>e2uJY1sCJO1Tj0=-^k@mWhVB9;PJn$zW0lRiG4 zPa(G;$Q|)Z+B@&JHEI@B)NwWm-JVT(U6n|Oe=A8n7QP($kB*#K9(cycyDZ(-Kpx&= zCL)ANVvFAv0N_SV+`vMM8o5P#xeTUTIf2uja-}Rb0~eIna+0wg$z@$nbJ~i~QFrVS zq^Ql;Y=jTP$bu%BZsv7w)BP$yq#9OKwMV?TXjv|&KfzhrpU@_*cL%OiTATeexZx0v ze&>wia~A^g zD->7wr+BaxdnJ}Wm?_eI3=(W4=#xS(f3zWC1Tu8DDOVFWu#8e}62q!SBO5r2PG4e2 zG8avQ68%iNt}((HyaV&n5!SPfVr?*zHGl(sRizzJzO;{e%LYq+!B5Mp4o%Kg5(MVy zz)nY8Jw*umwcE*a)x*bR2r>H8V~RTT!#N*EJ5gTs(0BHv@ODwBXdxlrZ)0^Ee};PW z4N|_nShdOBBFR?uK|L>{Yq^uMOanF9N+VLV)bZs0zSM{cByoCb6u4AK##kp4Ez=#* zF_jc6d^TnY&*M~RaZv`^Ww0+4tr#+~V6$9$KpFScJ)&w!b|UJI^<#& zsX;iJ`PSOo#m=ke{$U7BC4QADfA%d~($t!NNOol4#`@s5Z!!f7xI zSy$HGK{Je6&WL|;Z^Np${2qh4Xf77&=d`o(6LqMj!DRxjI{k{jQH5NBBQac(6U_#h zwQbOAFqC1Q;mYnCW-638M?xE=tH9aR0>|>uuBi#I^!&mn?_x9;nd27jf2NDRR0%$V z8h@mYR1r_N{0*4e6?;3U3iY(r+m$@}8%(YfL4Gwk#W&WZwG5=Eg9u}N6cbNK;G zHVonsjf2@O26yxoL+nuZ{-fVs(eN|Slr44Ql%B$dz7^im8eft^O%Yv(D$gioJ&|f9=61(IwbvM<(FNjo`>e@v zYM(BnTauE4q|h4oHwC-LXOfeB2U3_t_F0U>(NiLs96_{%8-O=FHsj)xwU&G;fxiGD zWFyhbccSzFsP7f|`-K}Qew&Tk*?qh#bhs2Llk_V}5vIx^#hU!Ae*+Qtqyz#Qa(5#Q z!U)%I$rqdz3g{kq+r)g~dKqI}?p-{r4;@t1gUz#+(l{}QGuOM1GP}eSf?$4*i6#Nu zG9GT*^*meaxrs(XM03^pGt_1QH5?7lc+9Jzy@3#_TB?$WWuY2v%g|RzK;Id~_zrn!v=O&`LDEM(bBZM7QuW!_`+Ap1 zs_3^~eI_IB_5%W%j3mW$Ui7@gwP-kqf~u8t*)M`m0TD`tx9KiD#3nFF1>KsduHgpQ z;~!HnVVqyH>6Um5-8`xRj+VE zva8zc(cmpg-eaJ9oFf7oSrWnx%}zsV7~?q>Q>8aiBjo*#*nz_9?jJHQowe`U$TlZ~ zY!(dC7~2c+e`JiY`gNx%WHgEM0=Ibl%shBT+?~ipKp}xemrW5G=7}EpTMaLGkYuX01Auq$^D@Xv;+{hV+l3WG#* zkwo1K}#Hby(`@A^0HStK~=CiG%fpf z8gtw8e;bkC?m?#bpwd0Z?<{P zIa1W;%JxLBJ|vG*N(=i8b#;)9i=EXG!*V#DzHTPh3ihVor}xc0m`h)@DM&YIWv2w{ z7JGQHql|It35XB4`qROn*9&T<_lz~t8u_bfe|r>N3K`{;5~0jn9#qZ5XqZB;tMB#p?Lr&&LoBZW@Uv1{!j7UaRW8K#fme+RZH=W?pZbHH6g%6l;&n7V^Rs5MBkFh2 zbi0E-D||Y6i;6a6R|o;3Sro2aX}BMrT~+##TNTxN1Xyo=MKfm@Q}3OPfs)_2F~NpU zbahWp>N`CtW#?b#lQhy;?TqL#{%vRSe^r-?u^{BG)Op@UiQ|wwW6G+;0&(Mq!Cvzy zgU53Z2tx`6@YRqqAVGyin>;`g9Jj}+Vi}(97JiYl3O9YBtJ ze~4Uwz9hf&*1dhF;Br{+o`aT;9+_1t1eL_!gwEU>(hWv4wq{#KVUUAIsWX?Oe_qhM z=$_g#9wM=Xj!!QShNUpIT08Cye#ez5>$Wv!sg>8c?b(GNPh*=+qIVz)nF}&P(dSot z*jLBTK~BZH>rG=mrNRhtJZejC9%1}FByLjWm4z>#2Om_tHhDh8Yc5(2dnO(4?v2-? zRsb6p;#Or&OtBGT@-%Gy_CUW+e_&c%4_e0grVc*LprP|aUNP;txpJH9O%O0Z>V2h3 z{Ww&OTCjHx0zGGyyiM#gQTtjuox^Po%t_>}(UGi?&6@FXinJC9nGb#)*EthUZ!FV3 zaM8i5fSoAxfO*=~_~F8BuSnl^!sCCh!4QPkM&9t_39UffaY;k0ACu<0e-FC2gbseY zlHrHf?9PnlM%l?a%f!CW?xY8L$K2uId6dGS^+neyrrwz1VT|m2*=9cEiyE%qLvEs0XXeBk%2|nb#Hlr6}<+s*J~6 z9n`3XsT7x|k~Vx72IM3x!igzjqh(R|M*I&*O359r$+IK|jI5xE%L({1K|M^j9!wjn za+!47yi5T|(3V(RC1S${sb$IsM1qmTb48Uo*eQ#s8l1_>4#;CMf4E9lll>S69IzzM z@ea7CDh~co@MB&`BU!`OJh(r)S?M4-RoxY@7may3}1X0ScTY!^E3~_rQR}M4$ zWq4VF4V5C?3B%eme{r@yWPY9@V+$x29hthj*Wkq~`X*e~S6msjsTk6MB%(z7C~vWR+r-Q<18s zkC3C=5Zxl-od3biZkmd{ii%qMjoxK*8^o(-ek#BnVsq!Me_x!;%Z$w9C+HfD!;v;; z;PGq#|L5#E9o)t^>DdrL7ylT;Do3v9izMMEO z+;Ogf;=!h>>7Fgr^Q8)^Id4M6N){1lr1i5xVE7kzIY_*eXa3Nt?Na?s%pwsNu}=Y& zwKu3L!>#*Rf6eX!dP1L|QE~6qE|YU*$u{chs%fl~OSZBaaX4er{+vBb&ecB`yxGvD zum8@sx%G3%d6YexP%e^IE(qQTX|2zc<@v@=c$R)zffV;4uF>CF^s@y+(qn)D`tN3! z3g2qtsZb5(J-b{A+KLsHfSL0_N6ng5|L{4~M(CqVe`GdCACrB>ny0Z;oJsROlza5W ziA=a_6TjHP3)@!*Yb{oZI;89J^56@dbAMgIASBye*fv)FG;)kTvoO1&K9h5gm$x-C zdB#D{sV*8tc!xg@`^uRG9XZk742SD8nr=1%_$oGMvIQ6j3aQVyA7;CT)qQV2qd6!? zF9Egke=}TdI=Mv*oG;HlU{_@o;!AM;>N`gH!5AAbi()FHF2a`b65}3a^5Hf1+WiJo zp1=kum@y<}HixU9_0&p(p2&*dxL1A-BmbjH+~RS-T_E8h-*_f}3%OQ)lN#UP18*U* z)~AZ~vQ6R^?pElaZ=ncc z<*(5Qgg#|XZp-b;t99Nj(e;oeB4i{OS^A@5iz)g#o*9N!#@8E-$xg?UCv(yL)$kBu zSs8bdo|9Hk`!UYmQ1ox)WHziC^SkQu^Fn)E#N`flRv^ru0vTjf(`#v1nJy`?t zcPL_uM`(d<4SiqKf|zya2^P1NzO#yNGvN&tG8?NZ+3 zsV)RqEHZ^5r`A;)2pXF9nhu#(%3?j*CC|53ORLo>nkrQ6K?h90Uw$6n7v}?r5x&lc zM?@HAMjL9! z$i4hn+F53}NC`5CWs{FloNAmtTcoibGdvYVoWyX#J{?SeJk%uWj;q*7)aP## zH>~X~?koX0a(ZCqnX_o|W4}}iV|@*RmRF3`D%MBPg^l;pBUQ-&DvjPZ6!>R13zuII zog>;*(r}ED98uHprMzWNaF;3`e_xpHYe|NUJaT^~he8v^{(qY1VO?l9@Dm6PLz-ip> zXTd$bjXnh&Tovud`@tP$@&xni<{3NY$8!Twn)|>E$dd^EGBG7ve^CZDX$Rf??7qJu z%#!y0GLr-0T+KK&@e{#sc{_qF(t@2q)|VbaEb$I_wE`#cU!85FI}alcztVLaZp6Om zMH{Z*{>+-9aizOto0m^qcj93y3Apl^o&7ov<&2&u5)1rUo`HvXc^xL842aivTLFBR z7s|@8@YQ)PS{a8ve~bZy!wS%OCVHnXYlNn9`0+lypwatwC>mGJTeP;F{*hDFfpM6k z)!hp}D9oFro*)>ER80^!XN;+b;7OF(4{HCyrnu{Y#mpoE8)(Bfc|MV=+nRp`25ib% zt)8h%oq8Rte{}w%qaPj%g^n|CIy`+Q<0v6->d5*>&YOmke_6f0;_T&&V(!ue&u6bp z-!B()H8K?M1iFHZ93K!&6|T0x`eJ65_jr~lo8wn|Ex*tP_fh@Y+uGVr>oQGe-_3!P z^_IRJmw%}>W|^98(BsQntNZ?8BsdBh5l5KYs2ff1>_NQ^pP*$S7vK>>n4zz07x&eC2-^@-3eV-A5`savY>tHrJ+9^T`}y1wDV*Q6w13v=$M>6;5$i+BVcbsUtA181G<(u` zbd5D>d|Pg+jMMyc^G09pgYN~qJG1pcecoff04_g2Bv~^qPkSH>|TWV@cEt&x@}JDJhldu0nF>>&j<&PNWZ+cYmbR%7w3_ zqRW1_2iXz^jIbEKF101|S+7F#A6`L9T1?@L|WrzTU_ITL4OAb$oKaUVDJrFFUeP?g{wqR|;9AC+Z@{&{gpEyN zfV%-*;hYn?Pluu>jyCID&FuOCGglxzsm-b2o7dWe=(7?42p(dMUJtcFLs76C_<)Es}nCrC0&IMp!Q#p z5H7dT_=(`_&n{3APX=C39*Bj0%VGOxV=S^EYYT$80+`W~*%a|)NzZ>+2>doqK$1cU z;O`SbXi2$z3`pO)y`BPx_<2(vrEz%c0u**6*Me>=xClO`C! zCCT4a(IMIOhYPusqg^ii#aC%Xtu0#xOY7UvAQXl~k%d16n3;@{wNjIHda2LNn$qru zdyTS+4iP0&3*Td8t2}LYSSfJmqhBpx8)rggF~#D}^cs`SYh@8SL51o;2JHvhz3tXM z$W#}egq*1%M@y^?B}X&he;sb(H^p1I2*G1qR<57rfilZhWiwl9!c0XBK*rn15w7IBIvgcX<4VQbyMr2CV$;mv#w_ zv_KE|OqP)xe+Gm-(mIlDX4w^BxyShoWjJ+Jb^B41z;>YXlq%0YK2$((rKzL(INOHR z;09FXu{VHmO(yWg?|(~+C0YPXc-`9H-hWF!;<23bSY36W0zo% z0m0X$hJdYqC@#Xoh2V_Blt)_I)qjI7Bu+mgU>uWqe^b;X^ZuNpn9rN4xP!-0MrA?> zvGywGRp8RbRqw6kwOum{W`MB)yw~${a=8s$E)ap_o!rwI$tD%0_5^=s7Y_wH>}`{? z`>^*&1N%hjs*p*Qd-aD>^yl|h76T%HT?wx+HuR}bdQz%}m*v@lgNJ zjIheb7Ekg{$<#wF<$^%{Q!m$3)cf&fECx}@*>V{IK;(|;@pS(8mBetK${VUXNm;?f ze~wSMB0Jw+u68186j#N+@j~#QKx8?5{RNWvy{8AevDqrGA;y#5Rs0C}$U}U_ozk26 z!)NtEOuAGp)q#pHdcFHB$AH7LG6*jecZnhOJ4)0Uds89Qk?q(7b@P$JZdz#!;$W+G zZ*}07AaAoYuB6AOkmz(@#0oVw?9W9Ae<;XIb_uF|+FDj#3fKxyNPZ6r`d_6(c&X^JsFLBhEN;sx>EUrZ0Z7C~Dqu=+|cl(t|1mEDCiKv7wQ#^e{KH} zo^}u;3~^Z{vdC^KQ+w@~tr+eI#x9RX4f|fs92sFFa}?-h&vQ=2Wqg;viMK6{41?^JKZrl9#Y-9P#Ga*(@z;=A*7mS~`q>O2EQvgI6o6BSYhEwnh ziMYj|ont-|)pe9bDk~MeMqPZse>1OYEmGn({|q#ezuH}2=J@$!zWN8Usf3%jhU^W`K zZKo3MMBX&cy+)Zf6Z${YB?i#K7BgU^_?{Nb6C6w<=a4!@&Zo%hdHVgh)SdIOC2Xp4 z7Dk@;$7H{=*HxuSfa~RX%-*s}GH_O8*Fl7fuRg8ADBVo~euR&bjA-o2)s_t4Ayq;Q)=~wx z8}APn#>QF5PxhD}+TxBe(rXxs8xH}VCShHh?Iv}n9y|-o zHFaprTDFYGz7?gcsx!5gguavbrB)__%LJahRO>CLeP|1>%+#1p+8)O-aaZnG5w}4` zwS+*VJ;i-zq(C=q@Xy~6SM+~8^%pdl)_WC2U$%LeDs~Vle?NBQt3j_zSb@0kV6G^F z#1lrbXgUv9Ldd7&=}tg^A5kl| z-Lmi3NeInmB}8<|H<~F*!mu!C9anGhQ(h{c#p(Ds42p=9P35Y$u6OKH$4Esz1kBN2 zJeX>4^?CmTy zyjuUo$iAyb3I7Q?&@7#~BMnA@RJol#somN+iU6LdQr!sBT7k@Qq}cde@sxQ*M)sS1 zKY38?St{`}Ao`R$rCT5H#t*VjMGW4@&RU>zP|Jj{e{89k!sGcx1RD9-k7%P>!%NV* z=8Bap=&0$SaR5a`??k0~qiCTFHQ!}}l|(=+p=`rTo{zj^tBu zz32~0Mi6Ho#?zEuS(%SSFGht37F#%S|K^L@n3e1Fo?G1=sQB@8*ropA&^`5=?@WWW)tGq<#-l$2Mez(J-gzqcAni{G)=`9 ze`Xi=l*j$TF`z_MN3|Q8WX68S#KX2q?lb)LMU67EtAz2Shq%H|ucN@~;U!$RFOgdY zaUe7Vq?sF8wYONPbS^zpAYXe5JEoOeL!`j)fO~%T*l1@pw?R*0ZEnjY_sx zlT8Cop>gV>+eHipeq#;R8yXz8a6mo+`TN>PZL5Wg4-8Wggu7^#g9@o;GPI+g+$t}F zHHuG`FRzZp?XRP~wAp>el5+fB(`z^sPq?XUFCm*XnjbJLeQYs@biH$lJ`V6Ae`na* z%zo|GLc=B1EZ+P>!NMi79WiQ=ujq_d;m9aer#$&39c(3L^8t6$@cYG-MHUl`pLf*n zV#mPlmd2P+WPK-MnmY^~4OtJIUcMw=Muu(ekBG+0rgII#fwItFc#yZHlU{bSDS)C(2!lz&uO792v@H(4i3?$TN z_4s2u{(78o6bSRru>;SGX348Mq!GGB*k#kuy#c^JWg64AB3?dIa+%O zcfRPABCR-aH-#wKK6wP(H+D=7{MMs{pS11$QPaAE0X2m%@$#Y(s8&)WsBiog<*~oO zC*Rn_7goy|&OSt7f34>GjM-Ji%)NMxeCITTjqHz4&3A*)}_YW&Dx>xT|XQk zLn7H>F})$YETAC2b8F=s4}=$RQTy2B=|2`N;dPD#k{1Uz1>m>04c$#?;LMfy@gU6# z@WS-yhpt(@8>mEc)nmYWuS>t;c@$T*gTNO-dzQbGIC> z%(>fPU2v?_$oqfle(5F~WJZwZtv-W-Hh|Eam4xOw`T3+hA;q=-2i$l8Qd6$s*u}d= zoQI8+ABhZYe|)+eZ86M}auIg1etE@I33zCF242#!VNa4<~F40 z)GlTSPLAGaECzqA3x3dIZLnN#dwB6WSR*sr=*m zLs#Z2JqxyFky zk9jp$e_J!aU5ttAU7YzN+_4I?jJfspA(&u)lu1%zh8dDE3?gOq9L7!QtL~ht`La6Y zrka*G6(f}7Z^bmS*zIy$RSrxKdlDZ)rk&J$Y(CQFrx8@bZ4JsTz<`!(e}5w!n;1e_`u!K2w=icw3%y$aSB?fns2bI@>%> zB##)5odlq!T}}jkD6%vlevycrNtM3?Y;Vn)11CZxfNiwc_vv5n-C53FH-*Pd-v13< z&iT2m^Y$n`PfI-6H?Rxf^&-?$qG9O>MnssKh?QRjyB9IQa?vddfjZs ze}&$ED6B2zVt0hzUu_2o$dypN;Gwr~2}WHCyOuS92P>11{8YP8I#YxQP-&av4P3KoAt9MmoBS+Ie@D3*M(4kw1OgEV31`RCH)2O5w5C)KwI3EX zk6?Iim1@z9f&>xgfZn>ULoZGWOn$)_kP!&|d?PC3Gf2^{K zg}S1Pc+&W+RY(pg+gS;%bNxES2&}Nz(AN^J6!V;XSu^TV>)LMolArO-M%a_wn^rOj zugYIUX|cupahO=<5vC*fCa~kFKK?xZzWo^o+r-j`3ZD^gc-}p|70Zf1J3R4uRYt{Q z2LMH^q(qN1!zkdoseyFns&kycf5F;@qZj*8ft}*ian5v?MF _R!tYF=*$H$=IM= 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 delta 34275 zcmY(pb8se6*Y17Cwr$(CZA@(2zGK^VG81QF+sVYXGqJ5R&-=XR)b~~Ouj*ReYj^ej zqpPlK)qby3ddOEyqyXdLWX`x*hNlMl>-k-_kvt%twes^9-af0p(-hkF<~l-}@pKeC+@^)z z+I${Zx(_(|nT0p{N{hhHrO>eC+Wxlmy6Fl0YohHqxa#^~D)za!LRzJCPld1I~x z0>7yKoKQIsQnF09B8YK4E-Wq2Z1G2W_b~Yo3{AI2M`u(DjM>>QSy2`wEbUpDUD
$3+{`BXX0{to#dX(QHe+0Y0?o`RH6U86Po2q9w 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 diff --git a/wAiFu.tex b/wAiFu.tex index 6cf5c63..bcaf46a 100644 --- a/wAiFu.tex +++ b/wAiFu.tex @@ -23,7 +23,7 @@ \maketitle \begin{abstract} - For too many years have the world of Artificial Intelligence and the world of Hentai been separate ecosystems in which they do not realize the powerful potential of an alliance. Project Hentai AI aims to bring Artificial Intelligence into the sphere of Hentai, Ecchi and Lewds. In this paper, we propose a Witty Artificial Intelligence Framework Utilization (wAiFu). This framework is built for collecting data, labeling data, and training machine learning models to rate images of lewd anime/manga and hentai. As a proof of concept, this framework is applied to lewd anime thighs. A dataset is collected, transformed and labeled before being loaded into a fastai implementation of a Convolutional Neural Network designed for Computer Vision. The retraining of a resnet34 model for 10 epoch resulted in an accuracy of 70\%, which is much better than a cointoss. + For too many years have the world of Artificial Intelligence and the world of Hentai been separate ecosystems in which they do not realize the powerful potential of an alliance. Project Hentai AI aims to bring Artificial Intelligence into the sphere of Hentai, Ecchi and Lewds. In this paper, we propose a Witty Artificial Intelligence Framework Utilization (wAiFu). This framework is built for processing and labeling data, as well as training machine learning models to rate images of lewd anime/manga and hentai. As a proof of concept, this framework is applied to images of lewd anime thighs labeled using a boolean method. A dataset is collected, processed and labeled before being loaded into a fastai implementation of a Convolutional Neural Network designed for Computer Vision. The retraining of a resnet34 model for 10 epoch resulted in an accuracy of 70\%, which is much better than a cointoss. \end{abstract} \begin{IEEEkeywords} @@ -59,11 +59,10 @@ Machine Learning and Deep Learning falls under the discipline of Artificial Inte \subsection{Hentai and Thighdeology} \label{sec:hentai} For the purpose of this study and future studies in Project Hentai AI, the data in the datasets are categorised in three definitions: \emph{Hentai}, \emph{Ecchi} and \emph{Lewd}. -In its simplest definition, Hentai is simply anime and manga pornography and can be seen as the most extreme out of the three. Ecchi on the other hand, when used as an adjective, translates to ``sexy'', ``dirty'' or ``naughty'', and has been used to describe anime and manga with \emph{sexual overtones} (playful sexuality or softcore). Lewd in these studies is defined as \emph{sexual undertones}. -Contrary to its name, Project Hentai AI includes ecchi and lewd as well but the name of the project uses the term hentai for simplicity. +In its simplest definition, Hentai is simply anime and manga pornography and can be seen as the most extreme out of the three. Ecchi on the other hand, when used as an adjective, translates to ``sexy'', ``dirty'' or ``naughty'', and has been used to describe anime and manga with \emph{sexual overtones} (playful sexuality or softcore). Lewd in these studies is defined as \emph{sexual undertones}. A detailed differentiation between these three categories is planned for a separate study. Project Hentai AI includes ecchi and lewd as well even though the name of the project uses the term hentai. -Thighdeology is the worship of thick anime thighs which has its Mecca on the Thighdeology subreddit\footnote{\url{https://www.reddit.com/r/thighdeology/}}. -The top two rules on the subreddit are: (1) All images must be thigh-focused and (2) No Pictures of Sex (Nudity is allowed). The second rule is a clear demonstration of the distinction between hentai and ecchi described above. +Thighdeology is the worship of thick anime thighs which has its Mecca on the Thighdeology subreddit~\cite{thighdeology}. +The top two rules on the subreddit are: (1) All images must be thigh-focused and (2) No Pictures of Sex (Nudity is allowed). The second rule is a clear demonstration of the distinction between hentai and ecchi described above. The dataset used for wAiFu is images of lewd anime thighs in accordance with these two top rules. The epigraph which crowns the website says it all: \begin{quote} \emph{``Blessed is the man that walketh not in the counsel of the ungodly, nor standeth in the way of sinners, nor sitteth in the seat of the scornful. But his delight is in the law of the THICC anime thighs.''} @@ -78,7 +77,7 @@ Witty Artificial Intelligence Framework Utilization. \section{Design} \label{sec:design} \subsection{Data Collection} \label{sec:datacollection} -\noindent The data was collected manually from six separate sources: +\noindent A dataset of lewd anime thighs was manually collected from six separate sources: \begin{itemize} \item Discord Server: All Things Hentai \item Discord Server: Hanako's Hideout\footnote{formerly known as r/Hentai Group prior to 13th April 2021} @@ -88,14 +87,14 @@ Witty Artificial Intelligence Framework Utilization. \item Private Donations \end{itemize} -~\\\noindent After collection, the data was manually screened for (A) presence of thighs (B) image quality and (C) image ``cropability''. The presence of thighs simply implies that the image in question contains a section of the lower body of a humanoid character. The vast majority of the characters depicted in the images collected were of the feminine nature, although this was most likely due to the skewed ratio of feminine/masculine thighs from the sources themselves and not due to any discrimination during the manual collecting. This is further discussed within limitations in Section~\ref{sec:limitations}. +~\\\noindent After collection, the data was manually screened for (A) presence of thighs (B) image quality and (C) image \emph{cropability}. The presence of thighs simply implies that the image in question contains a section of the lower body of a humanoid character. The vast majority of the characters depicted in the images collected were of the feminine nature, although this was most likely due to the skewed ratio of feminine/masculine thighs from the sources themselves and not due to any discrimination during the manual collecting. This is further discussed within limitations in Section~\ref{sec:limitations}. Image quality refers to the resolution of the picture. When finding duplicates, the one with higher resolution was kept. Some images where included in the dataset even if the quality of the resolution was below average due to either its content or source. -Image cropability refers to the composition of the picture. Since the focus of the first dataset in wAiFu is ``thighs'', it is preferred to isolate the thighs from other factors in the image which could influence the labeling, such as: faces, tits and other eye-catching details (some of the cropped images in the dataset does contain the ass region due to non-perfect but acceptable levels of cropability). +Image cropability refers to the composition of the picture. Since the focus of the first dataset in wAiFu is \emph{thighs}, it is preferred to isolate the thighs from other factors in the image which could influence the labeling, such as: faces, tits and other eye-catching details (some of the cropped images in the dataset does contain the ass region due to non-perfect but acceptable levels of cropability). -\subsection{Data Transformation} \label{sec:datatransformation} -The data transformation in this project consist of three stages after being collected: +\subsection{Data Preparation} \label{sec:dataprep} +The data preparation in this project consist of three stages after being collected: \begin{enumerate} \item Converting \item Renaming @@ -109,34 +108,42 @@ The images were then cropped to contain as little as possible apart from the top After cropping the original non-cropped images are kept with their original name, while the newly cropped images get an appended notation of having undergone the procedure (e.g., \textbf{thighs-0001-crop.png}). The cropped images were placed in a separate directory from the original images. By keeping both datasets, this study provides the possibility of utilizing the non-cropped images for future work. -The data transformation implementation is detailed in Section~\ref{sec:datatfms}. +The data preparation implementation is detailed in Section~\ref{sec:datatfms}. \subsection{Data Labeling} \label{sec:datalabeling} The labeling of datasets in wAiFu is categorised in two different methods: \begin{itemize} \item Boolean labeling - \item Score labeling + \item Rate labeling \end{itemize} The \emph{Boolean labeling} consist of two disjunctive values (e.g., True/False, Yes/No, Approved/Disapproved, 1/0) which is the closest to the reviews previously gotten when brokering pictures of anime thighs manually. An image would be sent and an Approved/Disapproved would be received in return. A diagram example is seen in Figure~\ref{fig:protocol}. -\begin{figure}[h] +\begin{figure}[t!] \includegraphics[width=.5\textwidth]{img/thighs_diagram.drawio.pdf} \caption{The protocol of reviewing thighs using boolean labeling} \label{fig:protocol} \end{figure} -The \emph{Score labeling} ranks the images on a scale (e.g., 0-10, 1-5, A-F). This could be considered to be a more advanced implementation of Boolean labeling (which would be viewed as a scale of 0-1) by adding float values in between. +The \emph{Rate labeling} ranks the images on a scale (e.g., 0-10, 1-5, A-F). This could be considered to be an extension of Boolean labeling (which would be seen as a scale of 0-1) by adding float values in between. The data labeling implementation is detailed in Section~\ref{sec:impl_labelapp} \subsection{fastai} \label{sec:fastai} -% Todo What is fastai -The AI implementation was using fastai, a deep learning library providing machine learning practitioners with high-level components creating state-of-the-art results in standard deep learning domains~\cite{fastai}. For the purpose of boolean labeling in this project, a single-label classification structure is implemented using various building blocks. The pictures and their labels are loaded into a \emph{DataLoaders} object. This object is responsible for maching labels with images, applying item transforms (transforms applied to each images individually) and batch transforms (transforms applied to each batch during training). It is also responsible of splitting the dataset into various parts: \emph{train, validation} and \emph{test}. +The AI implementation was using fastai, a deep learning library providing machine learning practitioners with high-level components creating state-of-the-art results in standard deep learning domains~\cite{fastai}. For the purpose of boolean labeling in this project, a single-label classification structure is implemented using various building blocks. The pictures and their labels are loaded into a \emph{DataLoaders} object. This object is responsible for maching labels with images, applying item transforms (transforms applied to each image individually) and batch transforms (transforms applied to each batch during training). It is also responsible of splitting the dataset into various sets: \emph{training, validation} and \emph{testing} (see Figure~\ref{fig:data_sets}). The training set is used to train a given model, which sees and learns from this data. The validation set is used to provide an unbiased evaluation of a model fit on the training dataset while tuning model hyperparameters. The evaluation becomes more biased as skill on the validation dataset is incorporated into the model configuration. Unlike the training set, the model only occasionally sees this data but never learns from it. The testing set is used to provide an unbiased evaluation of a \emph{final model fit} of the training dataset. +% Add something about how fastai splits the dataset using ImageDataLoader + +The DataLoaders object is then combined with a model and a metric to create a \emph{Learner} object. The model can be pre-trained, which means that some object and shape recognition can be used as a foundation to train a model for a more specific computer vision problem. This method is called \emph{transfer learning}. The Learner object has a bunch of methods including: \texttt{fine\_tune}, \texttt{predict} and \texttt{export}. The \texttt{fine\_tune} method first freezes all layers except the last one for one cycle (a ``prequel'' epoch), and then unfreezes all layers before running the epochs. This process of freezing and unfreezing layers in the Convolutional Neural Network improves the performance of transfer learning. So using \texttt{fine\_tune(2)} would first run a cycle only adjusting the last layer, then run 2 epochs adjusting all layers. The \texttt{predict} method is simply loading a single image into the model which then predicts the label. This is usually done after the training to sample the accuracy of the model. The \texttt{export} method saves the trained model to a file. + +\begin{figure} + \includegraphics[width=.5\textwidth]{img/data_sets.png} + \caption{Visualization of the three sets of data} + \label{fig:data_sets} +\end{figure} \section{Implementation} \label{sec:implementation} The code of all tools in Project Hentai AI is open source and can be found at \url{https://git.hentai-ai.org}. -\subsection{Data Transformations} \label{sec:datatfms} +\subsection{Data Preparation} \label{sec:datatfms} The following section goes through the implementation of homogenizing the dataset, including renaming, changing extensions and cropping the images. \subsubsection{Convert and Rename} @@ -200,6 +207,8 @@ The small dataset is due to the time-consuming task of manually cropping and lab \subsection{Future Work} \label{sec:futurework} In order to increase the size of the dataset and thereby obtaining a more robust accuracy from the machine learning model, future research in Project Hentai AI will spend some more focus on automating the collection, transformation and labeling of data. +In this study, only boolean labeling was considered when reviewing lewd anime thighs. But even in the world of Hentai thighs are more often than not in a gray-zone as opposed to black or white. A future work in wAiFu would be to extend the labeling application (\emph{Hentai Tinder}) to have a mode or a version capable of using rate labeling on a spectrum. This could be as easy as presenting the user with a 5-star system, similar to reviewing restaurants or hotels, where each image gets rated from 1-5. + \section{Conclusion} \section*{Acknowledgement} -- 2.25.1