diff --git a/examples/DeconvolutionNet/deconvnet.pdf b/examples/DeconvolutionNet/deconvnet.pdf deleted file mode 100644 index 11589f6..0000000 Binary files a/examples/DeconvolutionNet/deconvnet.pdf and /dev/null differ diff --git a/examples/DeconvolutionNet/deconvnet.tex b/examples/DeconvolutionNet/deconvnet.tex deleted file mode 100644 index e78e8a6..0000000 --- a/examples/DeconvolutionNet/deconvnet.tex +++ /dev/null @@ -1,127 +0,0 @@ -\documentclass[border=15pt, multi, tikz]{standalone} -%\usepackage{blocks} -\usepackage{import} -\subimport{../../layers/}{init} -\usetikzlibrary{positioning} - -\newcommand{\copymidarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw={rgb:blue,4;red,1;green,1;black,3}] (-0.3,0) -- ++(0.3,0);} -\begin{document} -\begin{tikzpicture} -\tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7] -\tikzstyle{copyconnection}=[ultra thick,every node/.style={sloped,allow upside down},draw={rgb:blue,4;red,1;green,1;black,3},opacity=0.7] -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Encoder -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conv1_1,conv1_2,pool1 -\pic[shift={(0,0,0)}] at (0,0,0) {ConvReluPool={blockname=crp1,% - numFilters={{"64","64","32"}},height=40,width={2,2},depth=40,zlabel=I}}; -% conv2_1,conv2_2,pool2 -\pic[shift={(1.6,0,0)}] at (crp1-east) {ConvReluPool={blockname=crp2,% - numFilters={{"128","128"}},height=35,width={2.5,2.5},depth=35,zlabel=I/2}}; -%% conv3_1,conv3_2,conv3_3,pool3 -\pic[shift={(1.2,0,0)}] at (crp2-east) {ConvReluPool={blockname=crp3,% - numFilters={{"256","256","256"}},height=30,width={3.3,3.3,3.3},depth=30,zlabel=I/4}}; -%% conv4_1,conv4_2,conv4_3,pool4 -\pic[shift={(1,0,0)}] at (crp3-east) {ConvReluPool={blockname=crp4,% - numFilters={{"512","512","512"}},height=23,width={4.5,4.5,4.5},depth=23,zlabel=I/8}}; -%% conv5_1,conv5_2,conv5_3 -\pic[shift={(1,0,0)}] at (crp4-east) {ConvReluPool={blockname=crp5,% - numFilters={{"512","512","512"}},height=12,width={4.5,4.5,4.5},depth=12,zlabel=I/16}}; - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Bottleneck -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% conv5_1,conv5_2,conv5_3 -\pic[shift={(1,0,0)}] at (crp5-east) {ConvRelu={blockname=cp,% - numFilters={{"4096","4096"}},height=5,width={7,7},depth=5,zlabel=I/8}}; - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Dencoder -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% conv5_1r,conv5_2r,conv5_3r -\pic[shift={(2,0,0)}] at (cp-east) {UpConvRelu={blockname=ucp5r,% - numFilters={{"512","512","512"}},height=12,width={4.5,4.5,4.5},depth=12,zlabel=I/16,% - fillcolor = {rgb:blue,5;green,2.5;white,5},upcolor={rgb:blue,15}}}; -%% up32 -\pic[shift={(1.5,0,0)}] at (ucp5r-east) {UpConvRelu={blockname=ucp4r,% - numFilters={{"512","512","512"}},height=23,width={4.5,4.5,4.5},depth=23,zlabel=,% - fillcolor = {rgb:blue,5;green,2.5;white,5},upcolor={rgb:blue,15}}}; - -%% up16 -\pic[shift={(2,0,0)}] at (ucp4r-east) {UpConvRelu={blockname=ucp3r,% - numFilters={{"256","256","256"}},height=30,width={3.3,3.3,3.3},depth=30,zlabel=,% - fillcolor = {rgb:blue,5;green,2.5;white,5},upcolor={rgb:blue,15}}}; - -%% up8 -\pic[shift={(2,0,0)}] at (ucp3r-east) {UpConvRelu={blockname=ucp2r,% - numFilters={{"128","128"}},height=35,width={2.5,2.5},depth=35,zlabel=,% - fillcolor = {rgb:blue,5;green,2.5;white,5},upcolor={rgb:blue,15}}}; - - -%% up4 -\pic[shift={(2,0,0)}] at (ucp2r-east) {UpConvRelu={blockname=ucp1r,% - numFilters={{"64","64"}},height=40,width={2,2},depth=40,zlabel=,% - fillcolor = {rgb:blue,5;green,2.5;white,5},upcolor={rgb:blue,15}}}; - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Draw score producer -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% score -%\pic[shift={(2,0,0)}] at (ucp1r-east) {Conv={blockname=score,% -% numFilters={{"21",""}},height=40,width={2},depth=40,zlabel=I}}; - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Draw connections -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\draw [connection] (crp1-east) -- node {\midarrow} (crp2-west); -\draw [connection] (crp2-east) -- node {\midarrow} (crp3-west); -\draw [connection] (crp3-east) -- node {\midarrow} (crp4-west); -\draw [connection] (crp4-east) -- node {\midarrow} (cp-west); -\draw [connection] (cp-east) -- node {\midarrow} (ucp5r-west); -\draw [connection] (ucp5r-east) -- node {\midarrow} (ucp4r-west); -\draw [connection] (ucp4r-east) -- node {\midarrow} (ucp3r-west); -\draw [connection] (ucp3r-east) -- node {\midarrow} (ucp2r-west); -\draw [connection] (ucp2r-east) -- node {\midarrow} (ucp1r-west); -%\draw [connection] (ucp1r-east) -- node {\midarrow} (score-west); - -\path (crp5-south-|crp5-east) -- (crp5-north-|crp5-east) coordinate[pos=1.25] (crp5-top) ; -\path (crp4-south-|crp4-east) -- (crp4-north-|crp4-east) coordinate[pos=1.15] (crp4-top) ; -\path (crp3-south-|crp3-east) -- (crp3-north-|crp3-east) coordinate[pos=1.15] (crp3-top) ; -\path (crp2-south-|crp2-east) -- (crp2-north-|crp2-east) coordinate[pos=1.15] (crp2-top) ; -\path (crp1-south-|crp1-east) -- (crp1-north-|crp1-east) coordinate[pos=1.15] (crp1-top) ; - -\path (ucp5r-upsouth) -- (ucp5r-upnorth) coordinate[pos=1.25] (ucp5r-top) ; -\path (ucp4r-upsouth) -- (ucp4r-upnorth) coordinate[pos=1.15] (ucp4r-top) ; -\path (ucp3r-upsouth) -- (ucp3r-upnorth) coordinate[pos=1.15] (ucp3r-top) ; -\path (ucp2r-upsouth) -- (ucp2r-upnorth) coordinate[pos=1.15] (ucp2r-top) ; -\path (ucp1r-upsouth) -- (ucp1r-upnorth) coordinate[pos=1.15] (ucp1r-top) ; - -\draw [copyconnection] (crp5-lastnorth-|crp5-east) - -- node {\copymidarrow}(crp5-top) - -- node {\copymidarrow}(ucp5r-top) - -- node {\copymidarrow} (ucp5r-upnorth); -\draw [copyconnection] (crp4-lastnorth-|crp4-east) - -- node {\copymidarrow}(crp4-top) - -- node {\copymidarrow}(ucp4r-top) - -- node {\copymidarrow} (ucp4r-upnorth); -\draw [copyconnection] (crp3-lastnorth-|crp3-east) - -- node {\copymidarrow}(crp3-top) - -- node {\copymidarrow}(ucp3r-top) - -- node {\copymidarrow} (ucp3r-upnorth); -\draw [copyconnection] (crp2-lastnorth-|crp2-east) - -- node {\copymidarrow}(crp2-top) - -- node {\copymidarrow}(ucp2r-top) - -- node {\copymidarrow} (ucp2r-upnorth); -\draw [copyconnection] (crp1-lastnorth-|crp1-east) - -- node {\copymidarrow}(crp1-top) - -- node {\copymidarrow}(ucp1r-top) - -- node {\copymidarrow} (ucp1r-upnorth); - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\end{tikzpicture} -\end{document}\grid diff --git a/examples/FCNConvBlock+ConvertedConvBlock (copy)/fcnconvandconvertedconvblock.pdf b/examples/FCNConvBlock+ConvertedConvBlock (copy)/fcnconvandconvertedconvblock.pdf deleted file mode 100644 index c955de1..0000000 Binary files a/examples/FCNConvBlock+ConvertedConvBlock (copy)/fcnconvandconvertedconvblock.pdf and /dev/null differ diff --git a/examples/FCNConvBlock+ConvertedConvBlock (copy)/fcnconvandconvertedconvblock.tex b/examples/FCNConvBlock+ConvertedConvBlock (copy)/fcnconvandconvertedconvblock.tex deleted file mode 100644 index b05b578..0000000 --- a/examples/FCNConvBlock+ConvertedConvBlock (copy)/fcnconvandconvertedconvblock.tex +++ /dev/null @@ -1,47 +0,0 @@ -\documentclass[border=15pt, multi, tikz]{standalone} -%\usepackage{blocks} -\usepackage{import} -\subimport{../../layers/}{init} -\usetikzlibrary{positioning} - -%\newcommand{\midarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw=\edgecolor] (-0.3,0) -- ++(0.3,0);} -\begin{document} -\begin{tikzpicture} -\tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7] -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Layer Blocks -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conv1_1,conv1_2,pool1 -\pic[shift={(0,0,0)}] at (0,0,0) {ConvReluPool={blockname=crp1,% - numFilters={{"64","64","32"}},height=40,width={2,2},depth=40,zlabel=I}}; -% conv2_1,conv2_2,pool2 -\pic[shift={(2.1,0,0)}] at (crp1-east) {ConvReluPool={blockname=crp2,% - numFilters={{"128","128"}},height=35,width={3,3},depth=35,zlabel=I/2}}; -%% conv3_1,conv3_2,conv3_3,pool3 -\pic[shift={(2,0,0)}] at (crp2-east) {ConvReluPool={blockname=crp3,% - numFilters={{"256","256","256"}},height=30,width={4,4,4},depth=30,zlabel=I/4}}; -%% conv4_1,conv4_2,conv4_3,pool4 -\pic[shift={(1.8,0,0)}] at (crp3-east) {ConvReluPool={blockname=crp4,% - numFilters={{"512","512","512"}},height=23,width={7,7,7},depth=23,zlabel=I/8}}; -%% conv5_1,conv5_2,conv5_3,pool5 -\pic[shift={(1.5,0,0)}] at (crp4-east) {ConvReluPool={blockname=crp5,% - numFilters={{"512","512","512"}},height=15,width={7,7,7},depth=15,zlabel=I/16}}; -%% fc6, fc7 -\pic[shift={(1.2,0,0)}] at (crp5-east) {ConvRelu={blockname=cp6_7,% - numFilters={{"4096","4096"}},height=10,width={10,10},depth=10,zlabel=I/32}}; - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw connections -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\draw [connection] (crp1-east) -- node {\midarrow} (crp2-west); -\draw [connection] (crp2-east) -- node {\midarrow} (crp3-west); -\draw [connection] (crp3-east) -- node {\midarrow} (crp4-west); -\draw [connection] (crp4-east) -- node {\midarrow} (crp5-west); -\draw [connection] (crp5-east) -- node {\midarrow} (cp6_7-west); -\draw [connection] (cp6_7-east) -- node {\midarrow} ++(1.5,0,0); - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\end{tikzpicture} -\end{document}\grid diff --git a/examples/HED/HED.pdf b/examples/HED/HED.pdf index c72a146..1dee610 100644 Binary files a/examples/HED/HED.pdf and b/examples/HED/HED.pdf differ diff --git a/examples/HED/HED.tex b/examples/HED/HED.tex index dace597..dd45475 100644 --- a/examples/HED/HED.tex +++ b/examples/HED/HED.tex @@ -1,106 +1,133 @@ \documentclass[border=15pt, multi, tikz]{standalone} -%\usepackage{blocks} \usepackage{import} \subimport{../../layers/}{init} \usetikzlibrary{positioning} -\newcommand{\midarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw=\edgecolor] (-0.3,0) -- ++(0.3,0);} +\def\ConvColor{rgb:yellow,5;red,2.5;white,5} +\def\ConvReluColor{rgb:yellow,5;red,5;white,5} +\def\PoolColor{rgb:red,1;black,0.3} +\def\DcnvColor{rgb:blue,5;green,2.5;white,5} +\def\SoftmaxColor{rgb:magenta,5;black,7} +\def\SumColor{rgb:blue,5;green,15} +\def\poolsep{1} + \begin{document} \begin{tikzpicture} -\tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7] +\tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.6] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Draw Layer Blocks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conv1_1,conv1_2,pool1 -\pic[shift={(0,0,0)}] at (0,0,0) {ConvReluPool={blockname=crp1,% - numFilters={{"64","64","32"}},height=40,width={2,2},depth=40,zlabel=I}}; +% conv1_1,conv1_2,%pool1 +\pic[shift={(0,0,0)}] at (0,0,0) {RightBandedBox={name=cr1,% + xlabel={{"64","64"}},zlabel=I,fill=\ConvColor,bandfill=\ConvReluColor,% + height=40,width={2,2},depth=40}}; +\pic[shift={(\poolsep,0,0)}] at (cr1-east) {Box={name=p1,% + fill=\PoolColor,opacity=0.5,height=30,width=1,depth=30}}; % conv2_1,conv2_2,pool2 -\pic[shift={(2.1,0,0)}] at (crp1-east) {ConvReluPool={blockname=crp2,% - numFilters={{"128","128"}},height=35,width={3,3},depth=35,zlabel=I/2}}; -%% conv3_1,conv3_2,conv3_3,pool3 -\pic[shift={(2,0,0)}] at (crp2-east) {ConvReluPool={blockname=crp3,% - numFilters={{"256","256","256"}},height=30,width={4,4,4},depth=30,zlabel=I/4}}; -%% conv4_1,conv4_2,conv4_3,pool4 -\pic[shift={(1.8,0,0)}] at (crp3-east) {ConvReluPool={blockname=crp4,% - numFilters={{"512","512","512"}},height=23,width={7,7,7},depth=23,zlabel=I/8}}; -%% conv5_1,conv5_2,conv5_3,pool5 -\pic[shift={(1.5,0,0)}] at (crp4-east) {ConvRelu={blockname=crp5,% - numFilters={{"512","512","512"}},height=15,width={7,7,7},depth=15,zlabel=I/16}}; -%% score32 -\pic[shift={(1,0,0)}] at (crp5-east) {Conv={blockname=score32,% - numFilters={{"21","4096"}},height=15,width=1,depth=15,zlabel=I/16}}; +\pic[shift={(1,0,0)}] at (p1-east) {RightBandedBox={name=cr2,% + xlabel={{"64","64"}},zlabel=I/2,fill=\ConvColor,bandfill=\ConvReluColor,% + height=30,width={3,3},depth=30}}; +\pic[shift={(\poolsep,0,0)}] at (cr2-east) {Box={name=p2,% + fill=\PoolColor,opacity=0.5,height=23,width=1,depth=23}}; +% conv3_1,conv3_2,pool3 +\pic[shift={(1,0,0)}] at (p2-east) {RightBandedBox={name=cr3,% + xlabel={{"256","256","256"}},zlabel=I/4,fill=\ConvColor,bandfill=\ConvReluColor,% + height=23,width={4,4,4},depth=23}}; +\pic[shift={(\poolsep,0,0)}] at (cr3-east) {Box={name=p3,% + fill=\PoolColor,opacity=0.5,height=14,width=1,depth=14}}; +% conv4_1,conv4_2,conv4_3,pool4 +\pic[shift={(1,0,0)}] at (p3-east) {RightBandedBox={name=cr4,% + xlabel={{"512","512","512"}},zlabel=I/8,fill=\ConvColor,bandfill=\ConvReluColor,% + height=14,width={7,7,7},depth=14}}; +\pic[shift={(\poolsep,0,0)}] at (cr4-east) {Box={name=p4,% + fill=\PoolColor,opacity=0.5,height=8,width=1,depth=8}}; +% conv5_1,conv5_2,conv5_3,pool5 +\pic[shift={(1,0,0)}] at (p4-east) {RightBandedBox={name=cr5,% + xlabel={{"512","512","512"}},fill=\ConvColor,bandfill=\ConvReluColor,% + height=8,width={7,7,7},depth=8}}; +%% fc8 -> cr8 (score32) +\pic[shift={(0,0,0)}] at (cr5-east) {Box={name=score16,% + xlabel={{"K","dummy"}},fill=\ConvColor,% + height=8,width=2,depth=8,zlabel=I/16}}; %% Upsampling Deconv Layer -\pic[shift={(2,0,0)}] at (score32-east) {Deconv={blockname=up32,% - numFilters={{"1","4096"}},height=33,width=1,depth=33,zlabel=}}; +%% Dcnv16 +\pic[shift={(2.5,0,0)}] at (score16-east) {Box={name=d16,% + xlabel={{"","dummy"}},fill=\DcnvColor,opacity=0.7,height=40,width=0.5,depth=40}}; +%% Dcnv8 +\pic[shift={(.25,0,0)}] at (d16-east) {Box={name=d8,% + xlabel={{"","dummy"}},fill=\DcnvColor,opacity=0.7,height=40,width=0.5,depth=40}}; +%% Dcnv4 +\pic[shift={(.25,0,0)}] at (d8-east) {Box={name=d4,% + xlabel={{"","dummy"}},fill=\DcnvColor,opacity=0.7,height=40,width=0.5,depth=40}}; +%% Dcnv2 +\pic[shift={(.25,0,0)}] at (d4-east) {Box={name=d2,% + xlabel={{"","dummy"}},fill=,opacity=0.01,height=40,width=0.5,depth=40}}; + +%% Dcnv envelope +\pic[shift={(-0.2,0,0)}] at (d16-west) {Box={name=env,caption=concatenation of deconvolved feature maps,% + xlabel={{"","dummy"}},fill=,opacity=0.2,height=42,width={8},depth=42}}; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\skipshift{6.5} %%Joining with previous streams (fcn-16) %% score16 -\pic[shift={(0,0,10)}] at (crp5-anchor) {Conv={blockname=score16,% - numFilters={{"1","4096"}},height=20,width=1,depth=20,zlabel=I/8}}; -%% Upsampling Deconv Layer -\pic[shift={(0.5,0,0)}] at (up32-west) {Deconv={blockname=up16,% - numFilters={{"1","4096"}},height=33,width=1,depth=33,zlabel=}}; +\pic[shift={(0,0,3+\skipshift)}] at (cr5-anchor) {Box={name=score8,% + xlabel={{"K","dummy"}},fill=\ConvColor,height=14,width=2,depth=14,zlabel=I/8}}; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%Joining with previous streams (fcn-8) %% score8 -\pic[shift={(1,0,14)}] at (crp4-anchor) {Conv={blockname=score8,% - numFilters={{"1","4096"}},height=25,width=1,depth=25,zlabel=I/4}}; - -%% Upsampling Deconv Layer -\pic[shift={(0.5,0,0)}] at (up16-west) {Deconv={blockname=up8,% - numFilters={{"1","4096"}},height=33,width=1,depth=33,zlabel=}}; +\pic[shift={(0,0,8+\skipshift)}] at (cr4-east) {Box={name=score4,% + xlabel={{"K","dummy"}},fill=\ConvColor,height=23,width=2,depth=23,zlabel=I/4}}; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%Joining with previous streams (fcn-4) -%% score8 -\pic[shift={(0,0,18)}] at (crp3-east) {Conv={blockname=score4,% - numFilters={{"1","4096"}},height=30,width=1,depth=30,zlabel=I/2}}; -%% Upsampling Deconv Layer -\pic[shift={(0.5,0,0)}] at (up8-west) {Deconv={blockname=up4,% - numFilters={{"1","4096"}},height=33,width=1,depth=33,zlabel=}}; +%% score4 +\pic[shift={(1,0,13+\skipshift)}] at (cr3-east) {Box={name=score2,% + xlabel={{"K","dummy"}},fill=\ConvColor,height=30,width=2,depth=30,zlabel=I/2}}; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%Joining with previous streams (fcn-2) -%% score8 -\pic[shift={(0,0,22)}] at (crp2-east) {Conv={blockname=score2,% - numFilters={{"1","4096"}},height=33,width=1,depth=33,zlabel=I}}; -%% Upsampling Deconv Layer -\pic[shift={(0.5,0,0)}] at (up4-west) {Deconv={blockname=up2,% - numFilters={{"1","4096"}},height=33,width=1,depth=33,zlabel=I}}; +%% score2 +\pic[shift={(0.3,0,22+\skipshift)}] at (p2-east) {Box={name=score,% + xlabel={{"K","dummy"}},fill=\ConvColor,height=40,width=2,depth=40,zlabel=I}}; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Final convolution -\pic[shift={(3,0,0)}] at (up2-east) {Conv={blockname=output,% - numFilters={{"1","4096"}},height=33,width=1,depth=33,zlabel=I}}; -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw connections -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\draw [connection] (crp1-east) -- node {\midarrow} (crp2-west); -\draw [connection] (crp2-east) -- node {\midarrow} (crp3-west); -\draw [connection] (crp3-east) -- node {\midarrow} (crp4-west); -\draw [connection] (crp4-east) -- node {\midarrow} (crp5-west); -\draw [connection] (crp5-east) -- node {\midarrow} (score32-west); -\draw [connection] (score32-east) -- node {\midarrow} (up32-west); -\path (crp4-east) -- (crp5-west) coordinate[pos=0.4] (between4_5) ; -\draw [connection] (between4_5) -- node {\midarrow} ++(0,0,10) -- node {\midarrow} (score16-west); -\draw [connection] (score16-east) -- node{\midarrow}++(6,0,0)-- node{\midarrow}(up16-out); - -\path (crp3-east) -- (crp4-west) coordinate[pos=0.4] (between3_4) ; -\draw [connection] (between3_4) -- node {\midarrow} ++(0,0,14) -- node {\midarrow} (score8-west); -\draw [connection] (score8-east) -- node{\midarrow}++(11.55,0,0)-- node{\midarrow}(up8-out); - -\path (crp2-east) -- (crp3-west) coordinate[pos=0.4] (between2_3) ; -\draw [connection] (between2_3) -- node {\midarrow} ++(0,0,18) -- node {\midarrow} (score4-west); -\draw [connection] (score4-east) -- node{\midarrow}++(17.3,0,0)-- node{\midarrow}(up4-out); - -\path (crp1-east) -- (crp2-west) coordinate[pos=0.4] (between1_2) ; -\draw [connection] (between1_2) -- node {\midarrow} ++(0,0,22) -- node {\midarrow} (score2-west); -\draw [connection] (score2-east) -- node{\midarrow}++(22.7,0,0)-- node{\midarrow}(up2-out); - -\draw [connection] (up2-east) -- node {\midarrow} (output-west); - -\draw [connection] (output-east) -- node {\midarrow} ++(,0,0); +\pic[shift={(3,0,0)}] at (d2-east) {Box={name=output,% + xlabel={{"K","dummy"}},fill=\ConvColor,height=40,width=2,depth=40,zlabel=I}}; +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Draw connections +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\draw [connection] (cr1-east) -- node {\midarrow} (p1-west); +\draw [connection] (p1-east) -- node {\midarrow} (cr2-west); +\draw [connection] (cr2-east) -- node {\midarrow} (p2-west); +\draw [connection] (p2-east) -- node {\midarrow} (cr3-west); +\draw [connection] (cr3-east) -- node {\midarrow} (p3-west); +\draw [connection] (p3-east) -- node {\midarrow} (cr4-west); +\draw [connection] (cr4-east) -- node {\midarrow} (p4-west); +\draw [connection] (p4-east) -- node {\midarrow} (cr5-west); +\draw [connection] (score16-east) -- node {\midarrow} (d16-west); +% +\path (cr4-east) -- (p4-west) coordinate[pos=0.4] (after4) ; +\draw (d16-near)++(0,0,-1+\skipshift) coordinate (d16h); +\draw [connection] (after4) -- node {\midarrow} ++(0,0,3+\skipshift) -- node {\midarrow} (score8-west); +\draw [connection] (score8-east) -- node{\midarrow} (d16h) -- node{\midarrow}(d16-near); +% +\path (cr3-east) -- (p3-west) coordinate[pos=0.4] (after3) ; +\draw (d8-near)++(0,0,4+\skipshift) coordinate (d8h); +\draw [connection] (after3) -- node {\midarrow} ++(0,0,8+\skipshift) -- node {\midarrow} (score4-west); +\draw [connection] (score4-east) -- node{\midarrow} (d8h) -- node{\midarrow}(d8-near); +% +\path (cr2-east) -- (p2-west) coordinate[pos=0.4] (after2) ; +\draw (d4-near)++(0,0,9+\skipshift) coordinate (d4h); +\draw [connection] (after2) -- node {\midarrow} ++(0,0,13+\skipshift) -- node {\midarrow} (score2-west); +\draw [connection] (score2-east) -- node{\midarrow} (d4h) -- node{\midarrow}(d4-near); +% +\path (cr1-east) -- (p1-west) coordinate[pos=0.4] (after1) ; +\draw (d2-near)++(0,0,18+\skipshift) coordinate (d2h); +\draw [connection] (after1) -- node {\midarrow} ++(0,0,22+\skipshift) -- node {\midarrow} (score-west); +\draw [connection] (score-east) -- node{\midarrow} (d2h) -- node{\midarrow}(d2-near); +\draw [connection] (d2-east) -- node {\midarrow} (output-west); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{tikzpicture} diff --git a/examples/SegNet/segnet.pdf b/examples/SegNet/segnet.pdf deleted file mode 100644 index 59d45c1..0000000 Binary files a/examples/SegNet/segnet.pdf and /dev/null differ diff --git a/examples/SegNet/segnet.tex b/examples/SegNet/segnet.tex deleted file mode 100644 index 62b7e35..0000000 --- a/examples/SegNet/segnet.tex +++ /dev/null @@ -1,116 +0,0 @@ -\documentclass[border=15pt, multi, tikz]{standalone} -%\usepackage{blocks} -\usepackage{import} -\subimport{../../layers/}{init} -\usetikzlibrary{positioning} - -\newcommand{\copymidarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw={rgb:blue,4;red,1;green,1;black,3}] (-0.3,0) -- ++(0.3,0);} -\begin{document} -\begin{tikzpicture} -\tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7] -\tikzstyle{copyconnection}=[ultra thick,every node/.style={sloped,allow upside down},draw={rgb:blue,4;red,1;green,1;black,3},opacity=0.7] -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Encoder -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conv1_1,conv1_2,pool1 -\pic[shift={(0,0,0)}] at (0,0,0) {ConvReluPool={blockname=crp1,% - numFilters={{"64","64","32"}},height=40,width={2,2},depth=40,zlabel=I}}; -% conv2_1,conv2_2,pool2 -\pic[shift={(1.6,0,0)}] at (crp1-east) {ConvReluPool={blockname=crp2,% - numFilters={{"128","128"}},height=35,width={2.5,2.5},depth=35,zlabel=I/2}}; -%% conv3_1,conv3_2,conv3_3,pool3 -\pic[shift={(1.2,0,0)}] at (crp2-east) {ConvReluPool={blockname=crp3,% - numFilters={{"256","256","256"}},height=30,width={3.3,3.3,3.3},depth=30,zlabel=I/4}}; -%% conv4_1,conv4_2,conv4_3,pool4 -\pic[shift={(1,0,0)}] at (crp3-east) {ConvReluPool={blockname=crp4,% - numFilters={{"512","512","512"}},height=23,width={4.5,4.5,4.5},depth=23,zlabel=I/8}}; - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Bottleneck -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% conv5_1,conv5_2,conv5_3 -\pic[shift={(1,0,0)}] at (crp4-east) {ConvRelu={blockname=cp5,% - numFilters={{"512","512","512"}},height=12,width={4.5,4.5,4.5},depth=12,zlabel=I/16}}; - -%% conv5_1r,conv5_2r,conv5_3r -\pic[shift={(2,0,0)}] at (cp5-east) {ConvRelu={blockname=cp5r,% - numFilters={{"512","512","512"}},height=12,width={4.5,4.5,4.5},depth=12,zlabel=I/16}}; - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Dencoder -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% up32 -\pic[shift={(1.5,0,0)}] at (cp5r-east) {UpConvRelu={blockname=ucp4r,% - numFilters={{"512","512","512"}},height=23,width={4.5,4.5,4.5},depth=23,zlabel=}}; - -%% up16 -\pic[shift={(2,0,0)}] at (ucp4r-east) {UpConvRelu={blockname=ucp3r,% - numFilters={{"256","256","256"}},height=30,width={3.3,3.3,3.3},depth=30,zlabel=}}; - -%% up8 -\pic[shift={(2,0,0)}] at (ucp3r-east) {UpConvRelu={blockname=ucp2r,% - numFilters={{"128","128"}},height=35,width={2.5,2.5},depth=35,zlabel=}}; - - -%% up4 -\pic[shift={(2,0,0)}] at (ucp2r-east) {UpConvRelu={blockname=ucp1r,% - numFilters={{"64","64"}},height=40,width={2,2},depth=40,zlabel=}}; - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Draw score producer -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% score -%\pic[shift={(2,0,0)}] at (ucp1r-east) {Conv={blockname=score,% -% numFilters={{"21",""}},height=40,width={2},depth=40,zlabel=I}}; - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Draw connections -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\draw [connection] (crp1-east) -- node {\midarrow} (crp2-west); -\draw [connection] (crp2-east) -- node {\midarrow} (crp3-west); -\draw [connection] (crp3-east) -- node {\midarrow} (crp4-west); -\draw [connection] (crp4-east) -- node {\midarrow} (cp5-west); -\draw [connection] (cp5-east) -- node {\midarrow} (cp5r-west); -\draw [connection] (cp5r-east) -- node {\midarrow} (ucp4r-west); -\draw [connection] (ucp4r-east) -- node {\midarrow} (ucp3r-west); -\draw [connection] (ucp3r-east) -- node {\midarrow} (ucp2r-west); -\draw [connection] (ucp2r-east) -- node {\midarrow} (ucp1r-west); -%\draw [connection] (ucp1r-east) -- node {\midarrow} (score-west); - - - - -\path (crp4-south-|crp4-east) -- (crp4-north-|crp4-east) coordinate[pos=1.15] (crp4-top) ; -\path (crp3-south-|crp3-east) -- (crp3-north-|crp3-east) coordinate[pos=1.15] (crp3-top) ; -\path (crp2-south-|crp2-east) -- (crp2-north-|crp2-east) coordinate[pos=1.15] (crp2-top) ; -\path (crp1-south-|crp1-east) -- (crp1-north-|crp1-east) coordinate[pos=1.15] (crp1-top) ; - -\path (ucp4r-upsouth) -- (ucp4r-upnorth) coordinate[pos=1.15] (ucp4r-top) ; -\path (ucp3r-upsouth) -- (ucp3r-upnorth) coordinate[pos=1.15] (ucp3r-top) ; -\path (ucp2r-upsouth) -- (ucp2r-upnorth) coordinate[pos=1.15] (ucp2r-top) ; -\path (ucp1r-upsouth) -- (ucp1r-upnorth) coordinate[pos=1.15] (ucp1r-top) ; - -\draw [copyconnection] (crp4-lastnorth-|crp4-east) - -- node {\copymidarrow}(crp4-top) - -- node {\copymidarrow}(ucp4r-top) - -- node {\copymidarrow} (ucp4r-upnorth); -\draw [copyconnection] (crp3-lastnorth-|crp3-east) - -- node {\copymidarrow}(crp3-top) - -- node {\copymidarrow}(ucp3r-top) - -- node {\copymidarrow} (ucp3r-upnorth); -\draw [copyconnection] (crp2-lastnorth-|crp2-east) - -- node {\copymidarrow}(crp2-top) - -- node {\copymidarrow}(ucp2r-top) - -- node {\copymidarrow} (ucp2r-upnorth); -\draw [copyconnection] (crp1-lastnorth-|crp1-east) - -- node {\copymidarrow}(crp1-top) - -- node {\copymidarrow}(ucp1r-top) - -- node {\copymidarrow} (ucp1r-upnorth); - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\end{tikzpicture} -\end{document}\grid diff --git a/examples/SoftmaxLoss/SoftmaxLoss.pdf b/examples/SoftmaxLoss/SoftmaxLoss.pdf index bd24036..034492f 100644 Binary files a/examples/SoftmaxLoss/SoftmaxLoss.pdf and b/examples/SoftmaxLoss/SoftmaxLoss.pdf differ diff --git a/examples/SoftmaxLoss/SoftmaxLoss.tex b/examples/SoftmaxLoss/SoftmaxLoss.tex index c9f9ff9..c74ca20 100644 --- a/examples/SoftmaxLoss/SoftmaxLoss.tex +++ b/examples/SoftmaxLoss/SoftmaxLoss.tex @@ -1,10 +1,8 @@ \documentclass[border=15pt, multi, tikz]{standalone} -%\usepackage{blocks} \usepackage{import} \subimport{../../layers/}{init} \usetikzlibrary{positioning} -\newcommand{\midarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw=\edgecolor] (-0.3,0) -- ++(0.3,0);} \newcommand{\up}{0.25} \newcommand{\down}{0.25} \newcommand{\arrowlength}{4} @@ -12,35 +10,35 @@ \begin{document} \begin{tikzpicture} \tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7] -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Layer Blocks -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conv1_1,conv1_2,pool1 -\pic[shift={(0,0,0)},fill={rgb:blue,1.5;red,3.5;green,3.5;white,5}] at (0,0,0) {GenericSequentialLayer={blockname=crp1,% - numFilters={{" ",""}},height=20,width={7},depth=20, blocklabel=SoftmaxLoss: $E_\mathcal{S}$ ,ylabel= ,zlabel= }}; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw connections +%% Draw previous connections %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\draw [connection] (crp1-east)++(0,\up,0) -- node {\midarrow} ++(\arrowlength.0,0) -node [anchor=south east,scale=2.1]{$E_\mathcal{S} [p;\theta]$}; -\draw (crp1-west)++(0,\up,0) coordinate (crp1-west-up); -\draw [connection] (crp1-west-up)++(-\arrowlength,0,0) +\draw [connection] (-\arrowlength,\up,0) node[anchor=south west,scale=2.1]{$p(x^{(t)})$} --- node {\midarrow} (crp1-west-up); - -\draw [connection] (crp1-west)++(0,-\down,0) -- node {\midarrow} ++(-\arrowlength.0,0) +-- node {\midarrow} (0,\up,0); +\draw [connection] (0,-\down,0) -- node {\midarrow} ++(-\arrowlength.0,0) node[anchor=north west,inner sep = 10, xshift=-25,scale=2.3] { $\frac{\partial L}{\partial E_\mathcal{S}}\frac{\partial E_\mathcal{S}}{\partial p}$ }; -\draw (crp1-east)++(0,-\down,0) coordinate (crp1-east-down); -\draw [connection] (crp1-east-down)++(\arrowlength,0,0) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Draw Layer Blocks +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pic[shift={(0,0,0)}] at (0,0,0) {Box={name=crp1,caption=SoftmaxLoss: $E_\mathcal{S}$ ,% + fill={rgb:blue,1.5;red,3.5;green,3.5;white,5},opacity=0.5,height=20,width=7,depth=20}}; +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Draw next connections +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\draw [connection] (crp1-east)++(0,\up,0) -- node {\midarrow} ++(\arrowlength.0,0) +node [anchor=south east,scale=2.1]{$E_\mathcal{S} [p;\theta]$}; + +\draw [connection] (crp1-east)++(\arrowlength,-\down,0) node[anchor=north east,inner sep = 10, xshift=25,scale=2.3] { $\frac{\partial L}{\partial E_\mathcal{S}} = \lambda_\mathcal{S}$ } --- node {\midarrow} (crp1-east-down); +-- node {\midarrow} ++(-\arrowlength,0,0); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/examples/Unet/unet.pdf b/examples/Unet/unet.pdf deleted file mode 100644 index 0735655..0000000 Binary files a/examples/Unet/unet.pdf and /dev/null differ diff --git a/examples/Unet/unet.tex b/examples/Unet/unet.tex deleted file mode 100644 index 2c65314..0000000 --- a/examples/Unet/unet.tex +++ /dev/null @@ -1,138 +0,0 @@ -\documentclass[border=15pt, multi, tikz]{standalone} -%\usepackage{blocks} -\usepackage{import} -\subimport{../../layers/}{init} -\usetikzlibrary{positioning} - -\newcommand{\copymidarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw={rgb:blue,4;red,1;green,1;black,3}] (-0.3,0) -- ++(0.3,0);} -\begin{document} -\begin{tikzpicture} -\tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7] -\tikzstyle{copyconnection}=[ultra thick,every node/.style={sloped,allow upside down},draw={rgb:blue,4;red,1;green,1;black,3},opacity=0.7] -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Encoder -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conv1_1,conv1_2,pool1 -\pic[shift={(0,0,0)}] at (0,0,0) {ConvReluPool={blockname=crp1,% - numFilters={{"64","64","32"}},height=40,width={2,2},depth=40,zlabel=I}}; -% conv2_1,conv2_2,pool2 -\pic[shift={(1.6,0,0)}] at (crp1-east) {ConvReluPool={blockname=crp2,% - numFilters={{"128","128"}},height=35,width={2.5,2.5},depth=35,zlabel=I/2}}; -%% conv3_1,conv3_2,conv3_3,pool3 -\pic[shift={(1.2,0,0)}] at (crp2-east) {ConvReluPool={blockname=crp3,% - numFilters={{"256","256"}},height=30,width={3.3,3.3},depth=30,zlabel=I/4}}; -%% conv4_1,conv4_2,conv4_3,pool4 -\pic[shift={(1,0,0)}] at (crp3-east) {ConvReluPool={blockname=crp4,% - numFilters={{"512","512"}},height=23,width={4.5,4.5},depth=23,zlabel=I/8}}; -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Bottleneck -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% fc6,fc7 -\pic[shift={(0.9,0,0)}] at (crp4-east) {ConvRelu={blockname=cp6_7,% - numFilters={{"1024","1024"}},height=10,width={9,9},depth=10,zlabel=I/16}}; -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Dencoder -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% up32 -\pic[shift={(1.5,0,0)}] at (cp6_7-east) {UpConvRelu={blockname=up32,% - numFilters={{"512",""}},height=23,width={4.5},depth=23,zlabel=}}; -%% Concat32 -\pic[shift={(0,0,0)}] at (up32-east) {Gray={blockname=cat32,% - numFilters={{"512",""}},height=23,width={4.5},depth=23,zlabel=}}; -%% Conv32 -\pic[shift={(0.5,0,0)}] at (cat32-east) {ConvRelu={blockname=conv32,% - numFilters={{"512","512"}},height=23,width={4.5,4.5},depth=23,zlabel=I/8}}; - - -%% up16 -\pic[shift={(2,0,0)}] at (conv32-east) {UpConvRelu={blockname=up16,% - numFilters={{"256",""}},height=30,width={3.3},depth=30,zlabel=}}; -%% Concat16 -\pic[shift={(0,0,0)}] at (up16-east) {Gray={blockname=cat16,% - numFilters={{"256",""}},height=30,width={3.3},depth=30,zlabel=}}; -%% Conv16 -\pic[shift={(0.5,0,0)}] at (cat16-east) {ConvRelu={blockname=conv16,% - numFilters={{"256","256"}},height=30,width={3.3,3.3},depth=30,zlabel=I/4}}; - - -%% up8 -\pic[shift={(2,0,0)}] at (conv16-east) {UpConvRelu={blockname=up8,% - numFilters={{"128",""}},height=35,width={2.5},depth=35,zlabel=}}; -%% Concat8 -\pic[shift={(0,0,0)}] at (up8-east) {Gray={blockname=cat8,% - numFilters={{"128",""}},height=35,width={2.5},depth=35,zlabel=}}; -%% Conv8 -\pic[shift={(0.5,0,0)}] at (cat8-east) {ConvRelu={blockname=conv8,% - numFilters={{"128","128"}},height=35,width={2.5,2.5},depth=35,zlabel=I/2}}; - - -%% up4 -\pic[shift={(2,0,0)}] at (conv8-east) {UpConvRelu={blockname=up4,% - numFilters={{"64",""}},height=40,width={2},depth=40,zlabel=}}; -%% Concat4 -\pic[shift={(0,0,0)}] at (up4-east) {Gray={blockname=cat4,% - numFilters={{"64",""}},height=40,width={2},depth=40,zlabel=}}; - -%% Conv4 -\pic[shift={(0.5,0,0)}] at (cat4-east) {ConvRelu={blockname=conv4,% - numFilters={{"64","64"}},height=40,width={2,2},depth=40,zlabel=I}}; -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Draw score producer -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% Conv4 -\pic[shift={(2,0,0)}] at (conv4-east) {Conv={blockname=score,% - numFilters={{"21",""}},height=40,width={2},depth=40,zlabel=I}}; - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Draw connections -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\draw [connection] (crp1-east) -- node {\midarrow} (crp2-west); -\draw [connection] (crp2-east) -- node {\midarrow} (crp3-west); -\draw [connection] (crp3-east) -- node {\midarrow} (crp4-west); -\draw [connection] (crp4-east) -- node {\midarrow} (cp6_7-west); -\draw [connection] (cp6_7-east) -- node {\midarrow} (up32-west); -\draw [connection] (cat32-east) -- node {\midarrow} (conv32-west); -\draw [connection] (conv32-east) -- node {\midarrow} (up16-west); - -\draw [connection] (cat16-east) -- node {\midarrow} (conv16-west); -\draw [connection] (conv16-east) -- node {\midarrow} (up8-west); - -\draw [connection] (cat8-east) -- node {\midarrow} (conv8-west); -\draw [connection] (conv8-east) -- node {\midarrow} (up4-west); - -\draw [connection] (cat4-east) -- node {\midarrow} (conv4-west); -\draw [connection] (conv4-east) -- node {\midarrow} (score-west); - -\path (crp4-lastsouth) -- (crp4-lastnorth) coordinate[pos=1.25] (crp4-top) ; -\path (crp3-lastsouth) -- (crp3-lastnorth) coordinate[pos=1.25] (crp3-top) ; -\path (crp2-lastsouth) -- (crp2-lastnorth) coordinate[pos=1.25] (crp2-top) ; -\path (crp1-lastsouth) -- (crp1-lastnorth) coordinate[pos=1.25] (crp1-top) ; - -\path (cat32-south) -- (cat32-north) coordinate[pos=1.25] (cat32-top) ; -\path (cat16-south) -- (cat16-north) coordinate[pos=1.25] (cat16-top) ; -\path (cat8-south) -- (cat8-north) coordinate[pos=1.25] (cat8-top) ; -\path (cat4-south) -- (cat4-north) coordinate[pos=1.25] (cat4-top) ; - -\draw [copyconnection] (crp4-lastnorth) - -- node {\copymidarrow}(crp4-top) - -- node {\copymidarrow}(cat32-top) - -- node {\copymidarrow} (cat32-north); -\draw [copyconnection] (crp3-lastnorth) - -- node {\copymidarrow}(crp3-top) - -- node {\copymidarrow}(cat16-top) - -- node {\copymidarrow} (cat16-north); -\draw [copyconnection] (crp2-lastnorth) - -- node {\copymidarrow}(crp2-top) - -- node {\copymidarrow}(cat8-top) - -- node {\copymidarrow} (cat8-north); -\draw [copyconnection] (crp1-lastnorth) - -- node {\copymidarrow}(crp1-top) - -- node {\copymidarrow}(cat4-top) - -- node {\copymidarrow} (cat4-north); - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\end{tikzpicture} -\end{document}\grid diff --git a/examples/VGG16/vgg16.pdf b/examples/VGG16/vgg16.pdf index 5e83583..eb182af 100644 Binary files a/examples/VGG16/vgg16.pdf and b/examples/VGG16/vgg16.pdf differ diff --git a/examples/VGG16/vgg16.tex b/examples/VGG16/vgg16.tex index ccd5688..349e4b5 100644 --- a/examples/VGG16/vgg16.tex +++ b/examples/VGG16/vgg16.tex @@ -4,54 +4,102 @@ \subimport{../../layers/}{init} \usetikzlibrary{positioning} -\newcommand{\midarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw=\edgecolor] (-0.3,0) -- ++(0.3,0);} +\def\ConvColor{rgb:yellow,5;red,2.5;white,5} +\def\ConvReluColor{rgb:yellow,5;red,5;white,5} +\def\PoolColor{rgb:red,1;black,0.3} +\def\FcColor{rgb:blue,5;red,2.5;white,5} +\def\FcReluColor{rgb:blue,5;red,5;white,4} +\def\SoftmaxColor{rgb:magenta,5;black,7} + \begin{document} \begin{tikzpicture} \tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Draw Layer Blocks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conv1_1,conv1_2,pool1 -\pic[shift={(0,0,0)}] at (0,0,0) {ConvReluPool={blockname=crp1,% - numFilters={{"64","64","32"}},height=40,width={2,2},depth=40,ylabel=224,zlabel=224}}; -% conv2_1,conv2_2,pool2 -\pic[shift={(2.1,0,0)}] at (crp1-east) {ConvReluPool={blockname=crp2,% - numFilters={{"128","128"}},height=35,width={3,3},depth=35,ylabel=112,zlabel=112}}; -%% conv3_1,conv3_2,conv3_3,pool3 -\pic[shift={(2,0,0)}] at (crp2-east) {ConvReluPool={blockname=crp3,% - numFilters={{"256","256","256"}},height=30,width={4,4,4},depth=30,ylabel=56,zlabel=56}}; -%% conv4_1,conv4_2,conv4_3,pool4 -\pic[shift={(1.8,0,0)}] at (crp3-east) {ConvReluPool={blockname=crp4,% - numFilters={{"512","512","512"}},height=23,width={7,7,7},depth=23,ylabel=28,zlabel=28}}; -%% conv5_1,conv5_2,conv5_3,pool5 -\pic[shift={(1.5,0,0)}] at (crp4-east) {ConvReluPool={blockname=crp5,% - numFilters={{"512","512","512"}},height=15,width={7,7,7},depth=15,ylabel=14,zlabel=14}}; -%% fc6, -\pic[shift={(1.2,0,0)}] at (crp5-east) {FullyConnectedRelu={blockname=fc6,% - numFilters={{"4096","dummy"}},height=10,width={10},depth=10,ylabel=7,zlabel=7}}; -%% fc7 -\pic[shift={(1,0,0)}] at (fc6-east) {FullyConnectedRelu={blockname=fc7,% - numFilters={{"4096","dummy"}},height=3,width={10},depth=3,ylabel= ,zlabel=1 }}; +% conv1_1,conv1_2 +\pic[shift={(0,0,0)}] at (0,0,0) {RightBandedBox={name=cr1,caption=conv1,% + xlabel={{"64","64"}},ylabel=224,zlabel=224,fill=\ConvColor,bandfill=\ConvReluColor,% + height=40,width={2,2},depth=40}}; +%pool1 +\pic[shift={(0,0,0)}] at (cr1-east) {Box={name=p1,% + fill=\PoolColor,opacity=0.5,height=35,width=1,depth=35}}; +%%%%%%%%%% +% conv2_1,conv2_2 +\pic[shift={(2,0,0)}] at (p1-east) {RightBandedBox={name=cr2,caption=conv2,% + xlabel={{"64","64"}},zlabel=112,fill=\ConvColor,bandfill=\ConvReluColor,% + height=35,width={3,3},depth=35}}; +%pool2 +\pic[shift={(0,0,0)}] at (cr2-east) {Box={name=p2,% + fill=\PoolColor,opacity=0.5,height=30,width=1,depth=30}}; +%%%%%%%%%% +% conv3_1,conv3_2 +\pic[shift={(2,0,0)}] at (p2-east) {RightBandedBox={name=cr3,caption=conv3,% + xlabel={{"256","256","256"}},zlabel=56,fill=\ConvColor,bandfill=\ConvReluColor,% + height=30,width={4,4,4},depth=30}}; +%pool3 +\pic[shift={(0,0,0)}] at (cr3-east) {Box={name=p3,% + fill=\PoolColor,opacity=0.5,height=23,width=1,depth=23}}; +%%%%%%%%%% +% conv4_1,conv4_2,conv4_3 +\pic[shift={(1.8,0,0)}] at (p3-east) {RightBandedBox={name=cr4,caption=conv4,% + xlabel={{"512","512","512"}},zlabel=28,fill=\ConvColor,bandfill=\ConvReluColor,% + height=23,width={7,7,7},depth=23}}; +%pool4 +\pic[shift={(0,0,0)}] at (cr4-east) {Box={name=p4,% + fill=\PoolColor,opacity=0.5,height=15,width=1,depth=15}}; +%%%%%%%%%% +% conv5_1,conv5_2,conv5_3 +\pic[shift={(1.5,0,0)}] at (p4-east) {RightBandedBox={name=cr5,caption=conv5,% + xlabel={{"512","512","512"}},zlabel=14,fill=\ConvColor,bandfill=\ConvReluColor,% + height=15,width={7,7,7},depth=15}}; +%pool5 +\pic[shift={(0,0,0)}] at (cr5-east) {Box={name=p5,% + fill=\PoolColor,opacity=0.5,height=10,width=1,depth=10}}; +%%%%%%%%%% +% fc6 +\pic[shift={(3,0,0)}] at (p5-east) {RightBandedBox={name=fc6,caption=fc6,% + xlabel={{"1",""}},zlabel=4096,fill=\FcColor,bandfill=\FcReluColor,% + height=3,width=3,depth=100}}; +%%%%%%%%%% +% fc7 +\pic[shift={(2,0,0)}] at (fc6-east) {RightBandedBox={name=fc7,caption=fc7,% + xlabel={{"1","dummy"}},zlabel=4096,fill=\FcColor,bandfill=\FcReluColor,% + height=3,width=3,depth=100}}; +%%%%%%%%%% +% fc8 +\pic[shift={(1.5,0,0)}] at (fc7-east) {RightBandedBox={name=fc8,caption=fc8+softmax,% + xlabel={{"1","dummy"}},fill=\FcColor,bandfill=\FcReluColor,% + height=3,width=3,depth=25}}; -%% fc8 -\pic[shift={(1,0,0)}] at (fc7-east) {FullyConnected={blockname=fc8,% - numFilters={{"K","dummy"}},height=3,width=7,depth=3,ylabel=,zlabel=1}}; -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Output -%% Softmax -%\pic[shift={(1,0,0)}] at (elt2-east) {Deconv={blockname=up8,% -% numFilters={{"21","4096"}},height=35,width=1,depth=35,zlabel=I}}; +%%%%%%%%%% +% softmax +\pic[shift={(0,0,0)}] at (fc8-east) {Box={name=softmax,% + xlabel={{"","dummy"}},zlabel=K,opacity=0.8,fill=\SoftmaxColor,% + height=3,width=1.5,depth=25}}; + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw connections +%% Draw Arrow Connections %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\draw [connection] (crp1-east) -- node {\midarrow} (crp2-west); -\draw [connection] (crp2-east) -- node {\midarrow} (crp3-west); -\draw [connection] (crp3-east) -- node {\midarrow} (crp4-west); -\draw [connection] (crp4-east) -- node {\midarrow} (crp5-west); -\draw [connection] (crp5-east) -- node {\midarrow} (fc6-west); -\draw [connection] (fc6-east) -- node {\midarrow} (fc7-west); -\draw [connection] (fc7-east) -- node {\midarrow} (fc8-west); +\draw [connection] (p1-east) -- node {\midarrow} (cr2-west); +\draw [connection] (p2-east) -- node {\midarrow} (cr3-west); +\draw [connection] (p3-east) -- node {\midarrow} (cr4-west); +\draw [connection] (p4-east) -- node {\midarrow} (cr5-west); +\draw [connection] (p5-east) -- node {\midarrow} (fc6-west); +\draw [connection] (fc6-east) -- node {\midarrow} (fc7-west); +\draw [connection] (fc7-east) -- node {\midarrow} (fc8-west); +\draw [connection] (softmax-east) -- node {\midarrow} ++(1.5,0,0); +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Draw Dotted Edges +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\draw[densely dashed] + (fc6-west)++(0, 1.5*.2, 1.5*.2) coordinate(a) -- (p5-nearnortheast) + (fc6-west)++(0,-1.5*.2, 1.5*.2) coordinate(b) -- (p5-nearsoutheast) + (fc6-west)++(0,-1.5*.2,-1.5*.2) coordinate(c) -- (p5-farsoutheast) + (fc6-west)++(0, 1.5*.2,-1.5*.2) coordinate(d) -- (p5-farnortheast) + + (a)--(b)--(c)--(d) + ; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \end{tikzpicture} \end{document} diff --git a/examples/VGG16ConvBlock/vgg16convblock.pdf b/examples/VGG16ConvBlock/vgg16convblock.pdf deleted file mode 100644 index be62500..0000000 Binary files a/examples/VGG16ConvBlock/vgg16convblock.pdf and /dev/null differ diff --git a/examples/VGG16ConvBlock/vgg16convblock.tex b/examples/VGG16ConvBlock/vgg16convblock.tex deleted file mode 100644 index 8782b71..0000000 --- a/examples/VGG16ConvBlock/vgg16convblock.tex +++ /dev/null @@ -1,46 +0,0 @@ -\documentclass[border=15pt, multi, tikz]{standalone} -%\usepackage{blocks} -\usepackage{import} -\subimport{../../layers/}{init} -\usetikzlibrary{positioning} - -%\newcommand{\midarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw=\edgecolor] (-0.3,0) -- ++(0.3,0);} -\begin{document} -\begin{tikzpicture} -\tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7] -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Layer Blocks -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conv1_1,conv1_2,pool1 -\pic[shift={(0,0,0)}] at (0,0,0) {ConvReluPool={blockname=crp1,% - numFilters={{"64","64","32"}},height=40,width={2,2},depth=40,ylabel=224,zlabel=224}}; -% conv2_1,conv2_2,pool2 -\pic[shift={(2.1,0,0)}] at (crp1-east) {ConvReluPool={blockname=crp2,% - numFilters={{"128","128"}},height=35,width={3,3},depth=35,ylabel=112,zlabel=112}}; -%% conv3_1,conv3_2,conv3_3,pool3 -\pic[shift={(2,0,0)}] at (crp2-east) {ConvReluPool={blockname=crp3,% - numFilters={{"256","256","256"}},height=30,width={4,4,4},depth=30,ylabel=56,zlabel=56}}; -%% conv4_1,conv4_2,conv4_3,pool4 -\pic[shift={(1.8,0,0)}] at (crp3-east) {ConvReluPool={blockname=crp4,% - numFilters={{"512","512","512"}},height=23,width={7,7,7},depth=23,ylabel=28,zlabel=28}}; -%% conv5_1,conv5_2,conv5_3,pool5 -\pic[shift={(1.5,0,0)}] at (crp4-east) {ConvReluPool={blockname=crp5,% - numFilters={{"512","512","512"}},height=15,width={7,7,7},depth=15,ylabel=14,zlabel=14}}; -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Output -%% Softmax -%\pic[shift={(1,0,0)}] at (elt2-east) {Deconv={blockname=up8,% -% numFilters={{"21","4096"}},height=35,width=1,depth=35,zlabel=I}}; -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw connections -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\draw [connection] (crp1-east) -- node {\midarrow} (crp2-west); -\draw [connection] (crp2-east) -- node {\midarrow} (crp3-west); -\draw [connection] (crp3-east) -- node {\midarrow} (crp4-west); -\draw [connection] (crp4-east) -- node {\midarrow} (crp5-west); -\draw [connection] (crp5-east) -- node {\midarrow} ++(1.5,0,0); - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\end{tikzpicture} -\end{document} diff --git a/examples/fcn-DT/fcn-DT.pdf b/examples/fcn-DT/fcn-DT.pdf deleted file mode 100644 index ddba1f9..0000000 Binary files a/examples/fcn-DT/fcn-DT.pdf and /dev/null differ diff --git a/examples/fcn-DT/fcn-DT.tex b/examples/fcn-DT/fcn-DT.tex deleted file mode 100644 index d88816c..0000000 --- a/examples/fcn-DT/fcn-DT.tex +++ /dev/null @@ -1,140 +0,0 @@ -\documentclass[border=15pt, multi, tikz]{standalone} -%\usepackage{blocks} -\usepackage{import} -\subimport{../../layers/}{init} -\usetikzlibrary{positioning} - -\tikzstyle{connection1}=[ultra thick,every node/.style={sloped,allow upside down},draw={rgb:blue,0;red,4;green,2;white,0},opacity=0.7] - -\newcommand{\localmidarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw={rgb:blue,0;red,4;green,2;white,0}] (-0.3,0) -- ++(0.3,0);} - -\begin{document} -\begin{tikzpicture} -\tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7] -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw ConvNet Layers -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conv1_1,conv1_2,pool1 -\pic[shift={(0,0,0)}] at (0,0,0) {ConvReluPool={blockname=crp1,% - numFilters={{"64","64","32"}},height=40,width={2,2},depth=40,zlabel=I}}; -% conv2_1,conv2_2,pool2 -\pic[shift={(2.1,0,0)}] at (crp1-east) {ConvReluPool={blockname=crp2,% - numFilters={{"128","128"}},height=35,width={3,3},depth=35,zlabel=I/2}}; -%% conv3_1,conv3_2,conv3_3,pool3 -\pic[shift={(2,0,0)}] at (crp2-east) {ConvReluPool={blockname=crp3,% - numFilters={{"256","256","256"}},height=30,width={4,4,4},depth=30,zlabel=I/4}}; -%% conv4_1,conv4_2,conv4_3,pool4 -\pic[shift={(1.5,0,0)}] at (crp3-east) {ConvReluPool={blockname=crp4,% - numFilters={{"512","512","512"}},height=23,width={7,7,7},depth=23,zlabel=I/8}}; -%% conv5_1,conv5_2,conv5_3,pool5 -\pic[shift={(1.5,0,0)}] at (crp4-east) {ConvReluPool={blockname=crp5,% - numFilters={{"512","512","512"}},height=15,width={7,7,7},depth=15,zlabel=I/16}}; -%% fc6, fc7 -\pic[shift={(1.2,0,0)}] at (crp5-east) {ConvRelu={blockname=cp6_7,% - numFilters={{"4096","4096"}},height=10,width={10,10},depth=10,zlabel=I/32}}; -%% score32 -\pic[shift={(1,0,0)}] at (cp6_7-east) {Conv={blockname=score32,% - numFilters={{"21","4096"}},height=10,width=1,depth=10,zlabel=I/32}}; -%% Upsampling Deconv Layer -\pic[shift={(2,0,0)}] at (score32-east) {Deconv={blockname=up16,% - numFilters={{"21","4096"}},height=40,width=1,depth=40,zlabel=I}}; - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw Edge Layers -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% upsampling crp2 x2 -\pic[shift={(-0.75,-8,0)}] at (crp2-anchor) {Deconv={blockname=crp2_upx2,% - numFilters={{"bilinear x2","4096"}},height=7.5,width=7.5,depth=7.5,zlabel=}}; -%% upsampling crp3 x4 -\pic[shift={(-0.75,-8,0)}] at (crp3-anchor) {Deconv={blockname=crp3_upx4,% - numFilters={{"bilinear x4","4096"}},height=7.5,width=7.5,depth=7.5,zlabel=}}; - -%% edge -\pic[shift={(7,-11,0)}] at (crp4-west) {Conv={blockname=edge,% - numFilters={{"1x1 conv","4096"}}, height=30,width=1,depth=30,zlabel=I}}; - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Domain Transform Module -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\pic[shift={(5,0,0)},fill={rgb:blue,1;red,2;green,4;white,7}] at (up16-east) {DomainTransform={blockname=diff1,% - numFilters={{"21","4096"}},height=40,width=1,depth=40,zlabel=}}; - -\pic[shift={(2,0,0)},fill={rgb:blue,1;red,2;green,4;white,7}] at (diff1-east) {DomainTransform={blockname=diff2,% - numFilters={{"21","4096"}},height=40,width=1,depth=40,zlabel=}}; - -\pic[shift={(2,0,0)},fill={rgb:blue,1;red,2;green,4;white,7}] at (diff2-east) {DomainTransform={blockname=diff3,% - numFilters={{"21","4096"}},height=40,width=1,depth=40,zlabel=}}; - -\pic[shift={(2,0,0)},fill={rgb:blue,1;red,2;green,4;white,7}] at (diff3-east) {DomainTransform={blockname=diff4,% - numFilters={{"21","4096"}},height=40,width=1,depth=40,zlabel=}}; - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Arrows on Domain Transform -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\draw [connection1] (diff1-anchor)+(0,3,3) -- node{ } ++(0,3,-3); -\draw [connection1] (diff1-anchor)+(0,3,3)-- node{\localmidarrow} ++(0,3,2.9); -\draw [connection1] (diff1-anchor)+(0,3,-2.9) -- node{\localmidarrow} ++(0,3,-3); - -\draw [connection1] (diff1-anchor)+(0,2,3) -- node{ } ++(0,2,-3); -\draw [connection1] (diff1-anchor)+(0,2,3)-- node{\localmidarrow} ++(0,2,2.9); -\draw [connection1] (diff1-anchor)+(0,2,-2.9) -- node{\localmidarrow} ++(0,2,-3); -%%%%%%%%%%%%%%%%%% -\draw [connection1] (diff2-anchor)+(0,-3,-3) -- node{ } ++(0,-3,3); -\draw [connection1] (diff2-anchor)+(0,-3,-3)-- node{\localmidarrow} ++(0,-3,-2.9); -\draw [connection1] (diff2-anchor)+(0,-3,2.9) -- node{\localmidarrow} ++(0,-3,3); - -\draw [connection1] (diff2-anchor)+(0,-2,-3) -- node{ } ++(0,-2,3); -\draw [connection1] (diff2-anchor)+(0,-2,-3)-- node{\localmidarrow} ++(0,-2,-2.9); -\draw [connection1] (diff2-anchor)+(0,-2,2.9) -- node{\localmidarrow} ++(0,-2,3); -%%%%%%%%%%%%%%%%%% -\draw [connection1] (diff3-anchor)+(0,3,3) -- node{ } ++(0,-3,3); -\draw [connection1] (diff3-anchor)+(0,3,3)-- node{\localmidarrow} ++(0,2.9,3); -\draw [connection1] (diff3-anchor)+(0,-2.9,3) -- node{\localmidarrow} ++(0,-3,3); - -\draw [connection1] (diff3-anchor)+(0,3,2) -- node{ } ++(0,-3,2); -\draw [connection1] (diff3-anchor)+(0,3,2)-- node{\localmidarrow} ++(0,2.9,2); -\draw [connection1] (diff3-anchor)+(0,-2.9,2) -- node{\localmidarrow} ++(0,-3,2); -%%%%%%%%%%%%%%%%%% -\draw [connection1] (diff4-anchor)+(0,-3,-3) -- node{ } ++(0,3,-3); -\draw [connection1] (diff4-anchor)+(0,-3,-3)-- node{\localmidarrow} ++(0,-2.9,-3); -\draw [connection1] (diff4-anchor)+(0,2.9,-3) -- node{\localmidarrow} ++(0,3,-3); - -\draw [connection1] (diff4-anchor)+(0,-3,-2) -- node{ } ++(0,3,-2); -\draw [connection1] (diff4-anchor)+(0,-3,-2)-- node{\localmidarrow} ++(0,-2.9,-2); -\draw [connection1] (diff4-anchor)+(0,2.9,-2) -- node{\localmidarrow} ++(0,3,-2); -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draw connections -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ConvNet Connections\draw [connection] (crp1-east) -- node {\midarrow} (crp2-west); -\draw [connection] (crp2-east) -- node {\midarrow} (crp3-west); -\draw [connection] (crp3-east) -- node {\midarrow} (crp4-west); -\draw [connection] (crp4-east) -- node {\midarrow} (crp5-west); -\draw [connection] (crp5-east) -- node {\midarrow} (cp6_7-west); -\draw [connection] (cp6_7-east) -- node {\midarrow} (score32-west); -\draw [connection] (score32-east) -- node {\midarrow} (up16-west); -% Diffusion Block internal connections -\draw [connection] (up16-east) -- node {\midarrow} (diff1-west); -\draw [connection] (diff1-east) -- node {\midarrow} (diff2-west); -\draw [connection] (diff2-east) -- node {\midarrow} (diff3-west); -\draw [connection] (diff3-east) -- node {\midarrow} (diff4-west); -\draw [connection] (diff4-east) -- node {\midarrow} ++(2,0,0); - -% EdgeNet Input Connections -\draw [connection](crp1-south)--node {\midarrow}(edge-west-|crp1-south)--node {\midarrow}(edge-west-|crp2-south); -\draw [connection](crp2-south)--node {\midarrow}(crp2_upx2-north); -\draw [connection](crp2_upx2-south)--node {\midarrow}(edge-west-|crp2-south)--node {\midarrow}(edge-west-|crp3-south); -\draw [connection](crp3-south)--node {\midarrow}(crp3_upx4-north); -\draw [connection](crp3_upx4-south)--node {\midarrow}(edge-west-|crp3-south)--node {\midarrow}(edge-west); -% EdgeNet Output Connections -\draw [connection](edge-east) -node[anchor=south west,inner sep = 10, yshift=-20, xshift=180,scale=2.3]{Edges} ---node {\midarrow}(diff4-south |-edge-east)--node {\midarrow}(diff4-south); -\draw [connection](diff3-south |-edge-east)--node {\midarrow}(diff3-south); -\draw [connection](diff2-south |-edge-east)--node {\midarrow}(diff2-south); -\draw [connection](diff1-south |-edge-east)--node {\midarrow}(diff1-south); -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\end{tikzpicture} -\end{document} diff --git a/examples/fcn32s/fcn32.pdf b/examples/fcn32s/fcn32.pdf index 91bb055..8cc3c08 100644 Binary files a/examples/fcn32s/fcn32.pdf and b/examples/fcn32s/fcn32.pdf differ diff --git a/examples/fcn32s/fcn32.tex b/examples/fcn32s/fcn32.tex index 5f6a12e..7320b44 100644 --- a/examples/fcn32s/fcn32.tex +++ b/examples/fcn32s/fcn32.tex @@ -1,54 +1,101 @@ \documentclass[border=15pt, multi, tikz]{standalone} -%\usepackage{blocks} \usepackage{import} \subimport{../../layers/}{init} \usetikzlibrary{positioning} -%\newcommand{\midarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw=\edgecolor] (-0.3,0) -- ++(0.3,0);} +\def\ConvColor{rgb:yellow,5;red,2.5;white,5} +\def\ConvReluColor{rgb:yellow,5;red,5;white,5} +\def\PoolColor{rgb:red,1;black,0.3} +\def\DcnvColor{rgb:blue,5;green,2.5;white,5} +\def\SoftmaxColor{rgb:magenta,5;black,7} + \begin{document} + \begin{tikzpicture} \tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Draw Layer Blocks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conv1_1,conv1_2,pool1 -\pic[shift={(0,0,0)}] at (0,0,0) {ConvReluPool={blockname=crp1,% - numFilters={{"64","64","32"}},height=40,width={2,2},depth=40,zlabel=I}}; -% conv2_1,conv2_2,pool2 -\pic[shift={(2.1,0,0)}] at (crp1-east) {ConvReluPool={blockname=crp2,% - numFilters={{"128","128"}},height=35,width={3,3},depth=35,zlabel=I/2}}; -%% conv3_1,conv3_2,conv3_3,pool3 -\pic[shift={(2,0,0)}] at (crp2-east) {ConvReluPool={blockname=crp3,% - numFilters={{"256","256","256"}},height=30,width={4,4,4},depth=30,zlabel=I/4}}; -%% conv4_1,conv4_2,conv4_3,pool4 -\pic[shift={(1.8,0,0)}] at (crp3-east) {ConvReluPool={blockname=crp4,% - numFilters={{"512","512","512"}},height=23,width={7,7,7},depth=23,zlabel=I/8}}; -%% conv5_1,conv5_2,conv5_3,pool5 -\pic[shift={(1.5,0,0)}] at (crp4-east) {ConvReluPool={blockname=crp5,% - numFilters={{"512","512","512"}},height=15,width={7,7,7},depth=15,zlabel=I/16}}; -%% fc6, fc7 -\pic[shift={(1.2,0,0)}] at (crp5-east) {ConvRelu={blockname=cp6_7,% - numFilters={{"4096","4096"}},height=10,width={10,10},depth=10,zlabel=I/32}}; -%% score32 -\pic[shift={(1,0,0)}] at (cp6_7-east) {Conv={blockname=score32,% - numFilters={{"21",""}},height=10,width=2,depth=10,zlabel=I/32}}; - -%% Output -%% Upsampling to original image size -\pic[shift={(2,0,0)}] at (score32-east) {Deconv={blockname=up8,% - numFilters={{"21",""}},height=35,width=2,depth=35,zlabel=I}}; +% conv1_1,conv1_2 +\pic[shift={(0,0,0)}] at (0,0,0) {RightBandedBox={name=cr1,caption=conv1,% + xlabel={{"64","64"}},zlabel=I,fill=\ConvColor,bandfill=\ConvReluColor,% + height=40,width={2,2},depth=40}}; +%pool1 +\pic[shift={(0,0,0)}] at (cr1-east) {Box={name=p1,% + fill=\PoolColor,opacity=0.5,height=35,width=1,depth=35}}; +%%%%%%%%%% +% conv2_1,conv2_2 +\pic[shift={(2,0,0)}] at (p1-east) {RightBandedBox={name=cr2,caption=conv2,% + xlabel={{"64","64"}},zlabel=I/2,fill=\ConvColor,bandfill=\ConvReluColor,% + height=35,width={3,3},depth=35}}; +%pool2 +\pic[shift={(0,0,0)}] at (cr2-east) {Box={name=p2,% + fill=\PoolColor,opacity=0.5,height=30,width=1,depth=30}}; +%%%%%%%%%% +% conv3_1,conv3_2 +\pic[shift={(2,0,0)}] at (p2-east) {RightBandedBox={name=cr3,caption=conv3,% + xlabel={{"256","256","256"}},zlabel=I/4,fill=\ConvColor,bandfill=\ConvReluColor,% + height=30,width={4,4,4},depth=30}}; +%pool3 +\pic[shift={(0,0,0)}] at (cr3-east) {Box={name=p3,% + fill=\PoolColor,opacity=0.5,height=23,width=1,depth=23}}; +%%%%%%%%%% +% conv4_1,conv4_2,conv4_3 +\pic[shift={(1.8,0,0)}] at (p3-east) {RightBandedBox={name=cr4,caption=conv4,% + xlabel={{"512","512","512"}},zlabel=I/8,fill=\ConvColor,bandfill=\ConvReluColor,% + height=23,width={7,7,7},depth=23}}; +%pool4 +\pic[shift={(0,0,0)}] at (cr4-east) {Box={name=p4,% + fill=\PoolColor,opacity=0.5,height=15,width=1,depth=15}}; +%%%%%%%%%% +% conv5_1,conv5_2,conv5_3 +\pic[shift={(1.5,0,0)}] at (p4-east) {RightBandedBox={name=cr5,caption=conv5,% + xlabel={{"512","512","512"}},zlabel=I/16,fill=\ConvColor,bandfill=\ConvReluColor,% + height=15,width={7,7,7},depth=15}}; +%pool5 +\pic[shift={(0,0,0)}] at (cr5-east) {Box={name=p5,% + fill=\PoolColor,opacity=0.5,height=10,width=1,depth=10}}; +%%%%%%%%%% +%% fc6, fc7 -> cr6, cr7 +\pic[shift={(1,0,0)}] at (p5-east) {RightBandedBox={name=cr6_7,caption=fc to conv,% + xlabel={{"4096","4096"}},fill=\ConvColor,bandfill=\ConvReluColor,% + height=10,width={10,10},depth=10}}; +%%%%%%%%%% +%% fc8 -> cr8 + +\pic[shift={(1,0,0)}] at (cr6_7-east) {Box={name=c8,caption=fc8 to conv,% + xlabel={{"K","dummy"}},fill=\ConvColor,% + height=10,width=2,depth=10,zlabel=I/32}}; +%%%%%%%%%% +%% Dcnv32 +\pic[shift={(2.5,0,0)}] at (c8-east) {Box={name=d32,caption=Deconv,% + xlabel={{"K","dummy"}},fill=\DcnvColor,% + height=40,width=2,depth=40}}; +%%%%%%%%%% +%% softmax +\pic[shift={(1,0,0)}] at (d32-east) {Box={name=softmax,caption=softmax,% + xlabel={{"K","dummy"}},fill=\SoftmaxColor,% + height=40,width=2,depth=40,zlabel=I}}; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Draw connections %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\draw [connection] (crp1-east) -- node {\midarrow} (crp2-west); -\draw [connection] (crp2-east) -- node {\midarrow} (crp3-west); -\draw [connection] (crp3-east) -- node {\midarrow} (crp4-west); -\draw [connection] (crp4-east) -- node {\midarrow} (crp5-west); -\draw [connection] (crp5-east) -- node {\midarrow} (cp6_7-west); -\draw [connection] (cp6_7-east) -- node {\midarrow} (score32-west); -\draw [connection] (score32-east) -- node {\midarrow} (up8-west); - +\draw [connection] (p1-east) -- node {\midarrow} (cr2-west); +\draw [connection] (p2-east) -- node {\midarrow} (cr3-west); +\draw [connection] (p3-east) -- node {\midarrow} (cr4-west); +\draw [connection] (p4-east) -- node {\midarrow} (cr5-west); +\draw [connection] (p5-east) -- node {\midarrow} (cr6_7-west); +\draw [connection] (cr6_7-east) -- node {\midarrow} (c8-west); +\draw [connection] (c8-east) -- node {\midarrow} (d32-west); +\draw [connection] (d32-east) -- node {\midarrow} (softmax-west); +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Draw Dotted Edges +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\draw[densely dashed] +(c8-nearnortheast) -- (d32-nearnorthwest) +(c8-nearsoutheast) -- (d32-nearsouthwest) +(c8-farsoutheast) -- (d32-farsouthwest) +(c8-farnortheast) -- (d32-farnorthwest) +; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \end{tikzpicture} \end{document}\grid diff --git a/examples/fcn8s/fcn8.pdf b/examples/fcn8s/fcn8.pdf index 4ff823a..826b78e 100644 Binary files a/examples/fcn8s/fcn8.pdf and b/examples/fcn8s/fcn8.pdf differ diff --git a/examples/fcn8s/fcn8.tex b/examples/fcn8s/fcn8.tex index 261a12b..d7a65df 100644 --- a/examples/fcn8s/fcn8.tex +++ b/examples/fcn8s/fcn8.tex @@ -1,86 +1,124 @@ \documentclass[border=15pt, multi, tikz]{standalone} -%\usepackage{blocks} \usepackage{import} \subimport{../../layers/}{init} \usetikzlibrary{positioning} -\newcommand{\midarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw=\edgecolor] (-0.3,0) -- ++(0.3,0);} +\def\ConvColor{rgb:yellow,5;red,2.5;white,5} +\def\ConvReluColor{rgb:yellow,5;red,5;white,5} +\def\PoolColor{rgb:red,1;black,0.3} +\def\DcnvColor{rgb:blue,5;green,2.5;white,5} +\def\SoftmaxColor{rgb:magenta,5;black,7} +\def\SumColor{rgb:blue,5;green,15} + \begin{document} \begin{tikzpicture} \tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Draw Layer Blocks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conv1_1,conv1_2,pool1 -\pic[shift={(0,0,0)}] at (0,0,0) {ConvReluPool={blockname=crp1,% - numFilters={{"64","64","32"}},height=40,width={2,2},depth=40,zlabel=I}}; +% conv1_1,conv1_2,%pool1 +\pic[shift={(0,0,0)}] at (0,0,0) {RightBandedBox={name=cr1,caption=conv1,% + xlabel={{"64","64"}},zlabel=I,fill=\ConvColor,bandfill=\ConvReluColor,% + height=40,width={2,2},depth=40}}; +\pic[shift={(0,0,0)}] at (cr1-east) {Box={name=p1,% + fill=\PoolColor,opacity=0.5,height=35,width=1,depth=35}}; % conv2_1,conv2_2,pool2 -\pic[shift={(2.1,0,0)}] at (crp1-east) {ConvReluPool={blockname=crp2,% - numFilters={{"128","128"}},height=35,width={3,3},depth=35,zlabel=I/2}}; -%% conv3_1,conv3_2,conv3_3,pool3 -\pic[shift={(2,0,0)}] at (crp2-east) {ConvReluPool={blockname=crp3,% - numFilters={{"256","256","256"}},height=30,width={4,4,4},depth=30,zlabel=I/4}}; -%% conv4_1,conv4_2,conv4_3,pool4 -\pic[shift={(1.8,0,0)}] at (crp3-east) {ConvReluPool={blockname=crp4,% - numFilters={{"512","512","512"}},height=23,width={7,7,7},depth=23,zlabel=I/8}}; -%% conv5_1,conv5_2,conv5_3,pool5 -\pic[shift={(1.5,0,0)}] at (crp4-east) {ConvReluPool={blockname=crp5,% - numFilters={{"512","512","512"}},height=15,width={7,7,7},depth=15,zlabel=I/16}}; -%% fc6, fc7 -\pic[shift={(1.2,0,0)}] at (crp5-east) {ConvRelu={blockname=cp6_7,% - numFilters={{"4096","4096"}},height=10,width={10,10},depth=10,zlabel=I/32}}; -%% score32 -\pic[shift={(1,0,0)}] at (cp6_7-east) {Conv={blockname=score32,% - numFilters={{"1","4096"}},height=10,width=1,depth=10,zlabel=I/32}}; +\pic[shift={(2,0,0)}] at (p1-east) {RightBandedBox={name=cr2,caption=conv2,% + xlabel={{"64","64"}},zlabel=I/2,fill=\ConvColor,bandfill=\ConvReluColor,% + height=35,width={3,3},depth=35}}; +\pic[shift={(0,0,0)}] at (cr2-east) {Box={name=p2,% + fill=\PoolColor,opacity=0.5,height=30,width=1,depth=30}}; +% conv3_1,conv3_2,pool3 +\pic[shift={(2,0,0)}] at (p2-east) {RightBandedBox={name=cr3,caption=conv3,% + xlabel={{"256","256","256"}},zlabel=I/4,fill=\ConvColor,bandfill=\ConvReluColor,% + height=30,width={4,4,4},depth=30}}; +\pic[shift={(0,0,0)}] at (cr3-east) {Box={name=p3,% + fill=\PoolColor,opacity=0.5,height=23,width=1,depth=23}}; +% conv4_1,conv4_2,conv4_3,pool4 +\pic[shift={(1.8,0,0)}] at (p3-east) {RightBandedBox={name=cr4,caption=conv4,% + xlabel={{"512","512","512"}},zlabel=I/8,fill=\ConvColor,bandfill=\ConvReluColor,% + height=23,width={7,7,7},depth=23}}; +\pic[shift={(0,0,0)}] at (cr4-east) {Box={name=p4,% + fill=\PoolColor,opacity=0.5,height=15,width=1,depth=15}}; +% conv5_1,conv5_2,conv5_3,pool5 +\pic[shift={(1.5,0,0)}] at (p4-east) {RightBandedBox={name=cr5,caption=conv5,% + xlabel={{"512","512","512"}},zlabel=I/16,fill=\ConvColor,bandfill=\ConvReluColor,% + height=15,width={7,7,7},depth=15}}; +\pic[shift={(0,0,0)}] at (cr5-east) {Box={name=p5,% + fill=\PoolColor,opacity=0.5,height=10,width=1,depth=10}}; +%% fc6, fc7 -> cr6, cr7 +\pic[shift={(1,0,0)}] at (p5-east) {RightBandedBox={name=cr6_7,caption=fc to conv,% + xlabel={{"4096","4096"}},fill=\ConvColor,bandfill=\ConvReluColor,% + height=10,width={10,10},depth=10}}; +%% fc8 -> cr8 (score32) +\pic[shift={(1,0,0)}] at (cr6_7-east) {Box={name=score32,caption=fc8 to conv,% + xlabel={{"K","dummy"}},fill=\ConvColor,% + height=10,width=2,depth=10,zlabel=I/32}}; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%Joining with previous streams (fcn-16) +%%Joining with previous streams (fcn-16s) %% Upsampling Deconv Layer -\pic[shift={(1,0,0)}] at (score32-east) {Deconv={blockname=up32,% - numFilters={{"1","4096"}},height=15,width=1,depth=15,zlabel=I/16}}; +%% Dcnv32 +\pic[shift={(1.5,0,0)}] at (score32-east) {Box={name=d32,% + xlabel={{"K","dummy"}},fill=\DcnvColor,% + height=15,width=2,depth=15,zlabel=I/16}}; %% score16 -\pic[shift={(0,-4,0)}] at (up32-west) {Conv={blockname=score16,% - numFilters={{"1","4096"}},height=15,width=1,depth=15,zlabel=I/16}}; +\pic[shift={(0,-4,0)}] at (d32-west) {Box={name=score16,% + xlabel={{"K","dummy"}},fill=\ConvColor,% + height=15,width=2,depth=15,zlabel=I/16}}; %% Elementwise sum between score16 and up32 -\pic[shift={(1.5,0,0)}] at (up32-east) {Sum={blockname=elt1,% - numFilters={{"1","4096"}},height=15,width=1,depth=15,zlabel=I/16}}; +\pic[shift={(1.5,0,0)}] at (d32-east) {Ball={name=elt1,% + fill=\SumColor,opacity=0.6,% + radius=2.5,logo=$+$}}; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%Joining with previous streams (fcn-8) +%%Joining with previous streams (fcn-8s) %% Upsampling Deconv Layer -\pic[shift={(1,0,0)}] at (elt1-east) {Deconv={blockname=up16,% - numFilters={{"1","4096"}},height=20,width=1,depth=20,zlabel=I/8}}; +%% Dcnv16 +\pic[shift={(1.5,0,0)}] at (elt1-east) {Box={name=d16,% + xlabel={{"K","dummy"}},fill=\DcnvColor,% + height=23,width=2,depth=23,zlabel=I/8}}; %% score8 -\pic[shift={(0,-7,0)}] at (up16-west) {Conv={blockname=score8,% - numFilters={{"1","4096"}},height=20,width=1,depth=20,zlabel=I/8}}; -%% Elementwise sum between score8 and up16 -\pic[shift={(1.5,0,0)}] at (up16-east) {Sum={blockname=elt2,% - numFilters={{"1","4096"}},height=20,width=1,depth=20,zlabel=I/8}}; -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Output -%% Upsampling to original image size -\pic[shift={(1,0,0)}] at (elt2-east) {Deconv={blockname=up8,% - numFilters={{"1","4096"}},height=35,width=1,depth=35,zlabel=I}}; +\pic[shift={(0,-6,0)}] at (d16-west) {Box={name=score8,% + xlabel={{"K","dummy"}},fill=\ConvColor,% + height=23,width=2,depth=23,zlabel=I/8}}; +%% Elementwise sum between score16 and up32 +\pic[shift={(1.5,0,0)}] at (d16-east) {Ball={name=elt2,% + fill=\SumColor,opacity=0.6,% + radius=2.5,logo=$+$}}; +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Output +%%%%%%%%%% +%% Dcnv8 +\pic[shift={(2.5,0,0)}] at (elt2-east) {Box={name=d8,% + xlabel={{"K","dummy"}},fill=\DcnvColor,% + height=40,width=2,depth=40}}; +%%%%%%%%%% +%% softmax +\pic[shift={(1,0,0)}] at (d8-east) {Box={name=softmax,caption=softmax,% + xlabel={{"K","dummy"}},fill=\SoftmaxColor,% + height=40,width=2,depth=40,zlabel=I}}; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Draw connections %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\draw [connection] (crp1-east) -- node {\midarrow} (crp2-west); -\draw [connection] (crp2-east) -- node {\midarrow} (crp3-west); -\draw [connection] (crp3-east) -- node {\midarrow} (crp4-west); -\draw [connection] (crp4-east) -- node {\midarrow} (crp5-west); -\draw [connection] (crp5-east) -- node {\midarrow} (cp6_7-west); -\draw [connection] (cp6_7-east) -- node {\midarrow} (score32-west); -\draw [connection] (score32-east) -- node {\midarrow} (up32-west); +\draw [connection] (p1-east) -- node {\midarrow} (cr2-west); +\draw [connection] (p2-east) -- node {\midarrow} (cr3-west); +\draw [connection] (p3-east) -- node {\midarrow} (cr4-west); +\draw [connection] (p4-east) -- node {\midarrow} (cr5-west); +\draw [connection] (p5-east) -- node {\midarrow} (cr6_7-west); +\draw [connection] (cr6_7-east) -- node {\midarrow} (score32-west); +\draw [connection] (score32-east) -- node {\midarrow} (d32-west); -\path (crp4-east) -- (crp5-west) coordinate[pos=0.25] (between4_5) ; +\path (p4-east) -- (cr5-west) coordinate[pos=0.25] (between4_5) ; \draw [connection] (between4_5) -- node {\midarrow} (score16-west-|between4_5) -- node {\midarrow} (score16-west); -\draw [connection] (up32-east) -- node {\midarrow} (elt1-west); +\draw [connection] (d32-east) -- node {\midarrow} (elt1-west); \draw [connection] (score16-east) -- node {\midarrow} (score16-east -| elt1-south) -- node {\midarrow} (elt1-south); -\draw [connection] (elt1-east) -- node {\midarrow} (up16-west); +\draw [connection] (elt1-east) -- node {\midarrow} (d16-west); -\path (crp3-east) -- (crp4-west) coordinate[pos=0.25] (between3_4) ; +\path (p3-east) -- (cr4-west) coordinate[pos=0.25] (between3_4) ; \draw [connection] (between3_4) -- node {\midarrow} (score8-west-|between3_4) -- node {\midarrow} (score8-west); -\draw [connection] (up16-east) -- node {\midarrow} (elt2-west); +\draw [connection] (d16-east) -- node {\midarrow} (elt2-west); \draw [connection] (score8-east) -- node {\midarrow} (score8-east -| elt2-south)-- node {\midarrow} (elt2-south); -\draw [connection] (elt2-east) -- node {\midarrow} (up8-west); +\draw [connection] (elt2-east) -- node {\midarrow} (d8-west); +\draw [connection] (d8-east) -- node{\midarrow} (softmax-west); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{tikzpicture} diff --git a/layers/Ball.sty b/layers/Ball.sty new file mode 100644 index 0000000..b5fa719 --- /dev/null +++ b/layers/Ball.sty @@ -0,0 +1,40 @@ +\ProvidesPackage{Ball} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%This Block can draw small Ball +%Elementwise or reduction operations can be drawn with this +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\tikzset{Ball/.pic={\tikzset{/sphere/.cd,#1} + +\pgfmathsetmacro{\r}{\radius*\scale} + +\shade[ball color=\fill,opacity=\opacity] (0,0,0) circle (\r); +\draw (0,0,0) circle [radius=\r] node[scale=4*\r] {\logo}; + +\coordinate (\name-anchor) at ( 0 , 0 , 0) ; +\coordinate (\name-east) at ( \r, 0 , 0) ; +\coordinate (\name-west) at (-\r, 0 , 0) ; +\coordinate (\name-north) at ( 0 , \r , 0) ; +\coordinate (\name-south) at ( 0 , -\r, 0) ; + +\path (\name-south) + (0,-20pt) coordinate (caption-node) +edge ["\textcolor{black}{\bf \caption}"'] (caption-node); %Ball caption + +}, +/sphere/.search also={/tikz}, +/sphere/.cd, +radius/.store in=\radius, +scale/.store in=\scale, +caption/.store in=\caption, +name/.store in=\name, +fill/.store in=\fill, +logo/.store in=\logo, +opacity/.store in=\opacity, +logo=$\Sigma$, +fill=green, +opacity=0.10, +scale=0.2, +radius=0.5, +caption=, +name=, +} diff --git a/layers/Box.sty b/layers/Box.sty new file mode 100644 index 0000000..9129054 --- /dev/null +++ b/layers/Box.sty @@ -0,0 +1,110 @@ +\ProvidesPackage{Box} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% This Block can draw simple block of boxes with custom colors. +% Can be used for conv, deconv etc +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\tikzset{Box/.pic={\tikzset{/boxblock/.cd,#1} + \tikzstyle{box}=[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=\opacity, pic actions,fill=\fill] + + \pgfmathsetmacro{\y}{\cubey*\scale} + \pgfmathsetmacro{\z}{\cubez*\scale} + + %Multiple concatenated boxes + \foreach[count=\i,% + evaluate=\i as \xlabel using {array({\boxlabels},\i-1)},% + evaluate=\unscaledx as \k using {\unscaledx*\scale+\prev}, remember=\k as \prev (initially 0)] + \unscaledx in \cubex + { + \pgfmathsetmacro{\x}{\unscaledx*\scale} + \coordinate (a) at (\k-\x , \y/2 , \z/2); + \coordinate (b) at (\k-\x ,-\y/2 , \z/2); + \coordinate (c) at (\k ,-\y/2 , \z/2); + \coordinate (d) at (\k , \y/2 , \z/2); + \coordinate (e) at (\k , \y/2 ,-\z/2); + \coordinate (f) at (\k ,-\y/2 ,-\z/2); + \coordinate (g) at (\k-\x ,-\y/2 ,-\z/2); + \coordinate (h) at (\k-\x , \y/2 ,-\z/2); + + \draw [box] + (d) -- (a) -- (b) -- (c) -- cycle + (d) -- (a) -- (h) -- (e) -- cycle + %dotted edges + (f) edge (g) + (b) edge (g) + (h) edge (g) + ; + \path (b) edge ["\xlabel"',midway] (c); + + \xdef\LastEastx{\k} %\k persists as \LastEastx after loop + }%Loop ends + \draw [box] (d) -- (e) -- (f) -- (c) -- cycle; %East face of last box + + \coordinate (a1) at (0 , \y/2 , \z/2); + \coordinate (b1) at (0 ,-\y/2 , \z/2); + \tikzstyle{depthlabel}=[pos=0,text width=\z,text centered,sloped] + + \path (c) edge ["\small\zlabel"',depthlabel](f); %depth label + \path (b1) edge ["\ylabel",midway] (a1); %height label + + + \tikzstyle{captionlabel}=[text width=15*\LastEastx/\scale,text centered] + \path (\LastEastx/2,-\y/2,+\z/2) + (0,-25pt) coordinate (cap) + edge ["\textcolor{black}{ \bf \caption}"',captionlabel](cap) ; %Block caption/pic object label + + %Define nodes to be used outside on the pic object + \coordinate (\name-west) at (0,0,0) ; + \coordinate (\name-east) at (\LastEastx, 0,0) ; + \coordinate (\name-north) at (\LastEastx/2,\y/2,0); + \coordinate (\name-south) at (\LastEastx/2,-\y/2,0); + \coordinate (\name-anchor) at (\LastEastx/2, 0,0) ; + + \coordinate (\name-near) at (\LastEastx/2,0,\z/2); + \coordinate (\name-far) at (\LastEastx/2,0,-\z/2); + + \coordinate (\name-nearwest) at (0,0,\z/2); + \coordinate (\name-neareast) at (\LastEastx,0,\z/2); + \coordinate (\name-farwest) at (0,0,-\z/2); + \coordinate (\name-fareast) at (\LastEastx,0,-\z/2); + + \coordinate (\name-northeast) at (\name-north-|\name-east); + \coordinate (\name-northwest) at (\name-north-|\name-west); + \coordinate (\name-southeast) at (\name-south-|\name-east); + \coordinate (\name-southwest) at (\name-south-|\name-west); + + \coordinate (\name-nearnortheast) at (\LastEastx, \y/2, \z/2); + \coordinate (\name-farnortheast) at (\LastEastx, \y/2,-\z/2); + \coordinate (\name-nearsoutheast) at (\LastEastx,-\y/2, \z/2); + \coordinate (\name-farsoutheast) at (\LastEastx,-\y/2,-\z/2); + + \coordinate (\name-nearnorthwest) at (0, \y/2, \z/2); + \coordinate (\name-farnorthwest) at (0, \y/2,-\z/2); + \coordinate (\name-nearsouthwest) at (0,-\y/2, \z/2); + \coordinate (\name-farsouthwest) at (0,-\y/2,-\z/2); + + }, + /boxblock/.search also={/tikz}, + /boxblock/.cd, + width/.store in=\cubex, + height/.store in=\cubey, + depth/.store in=\cubez, + scale/.store in=\scale, + xlabel/.store in=\boxlabels, + ylabel/.store in=\ylabel, + zlabel/.store in=\zlabel, + caption/.store in=\caption, + name/.store in=\name, + fill/.store in=\fill, + opacity/.store in=\opacity, + fill={rgb:red,5;green,5;blue,5;white,15}, + opacity=0.4, + width=2, + height=13, + depth=15, + scale=.2, + xlabel={{"","","","","","","","","",""}}, + ylabel=, + zlabel=, + caption=, + name=, +} diff --git a/layers/Conv.sty b/layers/Conv.sty deleted file mode 100644 index 1981139..0000000 --- a/layers/Conv.sty +++ /dev/null @@ -1,55 +0,0 @@ -\ProvidesPackage{Conv} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw conv combination -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\tikzset{Conv/.pic={\tikzset{/block/.cd,#1} -% conv layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [conv] (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-\cubescale*\x,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- ++(\cubescale*\x,0,0) coordinate (c) -- cycle - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) (f) edge (g) - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- ++(+\cubescale*\x,0,0) coordinate (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -\draw [conv] - (\SecondLastLayerOriginX*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) -- ++(0,-\cubescale*\cubey,0) coordinate (f) -- (c) -- cycle ; -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale, 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=, -blockname=, -} diff --git a/layers/ConvRelu.sty b/layers/ConvRelu.sty deleted file mode 100644 index 7489085..0000000 --- a/layers/ConvRelu.sty +++ /dev/null @@ -1,69 +0,0 @@ -\ProvidesPackage{ConvRelu} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw convRelu -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\tikzset{ConvRelu/.pic={\tikzset{/block/.cd,#1} -% conv layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [relu] - (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-\cubescale*\x/3,0,0) coordinate (a1) -- ++(0,-\cubescale*\cubey,0) coordinate (b1) -- ++(\cubescale*\x/3,0,0) coordinate (c) -- cycle - (d) -- (a1) -- ++(0,0,-\cubescale*\cubez) coordinate (h1) -- ++(+\cubescale*\x/3,0,0) coordinate (e) -- cycle; -\draw [conv] - (d) -- ++(-\cubescale*\x,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- (c) -- cycle - (d) -- (e) edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) (f) edge (g) - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -\draw[relu,draw={rgb:black,1}] -(d) --- (e) --- ++(0,-\cubescale*\cubey,0) coordinate (f) --- (c) -- cycle; - -\draw [conv] - (\SecondLastLayerOriginX*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) -- ++(0,-\cubescale*\cubey,0) coordinate (f) -- (c) -- cycle ; -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - %(0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - % Black Label name - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (d)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale, 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); -%\draw (0.5*\SecondLastLayerOriginX*\cubescale , -\cubescale*\cubey/2 , -\cubescale*\cubez/2) coordinate (\cubeblockname-center); -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=dsdasfkdas, -blockname=a, -} - diff --git a/layers/ConvReluPool.sty b/layers/ConvReluPool.sty deleted file mode 100644 index 8e40c7e..0000000 --- a/layers/ConvReluPool.sty +++ /dev/null @@ -1,71 +0,0 @@ -\ProvidesPackage{ConvReluPool} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw convRelu+pooling combination -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\tikzset{ConvReluPool/.pic={\tikzset{/block/.cd,#1} -% conv layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [relu] - (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-\cubescale*\x/3,0,0) coordinate (a1) -- ++(0,-\cubescale*\cubey,0) coordinate (b1) -- ++(\cubescale*\x/3,0,0) coordinate (c) -- cycle - (d) -- (a1) -- ++(0,0,-\cubescale*\cubez) coordinate (h1) -- ++(+\cubescale*\x/3,0,0) coordinate (e) -- cycle; -\draw [conv] - (d) -- ++(-\cubescale*\x,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- (c) -- cycle - (d) -- (e) edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) (f) edge (g) - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -% Pooling layer -\draw [pool] - (\SecondLastLayerOriginX*\cubescale +1*\cubescale,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-1*\cubescale,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- ++(1*\cubescale,0,0) coordinate (c) -- cycle - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) -- ++(0,-\cubescale*\cubey,0) coordinate (f) edge (g) -- (c) -- cycle - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- (e) -- cycle; - -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - %(d) edge ["\bf\cubeblockname"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (e) - - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - %(0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (d)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale + 1*\cubescale , 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); - -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -\path (\cubeblockname-anchor) -- ++(0,\cubescale*\cubey/2,0) coordinate (\cubeblockname-north); -\path (\cubeblockname-anchor) -- ++(0,-\cubescale*\cubey/2,0) coordinate (\cubeblockname-south); -\path (\cubeblockname-east) -- ++(-2*\cubescale,\cubescale*\cubey/2,0) coordinate (\cubeblockname-lastnorth); -\path (\cubeblockname-east) -- ++(-2*\cubescale,-\cubescale*\cubey/2,0) coordinate (\cubeblockname-lastsouth); -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=, -blockname=, -} diff --git a/layers/Deconv.sty b/layers/Deconv.sty deleted file mode 100644 index cf98ad3..0000000 --- a/layers/Deconv.sty +++ /dev/null @@ -1,58 +0,0 @@ -\ProvidesPackage{Deconv} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw Deconvolution layer -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\tikzset{Deconv/.pic={\tikzset{/block/.cd,#1} -% deconv layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [deconv] (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-\cubescale*\x,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- ++(\cubescale*\x,0,0) coordinate (c) -- cycle - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) (f) edge (g) - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- ++(+\cubescale*\x,0,0) coordinate (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -\draw [deconv] - (\SecondLastLayerOriginX*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) -- ++(0,-\cubescale*\cubey,0) coordinate (f) -- (c) -- cycle ; -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale, 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -\path (\cubeblockname-anchor) -- ++(0,\cubescale*\cubey/2,0) coordinate (\cubeblockname-north); -\path (\cubeblockname-anchor) -- ++(0,-\cubescale*\cubey/2,0) coordinate (\cubeblockname-south); - -\path (\cubeblockname-anchor) -- ++(0,0,\cubescale*\cubez/2) coordinate (\cubeblockname-out); -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=, -blockname=, -} diff --git a/layers/DomainTransform.sty b/layers/DomainTransform.sty deleted file mode 100644 index 7e15afa..0000000 --- a/layers/DomainTransform.sty +++ /dev/null @@ -1,64 +0,0 @@ -\ProvidesPackage{DomainTransform} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw generic sequential layer -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - -\tikzset{DomainTransform/.pic={\tikzset{/block/.cd,#1} -% conv layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [layer] (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-\cubescale*\x,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- ++(\cubescale*\x,0,0) coordinate (c) -- cycle - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) (f) edge (g) - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- ++(+\cubescale*\x,0,0) coordinate (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -\draw [layer] - (\SecondLastLayerOriginX*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) -- ++(0,-\cubescale*\cubey,0) coordinate (f) -- (c) -- cycle ; -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale + 2*\cubescale , 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -\path (\cubeblockname-anchor) -- ++(0,\cubescale*\cubey/2,0) coordinate (\cubeblockname-north); -\path (\cubeblockname-anchor) -- ++(0,-\cubescale*\cubey/2,0) coordinate (\cubeblockname-south); - - - -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=, -blockname=, -} - diff --git a/layers/FullyConnected.sty b/layers/FullyConnected.sty deleted file mode 100644 index 3fe83ba..0000000 --- a/layers/FullyConnected.sty +++ /dev/null @@ -1,55 +0,0 @@ -\ProvidesPackage{FullyConnected} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw conv combination -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\tikzset{FullyConnected/.pic={\tikzset{/block/.cd,#1} -% conv layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [fullyconn] (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-\cubescale*\x,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- ++(\cubescale*\x,0,0) coordinate (c) -- cycle - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) (f) edge (g) - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- ++(+\cubescale*\x,0,0) coordinate (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -\draw [fullyconn] - (\SecondLastLayerOriginX*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) -- ++(0,-\cubescale*\cubey,0) coordinate (f) -- (c) -- cycle ; -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale + 2*\cubescale , 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=, -blockname=, -} diff --git a/layers/FullyConnectedRelu.sty b/layers/FullyConnectedRelu.sty deleted file mode 100644 index caeb796..0000000 --- a/layers/FullyConnectedRelu.sty +++ /dev/null @@ -1,61 +0,0 @@ -\ProvidesPackage{FullyConnectedRelu} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw fully connected -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\tikzset{FullyConnectedRelu/.pic={\tikzset{/block/.cd,#1} -% conv layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [fullyrelu] - (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-\cubescale*\x/3,0,0) coordinate (a1) -- ++(0,-\cubescale*\cubey,0) coordinate (b1) -- ++(\cubescale*\x/3,0,0) coordinate (c) -- cycle - (d) -- (a1) -- ++(0,0,-\cubescale*\cubez) coordinate (h1) -- ++(+\cubescale*\x/3,0,0) coordinate (e) -- cycle; -\draw [fullyconn] - (d) -- ++(-\cubescale*\x,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- (c) -- cycle - (d) -- (e) edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) (f) edge (g) - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -\draw [fullyconn] - (\SecondLastLayerOriginX*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) -- ++(0,-\cubescale*\cubey,0) coordinate (f) -- (c) -- cycle ; -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale, 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); -%\draw (0.5*\SecondLastLayerOriginX*\cubescale , -\cubescale*\cubey/2 , -\cubescale*\cubez/2) coordinate (\cubeblockname-center); -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=, -blockname=, -} - diff --git a/layers/GenericBox.sty b/layers/GenericBox.sty deleted file mode 100644 index 1981139..0000000 --- a/layers/GenericBox.sty +++ /dev/null @@ -1,55 +0,0 @@ -\ProvidesPackage{Conv} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw conv combination -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\tikzset{Conv/.pic={\tikzset{/block/.cd,#1} -% conv layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [conv] (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-\cubescale*\x,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- ++(\cubescale*\x,0,0) coordinate (c) -- cycle - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) (f) edge (g) - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- ++(+\cubescale*\x,0,0) coordinate (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -\draw [conv] - (\SecondLastLayerOriginX*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) -- ++(0,-\cubescale*\cubey,0) coordinate (f) -- (c) -- cycle ; -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale, 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=, -blockname=, -} diff --git a/layers/GenericSequentialLayer.sty b/layers/GenericSequentialLayer.sty deleted file mode 100644 index cbebf98..0000000 --- a/layers/GenericSequentialLayer.sty +++ /dev/null @@ -1,58 +0,0 @@ -\ProvidesPackage{GenericSequentialLayer} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw generic sequential layer -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\tikzset{GenericSequentialLayer/.pic={\tikzset{/block/.cd,#1} -% conv layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [layer] (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-\cubescale*\x,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- ++(\cubescale*\x,0,0) coordinate (c) -- cycle - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) (f) edge (g) - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- ++(+\cubescale*\x,0,0) coordinate (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -\draw [layer] - (\SecondLastLayerOriginX*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) -- ++(0,-\cubescale*\cubey,0) coordinate (f) -- (c) -- cycle ; -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale + 2*\cubescale , 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -\path (\cubeblockname-anchor) -- ++(0,\cubescale*\cubey/2,0) coordinate (\cubeblockname-north); -\path (\cubeblockname-anchor) -- ++(0,-\cubescale*\cubey/2,0) coordinate (\cubeblockname-south); -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=, -blockname=, -} - diff --git a/layers/Gray.sty b/layers/Gray.sty deleted file mode 100644 index c14e64a..0000000 --- a/layers/Gray.sty +++ /dev/null @@ -1,57 +0,0 @@ -\ProvidesPackage{Gray} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw Deconvolution layer -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\tikzset{Gray/.pic={\tikzset{/block/.cd,#1} -% gray layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [gray] (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-\cubescale*\x,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- ++(\cubescale*\x,0,0) coordinate (c) -- cycle - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) (f) edge (g) - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- ++(+\cubescale*\x,0,0) coordinate (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -\draw [gray] - (\SecondLastLayerOriginX*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) -- ++(0,-\cubescale*\cubey,0) coordinate (f) -- (c) -- cycle ; -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale, 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -\path (\cubeblockname-anchor) -- ++(0,\cubescale*\cubey/2,0) coordinate (\cubeblockname-north); -\path (\cubeblockname-anchor) -- ++(0,-\cubescale*\cubey/2,0) coordinate (\cubeblockname-south); -\path (\cubeblockname-anchor) -- ++(0,0,\cubescale*\cubez/2) coordinate (\cubeblockname-out); -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=, -blockname=, -} diff --git a/layers/Multiply.sty b/layers/Multiply.sty deleted file mode 100644 index 28b493d..0000000 --- a/layers/Multiply.sty +++ /dev/null @@ -1,42 +0,0 @@ -\ProvidesPackage{Multiply} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw Elementwise operations -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\tikzset{Multiply/.pic={\tikzset{/block/.cd,#1} - -\draw (0,0,0) circle (\SphereRadius); - -\draw (0,0,0) coordinate (\cubeblockname-anchor); -\draw (\SphereRadius,0,0) coordinate (\cubeblockname-east); -\draw (-\SphereRadius,0,0) coordinate (\cubeblockname-west); -\draw (0,\SphereRadius,0) coordinate (\cubeblockname-north); -\draw (0,-\SphereRadius,0) coordinate (\cubeblockname-south); - -\draw[very thick] (-2*\SphereRadius/4,-2*\SphereRadius/4,0) -- (2*\SphereRadius/4,2*\SphereRadius/4,0); -\draw[very thick] (2*\SphereRadius/4,-2*\SphereRadius/4,0) -- (-2*\SphereRadius/4,2*\SphereRadius/4,0); - -\shade[ball color=blue,opacity=0.30] (0,0,0) circle (\SphereRadius); - -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -radius/.store in=\SphereRadius, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -radius=0.5, -blocklabel=, -blockname=, -} diff --git a/layers/RightBandedBox.sty b/layers/RightBandedBox.sty new file mode 100644 index 0000000..7d74a51 --- /dev/null +++ b/layers/RightBandedBox.sty @@ -0,0 +1,130 @@ +\ProvidesPackage{RightBandedBox} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% This Block can draw simple block of boxes with custom colors. +% Can be used for conv, deconv etc +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\tikzset{RightBandedBox/.pic={\tikzset{/block/.cd,#1} + + \tikzstyle{box}=[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=\opacity, pic actions,fill=\fill] + + \tikzstyle{band}=[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=\bandopacity, pic actions,fill=\bandfill,draw=\bandfill] + + \pgfmathsetmacro{\y}{\cubey*\scale} + \pgfmathsetmacro{\z}{\cubez*\scale} + + %Multiple concatenated boxes + \foreach[count=\i,% + evaluate=\i as \xlabel using {array({\boxlabels},\i-1)},% + evaluate=\unscaledx as \k using {\unscaledx*\scale+\prev}, remember=\k as \prev (initially 0)] + \unscaledx in \cubex + { + \pgfmathsetmacro{\x}{\unscaledx*\scale} + \coordinate (a) at (\k-\x , \y/2 , \z/2); + \coordinate (art) at (\k-\x/3 , \y/2 , \z/2); %a_right_third + \coordinate (b) at (\k-\x ,-\y/2 , \z/2); + \coordinate (brt) at (\k-\x/3 ,-\y/2 , \z/2); %b_right_third + \coordinate (c) at (\k ,-\y/2 , \z/2); + \coordinate (d) at (\k , \y/2 , \z/2); + \coordinate (e) at (\k , \y/2 ,-\z/2); + \coordinate (f) at (\k ,-\y/2 ,-\z/2); + \coordinate (g) at (\k-\x ,-\y/2 ,-\z/2); + \coordinate (h) at (\k-\x , \y/2 ,-\z/2); + \coordinate (hrt) at (\k-\x/3 , \y/2 ,-\z/2); %h_right_third + + %fill box color + \draw [box] + (d) -- (a) -- (b) -- (c) -- cycle + (d) -- (a) -- (h) -- (e) -- cycle; + %dotted edges + \draw [box] + (f) edge (g) + (b) edge (g) + (h) edge (g); + %fill band color + \draw [band] + (d) -- (art) -- (brt) -- (c) -- cycle + (d) -- (art) -- (hrt) -- (e) -- cycle; + %draw edges again which were covered by band + \draw [box,fill opacity=0] + (d) -- (a) -- (b) -- (c) -- cycle + (d) -- (a) -- (h) -- (e) -- cycle; + + \path (b) edge ["\xlabel"',midway] (c); + + \xdef\LastEastx{\k} %\k persists as \LastEastx after loop + }%Loop ends + \draw [box] (d) -- (e) -- (f) -- (c) -- cycle; %East face of last box + \draw [band] (d) -- (e) -- (f) -- (c) -- cycle; %East face of last box + \draw [pic actions] (d) -- (e) -- (f) -- (c) -- cycle; %East face edges of last box + + \coordinate (a1) at (0 , \y/2 , \z/2); + \coordinate (b1) at (0 ,-\y/2 , \z/2); + \tikzstyle{depthlabel}=[pos=0,text width=14*\z,text centered,sloped] + + \path (c) edge ["\small\zlabels"',depthlabel](f); %depth label + \path (b1) edge ["\ylabel",midway] (a1); %height label + + \tikzstyle{captionlabel}=[text width=15*\LastEastx/\scale,text centered] + \path (\LastEastx/2,-\y/2,+\z/2) + (0,-25pt) coordinate (cap) + edge ["\textcolor{black}{ \bf \caption}"',captionlabel] (cap); %Block caption/pic object label + + %Define nodes to be used outside on the pic object + \coordinate (\name-west) at (0,0,0) ; + \coordinate (\name-east) at (\LastEastx, 0,0) ; + \coordinate (\name-north) at (\LastEastx/2,\y/2,0); + \coordinate (\name-south) at (\LastEastx/2,-\y/2,0); + \coordinate (\name-anchor) at (\LastEastx/2, 0,0) ; + + \coordinate (\name-near) at (\LastEastx/2,0,\z/2); + \coordinate (\name-far) at (\LastEastx/2,0,-\z/2); + + \coordinate (\name-nearwest) at (0,0,\z/2); + \coordinate (\name-neareast) at (\LastEastx,0,\z/2); + \coordinate (\name-farwest) at (0,0,-\z/2); + \coordinate (\name-fareast) at (\LastEastx,0,-\z/2); + + \coordinate (\name-northeast) at (\name-north-|\name-east); + \coordinate (\name-northwest) at (\name-north-|\name-west); + \coordinate (\name-southeast) at (\name-south-|\name-east); + \coordinate (\name-southwest) at (\name-south-|\name-west); + + \coordinate (\name-nearnortheast) at (\LastEastx, \y/2, \z/2); + \coordinate (\name-farnortheast) at (\LastEastx, \y/2,-\z/2); + \coordinate (\name-nearsoutheast) at (\LastEastx,-\y/2, \z/2); + \coordinate (\name-farsoutheast) at (\LastEastx,-\y/2,-\z/2); + + \coordinate (\name-nearnorthwest) at (0, \y/2, \z/2); + \coordinate (\name-farnorthwest) at (0, \y/2,-\z/2); + \coordinate (\name-nearsouthwest) at (0,-\y/2, \z/2); + \coordinate (\name-farsouthwest) at (0,-\y/2,-\z/2); + }, + /block/.search also={/tikz}, + /block/.cd, + width/.store in=\cubex, + height/.store in=\cubey, + depth/.store in=\cubez, + scale/.store in=\scale, + xlabel/.store in=\boxlabels, + ylabel/.store in=\ylabel, + zlabel/.store in=\zlabels, + caption/.store in=\caption, + name/.store in=\name, + fill/.store in=\fill, + bandfill/.store in=\bandfill, + opacity/.store in=\opacity, + bandopacity/.store in=\bandopacity, + fill={rgb:red,5;green,5;blue,5;white,15}, + bandfill={rgb:red,5;green,5;blue,5;white,5}, + opacity=0.4, + bandopacity=0.6, + width=2, + height=13, + depth=15, + scale=.2, + xlabel={{"","","","","","","","","",""}}, + ylabel=, + zlabel=, + caption=, + name=, +} diff --git a/layers/SigmaSum.sty b/layers/SigmaSum.sty deleted file mode 100644 index 694512c..0000000 --- a/layers/SigmaSum.sty +++ /dev/null @@ -1,42 +0,0 @@ -\ProvidesPackage{SigmaSum} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw Reduction sum operations -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\tikzset{SigmaSum/.pic={\tikzset{/block/.cd,#1} - -\draw (0,0,0) circle [radius=\SphereRadius] node[scale=4*\SphereRadius] {$\Sigma$}; - -\draw (0,0,0) coordinate (\cubeblockname-anchor); -\draw (\SphereRadius,0,0) coordinate (\cubeblockname-east); -\draw (-\SphereRadius,0,0) coordinate (\cubeblockname-west); -\draw (0,\SphereRadius,0) coordinate (\cubeblockname-north); -\draw (0,-\SphereRadius,0) coordinate (\cubeblockname-south); - -%\draw[very thick] (-2*\SphereRadius/4,-2*\SphereRadius/4,0) -- (2*\SphereRadius/4,2*\SphereRadius/4,0); -%\draw [very thick] (c1-east)++(0,\up,0) node [anchor=south west, inner sep = 10, xshift=10,scale=1.2]{$p_{i,j}^{(k)} - p_{(i+\Delta i),(j+\Delta j)}^{(k)}$} -- node {\midarrow} (abs1-west-up); - -\shade[ball color=green,opacity=0.30] (0,0,0) circle (\SphereRadius); - -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -radius/.store in=\SphereRadius, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -radius=0.5, -blocklabel=, -blockname=, -} diff --git a/layers/Sum.sty b/layers/Sum.sty deleted file mode 100644 index d99c2fc..0000000 --- a/layers/Sum.sty +++ /dev/null @@ -1,42 +0,0 @@ -\ProvidesPackage{Sum} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw Elementwise operations -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\tikzset{Sum/.pic={\tikzset{/block/.cd,#1} - -\draw (0,0,0) circle (\SphereRadius); - -\draw (0,0,0) coordinate (\cubeblockname-anchor); -\draw (\SphereRadius,0,0) coordinate (\cubeblockname-east); -\draw (-\SphereRadius,0,0) coordinate (\cubeblockname-west); -\draw (0,\SphereRadius,0) coordinate (\cubeblockname-north); -\draw (0,-\SphereRadius,0) coordinate (\cubeblockname-south); - -\draw[very thick] (-2*\SphereRadius/4,0,0) -- (2*\SphereRadius/4,0,0); -\draw[very thick] (0,-2*\SphereRadius/4,0) -- (0,2*\SphereRadius/4,0); - -\shade[ball color=blue,opacity=0.30] (0,0,0) circle (\SphereRadius); - -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -radius/.store in=\SphereRadius, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -radius=0.5, -blocklabel=, -blockname=, -} diff --git a/layers/Up.sty b/layers/Up.sty deleted file mode 100644 index d8f455b..0000000 --- a/layers/Up.sty +++ /dev/null @@ -1,58 +0,0 @@ -\ProvidesPackage{Up} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw Deconvolution layer -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\tikzset{Up/.pic={\tikzset{/block/.cd,#1} -% deconv layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [up] (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(-\cubescale*\x,0,0) coordinate (a) -- ++(0,-\cubescale*\cubey,0) coordinate (b) edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) -- ++(\cubescale*\x,0,0) coordinate (c) -- cycle - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) (f) edge (g) - (d) -- (a) -- ++(0,0,-\cubescale*\cubez) coordinate (h) edge (g) -- ++(+\cubescale*\x,0,0) coordinate (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -\draw [up] - (\SecondLastLayerOriginX*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate - (d) -- ++(0,0,-\cubescale*\cubez) coordinate (e) -- ++(0,-\cubescale*\cubey,0) coordinate (f) -- (c) -- cycle ; -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale, 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -\path (\cubeblockname-anchor) -- ++(0,\cubescale*\cubey/2,0) coordinate (\cubeblockname-north); -\path (\cubeblockname-anchor) -- ++(0,-\cubescale*\cubey/2,0) coordinate (\cubeblockname-south); - -\path (\cubeblockname-anchor) -- ++(0,0,\cubescale*\cubez/2) coordinate (\cubeblockname-out); -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=, -blockname=, -} diff --git a/layers/UpConvRelu.sty b/layers/UpConvRelu.sty deleted file mode 100644 index aea1592..0000000 --- a/layers/UpConvRelu.sty +++ /dev/null @@ -1,126 +0,0 @@ -\ProvidesPackage{UpConvRelu} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%This Block can draw Upsampling+convRelu combination -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\tikzset{UpConvRelu/.pic={\tikzset{/block/.cd,#1} - -% Upsampling layer -\draw [deconv,fill=\upcolor] -(0,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate (d) --- ++(-1*\cubescale,0,0) coordinate (a) --- ++(0,-\cubescale*\cubey,0) coordinate (b) -edge coordinate[pos=1] (g) ++(0,0,-\cubescale*\cubez) --- ++(1*\cubescale,0,0) coordinate (c) -edge coordinate[pos=1] (f) ++(0,0,-\cubescale*\cubez) --- cycle - - -(d) --- ++(0,0,-\cubescale*\cubez) coordinate (e) -edge (f) --- ++(-\cubescale*1,0,0) coordinate (h) -edge (g) --- (a) --- cycle - -(g) edge (f) -; - -\fill[deconv] (e)--(f)--(g)--(h)--cycle; -\fill[deconv] (c)--(f)--(g)--(b)--cycle; -\fill[deconv] (a)--(b)--(g)--(h)--cycle; - -\path (d) -- ++(-1*\cubescale,0,-\cubescale*\cubez/2) coordinate (\cubeblockname-upnorth); -\path (c) -- ++(-1*\cubescale,0,-\cubescale*\cubez/2) coordinate (\cubeblockname-upsouth); - -%% conv layers -\foreach \x [ count=\i,evaluate=\x as \numfilters using {array({\cubexlabel},\i-1)}, evaluate=\x as \k using {\x+\prev}, remember=\k as \prev (initially 0)] in \cubex -{ -\draw [relu,fill=\fillcolor,draw=\fillcolor] - (\k*\cubescale ,\cubescale*\cubey/2 , \cubescale*\cubez/2) coordinate (d) - -- ++(-\cubescale*\x/3,0,0) coordinate (a1) - -- ++(0,-\cubescale*\cubey,0) coordinate (b1) - -- ++(\cubescale*\x/3,0,0) coordinate (c) -- cycle - - (d) - -- (a1) - -- ++(0,0,-\cubescale*\cubez) coordinate (h1) - -- ++(+\cubescale*\x/3,0,0) coordinate (e) -- cycle - ; -\draw [conv,fill=\fillcolor] - (d) - -- ++(-\cubescale*\x,0,0) coordinate (a) - -- ++(0,-\cubescale*\cubey,0) coordinate (b) - edge coordinate [pos=1] (g) ++(0,0,-\cubescale*\cubez) - -- (c) -- cycle - - (d) - -- (e) - edge coordinate[pos=1] (f) ++(0,-\cubescale*\cubey,0) - - (f) - edge (g) - - (d) - -- (a) - -- ++(0,0,-\cubescale*\cubez) coordinate (h) - edge (g) - -- (e) -- cycle; -% labelling each conv layer with number of filters in each layer -\path [every edge/.append style={pic actions}] - (b) edge ["\numfilters"',midway] (b -| c); -\xdef\SecondLastLayerOriginX{\k} %making value of \k available after the loop as well -} -\draw[relu,fill=\fillcolor,draw={rgb:black,1}] - (d) - -- (e) - -- ++(0,-\cubescale*\cubey,0) coordinate (f) - -- (c) -- cycle; - - - - -% Labelling the block -\path [every edge/.append style={pic actions}] - % name or size of depth dimension - (c) edge ["\small\cubezlabel"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (f) - %(d) edge ["\bf\cubeblockname"',pos=0,text width=14*\cubescale*\cubez,text centered,sloped] (e) - - % name or size of height dimension - (0,0,\cubez*\cubescale/2) coordinate (o) edge ["\cubeylabel",midway] (o |- o) - % Block name - %(0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (o)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - (0,-\cubey*\cubescale/2,+\cubez*\cubescale/2) coordinate (d)+(0,-20pt) coordinate (o1) edge ["\textcolor{black}{ \bf \cubeblocklabel}"',midway,white] (o1 -| c) ; - -\draw (\SecondLastLayerOriginX*\cubescale, 0,0) coordinate (\cubeblockname-east); -\draw (0,0,0) coordinate (\cubeblockname-west); -\path (\cubeblockname-west) -- (\cubeblockname-east) coordinate[pos=0.5] (\cubeblockname-anchor); -\path (\cubeblockname-anchor) -- ++(0,\cubescale*\cubey/2,0) coordinate (\cubeblockname-north); -\path (\cubeblockname-anchor) -- ++(0,-\cubescale*\cubey/2,0) coordinate (\cubeblockname-south); -}, -/block/.search also={/tikz}, -/block/.cd, -width/.store in=\cubex, -height/.store in=\cubey, -depth/.store in=\cubez, -scale/.store in=\cubescale, -numFilters/.store in=\cubexlabel, -ylabel/.store in=\cubeylabel, -zlabel/.store in=\cubezlabel, -blocklabel/.store in=\cubeblocklabel, -blockname/.store in=\cubeblockname, -fillcolor/.store in=\fillcolor, -upcolor/.store in=\upcolor, -fillcolor = {rgb:yellow,5;red,5;white,5}, -upcolor = {rgb:blue,5;green,2.5;white,5}, -width=2, -height=13, -depth=15, -scale=.2, -numFilters=, -ylabel=, -zlabel=, -blocklabel=, -blockname=, -} diff --git a/layers/init.tex b/layers/init.tex index b28dcba..9a9b3eb 100644 --- a/layers/init.tex +++ b/layers/init.tex @@ -2,34 +2,10 @@ \usetikzlibrary{quotes,arrows.meta} \usetikzlibrary{positioning} -\newcommand*{\SecondLastLayerOriginX}{No value} \def\edgecolor{rgb:blue,4;red,1;green,4;black,3} \newcommand{\midarrow}{\tikz \draw[-Stealth,line width =0.8mm,draw=\edgecolor] (-0.3,0) -- ++(0.3,0);} -\tikzstyle{conv} =[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=0.4, pic actions, fill={rgb:yellow,5;red,2.5;white,5}] -\tikzstyle{relu} =[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=0.6, pic actions, fill={rgb:yellow,5;red,5;white,5},draw={rgb:yellow,5;red,5;white,5}] -\tikzstyle{pool} =[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=0.6, pic actions, fill={rgb:red,1;black,0.3}]% colour coeff will be normalized to 1 -\tikzstyle{deconv}=[every edge/.append style={pic actions, densely dashed, opacity=.5},fill opacity=0.7, pic actions, fill={rgb:blue,5;green,2.5;white,5}] -\tikzstyle{gray}=[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=0.4, pic actions, fill={rgb:black,5;white,5}] -\tikzstyle{up}=[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=0.5, pic actions, fill={rgb:blue,5;green,2.5;white,1}] -\tikzstyle{layer} =[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=0.4, pic actions] -\tikzstyle{fullyconn} =[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=0.4, pic actions, fill={rgb:blue,5;red,2.5;white,5}] -\tikzstyle{fullyrelu} =[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=0.6, pic actions, fill={rgb:blue,5;red,5;white,4},draw={rgb:blue,5;red,5;white,4}] -\tikzstyle{DT} =[every edge/.append style={pic actions, densely dashed, opacity=.7},fill opacity=0.4, pic actions, fill={rgb:blue,1;red,2;green,4;white,7}] - -\usepackage{ConvReluPool} -\usepackage{Gray} -\usepackage{ConvRelu} -\usepackage{Conv} -\usepackage{Deconv} -\usepackage{UpConvRelu} -\usepackage{Up} -%\usepackage{Eltwise} -\usepackage{Multiply} -\usepackage{Sum} -\usepackage{SigmaSum} -\usepackage{FullyConnected} -\usepackage{FullyConnectedRelu} -\usepackage{DomainTransform} -\usepackage{GenericSequentialLayer} +\usepackage{Ball} +\usepackage{Box} +\usepackage{RightBandedBox}