📚 The CoCalc Library - books, templates and other resources
cocalc-examples / martinthoma-latex-examples / presentations / CNN-Intro / graphics / convolution-linear.tex
132939 viewsLicense: OTHER
1\newcommand{\filtersize}{3}2\newcommand{\filterx}{8}3\newcommand{\filtery}{2.2}4\newcommand{\filteroffset}{1}56\newcommand{\filterxres}{12}78\newcommand{\imagesize}{7}9\newcommand{\imagex}{0}10\newcommand{\imagey}{0}11\newcommand{\imageoffset}{2}1213\newcommand{\outx}{16}14\newcommand{\outy}{0}15\newcommand{\outoffset}{2}1617\newcommand{\percx}{1}18\newcommand{\percy}{2}19\begin{tikzpicture}[scale=0.6]20\tikzstyle{point}=[draw=none,inner sep=0pt]212223% draw perceptive field24\node (p1)[point] at (\imagex+\percx,25\imagey+\percy+\percx*\imageoffset/\imagesize) {};26\node (p2)[point] at (\imagex+\percx+\filtersize,27\imagey+\percy+\percx*\imageoffset/\imagesize+\filtersize*\imageoffset/\imagesize) {};28\node (p3)[point,blue] at (\imagex+\percx+\filtersize,29\imagey+\percy+\filtersize+\percx*\imageoffset/\imagesize+\filtersize*\imageoffset/\imagesize) {};30\node (p4)[point] at (\imagex+\percx,31\imagey+\percy+\filtersize+\percx*\imageoffset/\imagesize) {};32\draw[fill=gray] (p1.center) -- (p2.center) -- (p3.center) -- (p4.center) -- (p1.center);3334% draw output point35\node (o1)[point] at (\outx+\percx+1,36\outy+\percy+\percx*\outoffset/\imagesize+1+1*\outoffset/\imagesize) {};37\node (o2)[point] at (\outx+\percx+2,38\outy+\percy+\percx*\outoffset/\imagesize+1*\outoffset/\imagesize+1+1*\outoffset/\imagesize) {};39\node (o3)[point,blue] at (\outx+\percx+2,40\outy+\percy+1+\percx*\outoffset/\imagesize+1*\outoffset/\imagesize+1+1*\outoffset/\imagesize) {};41\node (o4)[point] at (\outx+\percx+1,42\outy+\percy+2+\percx*\outoffset/\imagesize+1*\outoffset/\imagesize) {};43\draw[fill=gray] (o1.center) -- (o2.center) -- (o3.center) -- (o4.center) -- (o1.center);4445% draw image46\foreach \x in {0,...,\imagesize}47{48\draw (\imagex+\x, \imagey+\x*\imageoffset/\imagesize) -- (\imagex+\x, \imagey+\imagesize+\x*\imageoffset/\imagesize);49\draw (\imagex, \imagey+\x) -- (\imagex+\imagesize, \imagey+\x+\imageoffset);50}5152% draw filter53\foreach \x in {0,...,\filtersize}54{55\draw (\filterx+\x, \filtery+\x*\filteroffset/\filtersize) -- (\filterx+\x, \filtery+\filtersize+\x*\filteroffset/\filtersize);56\draw (\filterx, \filtery+\x) -- (\filterx+\filtersize, \filtery+\x+\filteroffset);57}5859% draw filter result60\foreach \x in {0,...,\filtersize}61{62\draw (\filterxres+\x, \filtery+\x*\filteroffset/\filtersize) -- (\filterxres+\x, \filtery+\filtersize+\x*\filteroffset/\filtersize);63\draw (\filterxres, \filtery+\x) -- (\filterxres+\filtersize, \filtery+\x+\filteroffset);64}6566% draw out67\foreach \x in {0,...,\imagesize}68{69\draw (\outx+\x, \outy+\x*\outoffset/\imagesize) -- (\outx+\x, \outy+\imagesize+\x*\outoffset/\imagesize);70\draw (\outx, \outy+\x) -- (\outx+\imagesize, \outy+\x+\outoffset);71}7273\node at (\imagex + \imagesize/2,\imagey + \imagesize + 2) {\Huge $I \in \mathbb{R}^{\imagesize \times \imagesize}$};74\node[text width=4cm, align=center] at (\filterx + \filtersize/2,\filtery + \filtersize - 4) {\large Filter kernel\\$F \in \mathbb{R}^{\filtersize \times \filtersize}$};75\node[text width=4cm, align=center] at (\filterx + 4 + \filtersize/2,\filtery + \filtersize - 4) {\large Result of point-wise multiplication};76\node at (\outx + \imagesize/2,\outy + \imagesize + 2) {\Huge $I' \in \mathbb{R}^{\imagesize \times \imagesize}$};7778% Start image (left to right, top to bottom)79\node[draw=none] at (0.5, 6.6) {\large 104};80\node[draw=none] at (1.5, 6.9) {\large 116};81\node[draw=none] at (2.5, 7.2) {\large 116};82\node[draw=none] at (3.5, 7.5) {\large 112};83\node[draw=none] at (4.5, 7.8) {\large 58};84\node[draw=none] at (5.5, 8.1) {\large 47};85\node[draw=none] at (6.5, 8.4) {\large 47};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8687\node[draw=none] at (0.5, 5.6) {\large 109};88\node[draw=none] at (1.5, 5.9) {\large 97};89\node[draw=none] at (2.5, 6.2) {\large 114};90\node[draw=none] at (3.5, 6.5) {\large 116};91\node[draw=none] at (4.5, 6.8) {\large 105};92\node[draw=none] at (5.5, 7.1) {\large 110};93\node[draw=none] at (6.5, 7.4) {\large 45};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9495\node[draw=none] at (0.5, 4.6) {\large 116};96\node[draw=none] at (1.5, 4.9) {\large 104};97\node[draw=none] at (2.5, 5.2) {\large 111};98\node[draw=none] at (3.5, 5.5) {\large 109};99\node[draw=none] at (4.5, 5.8) {\large 97};100\node[draw=none] at (5.5, 6.1) {\large 46};101\node[draw=none] at (6.5, 6.4) {\large 100};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%102103\node[draw=none] at (0.5, 3.6) {\large 101};104\node[draw=none] at (1.5, 3.9) {\large 47};105\node[draw=none] at (2.5, 4.2) {\large 109};106\node[draw=none] at (3.5, 4.5) {\large 97};107\node[draw=none] at (4.5, 4.8) {\large 115};108\node[draw=none] at (5.5, 5.1) {\large 116};109\node[draw=none] at (6.5, 5.4) {\large 101};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%110111\node[draw=none] at (0.5, 2.6) {\large 114};112\node[draw=none] at (1.5, 2.9) {\large 47};113\node[draw=none] at (2.5, 3.2) {\large 99};114\node[draw=none] at (3.5, 3.5) {\large 97};115\node[draw=none] at (4.5, 3.8) {\large 116};116\node[draw=none] at (5.5, 4.1) {\large 99};117\node[draw=none] at (6.5, 4.4) {\large 97};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%118119\node[draw=none] at (0.5, 1.6) {\large 116};120\node[draw=none] at (1.5, 1.9) {\large 99};121\node[draw=none] at (2.5, 2.2) {\large 97};122\node[draw=none] at (3.5, 2.5) {\large 116};123\node[draw=none] at (4.5, 2.8) {\large 46};124\node[draw=none] at (5.5, 3.1) {\large 112};125\node[draw=none] at (6.5, 3.4) {\large 104};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%126127\node[draw=none] at (0.5, 0.6) {\large 112};128\node[draw=none] at (1.5, 0.9) {\large 63};129\node[draw=none] at (2.5, 1.2) {\large 118};130\node[draw=none] at (3.5, 1.5) {\large 61};131\node[draw=none] at (4.5, 1.8) {\large 49};132\node[draw=none] at (5.5, 2.1) {\large 46};133\node[draw=none] at (6.5, 2.4) {\large 48};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%134135136% Filter137\node[draw=none] at ( 8.5, 4.8) {\large 9};138\node[draw=none] at ( 9.5, 5.1) {\large -3};139\node[draw=none] at (10.5, 5.4) {\large -1};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%140\node[draw=none] at ( 8.5, 3.8) {\large -6};141\node[draw=none] at ( 9.5, 4.1) {\large 5};142\node[draw=none] at (10.5, 4.4) {\large 3};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%143\node[draw=none] at ( 8.5, 2.8) {\large 2};144\node[draw=none] at ( 9.5, 3.1) {\large -8};145\node[draw=none] at (10.5, 3.4) {\large 0};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%146147148% Result149\node[draw=none] at (12.5, 4.8) {\large 936};150\node[draw=none] at (13.5, 5.1) {\large -333};151\node[draw=none] at (14.5, 5.4) {\large -109};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%152\node[draw=none] at (12.5, 3.8) {\large -282};153\node[draw=none] at (13.5, 4.1) {\large 545};154\node[draw=none] at (14.5, 4.4) {\large 291};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%155\node[draw=none] at (12.5, 2.8) {\large 94};156\node[draw=none] at (13.5, 3.1) {\large -792};157\node[draw=none] at (14.5, 3.4) {\large 0};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%158159% Result image (left to right, top to bottom)160% [[ -4 -254 -498 -662 -849 -642 -187]161\node[draw=none] at (16.5, 6.6) {\large -4};162\node[draw=none] at (17.5, 6.9) {\large -254};163\node[draw=none] at (18.5, 7.2) {\large -498};164\node[draw=none] at (19.5, 7.5) {\large -662};165\node[draw=none] at (20.5, 7.8) {\large -849};166\node[draw=none] at (21.5, 8.1) {\large -642};167\node[draw=none] at (22.5, 8.4) {\large 187};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%168% [-520 45 240 211 388 215 -861]169\node[draw=none] at (16.5, 5.6) {\large-520};170\node[draw=none] at (17.5, 5.9) {\large 45};171\node[draw=none] at (18.5, 6.2) {\large 240};172\node[draw=none] at (19.5, 6.5) {\large 211};173\node[draw=none] at (20.5, 6.8) {\large 388};174\node[draw=none] at (21.5, 7.1) {\large 215};175\node[draw=none] at (22.5, 7.4) {\large-861};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%176% [-340 559 -105 185 -138 -180 503]177\node[draw=none] at (16.5, 4.6) {\large -340};178\node[draw=none] at (17.5, 4.9) {\large 559};179\node[draw=none] at (18.5, 5.2) {\large -105};180\node[draw=none] at (19.5, 5.5) {\large 185};181\node[draw=none] at (20.5, 5.8) {\large -138};182\node[draw=none] at (21.5, 6.1) {\large -180};183\node[draw=none] at (22.5, 6.4) {\large 503};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%184% [-718 429 350 173 251 268 -655]185\node[draw=none] at (16.5, 3.6) {\large -718};186\node[draw=none] at (17.5, 3.9) {\large 429};187\node[draw=none] at (18.5, 4.2) {\large 350};188\node[draw=none] at (19.5, 4.5) {\large 173};189\node[draw=none] at (20.5, 4.8) {\large 251};190\node[draw=none] at (21.5, 5.1) {\large 268};191\node[draw=none] at (22.5, 5.4) {\large -655};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%192% [-567 -53 -75 80 571 -128 24]193\node[draw=none] at (16.5, 2.6) {\large -567};194\node[draw=none] at (17.5, 2.9) {\large -53};195\node[draw=none] at (18.5, 3.2) {\large -75};196\node[draw=none] at (19.5, 3.5) {\large 80};197\node[draw=none] at (20.5, 3.8) {\large 571};198\node[draw=none] at (21.5, 4.1) {\large -128};199\node[draw=none] at (22.5, 4.4) {\large 24};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%200% [-408 596 -550 368 26 976 156]201\node[draw=none] at (16.5, 1.6) {\large -408};202\node[draw=none] at (17.5, 1.9) {\large 596};203\node[draw=none] at (18.5, 2.2) {\large -550};204\node[draw=none] at (19.5, 2.5) {\large 368};205\node[draw=none] at (20.5, 2.8) {\large 26};206\node[draw=none] at (21.5, 3.1) {\large 976};207\node[draw=none] at (22.5, 3.4) {\large 156};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%208% [ 302 647 879 223 811 54 660]]209\node[draw=none] at (16.5, 0.6) {\large 302};210\node[draw=none] at (17.5, 0.9) {\large 647};211\node[draw=none] at (18.5, 1.2) {\large 879};212\node[draw=none] at (19.5, 1.5) {\large 223};213\node[draw=none] at (20.5, 1.8) {\large 811};214\node[draw=none] at (21.5, 2.1) {\large 54};215\node[draw=none] at (22.5, 2.4) {\large 660};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%216\end{tikzpicture}217218219