diff --git a/Bericht/Bachelorarbeit_Wasels.pptx b/Bericht/Bachelorarbeit_Wasels.pptx new file mode 100644 index 0000000000000000000000000000000000000000..df3833ed5a6b94f8caee59f5e180a0f7edd960b4 Binary files /dev/null and b/Bericht/Bachelorarbeit_Wasels.pptx differ diff --git a/Bericht/Bachlorarbeit_final.pdf b/Bericht/Bachlorarbeit_final.pdf new file mode 100644 index 0000000000000000000000000000000000000000..508b52f3630a6a7cdb9c2f4d05100ab3f10e0632 Binary files /dev/null and b/Bericht/Bachlorarbeit_final.pdf differ diff --git a/Bericht/Bilder/64_volume_rescaled.png b/Bericht/Bilder/64_volume_rescaled.png new file mode 100644 index 0000000000000000000000000000000000000000..800e45e1c40358c229fd3bbc23d6a6ea81d20856 Binary files /dev/null and b/Bericht/Bilder/64_volume_rescaled.png differ diff --git "a/Bericht/Bilder/Pr\303\244si_Conv_1.png" "b/Bericht/Bilder/Pr\303\244si_Conv_1.png" new file mode 100644 index 0000000000000000000000000000000000000000..9e1c5df8bb5f56d4ecdaeb48b6baa6c5729ff2c2 Binary files /dev/null and "b/Bericht/Bilder/Pr\303\244si_Conv_1.png" differ diff --git "a/Bericht/Bilder/Pr\303\244si_Conv_2.png" "b/Bericht/Bilder/Pr\303\244si_Conv_2.png" new file mode 100644 index 0000000000000000000000000000000000000000..53e6ce1a707e6cdc5a34b824e233a28ac82e0232 Binary files /dev/null and "b/Bericht/Bilder/Pr\303\244si_Conv_2.png" differ diff --git "a/Bericht/Bilder/Pr\303\244si_Conv_3.png" "b/Bericht/Bilder/Pr\303\244si_Conv_3.png" new file mode 100644 index 0000000000000000000000000000000000000000..4f0056ca369d865653aaf4eadc8d70aac5ce25cf Binary files /dev/null and "b/Bericht/Bilder/Pr\303\244si_Conv_3.png" differ diff --git "a/Bericht/Bilder/Pr\303\244si_UNet.png" "b/Bericht/Bilder/Pr\303\244si_UNet.png" new file mode 100644 index 0000000000000000000000000000000000000000..3c91296070e11a0647a82d4ba11fefee3550dc2a Binary files /dev/null and "b/Bericht/Bilder/Pr\303\244si_UNet.png" differ diff --git "a/Bericht/Bilder/Pr\303\244si_UNet_MPIE.png" "b/Bericht/Bilder/Pr\303\244si_UNet_MPIE.png" new file mode 100644 index 0000000000000000000000000000000000000000..f19ee5045442ab1e571e8336bb3eac7d955f14d9 Binary files /dev/null and "b/Bericht/Bilder/Pr\303\244si_UNet_MPIE.png" differ diff --git a/Bericht/Bilder/UNet_Architecture.svg b/Bericht/Bilder/UNet_Architecture.svg index 7f8b38e6dbf7a4718a0caa2ebfff67cd66f6cb71..22dfc68f391b710eadf0e04ab98ba5a8c6a35fd0 100644 --- a/Bericht/Bilder/UNet_Architecture.svg +++ b/Bericht/Bilder/UNet_Architecture.svg @@ -2,23 +2,23 @@ <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="210mm" - height="80mm" - viewBox="0 0 210 80" + width="360.37253mm" + height="140mm" + viewBox="0 0 360.37253 140" version="1.1" id="svg8" - inkscape:version="0.92.4 (5da689c313, 2019-01-14)" + inkscape:version="1.1 (c68e22c387, 2021-05-23)" sodipodi:docname="UNet_Architecture.svg" - inkscape:export-filename="E:\Data\damask3\Bericht\Bilder\UNet_Architecture.png" + inkscape:export-filename="F:\RWTH\HiWi_IEHK\DAMASK3\Bericht\Bilder\Präsi_UNet.png" inkscape:export-xdpi="96" - inkscape:export-ydpi="96"> + inkscape:export-ydpi="96" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> <defs id="defs2"> <marker @@ -31,7 +31,7 @@ inkscape:stockid="TriangleOutL"> <path transform="scale(0.8)" - style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" d="M 5.77,0 -2.88,5 V -5 Z" id="path7971" inkscape:connector-curvature="0" /> @@ -47,7 +47,7 @@ <path id="path6849" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" inkscape:connector-curvature="0" /> </marker> @@ -62,7 +62,7 @@ inkscape:collect="always"> <path transform="scale(0.8)" - style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" d="M 5.77,0 -2.88,5 V -5 Z" id="path5165" inkscape:connector-curvature="0" /> @@ -79,70 +79,10 @@ <path id="path4668" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" inkscape:connector-curvature="0" /> </marker> - <marker - inkscape:stockid="Arrow2Mend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Mend" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4553" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="scale(-0.6)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4547" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:isstock="true" - style="overflow:visible" - id="marker5167-2" - refX="0" - refY="0" - orient="auto" - inkscape:stockid="TriangleOutL"> - <path - inkscape:connector-curvature="0" - transform="scale(0.8)" - style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1.00000003pt;stroke-opacity:1" - d="M 5.77,0 -2.88,5 V -5 Z" - id="path5165-9" /> - </marker> - <marker - inkscape:isstock="true" - style="overflow:visible" - id="marker5167-2-6" - refX="0" - refY="0" - orient="auto" - inkscape:stockid="TriangleOutL"> - <path - inkscape:connector-curvature="0" - transform="scale(0.8)" - style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1.00000003pt;stroke-opacity:1" - d="M 5.77,0 -2.88,5 V -5 Z" - id="path5165-9-9" /> - </marker> <marker inkscape:isstock="true" style="overflow:visible" @@ -154,7 +94,7 @@ <path inkscape:connector-curvature="0" transform="scale(0.8)" - style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" d="M 5.77,0 -2.88,5 V -5 Z" id="path5165-4" /> </marker> @@ -169,7 +109,7 @@ <path inkscape:connector-curvature="0" transform="scale(0.8)" - style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" d="M 5.77,0 -2.88,5 V -5 Z" id="path5165-91" /> </marker> @@ -185,22 +125,7 @@ inkscape:connector-curvature="0" id="path6849-4" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="marker6851-9-3" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path6849-4-6" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -213,7 +138,7 @@ inkscape:stockid="TriangleOutL"> <path transform="scale(0.8)" - style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" d="M 5.77,0 -2.88,5 V -5 Z" id="path7971-6" inkscape:connector-curvature="0" /> @@ -228,7 +153,7 @@ inkscape:stockid="TriangleOutL"> <path transform="scale(0.8)" - style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" d="M 5.77,0 -2.88,5 V -5 Z" id="path7971-6-5" inkscape:connector-curvature="0" /> @@ -246,7 +171,7 @@ inkscape:connector-curvature="0" id="path4668-4-8-6-1-40" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -262,7 +187,7 @@ inkscape:connector-curvature="0" id="path4668-4-8-6-1-40-3" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -278,7 +203,7 @@ inkscape:connector-curvature="0" id="path4668-4-8-6-1-40-4" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -294,7 +219,7 @@ inkscape:connector-curvature="0" id="path4668-4-8-6-1-40-8" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#e30066;fill-opacity:1;fill-rule:evenodd;stroke:#e30066;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#e30066;fill-opacity:1;fill-rule:evenodd;stroke:#e30066;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -310,7 +235,7 @@ inkscape:connector-curvature="0" id="path4668-4-8-6-1-40-1" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -326,7 +251,7 @@ inkscape:connector-curvature="0" id="path4668-5" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -342,7 +267,7 @@ inkscape:connector-curvature="0" id="path4668-5-7" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -358,7 +283,7 @@ inkscape:connector-curvature="0" id="path4668-4" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -374,7 +299,7 @@ inkscape:connector-curvature="0" id="path4668-5-7-9" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -390,7 +315,7 @@ inkscape:connector-curvature="0" id="path4668-4-3" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -406,7 +331,7 @@ inkscape:connector-curvature="0" id="path4668-5-7-9-9" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -422,7 +347,7 @@ inkscape:connector-curvature="0" id="path4668-5-7-9-4" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -438,7 +363,7 @@ inkscape:connector-curvature="0" id="path4668-5-7-9-4-2" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -454,7 +379,7 @@ inkscape:connector-curvature="0" id="path4668-5-7-9-9-8" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -469,7 +394,7 @@ inkscape:connector-curvature="0" id="path6849-4-0" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -485,7 +410,7 @@ inkscape:connector-curvature="0" id="path4668-5-7-9-4-2-4" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#e30066;fill-opacity:1;fill-rule:evenodd;stroke:#e30066;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#e30066;fill-opacity:1;fill-rule:evenodd;stroke:#e30066;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -501,7 +426,7 @@ inkscape:connector-curvature="0" id="path4668-5-7-9-9-8-1" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> <marker @@ -517,7 +442,7 @@ inkscape:connector-curvature="0" id="path4668-5-7-9-9-8-1-3" d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" transform="scale(0.8)" /> </marker> </defs> @@ -528,9 +453,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="2" - inkscape:cx="336.03562" - inkscape:cy="210.54105" + inkscape:zoom="1" + inkscape:cx="668.5" + inkscape:cy="250.5" inkscape:document-units="mm" inkscape:current-layer="layer1" showgrid="false" @@ -542,12 +467,13 @@ fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" - fit-margin-bottom="0"> + fit-margin-bottom="0" + inkscape:pagecheckerboard="0"> <inkscape:grid type="xygrid" id="grid3713" - originx="95.249998" - originy="-216.33333" /> + originx="73.997173" + originy="-216.33331" /> </sodipodi:namedview> <metadata id="metadata5"> @@ -557,7 +483,6 @@ <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> </cc:Work> </rdf:RDF> </metadata> @@ -565,92 +490,96 @@ inkscape:label="Ebene 1" inkscape:groupmode="layer" id="layer1" - transform="translate(95.25,-0.66666663)"> + transform="translate(73.997169,-0.66666663)"> <rect id="rect3715" - width="210" - height="80" - x="-95.25" + width="300" + height="140" + x="-73.997169" y="0.66666663" - style="fill:none;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:none;stroke-width:1.58113;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522" - width="2.6458333" - height="13.229167" - x="-80.697922" - y="9.927083" /> + width="4.5496478" + height="24.822634" + x="-45.702316" + y="11.512669" /> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL)" - d="m -77.787505,16.541666 h 2.680781" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL)" + d="m -40.697708,23.923978 h 4.60974" id="path4524" inkscape:connector-curvature="0" /> <path - style="fill:none;stroke:#cc071e;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167)" - d="m -65.0875,23.685417 -10e-7,13.229167 h 3.96875" + style="fill:none;stroke:#cc071e;stroke-width:0.359249;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167)" + d="m -18.859389,37.328201 -1e-6,24.822634 h 6.824471" id="path5157" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-80.168755" - y="9.3979158" - id="text5568"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-46.790131" + y="10.070615" + id="text5568" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566" - x="-80.168755" - y="9.3979158" - style="font-size:2.11666656px;stroke-width:0.26458332">6</tspan></text> + x="-46.790131" + y="10.070615" + style="font-size:3.80205px;stroke-width:0.475256">6</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-73.818756" - y="9.397912" - id="text5568-6"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-35.383984" + y="10.070608" + id="text5568-6" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1" - x="-73.818756" - y="9.397912" - style="font-size:2.11666656px;stroke-width:0.26458332">16</tspan></text> + x="-35.383984" + y="10.070608" + style="font-size:3.80205px;stroke-width:0.475256">16</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-45.243748" - y="36.38541" - id="text5568-6-7"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="15.943711" + y="58.54673" + id="text5568-6-7" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-4" - x="-45.243748" - y="36.38541" - style="font-size:2.11666656px;stroke-width:0.26458332">32</tspan></text> + x="15.943711" + y="58.54673" + style="font-size:3.80205px;stroke-width:0.475256">32</tspan></text> <rect - style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-8-3-4" - width="2.6458333" - height="13.229167" - x="-17.991659" - y="52.789585" /> + width="4.5496478" + height="24.822634" + x="62.124348" + y="91.937996" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-19.049982" - y="52.524998" - id="text5568-6-7-7"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="62.994095" + y="87.537361" + id="text5568-6-7-7" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-4-9" - x="-19.049982" - y="52.524998" - style="font-size:2.11666656px;stroke-width:0.26458332">128</tspan></text> + x="62.994095" + y="87.537361" + style="font-size:3.80205px;stroke-width:0.475256">128</tspan></text> <path - style="fill:none;stroke:#cc071e;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167-4)" - d="m -43.920824,37.972916 -10e-7,13.229167 h 3.96875" + style="fill:none;stroke:#cc071e;stroke-width:0.359249;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167-4)" + d="m 17.537811,64.136643 -3e-6,24.822635 h 6.824472" id="path5157-7" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + style="font-style:normal;font-weight:normal;font-size:2.11667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" x="-46.164543" y="-44.383221" id="text5568-5-9-2" @@ -658,75 +587,76 @@ sodipodi:role="line" id="tspan5566-19-0-9" x="-46.164543" - y="-42.452122" - style="font-size:2.11666656px;stroke-width:0.26458332" /></text> + y="-44.383221" + style="font-size:2.11667px;stroke-width:0.264583" /></text> <path - style="fill:none;stroke:#cc071e;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167-44)" - d="m -23.283327,52.789585 v 13.229167 h 4.233335" + style="fill:none;stroke:#cc071e;stroke-width:0.359249;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167-44)" + d="m 53.025051,91.937996 v 24.822634 h 7.27944" id="path5157-1" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-60.237862" - y="-18.752434" + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-101.62571" + y="63.544678" id="text5568-5-9-7" - transform="rotate(-90.138025)"><tspan + transform="matrix(-0.00230614,-1.0445969,0.9573015,-0.00251644,0,0)"><tspan sodipodi:role="line" id="tspan5566-19-0-3" - x="-60.237862" - y="-18.752434" - style="font-size:2.11666656px;stroke-width:0.26458332">4<tspan - style="font-size:64.99999762%;baseline-shift:super" + x="-101.62571" + y="63.544678" + style="font-size:3.80205px;stroke-width:0.475256">4<tspan + style="font-size:2.47134px;baseline-shift:super;stroke-width:0.475256" id="tspan4533">3</tspan></tspan></text> <path - style="fill:none;stroke:#646567;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851)" - d="M -15.345827,59.404169 H -4.7624975 V 54.112502" + style="fill:none;stroke:#646567;stroke-width:0.359249;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851)" + d="M 66.673999,104.34932 H 84.872592 V 94.420261" id="path6841" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc" /> <rect - style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-8-3-4-7" - width="2.6458333" - height="13.229167" - x="-6.0854225" - y="39.21637" /> + width="4.5496478" + height="24.822634" + x="82.597748" + y="66.469803" /> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-4-8-5-1" - width="2.6458333" - height="13.229167" - x="-9.2604151" - y="39.21637" /> + width="4.5496478" + height="24.822634" + x="77.138176" + y="66.469803" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-10.318748" - y="38.50053" - id="text5568-6-11-8"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="78.677521" + y="62.346008" + id="text5568-6-11-8" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-5-3" - x="-10.318748" - y="38.50053" - style="font-size:2.11666656px;stroke-width:0.26458332">128+64</tspan></text> + x="78.677521" + y="62.346008" + style="font-size:3.80205px;stroke-width:0.475256">128+64</tspan></text> <rect - style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-8-3-4-7-4" - width="2.6458333" - height="13.229167" - x="8.7312508" - y="39.21637" /> + width="4.5496478" + height="24.822634" + x="108.07578" + y="66.469803" /> <path - style="fill:none;stroke:#646567;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851-9)" - d="m 11.377085,46.011221 h 10.054172 l -0.0775,-6.311865" + style="fill:none;stroke:#646567;stroke-width:0.359249;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851-9)" + d="M 112.62543,79.219369 H 129.9141 L 129.78085,67.376061" id="path6841-9" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + style="font-style:normal;font-weight:normal;font-size:2.11667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" x="-33.604271" y="18.353489" id="text5568-5-9-7-9-2-8" @@ -734,606 +664,625 @@ sodipodi:role="line" id="tspan5566-19-0-3-7-1-9" x="-33.604271" - y="20.284588" - style="font-size:2.11666656px;stroke-width:0.26458332" /></text> + y="18.353489" + style="font-size:2.11667px;stroke-width:0.264583" /></text> <rect - style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-8-3-4-7-4-5-3-4" - width="2.6458333" - height="13.229167" - x="68.262505" - y="10.138646" /> + width="4.5496478" + height="24.822634" + x="210.44276" + y="11.909638" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="68.881584" - y="9.3963652" - id="text5568-6-11-4-7-4-6"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="220.94069" + y="10.067828" + id="text5568-6-11-4-7-4-6" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-5-0-1-2-6" - x="68.881584" - y="9.3963652" - style="font-size:2.11666656px;stroke-width:0.26458332">1</tspan></text> + x="220.94069" + y="10.067828" + style="font-size:3.80205px;stroke-width:0.475256">1</tspan></text> <path style="fill:none;stroke:#00549f;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9)" - d="m 30.162508,49.614588 13.75834,-5e-6" + d="m 69.58533,113.60264 13.75834,-10e-6" id="path4524-5-9-2-5-7" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" /> <path style="fill:none;stroke:#cc071e;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-2)" - d="m 30.162508,53.517193 13.758341,-5e-6" + d="m 69.58533,118.50767 13.75834,-1e-5" id="path4524-5-9-2-5-7-5" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" /> <path style="fill:none;stroke:#646567;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-9)" - d="m 30.162508,57.419796 13.758341,-5e-6" + d="m 69.58533,122.88923 13.75834,-1e-5" id="path4524-5-9-2-5-7-7" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" /> <path style="fill:none;stroke:#e30066;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-96)" - d="m 30.162508,61.322402 13.75834,-6e-6" + d="M 69.58533,128.32911 H 83.34367" id="path4524-5-9-2-5-7-54" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" /> <path style="fill:none;stroke:#f6a800;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-4)" - d="m 30.162508,65.225008 13.75834,-5e-6" + d="M 69.58533,133.2455 H 83.34367" id="path4524-5-9-2-5-7-9" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#00549f;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="45.772942" - y="50.406773" + style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#00549f;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="85.196121" + y="114.96516" id="text5568-6-11-8-8-27"><tspan sodipodi:role="line" id="tspan5566-1-5-3-9-5" - x="45.772942" - y="50.406773" - style="font-size:2.11666656px;fill:#00549f;fill-opacity:1;stroke-width:0.26458332">SeparableConv3D (5x5x5), ReLu</tspan></text> + x="85.196121" + y="114.96516" + style="font-size:4.93889px;fill:#00549f;fill-opacity:1;stroke-width:0.264583">SeparableConv3D (5x5x5), ReLu</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#cc071e;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="45.704731" - y="54.253437" + style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#cc071e;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="85.127899" + y="119.87012" id="text5568-6-11-8-8-27-3"><tspan sodipodi:role="line" id="tspan5566-1-5-3-9-5-5" - x="45.704731" - y="54.253437" - style="font-size:2.11666656px;fill:#cc071e;fill-opacity:1;stroke-width:0.26458332">BatchNormalization & MaxPooling3D with size = (2, 2, 2)</tspan></text> + x="85.127899" + y="119.87012" + style="font-size:4.93889px;fill:#cc071e;fill-opacity:1;stroke-width:0.264583">BatchNormalization & MaxPooling3D with size = (2, 2, 2)</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#646567;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="45.727467" - y="58.105804" + style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#646567;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="85.150635" + y="124.2517" id="text5568-6-11-8-8-27-8"><tspan sodipodi:role="line" id="tspan5566-1-5-3-9-5-1" - x="45.727467" - y="58.105804" - style="font-size:2.11666656px;fill:#646567;fill-opacity:1;stroke-width:0.26458332">UpSampling with size = (2, 2, 2) </tspan></text> + x="85.150635" + y="124.2517" + style="font-size:4.93889px;fill:#646567;fill-opacity:1;stroke-width:0.264583">UpSampling with size = (2, 2, 2) </tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#e30066;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="45.772942" - y="61.958153" + style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#e30066;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="85.196121" + y="129.69153" id="text5568-6-11-8-8-27-1"><tspan sodipodi:role="line" id="tspan5566-1-5-3-9-5-4" - x="45.772942" - y="61.958153" - style="font-size:2.11666656px;fill:#e30066;fill-opacity:1;stroke-width:0.26458332">SeparableConv3D (1, 1, 1), sigmoids</tspan></text> + x="85.196121" + y="129.69153" + style="font-size:4.93889px;fill:#e30066;fill-opacity:1;stroke-width:0.264583">SeparableConv3D (1, 1, 1), sigmoids</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#f6a800;fill-opacity:1;stroke:none;stroke-width:0.26458332;" - x="45.772942" - y="65.816185" + style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#f6a800;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="85.196121" + y="134.60788" id="text5568-6-11-8-8-27-5"><tspan sodipodi:role="line" id="tspan5566-1-5-3-9-5-9" - x="45.772942" - y="65.816185" - style="font-size:2.11666656px;fill:#f6a800;fill-opacity:1;stroke-width:0.26458332;">Skip connection</tspan></text> + x="85.196121" + y="134.60788" + style="font-size:4.93889px;fill:#f6a800;fill-opacity:1;stroke-width:0.264583">Skip connection</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="64.029182" - y="27.072456" - id="text11384"><tspan + style="font-style:normal;font-weight:normal;font-size:19.0103px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="212.2245" + y="41.81839" + id="text11384" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan11382" - x="64.029182" - y="27.072456" - style="font-size:3.52777767px;stroke-width:0.26458332">output</tspan></text> + x="212.2245" + y="41.81839" + style="font-size:6.33675px;stroke-width:0.475256">output</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-77.258324" - y="27.124994" - id="text11384-1"><tspan + style="font-style:normal;font-weight:normal;font-size:19.0103px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-41.56229" + y="41.912758" + id="text11384-1" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan11382-4" - x="-77.258324" - y="27.124994" - style="font-size:3.52777767px;stroke-width:0.26458332">input</tspan></text> + x="-41.56229" + y="41.912758" + style="font-size:6.33675px;stroke-width:0.475256">input</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-66.93959" - y="9.6624956" - id="text5568-6-14"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-23.027315" + y="10.545863" + id="text5568-6-14" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-47" - x="-66.93959" - y="9.6624956" - style="font-size:2.11666656px;stroke-width:0.26458332">32</tspan></text> + x="-23.027315" + y="10.545863" + style="font-size:3.80205px;stroke-width:0.475256">32</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:3.88055563px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + style="font-style:normal;font-weight:normal;font-size:3.88056px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" x="-75.40625" y="16.541666" id="text2450"><tspan sodipodi:role="line" id="tspan2448" x="-75.40625" - y="20.082014" - style="stroke-width:0.26458332" /></text> + y="16.541666" + style="stroke-width:0.264583" /></text> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6)" - d="m -70.665168,16.541666 h 2.680781" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6)" + d="m -28.450479,23.923978 h 4.609741" id="path4524-1" inkscape:connector-curvature="0" /> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-40" - width="2.6458333" - height="13.229167" - x="-59.37936" - y="24.639845" /> + width="4.5496478" + height="24.822634" + x="-9.0439434" + y="39.119049" /> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1)" - d="m -56.468943,31.25443 h 2.680781" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1)" + d="M -4.0393324,51.530368 H 0.57040986" id="path4524-18" inkscape:connector-curvature="0" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-59.37936" - y="24.110676" - id="text5568-1"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-9.4473" + y="36.49831" + id="text5568-1" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-6" - x="-59.37936" - y="24.110676" - style="font-size:2.11666656px;stroke-width:0.26458332">32</tspan></text> + x="-9.4473" + y="36.49831" + style="font-size:3.80205px;stroke-width:0.475256">32</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-52.500195" - y="24.110672" - id="text5568-6-70"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="2.9093623" + y="36.498306" + id="text5568-6-70" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-8" - x="-52.500195" - y="24.110672" - style="font-size:2.11666656px;stroke-width:0.26458332">32</tspan></text> + x="2.9093623" + y="36.498306" + style="font-size:3.80205px;stroke-width:0.475256">32</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-32.716705" - y="-59.809391" + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-52.191048" + y="-10.203706" id="text5568-5-8" - transform="rotate(-90.138025)"><tspan + transform="matrix(-0.00230614,-1.0445969,0.9573015,-0.00251644,0,0)"><tspan sodipodi:role="line" id="tspan5566-19-2" - x="-32.716705" - y="-59.809391" - style="font-size:2.11666656px;stroke-width:0.26458332">16<tspan - style="font-size:64.99999762%;baseline-shift:super" + x="-52.191048" + y="-10.203706" + style="font-size:3.80205px;stroke-width:0.475256">16<tspan + style="font-size:2.47134px;baseline-shift:super;stroke-width:0.475256" id="tspan3612">3</tspan></tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-45.621029" - y="24.375256" - id="text5568-6-14-4"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="15.266025" + y="36.973564" + id="text5568-6-14-4" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-47-6" - x="-45.621029" - y="24.375256" - style="font-size:2.11666656px;stroke-width:0.26458332">64</tspan></text> + x="15.266025" + y="36.973564" + style="font-size:3.80205px;stroke-width:0.475256">64</tspan></text> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3)" - d="m -49.346605,31.25443 h 2.680781" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3)" + d="M 8.2078996,51.530368 H 12.81764" id="path4524-1-9" inkscape:connector-curvature="0" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-17.491825" - y="-81.53624" + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-24.843428" + y="-49.230293" id="text5568-5-8-0" - transform="rotate(-90.138025)"><tspan + transform="matrix(-0.00230614,-1.0445969,0.9573015,-0.00251644,0,0)"><tspan sodipodi:role="line" id="tspan5566-19-2-0" - x="-17.491825" - y="-81.53624" - style="font-size:2.11666656px;stroke-width:0.26458332">32<tspan - style="font-size:64.99999762%;baseline-shift:super" + x="-24.843428" + y="-49.230293" + style="font-size:3.80205px;stroke-width:0.475256">32<tspan + style="font-size:2.47134px;baseline-shift:super;stroke-width:0.475256" id="tspan3635">3</tspan></tspan></text> <path - style="fill:none;stroke:#f6a800;stroke-width:0.2276167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973-0-2)" - d="M -78.052083,10.98541 H 40.521184" + style="fill:none;stroke:#f6a800;stroke-width:0.408855;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973-0-2)" + d="M -41.152665,13.498465 H 162.74024" id="path7963-0-5" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" /> <path - style="fill:none;stroke:#f6a800;stroke-width:0.23674184;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973-0)" - d="M -56.577293,25.802087 H 14.602018" + style="fill:none;stroke:#f6a800;stroke-width:0.425247;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973-0)" + d="M -4.225645,41.299829 H 118.17087" id="path7963-0" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-24.397284" - y="50.961937" - id="text5568-6-7-9"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="53.389027" + y="84.729729" + id="text5568-6-7-9" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-4-6" - x="-24.397284" - y="50.961937" - style="font-size:2.11666656px;stroke-width:0.26458332">32</tspan></text> + x="53.389027" + y="84.729729" + style="font-size:3.80205px;stroke-width:0.475256">32</tspan></text> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-40-0" - width="2.6458333" - height="13.229167" - x="-38.532894" - y="39.21637" /> + width="4.5496478" + height="24.822634" + x="26.802639" + y="66.469803" /> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-8)" - d="m -35.62248,45.830958 h 2.680781" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-8)" + d="m 31.807246,78.881132 h 4.609741" id="path4524-18-6" inkscape:connector-curvature="0" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-38.532894" - y="38.687202" - id="text5568-1-3"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="27.998039" + y="62.681313" + id="text5568-1-3" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-6-5" - x="-38.532894" - y="38.687202" - style="font-size:2.11666656px;stroke-width:0.26458332">64</tspan></text> + x="27.998039" + y="62.681313" + style="font-size:3.80205px;stroke-width:0.475256">64</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-31.653728" - y="38.687199" - id="text5568-6-70-2"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="40.354679" + y="62.681305" + id="text5568-6-70-2" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-8-5" - x="-31.653728" - y="38.687199" - style="font-size:2.11666656px;stroke-width:0.26458332">64</tspan></text> + x="40.354679" + y="62.681305" + style="font-size:3.80205px;stroke-width:0.475256">64</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-46.283829" - y="-39.524754" + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-76.560913" + y="26.232523" id="text5568-5-8-4" - transform="rotate(-90.138025)"><tspan + transform="matrix(-0.00230614,-1.0445969,0.9573015,-0.00251644,0,0)"><tspan sodipodi:role="line" id="tspan5566-19-2-1" - x="-46.283829" - y="-39.524754" - style="font-size:2.11666656px;stroke-width:0.26458332">8<tspan - style="font-size:64.99999762%;baseline-shift:super" + x="-76.560913" + y="26.232523" + style="font-size:3.80205px;stroke-width:0.475256">8<tspan + style="font-size:2.47134px;baseline-shift:super;stroke-width:0.475256" id="tspan4507">3</tspan></tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-25.30373" - y="38.951782" - id="text5568-6-14-4-7"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="51.760826" + y="63.156559" + id="text5568-6-14-4-7" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-47-6-4" - x="-25.30373" - y="38.951782" - style="font-size:2.11666656px;stroke-width:0.26458332">128</tspan></text> + x="51.760826" + y="63.156559" + style="font-size:3.80205px;stroke-width:0.475256">128</tspan></text> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9)" - d="m -28.500143,45.830958 h 2.680781" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9)" + d="m 44.05447,78.881132 h 4.609739" id="path4524-1-9-1" inkscape:connector-curvature="0" /> <rect - style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-8-3-4-7-4-9" - width="2.6458333" - height="13.229167" - x="1.2438178" - y="39.21637" /> + width="4.5496478" + height="24.822634" + x="95.200768" + y="66.469803" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="0.71465498" - y="38.591217" - id="text5568-6-11-4-4"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="98.496223" + y="62.508904" + id="text5568-6-11-4-4" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-5-0-3" - x="0.71465498" - y="38.591217" - style="font-size:2.11666656px;stroke-width:0.26458332">128</tspan></text> + x="98.496223" + y="62.508904" + style="font-size:3.80205px;stroke-width:0.475256">128</tspan></text> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6)" - d="m -3.0279953,45.830958 h 2.68077939" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6)" + d="m 87.855158,78.881132 h 4.609741" id="path4524-1-9-1-0" inkscape:connector-curvature="0" /> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-8)" - d="M 4.6160423,45.830958 H 7.2968218" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-8)" + d="m 100.99947,78.881132 h 4.60976" id="path4524-1-9-1-07" inkscape:connector-curvature="0" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-46.351925" - y="-11.264449" + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-76.683228" + y="76.994926" id="text5568-5-8-4-4" - transform="rotate(-90.138025)"><tspan + transform="matrix(-0.00230614,-1.0445969,0.9573015,-0.00251644,0,0)"><tspan sodipodi:role="line" id="tspan5566-19-2-1-1" - x="-46.351925" - y="-11.264449" - style="font-size:2.11666656px;stroke-width:0.26458332">8<tspan - style="font-size:1.37583315px;baseline-shift:super;stroke-width:0.26458332" + x="-76.683228" + y="76.994926" + style="font-size:3.80205px;stroke-width:0.475256">8<tspan + style="font-size:2.47131px;baseline-shift:super;stroke-width:0.475256" id="tspan4507-4">3</tspan></tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="8.152051" - y="38.464565" - id="text5568-6-11-4-4-6"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="111.8556" + y="62.281406" + id="text5568-6-11-4-4-6" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-5-0-3-7" - x="8.152051" - y="38.464565" - style="font-size:2.11666656px;stroke-width:0.26458332">128</tspan></text> + x="111.8556" + y="62.281406" + style="font-size:3.80205px;stroke-width:0.475256">128</tspan></text> <path - style="fill:none;stroke:#f6a800;stroke-width:0.29850301;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973)" - d="m -35.866709,40.089585 h 24.754215" + style="fill:none;stroke:#f6a800;stroke-width:0.536183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973)" + d="M 31.387281,68.108269 H 73.953437" id="path7963" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" /> <rect - style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-8-3-4-7-7" - width="2.6458333" - height="13.229167" - x="19.770737" - y="24.673214" /> + width="4.5496478" + height="24.822634" + x="127.05877" + y="39.181656" /> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-4-8-5-1-7" - width="2.6458333" - height="13.229167" - x="16.595737" - y="24.673214" /> + width="4.5496478" + height="24.822634" + x="121.59919" + y="39.181656" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="15.537404" - y="23.957376" - id="text5568-6-11-8-2"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="125.12151" + y="36.222946" + id="text5568-6-11-8-2" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-5-3-0" - x="15.537404" - y="23.957376" - style="font-size:2.11666656px;stroke-width:0.26458332">32+128</tspan></text> + x="125.12151" + y="36.222946" + style="font-size:3.80205px;stroke-width:0.475256">32+128</tspan></text> <rect - style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-8-3-4-7-4-2" - width="2.6458333" - height="13.229167" - x="34.58741" - y="24.673214" /> + width="4.5496478" + height="24.822634" + x="152.5368" + y="39.181656" /> <path - style="fill:none;stroke:#646567;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851-9-2)" - d="m 37.233242,30.649554 h 10.054172 l 0.073,-5.665984" + style="fill:none;stroke:#646567;stroke-width:0.359249;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851-9-2)" + d="m 157.08644,50.395405 h 17.28867 L 174.50066,39.764" id="path6841-9-5" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc" /> <rect - style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-8-3-4-7-4-9-9" - width="2.6458333" - height="13.229167" - x="27.099976" - y="24.673214" /> + width="4.5496478" + height="24.822634" + x="139.66177" + y="39.181656" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="27.099981" - y="24.048061" - id="text5568-6-11-4-4-3"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="145.89067" + y="36.385841" + id="text5568-6-11-4-4-3" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-5-0-3-9" - x="27.099981" - y="24.048061" - style="font-size:2.11666656px;stroke-width:0.26458332">64</tspan></text> + x="145.89067" + y="36.385841" + style="font-size:3.80205px;stroke-width:0.475256">64</tspan></text> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-7)" - d="m 22.828162,31.287804 h 2.680779" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-7)" + d="m 132.31616,51.592989 h 4.60974" id="path4524-1-9-1-0-1" inkscape:connector-curvature="0" /> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-8-1)" - d="m 30.472199,31.287804 h 2.68078" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-8-1)" + d="m 145.46048,51.592989 h 4.60973" id="path4524-1-9-1-07-7" inkscape:connector-curvature="0" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="34.537376" - y="23.92141" - id="text5568-6-11-4-4-6-0"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="159.25006" + y="36.15834" + id="text5568-6-11-4-4-6-0" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-5-0-3-7-0" - x="34.537376" - y="23.92141" - style="font-size:2.11666656px;stroke-width:0.26458332">64</tspan></text> + x="159.25006" + y="36.15834" + style="font-size:3.80205px;stroke-width:0.475256">64</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-32.843025" - y="15.870556" + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-52.417957" + y="125.73595" id="text5568-5-8-2" - transform="rotate(-90.138025)"><tspan + transform="matrix(-0.00230614,-1.0445969,0.9573015,-0.00251644,0,0)"><tspan sodipodi:role="line" id="tspan5566-19-2-5" - x="-32.843025" - y="15.870556" - style="font-size:2.11666656px;stroke-width:0.26458332">16<tspan - style="font-size:1.37583315px;baseline-shift:super;stroke-width:0.26458332" + x="-52.417957" + y="125.73595" + style="font-size:3.80205px;stroke-width:0.475256">16<tspan + style="font-size:2.47131px;baseline-shift:super;stroke-width:0.475256" id="tspan3612-4">3</tspan></tspan></text> <rect - style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-8-3-4-7-7-6" - width="2.6458333" - height="13.229167" - x="45.968872" - y="10.138646" /> + width="4.5496478" + height="24.822634" + x="172.10782" + y="11.909638" /> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-4-8-5-1-7-4" - width="2.6458333" - height="13.229167" - x="42.793873" - y="10.191662" /> + width="4.5496478" + height="24.822634" + x="166.64825" + y="12.009117" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="42.793877" - y="9.4228086" - id="text5568-6-11-8-2-4"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="174.08076" + y="10.115328" + id="text5568-6-11-8-2-4" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-5-3-0-2" - x="42.793877" - y="9.4228086" - style="font-size:2.11666656px;stroke-width:0.26458332">6+64</tspan></text> + x="174.08076" + y="10.115328" + style="font-size:3.80205px;stroke-width:0.475256">6+64</tspan></text> <rect - style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-8-3-4-7-4-2-1" - width="2.6458333" - height="13.229167" - x="60.785545" - y="10.138646" /> + width="4.5496478" + height="24.822634" + x="197.58582" + y="11.909638" /> <rect - style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-8-3-4-7-4-9-9-2" - width="2.6458333" - height="13.229167" - x="53.298111" - y="10.138646" /> + width="4.5496478" + height="24.822634" + x="184.71085" + y="11.909638" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="53.298119" - y="9.5134935" - id="text5568-6-11-4-4-3-5"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="192.94894" + y="10.27822" + id="text5568-6-11-4-4-3-5" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-5-0-3-9-8" - x="53.298119" - y="9.5134935" - style="font-size:2.11666656px;stroke-width:0.26458332">32</tspan></text> + x="192.94894" + y="10.27822" + style="font-size:3.80205px;stroke-width:0.475256">32</tspan></text> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-7-5)" - d="m 49.026297,16.753234 h 2.680779" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-7-5)" + d="m 177.36521,24.320955 h 4.60974" id="path4524-1-9-1-0-1-6" inkscape:connector-curvature="0" /> <path - style="fill:none;stroke:#e30066;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-8-1-2)" - d="m 64.078673,16.753234 h 2.68078" + style="fill:none;stroke:#e30066;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-8-1-2)" + d="m 203.24863,24.320955 h 4.60978" id="path4524-1-9-1-07-7-7" inkscape:connector-curvature="0" /> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="60.735516" - y="9.3868418" - id="text5568-6-11-4-4-6-0-7"><tspan + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="206.30833" + y="10.050722" + id="text5568-6-11-4-4-6-0-7" + transform="scale(0.95730424,1.0446)"><tspan sodipodi:role="line" id="tspan5566-1-5-0-3-7-0-0" - x="60.735516" - y="9.3868418" - style="font-size:2.11666656px;stroke-width:0.26458332">32</tspan></text> + x="206.30833" + y="10.050722" + style="font-size:3.80205px;stroke-width:0.475256">32</tspan></text> <text xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:2.11666656px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="-18.223013" - y="41.789455" + style="font-style:normal;font-weight:normal;font-size:3.80205px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-26.156816" + y="172.29274" id="text5568-5-8-0-9" - transform="rotate(-90.138025)"><tspan + transform="matrix(-0.00230614,-1.0445969,0.9573015,-0.00251644,0,0)"><tspan sodipodi:role="line" id="tspan5566-19-2-0-5" - x="-18.223013" - y="41.789455" - style="font-size:2.11666656px;stroke-width:0.26458332">32<tspan - style="font-size:1.37583315px;baseline-shift:super;stroke-width:0.26458332" + x="-26.156816" + y="172.29274" + style="font-size:3.80205px;stroke-width:0.475256">32<tspan + style="font-size:2.47131px;baseline-shift:super;stroke-width:0.475256" id="tspan3635-7">3</tspan></tspan></text> <path - style="fill:none;stroke:#00549f;stroke-width:0.16437426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-7-5-8)" - d="M 56.521201,16.647629 H 59.20198" + style="fill:none;stroke:#00549f;stroke-width:0.295256;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-7-5-8)" + d="m 190.2531,24.122804 h 4.60976" id="path4524-1-9-1-0-1-6-7" inkscape:connector-curvature="0" /> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-4" - width="2.6458333" - height="13.229167" - x="-73.554169" - y="9.9270782" /> + width="4.5496478" + height="24.822634" + x="-33.418259" + y="11.512661" /> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-4-9" - width="2.6458333" - height="13.229167" - x="-66.675003" - y="10.191662" /> + width="4.5496478" + height="24.822634" + x="-21.589176" + y="12.009117" /> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-4-4" - width="2.6458333" - height="13.229167" - x="-52.235607" - y="24.639839" /> + width="4.5496478" + height="24.822634" + x="3.2401109" + y="39.119034" /> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-4-9-5" - width="2.6458333" - height="13.229167" - x="-45.356441" - y="24.904423" /> + width="4.5496478" + height="24.822634" + x="15.0692" + y="39.61549" /> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-4-4-4" - width="2.6458333" - height="13.229167" - x="-31.389141" - y="39.216366" /> + width="4.5496478" + height="24.822634" + x="39.086678" + y="66.469788" /> <rect - style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.1118034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.200825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4522-4-9-5-4" - width="2.6458333" - height="13.229167" - x="-24.509977" - y="39.480949" /> + width="4.5496478" + height="24.822634" + x="50.915764" + y="66.966255" /> </g> </svg> diff --git a/Bericht/Bilder/UNet_Architecture.svg.2022_03_17_15_57_13.0.svg b/Bericht/Bilder/UNet_Architecture.svg.2022_03_17_15_57_13.0.svg new file mode 100644 index 0000000000000000000000000000000000000000..3f1c7246b18f0a580227dedee3e2366754e9c81f --- /dev/null +++ b/Bericht/Bilder/UNet_Architecture.svg.2022_03_17_15_57_13.0.svg @@ -0,0 +1,1318 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="350mm" + height="140mm" + viewBox="0 0 350 140" + version="1.1" + id="svg8" + inkscape:version="0.92.4 (5da689c313, 2019-01-14)" + sodipodi:docname="UNet_Architecture.svg.2022_03_17_15_57_13.0.svg" + inkscape:export-filename="F:\RWTH\HiWi_IEHK\DAMASK3\Bericht\Bilder\Präsi_UNet.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + <defs + id="defs2"> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker7973" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + transform="scale(0.8)" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7971" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="marker6851" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path6849" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5167" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path5165" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path4668" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5167-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + inkscape:connector-curvature="0" + transform="scale(0.8)" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path5165-4" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5167-44" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + inkscape:connector-curvature="0" + transform="scale(0.8)" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path5165-91" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="marker6851-9" + style="overflow:visible" + inkscape:isstock="true"> + <path + inkscape:connector-curvature="0" + id="path6849-4" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker7973-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + transform="scale(0.8)" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7971-6" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker7973-0-2" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + transform="scale(0.8)" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7971-6-5" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-6-9-5-9" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-8-6-1-40" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-6-9-5-9-2" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-8-6-1-40-3" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-6-9-5-9-9" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-8-6-1-40-4" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-6-9-5-9-96" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-8-6-1-40-8" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#e30066;fill-opacity:1;fill-rule:evenodd;stroke:#e30066;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-6-9-5-9-4" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-8-6-1-40-1" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-8" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-3" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-6" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-9" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-8" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-4" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-8-1" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-4-2" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-6-7" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-9-8" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="marker6851-9-2" + style="overflow:visible" + inkscape:isstock="true"> + <path + inkscape:connector-curvature="0" + id="path6849-4-0" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-8-1-2" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-4-2-4" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#e30066;fill-opacity:1;fill-rule:evenodd;stroke:#e30066;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-6-7-5" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-9-8-1" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-6-7-5-8" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-9-8-1-3" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker7973-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + transform="scale(0.8)" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7971-3" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker7973-9-8" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + transform="scale(0.8)" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7971-3-8" + inkscape:connector-curvature="0" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.8284271" + inkscape:cx="918.51088" + inkscape:cy="380.18048" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1920" + inkscape:window-height="1017" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid3713" + originx="73.997176" + originy="-216.33331" /> + </sodipodi:namedview> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(73.997169,-0.66666663)"> + <rect + id="rect3715" + width="350" + height="140" + x="-73.997169" + y="0.66666663" + style="fill:none;stroke:none;stroke-width:1.70782;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522" + width="3.9594908" + height="20.917336" + x="-31.481649" + y="5.3331842" /> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL)" + d="m -27.126216,15.791846 h 4.011788" + id="path4524" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#cc071e;stroke-width:0.307649;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167)" + d="m -8.1206537,27.087208 -10e-7,20.917336 h 5.939236" + id="path5157" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="-31.545828" + y="4.3744674" + id="text5568" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566" + x="-31.545828" + y="4.3744674" + style="font-size:3.25595px;stroke-width:0.406993">6</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="22.177372" + y="45.887821" + id="text5568-6-7" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-4" + x="22.177372" + y="45.887821" + style="font-size:3.25595px;stroke-width:0.406993">32</tspan></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.172283;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4" + width="3.9594908" + height="20.917336" + x="62.358284" + y="73.105347" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="62.469776" + y="70.714447" + id="text5568-6-7-7" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-4-9" + x="62.469776" + y="70.714447" + style="font-size:3.25595px;stroke-width:0.406993">128</tspan></text> + <path + style="fill:none;stroke:#cc071e;stroke-width:0.307649;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167-4)" + d="m 23.555286,49.677929 -2e-6,20.917337 h 5.939236" + id="path5157-7" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:2.11667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="-46.164543" + y="-44.383221" + id="text5568-5-9-2" + transform="rotate(-90.138025)"><tspan + sodipodi:role="line" + id="tspan5566-19-0-9" + x="-46.164543" + y="-44.383221" + style="font-size:2.11667px;stroke-width:0.264583" /></text> + <path + style="fill:none;stroke:#cc071e;stroke-width:0.307649;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167-44)" + d="m 54.439301,73.105348 v 20.917336 h 6.335188" + id="path5157-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="-82.799797" + y="62.951492" + id="text5568-5-9-7" + transform="matrix(-0.00234362,-1.0278914,0.97285977,-0.00247619,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-0-3" + x="-82.799797" + y="62.951492" + style="font-size:3.25595px;stroke-width:0.406993">4<tspan + style="font-size:2.11637px;baseline-shift:super;stroke-width:0.406993" + id="tspan4533">3</tspan></tspan></text> + <path + style="fill:none;stroke:#646567;stroke-width:0.307649;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851)" + d="M 66.317776,83.564017 H 82.15574 v -8.366934" + id="path6841" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.172283;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7" + width="3.9594908" + height="20.917336" + x="80.175972" + y="51.644016" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-8-5-1" + width="3.9594908" + height="20.917336" + x="75.424591" + y="51.644016" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="75.900543" + y="49.141399" + id="text5568-6-11-8" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3" + x="75.900543" + y="49.141399" + style="font-size:3.25595px;stroke-width:0.406993">128+64</tspan></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.172283;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4" + width="3.9594908" + height="20.917336" + x="102.34914" + y="51.644016" /> + <path + style="fill:none;stroke:#646567;stroke-width:0.307649;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851-9)" + d="m 106.30863,62.387718 h 15.04607 l -0.11597,-9.980023" + id="path6841-9" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:2.11667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="-33.604271" + y="18.353489" + id="text5568-5-9-7-9-2-8" + transform="rotate(-90.138025)"><tspan + sodipodi:role="line" + id="tspan5566-19-0-3-7-1-9" + x="-33.604271" + y="18.353489" + style="font-size:2.11667px;stroke-width:0.264583" /></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.172283;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4-5-3-4" + width="3.9594908" + height="20.917336" + x="191.43759" + y="5.6676989" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="197.73004" + y="4.3720813" + id="text5568-6-11-4-7-4-6" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-1-2-6" + x="197.73004" + y="4.3720813" + style="font-size:3.25595px;stroke-width:0.406993">1</tspan></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9)" + d="m 117.47494,111.7506 13.75834,-1e-5" + id="path4524-5-9-2-5-7" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#cc071e;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-2)" + d="m 117.47494,116.65563 13.75834,-1e-5" + id="path4524-5-9-2-5-7-5" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#646567;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-9)" + d="m 117.47494,121.03719 13.75834,-10e-6" + id="path4524-5-9-2-5-7-7" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#e30066;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-96)" + d="m 117.47494,126.47707 h 13.75834" + id="path4524-5-9-2-5-7-54" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#f6a800;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-4)" + d="m 117.47494,131.39346 h 13.75834" + id="path4524-5-9-2-5-7-9" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#00549f;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="133.08565" + y="113.11308" + id="text5568-6-11-8-8-27"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-9-5" + x="133.08565" + y="113.11308" + style="font-size:4.93889px;fill:#00549f;fill-opacity:1;stroke-width:0.264583">SeparableConv3D (5x5x5), ReLu</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#cc071e;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="133.01743" + y="118.01804" + id="text5568-6-11-8-8-27-3"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-9-5-5" + x="133.01743" + y="118.01804" + style="font-size:4.93889px;fill:#cc071e;fill-opacity:1;stroke-width:0.264583">BatchNormalization & MaxPooling3D with size = (2, 2, 2)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#646567;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="133.04016" + y="122.39962" + id="text5568-6-11-8-8-27-8"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-9-5-1" + x="133.04016" + y="122.39962" + style="font-size:4.93889px;fill:#646567;fill-opacity:1;stroke-width:0.264583">UpSampling with size = (2, 2, 2) </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#e30066;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="133.08565" + y="127.83945" + id="text5568-6-11-8-8-27-1"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-9-5-4" + x="133.08565" + y="127.83945" + style="font-size:4.93889px;fill:#e30066;fill-opacity:1;stroke-width:0.264583">SeparableConv3D (1, 1, 1), sigmoids</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#f6a800;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="133.08565" + y="132.75574" + id="text5568-6-11-8-8-27-5"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-9-5-9" + x="133.08565" + y="132.75574" + style="font-size:4.93889px;fill:#f6a800;fill-opacity:1;stroke-width:0.264583">Skip connection</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:16.2798px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="190.26579" + y="31.562222" + id="text11384" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan11382" + x="190.26579" + y="31.562222" + style="font-size:5.42659px;stroke-width:0.406993">output</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:16.2798px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="-27.068876" + y="31.643038" + id="text11384-1" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan11382-4" + x="-27.068876" + y="31.643038" + style="font-size:5.42659px;stroke-width:0.406993">input</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="-11.196135" + y="4.7814555" + id="text5568-6-14" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-47" + x="-11.196135" + y="4.7814555" + style="font-size:3.25595px;stroke-width:0.406993">32</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.88056px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="-75.40625" + y="16.541666" + id="text2450"><tspan + sodipodi:role="line" + id="tspan2448" + x="-75.40625" + y="16.541666" + style="stroke-width:0.264583" /></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6)" + d="m -16.467636,15.791846 h 4.011789" + id="path4524-1" + inkscape:connector-curvature="0" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-40" + width="3.9594908" + height="20.917336" + x="0.42158175" + y="28.596304" /> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1)" + d="m 4.7770203,39.054975 h 4.01179" + id="path4524-18" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="0.43334457" + y="27.006281" + id="text5568-1" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-6" + x="0.43334457" + y="27.006281" + style="font-size:3.25595px;stroke-width:0.406993">32</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="11.015184" + y="27.006277" + id="text5568-6-70" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-8" + x="11.015184" + y="27.006277" + style="font-size:3.25595px;stroke-width:0.406993">32</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="-40.465572" + y="-0.2042027" + id="text5568-5-8" + transform="matrix(-0.00234362,-1.0278914,0.97285977,-0.00247619,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2" + x="-40.465572" + y="-0.2042027" + style="font-size:3.25595px;stroke-width:0.406993">16<tspan + style="font-size:2.11637px;baseline-shift:super;stroke-width:0.406993" + id="tspan3612">3</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="21.597023" + y="27.413269" + id="text5568-6-14-4" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-47-6" + x="21.597023" + y="27.413269" + style="font-size:3.25595px;stroke-width:0.406993">64</tspan></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3)" + d="m 15.435603,39.054975 h 4.011789" + id="path4524-1-9" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="-17.045965" + y="-33.625294" + id="text5568-5-8-0" + transform="matrix(-0.00234362,-1.0278914,0.97285977,-0.00247619,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-0" + x="-17.045965" + y="-33.625294" + style="font-size:3.25595px;stroke-width:0.406993">32<tspan + style="font-size:2.11637px;baseline-shift:super;stroke-width:0.406993" + id="tspan3635">3</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="54.244312" + y="68.310081" + id="text5568-6-7-9" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-4-6" + x="54.244312" + y="68.310081" + style="font-size:3.25595px;stroke-width:0.406993">32</tspan></text> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-40-0" + width="3.9594908" + height="20.917336" + x="31.618328" + y="51.644016" /> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-8)" + d="m 35.973762,62.102695 h 4.011789" + id="path4524-18-6" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="32.500305" + y="49.428543" + id="text5568-1-3" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-6-5" + x="32.500305" + y="49.428543" + style="font-size:3.25595px;stroke-width:0.406993">64</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="43.082127" + y="49.428535" + id="text5568-6-70-2" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-8-5" + x="43.082127" + y="49.428535" + style="font-size:3.25595px;stroke-width:0.406993">64</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="-61.335125" + y="30.998587" + id="text5568-5-8-4" + transform="matrix(-0.00234362,-1.0278914,0.97285977,-0.00247619,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-1" + x="-61.335125" + y="30.998587" + style="font-size:3.25595px;stroke-width:0.406993">8<tspan + style="font-size:2.11637px;baseline-shift:super;stroke-width:0.406993" + id="tspan4507">3</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="52.849976" + y="49.835529" + id="text5568-6-14-4-7" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-47-6-4" + x="52.849976" + y="49.835529" + style="font-size:3.25595px;stroke-width:0.406993">128</tspan></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9)" + d="m 46.632338,62.102695 h 4.011787" + id="path4524-1-9-1" + inkscape:connector-curvature="0" /> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.172283;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4-9" + width="3.9594908" + height="20.917336" + x="91.144196" + y="51.644016" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="92.872635" + y="49.280895" + id="text5568-6-11-4-4" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-3" + x="92.872635" + y="49.280895" + style="font-size:3.25595px;stroke-width:0.406993">128</tspan></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6)" + d="m 84.751423,62.102695 h 4.011788" + id="path4524-1-9-1-0" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-8)" + d="m 96.190729,62.102695 h 4.011791" + id="path4524-1-9-1-07" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="-61.439869" + y="74.469849" + id="text5568-5-8-4-4" + transform="matrix(-0.00234362,-1.0278914,0.97285977,-0.00247619,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-1-1" + x="-61.439869" + y="74.469849" + style="font-size:3.25595px;stroke-width:0.406993">8<tspan + style="font-size:2.11635px;baseline-shift:super;stroke-width:0.406993" + id="tspan4507-4">3</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="104.31316" + y="49.086075" + id="text5568-6-11-4-4-6" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-3-7" + x="104.31316" + y="49.086075" + style="font-size:3.25595px;stroke-width:0.406993">128</tspan></text> + <path + style="fill:none;stroke:#f6a800;stroke-width:0.45917;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973)" + d="m 35.608273,53.024706 h 37.04469" + id="path7963" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.172283;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-7" + width="3.9594908" + height="20.917336" + x="118.86974" + y="28.649065" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-8-5-1-7" + width="3.9594908" + height="20.917336" + x="114.11835" + y="28.649065" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="115.67365" + y="26.770468" + id="text5568-6-11-8-2" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-0" + x="115.67365" + y="26.770468" + style="font-size:3.25595px;stroke-width:0.406993">32+128</tspan></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.172283;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4-2" + width="3.9594908" + height="20.917336" + x="141.04289" + y="28.649065" /> + <path + style="fill:none;stroke:#646567;stroke-width:0.307649;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851-9-2)" + d="m 145.00238,38.098574 h 15.04607 l 0.10926,-8.958787" + id="path6841-9-5" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.172283;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4-9-9" + width="3.9594908" + height="20.917336" + x="129.83795" + y="28.649065" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="133.4597" + y="26.909966" + id="text5568-6-11-4-4-3" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-3-9" + x="133.4597" + y="26.909966" + style="font-size:3.25595px;stroke-width:0.406993">64</tspan></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-7)" + d="m 123.44517,39.107744 h 4.01179" + id="path4524-1-9-1-0-1" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-8-1)" + d="m 134.88448,39.107744 h 4.01178" + id="path4524-1-9-1-07-7" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="144.90024" + y="26.715141" + id="text5568-6-11-4-4-6-0" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-3-7-0" + x="144.90024" + y="26.715141" + style="font-size:3.25595px;stroke-width:0.406993">64</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="-40.659889" + y="116.21005" + id="text5568-5-8-2" + transform="matrix(-0.00234362,-1.0278914,0.97285977,-0.00247619,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-5" + x="-40.659889" + y="116.21005" + style="font-size:3.25595px;stroke-width:0.406993">16<tspan + style="font-size:2.11635px;baseline-shift:super;stroke-width:0.406993" + id="tspan3612-4">3</tspan></tspan></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.172283;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-7-6" + width="3.9594908" + height="20.917336" + x="158.07526" + y="5.6676989" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-8-5-1-7-4" + width="3.9594908" + height="20.917336" + x="153.32387" + y="5.7515259" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="157.60077" + y="4.4127584" + id="text5568-6-11-8-2-4" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-0-2" + x="157.60077" + y="4.4127584" + style="font-size:3.25595px;stroke-width:0.406993">6+64</tspan></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.172283;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4-2-1" + width="3.9594908" + height="20.917336" + x="180.24838" + y="5.6676989" /> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.172283;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4-9-9-2" + width="3.9594908" + height="20.917336" + x="169.04347" + y="5.6676989" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="173.75883" + y="4.5522532" + id="text5568-6-11-4-4-3-5" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-3-9-8" + x="173.75883" + y="4.5522532" + style="font-size:3.25595px;stroke-width:0.406993">32</tspan></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-7-5)" + d="m 162.65069,16.126367 h 4.01179" + id="path4524-1-9-1-0-1-6" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#e30066;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-8-1-2)" + d="m 185.17664,16.126367 h 4.01182" + id="path4524-1-9-1-07-7-7" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="185.19937" + y="4.3574319" + id="text5568-6-11-4-4-6-0-7" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-3-7-0-0" + x="185.19937" + y="4.3574319" + style="font-size:3.25595px;stroke-width:0.406993">32</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25595px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="-18.170708" + y="156.07977" + id="text5568-5-8-0-9" + transform="matrix(-0.00234362,-1.0278914,0.97285977,-0.00247619,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-0-5" + x="-18.170708" + y="156.07977" + style="font-size:3.25595px;stroke-width:0.406993">32<tspan + style="font-size:2.11635px;baseline-shift:super;stroke-width:0.406993" + id="tspan3635-7">3</tspan></tspan></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.252848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-7-5-8)" + d="m 173.86682,15.95939 h 4.01181" + id="path4524-1-9-1-0-1-6-7" + inkscape:connector-curvature="0" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-9" + width="3.9594908" + height="20.917336" + x="-10.496346" + y="5.7515259" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-4" + width="3.9594908" + height="20.917336" + x="11.112211" + y="28.596294" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-9-5" + width="3.9594908" + height="20.917336" + x="21.406891" + y="29.014643" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-4-4" + width="3.9594908" + height="20.917336" + x="42.308941" + y="51.644009" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-9-5-4" + width="3.9594908" + height="20.917336" + x="52.603619" + y="52.062359" /> + <path + style="fill:none;stroke:#f6a800;stroke-width:0.45917001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973-9)" + d="M 4.230313,30.23956 H 111.12501" + id="path7963-7" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#f6a800;stroke-width:0.45917001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973-9-8)" + d="M -27.519666,7.7499755 H 150.81283" + id="path7963-7-8" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.25594997px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.406993" + x="-22.07469" + y="4.7814555" + id="text5568-6-14-0" + transform="scale(0.97286258,1.0278944)"><tspan + sodipodi:role="line" + id="tspan5566-1-47-3" + x="-22.07469" + y="4.7814555" + style="font-size:3.25594997px;stroke-width:0.406993">16</tspan></text> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.17197999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-9-0" + width="3.9594908" + height="20.917336" + x="-21.079679" + y="5.7515259" /> + </g> +</svg> diff --git a/Bericht/Bilder/UNet_MPIE.svg b/Bericht/Bilder/UNet_MPIE.svg new file mode 100644 index 0000000000000000000000000000000000000000..80891d4aa43f5d561bf0e580f7b8b6ac2ac89f2f --- /dev/null +++ b/Bericht/Bilder/UNet_MPIE.svg @@ -0,0 +1,1322 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="360.37253mm" + height="140mm" + viewBox="0 0 360.37253 140" + version="1.1" + id="svg8" + inkscape:version="0.92.4 (5da689c313, 2019-01-14)" + sodipodi:docname="UNet_MPIE.svg" + inkscape:export-filename="F:\RWTH\HiWi_IEHK\DAMASK3\Bericht\Bilder\Präsi_UNet_MPIE.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + <defs + id="defs2"> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker7973" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + transform="scale(0.8)" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7971" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="marker6851" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path6849" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5167" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path5165" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path4668" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5167-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + inkscape:connector-curvature="0" + transform="scale(0.8)" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path5165-4" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5167-44" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + inkscape:connector-curvature="0" + transform="scale(0.8)" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path5165-91" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="marker6851-9" + style="overflow:visible" + inkscape:isstock="true"> + <path + inkscape:connector-curvature="0" + id="path6849-4" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker7973-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + transform="scale(0.8)" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7971-6" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker7973-0-2" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + transform="scale(0.8)" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7971-6-5" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-6-9-5-9" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-8-6-1-40" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-6-9-5-9-2" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-8-6-1-40-3" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-6-9-5-9-9" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-8-6-1-40-4" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-6-9-5-9-96" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-8-6-1-40-8" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#e30066;fill-opacity:1;fill-rule:evenodd;stroke:#e30066;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-6-9-5-9-4" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-8-6-1-40-1" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-6" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-9" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="marker6851-9-2" + style="overflow:visible" + inkscape:isstock="true"> + <path + inkscape:connector-curvature="0" + id="path6849-4-0" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-8-1-2" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-4-2-4" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#e30066;fill-opacity:1;fill-rule:evenodd;stroke:#e30066;stroke-width:1pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-2" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-2" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5167-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path5165-2" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5167-9-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill:#cc071e;fill-opacity:1;fill-rule:evenodd;stroke:#cc071e;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path5165-2-4" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-1-2-2" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-4-2-7" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker7973-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + transform="scale(0.8)" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7971-5" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-6-2" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-9-1" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="marker6851-9-29" + style="overflow:visible" + inkscape:isstock="true"> + <path + inkscape:connector-curvature="0" + id="path6849-4-6" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1.00000003pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-6-2-5" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-9-1-5" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="marker6851-9-29-0" + style="overflow:visible" + inkscape:isstock="true"> + <path + inkscape:connector-curvature="0" + id="path6849-4-6-8" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#646567;fill-opacity:1;fill-rule:evenodd;stroke:#646567;stroke-width:1.00000003pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker7973-4-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + transform="scale(0.8)" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7971-5-2" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0" + refX="0" + id="TriangleOutL-6-3-9-6-2-5-6" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + id="path4668-5-7-9-9-1-5-4" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#00549f;fill-opacity:1;fill-rule:evenodd;stroke:#00549f;stroke-width:1.00000003pt;stroke-opacity:1" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker7973-4-7-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutL"> + <path + transform="scale(0.8)" + style="fill:#f6a800;fill-opacity:1;fill-rule:evenodd;stroke:#f6a800;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7971-5-2-1" + inkscape:connector-curvature="0" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.99678844" + inkscape:cx="420.09154" + inkscape:cy="368.91201" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1920" + inkscape:window-height="1017" + inkscape:window-x="1912" + inkscape:window-y="-8" + inkscape:window-maximized="1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid3713" + originx="73.997173" + originy="-216.33331" /> + </sodipodi:namedview> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(73.997169,-0.66666663)"> + <rect + id="rect3715" + width="300" + height="140" + x="-73.997169" + y="0.66666663" + style="fill:none;stroke:none;stroke-width:1.58113;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522" + width="4.5496478" + height="24.822634" + x="-45.702316" + y="6.7501712" /> + <path + style="fill:none;stroke:#00549f;stroke-width:0.29525599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL)" + d="m -40.697708,18.632308 h 4.60974" + id="path4524" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#cc071e;stroke-width:0.359249;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167)" + d="m -31.03023,32.036531 -1e-6,24.822634 h 6.824471" + id="path5157" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-46.790131" + y="5.004878" + id="text5568" + transform="scale(0.95730424,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566" + x="-46.790131" + y="5.004878" + style="font-size:3.80205011px;stroke-width:0.475256">3</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-35.383984" + y="5.0048714" + id="text5568-6" + transform="scale(0.95730424,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1" + x="-35.383984" + y="5.0048714" + style="font-size:3.80205011px;stroke-width:0.475256">16</tspan></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4" + width="4.5496478" + height="24.822634" + x="47.623749" + y="111.20427" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="48.399288" + y="105.4744" + id="text5568-6-7-7" + transform="scale(0.95730424,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-4-9" + x="48.399288" + y="105.4744" + style="font-size:3.80205011px;stroke-width:0.475256">128</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:2.11667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="-46.164543" + y="-44.383221" + id="text5568-5-9-2" + transform="rotate(-90.138025)"><tspan + sodipodi:role="line" + id="tspan5566-19-0-9" + x="-46.164543" + y="-44.383221" + style="font-size:2.11667px;stroke-width:0.264583" /></text> + <path + style="fill:none;stroke:#cc071e;stroke-width:0.359249;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167-44)" + d="m 38.524491,111.20421 v 24.82263 h 7.27948" + id="path5157-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-120.03315" + y="48.352871" + id="text5568-5-9-7" + transform="matrix(-0.00230614,-1.0445969,0.95730151,-0.00251644,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-0-3" + x="-120.03315" + y="48.352871" + style="font-size:3.80205011px;stroke-width:0.475256">16<tspan + style="font-size:64.99999762%;baseline-shift:super" + id="tspan4250">2</tspan></tspan></text> + <path + style="fill:none;stroke:#646567;stroke-width:0.359249;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851)" + d="m 52.173521,124.1447 h 18.19869 v -9.92906" + id="path6841" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7" + width="4.5496478" + height="24.822634" + x="73.601868" + y="86.578156" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-8-5-1" + width="4.5496478" + height="24.822634" + x="68.142319" + y="86.578156" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="69.833282" + y="81.595901" + id="text5568-6-11-8" + transform="scale(0.95730424,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3" + x="69.833282" + y="81.595901" + style="font-size:3.80205011px;stroke-width:0.475256">64+128</tspan></text> + <path + style="fill:none;stroke:#646567;stroke-width:0.359249;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851-9)" + d="M 90.909041,99.216386 H 108.19771 L 108.06446,87.373077" + id="path6841-9" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:2.11667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="-33.604271" + y="18.353489" + id="text5568-5-9-7-9-2-8" + transform="rotate(-90.138025)"><tspan + sodipodi:role="line" + id="tspan5566-19-0-3-7-1-9" + x="-33.604271" + y="18.353489" + style="font-size:2.11667px;stroke-width:0.264583" /></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4-5-3-4" + width="4.5496478" + height="24.822634" + x="195.6263" + y="7.1471415" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="205.46327" + y="5.5086651" + id="text5568-6-11-4-7-4-6" + transform="scale(0.95730424,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-1-2-6" + x="205.46327" + y="5.5086651" + style="font-size:3.80205011px;stroke-width:0.475256">1</tspan></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9)" + d="m 121.44382,113.60264 13.75841,-10e-6" + id="path4524-5-9-2-5-7" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#cc071e;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-2)" + d="m 121.44382,118.50767 13.75841,-1e-5" + id="path4524-5-9-2-5-7-5" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#646567;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-9)" + d="m 121.44382,122.88923 13.75841,-1e-5" + id="path4524-5-9-2-5-7-7" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#e30066;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-96)" + d="m 121.44382,126.7416 h 13.75841" + id="path4524-5-9-2-5-7-54" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#f6a800;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-6-9-5-9-4)" + d="m 121.44382,133.2455 h 13.75841" + id="path4524-5-9-2-5-7-9" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.93888998px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#00549f;fill-opacity:1;stroke:none;stroke-width:0.26458299" + x="137.05434" + y="114.96516" + id="text5568-6-11-8-8-27"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-9-5" + x="137.05434" + y="114.96516" + style="font-size:4.93888998px;fill:#00549f;fill-opacity:1;stroke-width:0.26458299">SeparableConv2D (9x9), ReLu</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.93888998px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#cc071e;fill-opacity:1;stroke:none;stroke-width:0.26458299" + x="136.98613" + y="119.87012" + id="text5568-6-11-8-8-27-3"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-9-5-5" + x="136.98613" + y="119.87012" + style="font-size:4.93888998px;fill:#cc071e;fill-opacity:1;stroke-width:0.26458299">BatchNormalization & MaxPooling3D with size = (2, 2)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.93888998px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#646567;fill-opacity:1;stroke:none;stroke-width:0.26458299" + x="137.00882" + y="124.2517" + id="text5568-6-11-8-8-27-8"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-9-5-1" + x="137.00882" + y="124.2517" + style="font-size:4.93888998px;fill:#646567;fill-opacity:1;stroke-width:0.26458299">UpSampling with size = (2, 2) </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.93888998px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#e30066;fill-opacity:1;stroke:none;stroke-width:0.26458299" + x="137.05434" + y="129.69153" + id="text5568-6-11-8-8-27-1"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-9-5-4" + x="137.05434" + y="129.69153" + style="font-size:4.93888998px;fill:#e30066;fill-opacity:1;stroke-width:0.26458299">SeparableConv2D (1, 1), sigmoids</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.93888998px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#f6a800;fill-opacity:1;stroke:none;stroke-width:0.26458299" + x="137.05434" + y="134.60788" + id="text5568-6-11-8-8-27-5"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-9-5-9" + x="137.05434" + y="134.60788" + style="font-size:4.93888998px;fill:#f6a800;fill-opacity:1;stroke-width:0.26458299">Skip connection</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:19.01029968px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="194.53603" + y="40.298672" + id="text11384" + transform="scale(0.95730424,1.0446)"><tspan + sodipodi:role="line" + id="tspan11382" + x="194.53603" + y="40.298672" + style="font-size:6.33675003px;stroke-width:0.475256">output</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:19.01029968px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-50.959358" + y="36.847031" + id="text11384-1" + transform="scale(0.95730424,1.0446)"><tspan + sodipodi:role="line" + id="tspan11382-4" + x="-50.959358" + y="36.847031" + style="font-size:6.33675003px;stroke-width:0.475256">input</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.88056px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="-75.40625" + y="16.541666" + id="text2450"><tspan + sodipodi:role="line" + id="tspan2448" + x="-75.40625" + y="16.541666" + style="stroke-width:0.264583" /></text> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-40" + width="4.5496478" + height="24.822634" + x="-22.273111" + y="33.827377" /> + <path + style="fill:none;stroke:#00549f;stroke-width:0.29525599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1)" + d="m -16.739337,46.238698 h 4.609745" + id="path4524-18" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-23.266479" + y="31.432583" + id="text5568-1" + transform="scale(0.95730424,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-6" + x="-23.266479" + y="31.432583" + style="font-size:3.80205011px;stroke-width:0.475256">16</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-10.909825" + y="31.432579" + id="text5568-6-70" + transform="scale(0.95730424,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-8" + x="-10.909825" + y="31.432579" + style="font-size:3.80205011px;stroke-width:0.475256">32</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-47.59861" + y="-24.011879" + id="text5568-5-8" + transform="matrix(-0.00230614,-1.0445969,0.95730151,-0.00251644,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2" + x="-47.59861" + y="-24.011879" + style="font-size:3.80205011px;stroke-width:0.475256">128<tspan + style="font-size:64.99999762%;baseline-shift:super" + id="tspan4129">2</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="-22.310564" + y="-49.22419" + id="text5568-5-8-0" + transform="matrix(-0.00230614,-1.0445969,0.95730151,-0.00251644,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-0" + x="-22.310564" + y="-49.22419" + style="font-size:3.80205011px;stroke-width:0.475256">256<tspan + style="font-size:64.99999762%;baseline-shift:super" + id="tspan4127">2</tspan></tspan></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4-9" + width="4.5496478" + height="24.822634" + x="86.204926" + y="86.578156" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.475256" + x="90.204765" + y="81.758804" + id="text5568-6-11-4-4" + transform="scale(0.95730424,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-3" + x="90.204765" + y="81.758804" + style="font-size:3.80205011px;stroke-width:0.475256">64</tspan><tspan + sodipodi:role="line" + x="90.204765" + y="86.511368" + style="font-size:3.80205011px;stroke-width:0.475256" + id="tspan4252" /></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.29525599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6)" + d="m 78.85932,98.989476 h 4.609736" + id="path4524-1-9-1-0" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#f6a800;stroke-width:0.50074017;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973)" + d="M 27.832876,88.216615 H 64.957601" + id="path7963" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#e30066;stroke-width:0.29525599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-8-1-2)" + d="m 188.43187,19.558452 h 4.60978" + id="path4524-1-9-1-07-7-7" + inkscape:connector-curvature="0" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4" + width="4.5496478" + height="24.822634" + x="-33.418259" + y="6.7501636" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-4" + width="4.5496478" + height="24.822634" + x="-9.9890547" + y="33.827362" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-40-2" + width="4.5496483" + height="24.822636" + x="0.79036957" + y="60.262779" /> + <path + style="fill:none;stroke:#00549f;stroke-width:0.29525599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-2)" + d="M 6.3241441,72.674101 H 10.933887" + id="path4524-18-0" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525597" + x="0.82563543" + y="56.739285" + id="text5568-1-36" + transform="scale(0.95730423,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-6-1" + x="0.82563543" + y="56.739285" + style="font-size:3.80205011px;stroke-width:0.47525597">32</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525597" + x="13.735053" + y="56.739281" + id="text5568-6-70-6" + transform="scale(0.95730423,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-8-8" + x="13.735053" + y="56.739281" + style="font-size:3.80205011px;stroke-width:0.47525597">64</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525603" + x="-71.950104" + y="0.021637933" + id="text5568-5-8-6" + transform="matrix(-0.00230614,-1.0445969,0.95730152,-0.00251644,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-4" + x="-71.950104" + y="0.021637933" + style="font-size:3.80205011px;stroke-width:0.47525603">64<tspan + style="font-size:64.99999762%;baseline-shift:super" + id="tspan4189">2</tspan></tspan></text> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-4-5" + width="4.5496483" + height="24.822636" + x="13.074429" + y="60.262764" /> + <path + style="fill:none;stroke:#cc071e;stroke-width:0.3570289;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167-9)" + d="m -7.9667487,58.77779 -1e-6,24.516778 h 6.8244712" + id="path5157-9" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-40-2-4" + width="4.5496483" + height="24.822636" + x="23.928963" + y="86.39196" /> + <path + style="fill:none;stroke:#00549f;stroke-width:0.29525599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-1-2-2)" + d="m 29.462752,98.803269 h 4.609744" + id="path4524-18-0-8" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525597" + x="24.996199" + y="81.752892" + id="text5568-1-36-2" + transform="scale(0.95730423,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-6-1-5" + x="24.996199" + y="81.752892" + style="font-size:3.80205011px;stroke-width:0.47525597">64</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525597" + x="36.800083" + y="81.752892" + id="text5568-6-70-6-7" + transform="scale(0.95730423,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-8-8-3" + x="36.800083" + y="81.752892" + style="font-size:3.80205011px;stroke-width:0.47525597">128</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525606" + x="-97.021805" + y="24.131876" + id="text5568-5-8-6-1" + transform="matrix(-0.00230614,-1.0445969,0.95730152,-0.00251644,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-4-5" + x="-97.021805" + y="24.131876" + style="font-size:3.80205011px;stroke-width:0.47525606">32<tspan + style="font-size:64.99999762%;baseline-shift:super" + id="tspan4248">2</tspan></tspan></text> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-4-5-5" + width="4.5496483" + height="24.822636" + x="36.213032" + y="86.391945" /> + <path + style="fill:none;stroke:#cc071e;stroke-width:0.35702893;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5167-9-3)" + d="m 15.171859,84.906956 -10e-7,24.516834 h 6.824472" + id="path5157-9-2" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525609" + x="-97.355652" + y="69.963409" + id="text5568-5-8-6-1-3" + transform="matrix(-0.00230614,-1.0445969,0.95730152,-0.00251644,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-4-5-5" + x="-97.355652" + y="69.963409" + style="font-size:3.80205011px;stroke-width:0.47525609">32<tspan + style="font-size:2.47133255px;baseline-shift:super;stroke-width:0.47525609" + id="tspan4248-9">2</tspan></tspan></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-0" + width="4.5496483" + height="24.822636" + x="105.84805" + y="59.692478" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-8-5-1-5" + width="4.5496483" + height="24.822636" + x="100.38849" + y="59.692478" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525597" + x="103.51763" + y="55.858139" + id="text5568-6-11-8-8" + transform="scale(0.95730423,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-04" + x="103.51763" + y="55.858139" + style="font-size:3.80205011px;stroke-width:0.47525597">32+64</tspan></text> + <path + style="fill:none;stroke:#646567;stroke-width:0.35924903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851-9-29)" + d="m 123.15522,72.330711 h 17.28867 l -0.13325,-11.843312" + id="path6841-9-58" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4-9-1" + width="4.5496483" + height="24.822636" + x="118.45111" + y="59.692478" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525597" + x="123.33634" + y="56.021042" + id="text5568-6-11-4-4-9" + transform="scale(0.95730423,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-3-2" + x="123.33634" + y="56.021042" + style="font-size:3.80205011px;stroke-width:0.47525597">32</tspan><tspan + sodipodi:role="line" + x="123.33634" + y="60.773605" + style="font-size:3.80205011px;stroke-width:0.47525597" + id="tspan4252-9" /></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.29525599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-2)" + d="m 111.1055,72.103801 h 4.60973" + id="path4524-1-9-1-0-0" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#f6a800;stroke-width:0.52346361;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973-4)" + d="m 5.3400178,61.321113 91.8637572,0.0098" + id="path7963-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525606" + x="-71.305298" + y="103.95301" + id="text5568-5-8-6-4" + transform="matrix(-0.00230614,-1.0445969,0.95730152,-0.00251644,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-4-1" + x="-71.305298" + y="103.95301" + style="font-size:3.80205011px;stroke-width:0.47525606">64<tspan + style="font-size:2.47133255px;baseline-shift:super;stroke-width:0.47525606" + id="tspan4189-2">2</tspan></tspan></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-0-3" + width="4.5496483" + height="24.822636" + x="138.16252" + y="33.323647" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-8-5-1-5-4" + width="4.5496483" + height="24.822636" + x="132.70293" + y="33.323647" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525597" + x="137.27306" + y="30.615211" + id="text5568-6-11-8-8-2" + transform="scale(0.95730423,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-04-4" + x="137.27306" + y="30.615211" + style="font-size:3.80205011px;stroke-width:0.47525597">16+32</tspan></text> + <path + style="fill:none;stroke:#646567;stroke-width:0.35924906;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6851-9-29-0)" + d="m 155.46911,45.961894 h 17.28867 l -0.13325,-11.843311" + id="path6841-9-58-0" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4-9-1-7" + width="4.5496483" + height="24.822636" + x="150.76558" + y="33.323647" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525597" + x="157.09177" + y="30.778114" + id="text5568-6-11-4-4-9-8" + transform="scale(0.95730423,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-3-2-1" + x="157.09177" + y="30.778114" + style="font-size:3.80205011px;stroke-width:0.47525597">16</tspan><tspan + sodipodi:role="line" + x="157.09177" + y="35.530678" + style="font-size:3.80205011px;stroke-width:0.47525597" + id="tspan4252-9-0" /></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.29525599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-2-5)" + d="m 143.41939,45.734985 h 4.60973" + id="path4524-1-9-1-0-0-7" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#f6a800;stroke-width:0.52346361;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973-4-7)" + d="m -17.717143,34.089667 147.426253,0.0098" + id="path7963-3-4" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525603" + x="-47.63723" + y="137.23981" + id="text5568-5-8-5" + transform="matrix(-0.00230614,-1.0445969,0.95730152,-0.00251644,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-3" + x="-47.63723" + y="137.23981" + style="font-size:3.80205011px;stroke-width:0.47525603">128<tspan + style="font-size:2.47133255px;baseline-shift:super;stroke-width:0.47525603" + id="tspan4129-1">2</tspan></tspan></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-0-3-4" + width="4.5496483" + height="24.822636" + x="170.21556" + y="6.9432173" /> + <rect + style="fill:#fabe50;fill-opacity:1;stroke:#000000;stroke-width:0.20082501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-4-8-5-1-5-4-4" + width="4.5496483" + height="24.822636" + x="164.75604" + y="6.9432173" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525597" + x="172.41432" + y="5.361104" + id="text5568-6-11-8-8-2-2" + transform="scale(0.95730423,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-3-04-4-5" + x="172.41432" + y="5.361104" + style="font-size:3.80205011px;stroke-width:0.47525597">3+16</tspan></text> + <rect + style="fill:#cfd1d2;fill-opacity:1;stroke:#000000;stroke-width:0.201179;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4522-8-3-4-7-4-9-1-7-1" + width="4.5496483" + height="24.822636" + x="182.81853" + y="6.9432173" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525597" + x="191.68025" + y="5.5240068" + id="text5568-6-11-4-4-9-8-0" + transform="scale(0.95730423,1.0446)"><tspan + sodipodi:role="line" + id="tspan5566-1-5-0-3-2-1-8" + x="191.68025" + y="5.5240068" + style="font-size:3.80205011px;stroke-width:0.47525597">1</tspan><tspan + sodipodi:role="line" + x="191.68025" + y="10.276569" + style="font-size:3.80205011px;stroke-width:0.47525597" + id="tspan4252-9-0-9" /></text> + <path + style="fill:none;stroke:#00549f;stroke-width:0.29525599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6-3-9-6-2-5-6)" + d="m 175.47333,19.354546 h 4.60973" + id="path4524-1-9-1-0-0-7-1" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#f6a800;stroke-width:0.52346361;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7973-4-7-5)" + d="m -41.071231,7.8966942 202.459751,0.0098" + id="path7963-3-4-8" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.80205011px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.47525603" + x="-22.110468" + y="171.22668" + id="text5568-5-8-0-3" + transform="matrix(-0.00230614,-1.0445969,0.95730152,-0.00251644,0,0)"><tspan + sodipodi:role="line" + id="tspan5566-19-2-0-1" + x="-22.110468" + y="171.22668" + style="font-size:3.80205011px;stroke-width:0.47525603">256<tspan + style="font-size:2.47133255px;baseline-shift:super;stroke-width:0.47525603" + id="tspan4127-6">2</tspan></tspan></text> + </g> +</svg> diff --git "a/Bericht/Bilder/difference_Pr\303\244si.png" "b/Bericht/Bilder/difference_Pr\303\244si.png" new file mode 100644 index 0000000000000000000000000000000000000000..0fe52c1cf6cca1dd31a482992f3a04dbb6cbf132 Binary files /dev/null and "b/Bericht/Bilder/difference_Pr\303\244si.png" differ diff --git "a/Bericht/Bilder/difference_Pr\303\244si.xcf" "b/Bericht/Bilder/difference_Pr\303\244si.xcf" new file mode 100644 index 0000000000000000000000000000000000000000..2ea536293557b6bf90c7629253cd9e06936deccb Binary files /dev/null and "b/Bericht/Bilder/difference_Pr\303\244si.xcf" differ diff --git a/Bericht/Bilder/results_1637.xcf b/Bericht/Bilder/results_1637.xcf index fcdafba68fc2bb60b4ca83e34735d746d01573f7..c58aa9a97f241a091de7846641d12e508fe9cd1f 100644 Binary files a/Bericht/Bilder/results_1637.xcf and b/Bericht/Bilder/results_1637.xcf differ diff --git a/Bericht/Bilder/results_64_vertikal.png b/Bericht/Bilder/results_64_vertikal.png new file mode 100644 index 0000000000000000000000000000000000000000..90c3434d4fe46a89675ec143ad3f54fd6c61e672 Binary files /dev/null and b/Bericht/Bilder/results_64_vertikal.png differ diff --git a/Bericht/Bilder/results_64_vertikal.xcf b/Bericht/Bilder/results_64_vertikal.xcf new file mode 100644 index 0000000000000000000000000000000000000000..cf62c241e946a39eb08d5d4b9cb9390aec0fe09a Binary files /dev/null and b/Bericht/Bilder/results_64_vertikal.xcf differ diff --git "a/Bericht/Bilder/results_pr\303\244si.png" "b/Bericht/Bilder/results_pr\303\244si.png" new file mode 100644 index 0000000000000000000000000000000000000000..a2886f3d58098a97e97b27b867d431ad4aaf4fdd Binary files /dev/null and "b/Bericht/Bilder/results_pr\303\244si.png" differ diff --git a/Bericht/MasterkolloquiumFehlemann.pptx b/Bericht/MasterkolloquiumFehlemann.pptx new file mode 100644 index 0000000000000000000000000000000000000000..fe567c23b591101a9ec6cd0dd5e7772c794901b7 Binary files /dev/null and b/Bericht/MasterkolloquiumFehlemann.pptx differ diff --git a/RVE_Generator/Create_Trainingsdata.py b/RVE_Generator/Create_Trainingsdata.py deleted file mode 100644 index 5fe35139962345e3990b8e88845bdc8f4da28231..0000000000000000000000000000000000000000 --- a/RVE_Generator/Create_Trainingsdata.py +++ /dev/null @@ -1,126 +0,0 @@ -import numpy as np -import os -import damask -import pyvista as pv -import yaml -from yaml.loader import SafeLoader - -def check_if_string_in_file(file_name, string_to_search): - """ Check if any line in the file contains given string """ - # Open the file in read only mode - with open(file_name, 'r') as read_obj: - # Read all lines in the file one by one - for line in read_obj: - # For each line, check if line contains the string - if string_to_search in line: - return line - return "DP1000no result" - -def export_Inputchannel(Input_path: str, Output_path: str): - input = np.empty((len(os.listdir(Input_path)),64,64,64,5)) - - for folder_id, folder in enumerate(os.listdir(Input_path)): - print(f'processed folder: {folder}') - folder_path = f'{Input_path}/{folder}' - grid = pv.read(f'{folder_path}/grid.vti') - grid = grid['material'] - grid_grains = np.unique(grid, return_counts=False) - with open(f'{folder_path}/material.yaml') as file: - material = yaml.load(file, Loader=SafeLoader) - material = material['material'] - if len(grid_grains) != len(material): # check if amount of grains in material.yaml and grid.vti is equal - print('number of grains inconsistent') - grain_lookup = {} #dict which grain correspond to which phase&Orientation - phase_lookup = {'Ferrite': 0, - 'Martensite': 1 - } - for grain_id, grain in enumerate(material): - grain['constituents'][0]['phase'] = phase_lookup[grain['constituents'][0]['phase']] # change values according to the dictionary phase_lookup - grain_lookup[grain_id] = grain['constituents'][0] #store Orientation and phase to the corresponding grain index - orientation_matrix = [[np.array(grain_lookup[id]['O'])] for id in grid ] # get for each node the corresponding Orientation via grain_id - orientation_matrix = np.asarray(orientation_matrix).reshape(64,64,64,4) #reshape to matrix - phase_matrix = [grain_lookup[id]['phase'] for id in grid ]# get for each node the corresponding phase via grain_id - phase_matrix = np.asarray(phase_matrix).reshape(64,64,64,1) #reshape to match dimension of orientation_matrix - input_matrix = np.append(orientation_matrix, phase_matrix,axis = 3) #input[x,y,z,input], input[0-3]: Orientation, input[4]: Phase - input[folder_id,:,:,:,:] = input_matrix[np.newaxis, ...] - - np.save(f'{Output_path}/Training_data_64',input) - -def export_Outputlabel(Input_path: str, Output_path: str): - output = np.empty((len(os.listdir(Input_path)),64,64,64)) - - for folder_id, folder in enumerate(os.listdir(Input_path)): - - print(f'processed folder: {folder}') - folder_path = f'{Input_path}/{folder}' - mesh = pv.read(f'{folder_path}/Results_inc100.vti') - sigma_vM = pv.get_array(mesh,'phase/mechanical/sigma_vM / Pa') - #epsilon_vM = pv.get_array(mesh,'phase/mechanical/epsilon_V^0.0(F)_vM / 1') - #epsilon_matrix = np.reshape(epsilon_vM, np.asarray(mesh.dimensions) - 1) - sigma_matrix = np.reshape(sigma_vM, np.asarray(mesh.dimensions) - 1) - #new_output = np.array((sigma_matrix, epsilon_matrix)) - new_output = np.array(sigma_matrix) - #new_output = np.moveaxis(new_output, 0, -1) # change axis so output[x,y,z,label] with label[0]: sigma_vM and label[1]: epsilon_vM - output[folder_id,:,:,:] = new_output[np.newaxis, ...] - - np.save(f'{Output_path}/Training_labels_64',output) #save the numy array - -def export_vtk(path:str): - for file in os.listdir(path): - filepath = f'{path}/{file}' - result = damask.Result(f'{filepath}/grid_load.hdf5') - result = result.view('increments', 0) - #if not os.path.exists(f'{filepath}/Result_inc100.vti'): - #add_MisesStress(result) - #result.custom_export_VTK(filepath, parallel= False) #combined phase - -def add_MisesStress(result: damask.Result): - #if result.get('epsilon_V^0.0(F)') == None: - #result.add_strain() # Dehnung hinzufügen - if result.get('sigma') == None: #if Cauchy Stress is missing. Add it to result object - result.add_stress_Cauchy() # Spannung hinzufüge - if result.get('sigma_vM') == None: # if von Mises stress/strain is not present in result. Add it to the result - result.add_equivalent_Mises('sigma') # Daraus resultierende Vergleichsspannung berechnen - #if result.get('epsilon_V^0.0(F)_vM') == None: - #result.add_equivalent_Mises('epsilon_V^0.0(F)') # Daraus resultierende Vergleichsdehnung berechnen - -def check_simlogs(path:str): - string1 = 'increment 100 converged' - string2 = 'ERROR' - - # opening a text file - for file in os.listdir(path): - if 'Sim' in file: - file1 = open(f'{path}/{file}', "r") - - # read file content - try: - readfile = file1.read() - - if string2 in readfile: - line = check_if_string_in_file(f'{path}/{file}','DP1000') - _,folder = line.strip().split('DP1000') - print(f'{string2} in simulation {file}, corresponding folder: DP1000{folder}') - # checking condition for string found or not - if string1 not in readfile: - print(f'simulation {file} did not converge') - line = check_if_string_in_file(f'{path}/{file}','DP1000') - _,folder = line.strip().split('DP1000') - print(f'corresponding folder is: DP1000{folder}') - # closing a file - except: - print(f'error in file: {path}/{file}') - file1.close() - - -if __name__ == '__main__': - #check_simlogs('E:/Data/Simulation_Output/Simlog_64') - path_to_input= 'E:/Data/Simulation_Output/OutputData_64' - path_to_output = 'E:/Data/damask3/UNet/Input' - print('the Simlogs have been checked') - export_vtk(path_to_input) - print('the VTK-Files have been exported') - #export_Inputchannel(path_to_input,path_to_output) - print('Exported Input Channels') - #export_Outputlabel(path_to_input,path_to_output) - print('Exported Output Label') diff --git a/RVE_Generator/Create_Trainingsdata.py.orig b/RVE_Generator/Create_Trainingsdata.py.orig deleted file mode 100644 index f5d0f1c44c5e5c5d30dfd7cde8d7ff3c05b7eecf..0000000000000000000000000000000000000000 --- a/RVE_Generator/Create_Trainingsdata.py.orig +++ /dev/null @@ -1,108 +0,0 @@ -import numpy as np -import os -import damask -import pyvista as pv -import yaml -from yaml.loader import SafeLoader - -def check_if_string_in_file(file_name, string_to_search): - """ Check if any line in the file contains given string """ - # Open the file in read only mode - with open(file_name, 'r') as read_obj: - # Read all lines in the file one by one - for line in read_obj: - # For each line, check if line contains the string - if string_to_search in line: - return line - return "DP1000no result" - -def export_Inputchannel(Input_path: str, Output_path: str): - input = np.empty((len(os.listdir(Input_path)),32,32,32,5)) - - for folder_id, folder in enumerate(os.listdir(Input_path)): - print(f'processed folder: {folder}') - folder_path = f'{Input_path}/{folder}' - grid = pv.read(f'{folder_path}/grid.vti') - grid = grid['material'] - grid_grains = np.unique(grid, return_counts=False) - with open(f'{folder_path}/material.yaml') as file: - material = yaml.load(file, Loader=SafeLoader) - material = material['material'] - if len(grid_grains) != len(material): # check if amount of grains in material.yaml and grid.vti is equal - print('number of grains inconsistent') - grain_lookup = {} #dict which grain correspond to which phase&Orientation - phase_lookup = {'Ferrite': 0, - 'Martensite': 1 - } - for grain_id, grain in enumerate(material): - grain['constituents'][0]['phase'] = phase_lookup[grain['constituents'][0]['phase']] # change values according to the dictionary phase_lookup - grain_lookup[grain_id] = grain['constituents'][0] #store Orientation and phase to the corresponding grain index - orientation_matrix = [[np.array(grain_lookup[id]['O'])] for id in grid ] # get for each node the corresponding Orientation via grain_id - orientation_matrix = np.asarray(orientation_matrix).reshape(32,32,32,4) #reshape to matrix - phase_matrix = [grain_lookup[id]['phase'] for id in grid ]# get for each node the corresponding phase via grain_id - phase_matrix = np.asarray(phase_matrix).reshape(32,32,32,1) #reshape to match dimension of orientation_matrix - input_matrix = np.append(orientation_matrix, phase_matrix,axis = 3) #input[x,y,z,input], input[0-3]: Orientation, input[4]: Phase - input[folder_id,:,:,:,:] = input_matrix[np.newaxis, ...] - - np.save(f'{Output_path}/Training_data',input) - -def export_Outputlabel(Input_path: str, Output_path: str): - output = np.empty((len(os.listdir(Input_path)),32,32,32)) - - for folder_id, folder in enumerate(os.listdir(Input_path)): - - print(f'processed folder: {folder}') - folder_path = f'{Input_path}/{folder}' - mesh = pv.read(f'{folder_path}/Results_inc100.vti') - sigma_vM = pv.get_array(mesh,'phase/mechanical/sigma_vM / Pa') - #epsilon_vM = pv.get_array(mesh,'phase/mechanical/epsilon_V^0.0(F)_vM / 1') - #epsilon_matrix = np.reshape(epsilon_vM, np.asarray(mesh.dimensions) - 1) - sigma_matrix = np.reshape(sigma_vM, np.asarray(mesh.dimensions) - 1) - #new_output = np.array((sigma_matrix, epsilon_matrix)) - new_output = np.array(sigma_matrix) - #new_output = np.moveaxis(new_output, 0, -1) # change axis so output[x,y,z,label] with label[0]: sigma_vM and label[1]: epsilon_vM - output[folder_id,:,:,:] = new_output[np.newaxis, ...] - - np.save(f'{Output_path}/Training_labels',output) #save the numy array - -def check_simlogs(path:str): - string1 = 'increment 100 converged' - string2 = 'ERROR' - - # opening a text file - for file in os.listdir(path): - if 'Sim' in file: - file1 = open(f'{path}/{file}', "r") - - # read file content - readfile = file1.read() - if string2 in readfile: - line = check_if_string_in_file(f'{path}/{file}','DP1000') - _,folder = line.strip().split('DP1000') - print(f'{string2} in simulation {file}, corresponding folder: DP1000{folder}') - # checking condition for string found or not - if string1 not in readfile: - print(f'simulation {file} did not converge') - line = check_if_string_in_file(f'{path}/{file}','DP1000') - _,folder = line.strip().split('DP1000') - print(f'corresponding folder is: DP1000{folder}') - # closing a file - file1.close() - - -if __name__ == '__main__': -<<<<<<< HEAD - check_simlogs('Sim_logs') - print('the Simlogs have been checked') - #export_vtk('Test_OutputData') - print('the VTK-Files have been exported') - export_Inputchannel('Test_OutputData','Training_Data') - print('Exported Input Channels') - export_Outputlabel('Test_OutputData','Training_Data') - print('Exported Output Label') -======= - #check_simlogs('Sim_logs') - #print('the Simlogs have been checked') - export_Trainingdata('OutputData','Training_Data') - print('Trainings data have been created') ->>>>>>> Cluster diff --git a/RVE_Generator/Export_Outputlabel.py b/RVE_Generator/Export_Outputlabel.py deleted file mode 100644 index d9b90d494270936ceb76ecf330a9bd6a1c249eb0..0000000000000000000000000000000000000000 --- a/RVE_Generator/Export_Outputlabel.py +++ /dev/null @@ -1,27 +0,0 @@ -import os -import pyvista as pv -import numpy as np - -def read_vti(path: str): - print(f'read vti file: {path}') - mesh = pv.read(f'{path}/Results_inc100.vti') - sigma_vM = pv.get_array(mesh,'phase/mechanical/sigma_vM / Pa') - #epsilon_vM = pv.get_array(mesh,'phase/mechanical/epsilon_V^0.0(F)_vM / 1') - #epsilon_matrix = np.reshape(epsilon_vM, np.asarray(mesh.dimensions) - 1) - sigma_matrix = np.reshape(sigma_vM, np.asarray(mesh.dimensions) - 1) - #new_output = np.array((sigma_matrix, epsilon_matrix)) - new_output = np.array(sigma_matrix) - return new_output - - -if __name__ == '__main__': - Input_path = 'E:/Data/Simulation_Output/OutputData_64' - Output_path = 'E:/Data/damask3/UNet/Input' - output = np.empty((len(os.listdir(Input_path)),64,64,64), dtype= np.float32) - - for folder_id, folder in enumerate(os.listdir(Input_path)): - folder_path = f'{Input_path}/{folder}' - new_output = read_vti(folder_path) - output[folder_id,:,:,:] = new_output[np.newaxis, ...] - - np.save(f'{Output_path}/Training_labels_64',output) #save the numy array \ No newline at end of file diff --git a/RVE_Generator/Export_Inputchannel.py b/RVE_Generator/Export_to_numpy.py similarity index 67% rename from RVE_Generator/Export_Inputchannel.py rename to RVE_Generator/Export_to_numpy.py index 70b24daa5ceacbe546d21aa63c782282b4930965..7ca09b3c5abb90c4c9b924b15b4241349db843db 100644 --- a/RVE_Generator/Export_Inputchannel.py +++ b/RVE_Generator/Export_to_numpy.py @@ -1,3 +1,5 @@ +#Check_results.py --> Delete Corrupted Samples --> Export_vtk.py --> Export_to_numpy.py --> NormalizeTrainingdata_xx.ipynb + import os import pyvista as pv import numpy as np @@ -27,14 +29,33 @@ def read_material(path : str): input_matrix = np.append(orientation_matrix, phase_matrix,axis = 3) #input[x,y,z,input], input[0-3]: Orientation, input[4]: Phase return input_matrix +def read_vti(path: str): + print(f'read vti file: {path}') + mesh = pv.read(f'{path}/Results_inc100.vti') + sigma_vM = pv.get_array(mesh,'phase/mechanical/sigma_vM / Pa') + #epsilon_vM = pv.get_array(mesh,'phase/mechanical/epsilon_V^0.0(F)_vM / 1') + #epsilon_matrix = np.reshape(epsilon_vM, np.asarray(mesh.dimensions) - 1) + sigma_matrix = np.reshape(sigma_vM, np.asarray(mesh.dimensions) - 1) + #new_output = np.array((sigma_matrix, epsilon_matrix)) + new_output = np.array(sigma_matrix) + return new_output + + + if __name__ == '__main__': Input_path = 'E:/Data/Simulation_Output/OutputData_64' Output_path = 'E:/Data/damask3/UNet/Input' - input = np.empty((len(os.listdir(Input_path)),64,64,64,5), dtype= np.float32) + input = np.empty((len(os.listdir(Input_path)),64,64,64,5), dtype= np.float32) #need to be changed according to resolution + output = np.empty((len(os.listdir(Input_path)),64,64,64), dtype= np.float32) + for folder_id, folder in enumerate(os.listdir(Input_path)): folder_path = f'{Input_path}/{folder}' input_matrix = read_material(folder_path) input[folder_id,:,:,:,:] = input_matrix[np.newaxis, ...] + + new_output = read_vti(folder_path) + output[folder_id,:,:,:] = new_output[np.newaxis, ...] - np.save(f'{Output_path}/Training_data_64',input) \ No newline at end of file + np.save(f'{Output_path}/Training_data_64',input) + np.save(f'{Output_path}/Training_labels_64',output) #save the numy array \ No newline at end of file diff --git a/RVE_Generator/Export_vtk.py b/RVE_Generator/Export_vtk.py index d5e0b49b3c3663c592c07f26d7057c175856ce2a..49fdf42fd4b395d6b95cd038ca0923d47ba51d7e 100644 --- a/RVE_Generator/Export_vtk.py +++ b/RVE_Generator/Export_vtk.py @@ -1,9 +1,22 @@ +#Check_results.py --> Delete Corrupted Samples --> Export_vtk.py --> Export_to_numpy.py --> NormalizeTrainingdata_xx.ipynb +import numpy as np import os import damask -import sys +import pyvista as pv +import yaml +from yaml.loader import SafeLoader +def export_vtk(path:str): + for file in os.listdir(path): + filepath = f'{path}/{file}' + result = damask.Result(f'{filepath}/grid_load.hdf5') + result = result.view('increments', 0) + #if not os.path.exists(f'{filepath}/Result_inc100.vti'): + #add_MisesStress(result) + #result.custom_export_VTK(filepath, parallel= False) #combined phase + def add_MisesStress(result: damask.Result): #if result.get('epsilon_V^0.0(F)') == None: #result.add_strain() # Dehnung hinzufügen @@ -16,11 +29,8 @@ def add_MisesStress(result: damask.Result): if __name__ == '__main__': - path_current_folder = sys.argv[1] - - print(f'current folder is :{path_current_folder}') - result = damask.Result(f'{str(path_current_folder)}grid_load.hdf5') - result = result.view('increments', 0) - if not os.path.exists(f'{path_current_folder}Result.vti'): - #add_MisesStress(result) - result.custom_export_VTK(path_current_folder, parallel= False) #combined phase + + path_to_input= 'E:/Data/Simulation_Output/OutputData_64' + + export_vtk(path_to_input) + print('the VTK-Files have been exported') \ No newline at end of file diff --git a/RVE_Generator/batch_single_sim.sh b/RVE_Generator/batch_single_sim.sh deleted file mode 100644 index f85e5eab63ea9eac908966f80d2fab3429a1eae3..0000000000000000000000000000000000000000 --- a/RVE_Generator/batch_single_sim.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -### Job name -#SBATCH --job-name=Test_single - -### Project account -#SBATCH --account=thes1075 - -### Cluster Partition -#SBATCH --partition=c18m - -### File / path where STDOUT will be written, %J is the job id -#SBATCH --output=single_%J.txt - -### Request the time you need for execution. The full format is D-HH:MM:SS -### You must at least specify minutes or days and hours and may add or -### leave out any other parameters -#SBATCH --time=96:00:00 - -### Request memory you need for your job in MB -#SBATCH --mem-per-cpu=2000 - -### Request number of tasks/MPI ranks -#SBATCH --ntasks=8 - -#SBATCH --nodes=1 - -### Change to the work directory - -### Execute the container -### myexecscript.sh contains all the commands that should be run inside the container -module load python/3.7.11 -module switch intelmpi openmpi - -cd /home/yk138599/Hiwi/damask3/RVE_Generator/OutputData/DP1000_1 -time singularity exec /rwthfs/rz/SW/UTIL.common/singularity/damask-grid mpiexec -n 8 DAMASK_grid --load load.yaml --geom grid.vti - - diff --git a/RVE_Generator/check_grainconsistency.py b/RVE_Generator/check_grainconsistency.py deleted file mode 100644 index 955dca483303d4b5aaf40cdf64058cb2e4bed3e3..0000000000000000000000000000000000000000 --- a/RVE_Generator/check_grainconsistency.py +++ /dev/null @@ -1,32 +0,0 @@ -import os -import pyvista as pv -import numpy as np -import yaml -from yaml.loader import SafeLoader - -def read_material(path : str): - grid = pv.read(f'{path}/grid.vti') - grid = grid['material'] - - grid_grains = np.unique(grid, return_counts=False) - with open(f'{path}/material.yaml') as file: - material = yaml.load(file, Loader=SafeLoader) - material = material['material'] - if len(grid_grains) != len(material): # check if amount of grains in material.yaml and grid.vti is equal - print(f'number of grains inconsistent in file:{path}/material.yaml. there are {grid_grains} in grid.vti and {len(material)} in material.yml') -def check_max_stress(path : str): - grid = pv.read(f'{path}/Results_inc100.vti') - grid = grid['phase/mechanical/sigma_vM / Pa'] - - if grid.max() > 4e9: # check if amount of grains in material.yaml and grid.vti is equal - print(f'stress to high:{path}/Results_inc100.vti. The maximum stress is {grid.max()}') - -if __name__ == '__main__': - Input_path = 'E:/Data/Simulation_Output/OutputData_64' - - for folder_id, folder in enumerate(os.listdir(Input_path)): - folder_path = f'{Input_path}/{folder}' - #input_matrix = read_material(folder_path) - check_max_stress(folder_path) - - diff --git a/RVE_Generator/check_results.py b/RVE_Generator/check_results.py new file mode 100644 index 0000000000000000000000000000000000000000..bf6e3e72dfa2edd8a9afea13f318bbb1c7536cfa --- /dev/null +++ b/RVE_Generator/check_results.py @@ -0,0 +1,77 @@ +#Check_results.py --> Delete Corrupted Samples --> Export_vtk.py --> Export_to_numpy.py --> NormalizeTrainingdata_xx.ipynb +import os +import pyvista as pv +import numpy as np +import yaml +from yaml.loader import SafeLoader + + + + +def check_if_string_in_file(file_name, string_to_search): + """ Check if any line in the file contains given string """ + # Open the file in read only mode + with open(file_name, 'r') as read_obj: + # Read all lines in the file one by one + for line in read_obj: + # For each line, check if line contains the string + if string_to_search in line: + return line + return "DP1000no result" + + +def read_material(path : str): + grid = pv.read(f'{path}/grid.vti') + grid = grid['material'] + + grid_grains = np.unique(grid, return_counts=False) + with open(f'{path}/material.yaml') as file: + material = yaml.load(file, Loader=SafeLoader) + material = material['material'] + if len(grid_grains) != len(material): # check if amount of grains in material.yaml and grid.vti is equal + print(f'number of grains inconsistent in file:{path}/material.yaml. there are {grid_grains} in grid.vti and {len(material)} in material.yml') +def check_max_stress(path : str): + grid = pv.read(f'{path}/Results_inc100.vti') + grid = grid['phase/mechanical/sigma_vM / Pa'] + + if grid.max() > 4e9: # check if amount of grains in material.yaml and grid.vti is equal + print(f'stress to high:{path}/Results_inc100.vti. The maximum stress is {grid.max()}') + +def check_simlogs(path:str): + string1 = 'increment 100 converged' #strings to be searched for + string2 = 'ERROR' + + # opening a text file + for file in os.listdir(path): + if 'Sim' in file: + file1 = open(f'{path}/{file}', "r") + + # read file content + try: + readfile = file1.read() + + if string2 in readfile: + line = check_if_string_in_file(f'{path}/{file}','DP1000') + _,folder = line.strip().split('DP1000') + print(f'{string2} in simulation {file}, corresponding folder: DP1000{folder}') + # checking condition for string found or not + if string1 not in readfile: + print(f'simulation {file} did not converge') + line = check_if_string_in_file(f'{path}/{file}','DP1000') + _,folder = line.strip().split('DP1000') + print(f'corresponding folder is: DP1000{folder}') + # closing a file + except: + print(f'error in file: {path}/{file}') + file1.close() + +if __name__ == '__main__': + Input_path = 'E:/Data/Simulation_Output/OutputData_64' # + check_simlogs('E:/Data/Simulation_Output/Simlog_64') #Path to folder with simlogs + + for folder_id, folder in enumerate(os.listdir(Input_path)): + folder_path = f'{Input_path}/{folder}' + #input_matrix = read_material(folder_path) + check_max_stress(folder_path) + + diff --git a/UNet/#Train_model.sh# b/UNet/#Train_model.sh# deleted file mode 100644 index a1d7573ff67c4b081dce70e53860045ac1496ced..0000000000000000000000000000000000000000 --- a/UNet/#Train_model.sh# +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/local_rwth/bin/zsh -### Project account -#SBATCH --account=rwth0744 - -### Cluster Partition -#SBATCH --partition=c18g - -#SBATCH -J training_model -#SBATCH -o Sim_logs/UNet_64_V14_%J.log - -#SBATCH --gres=gpu:1 -#SBATCH --time=90:00:00 -### Request memory you need for your job in MB -#SBATCH --mem-per-cpu=15000 -#SBATCH --mem-per-gpu=16000 -module load cuda -module load python/3.7.11 -pip3 install --user -Iv -q torch==1.10.1 -#time python3 ./UNet_V12.py -#time python3 ./UNet_V13.py -time python3 ./UNet_V14.py -#print GPU Information -#$CUDA_ROOT/extras/demo_suite/deviceQuery -noprompt diff --git a/UNet/#UNet_V6_2.py# b/UNet/#UNet_V6_2.py# deleted file mode 100644 index 4106a71725c42e0d95a112a864ae701d9216e754..0000000000000000000000000000000000000000 --- a/UNet/#UNet_V6_2.py# +++ /dev/null @@ -1,249 +0,0 @@ -# -*- coding: utf-8 -*- -"""UNet_V6.ipynb - -Automatically generated by Colaboratory. - -Original file is located at - https://colab.research.google.com/drive/1yvtk3lFo_x0ZiqtFdnR8jgcjPKy3nZA4 -""" - -import torch -import torch.nn as nn -import numpy as np -import random -from torch.utils.data.sampler import SubsetRandomSampler -from torch.utils.data.dataloader import DataLoader -from torch.utils.data import TensorDataset -import torch.nn.functional as F -from torch.utils.data import random_split -from torch.nn.modules.activation import ReLU - -class depthwise_separable_conv(nn.Module): - def __init__(self, in_c, out_1_c, out_2_c, padding, kernel_size): - super(depthwise_separable_conv, self).__init__() - self.depthwise_1 = nn.Conv3d(in_c, in_c, kernel_size= kernel_size, padding=padding[0], groups=in_c, bias=True) - self.pointwise_1 = nn.Conv3d(in_c, out_1_c, kernel_size=1, bias=True) - self.batch_norm_1 = nn.BatchNorm3d(out_1_c) - self.relu = nn.ReLU() - self.depthwise_2 = nn.Conv3d(out_1_c, out_1_c, kernel_size= kernel_size, padding=padding[1], groups=out_1_c, bias=True) - self.pointwise_2 = nn.Conv3d(out_1_c, out_2_c, kernel_size=1, bias=True) - self.batch_norm_2 = nn.BatchNorm3d(out_2_c) - def forward(self, x): - x = self.batch_norm_1(self.relu(self.pointwise_1(self.depthwise_1(x)))) - return self.batch_norm_2(self.relu(self.pointwise_2(self.depthwise_2(x)))) - -class convolution_Layer(nn.Module): - def __init__(self, in_c, out_1_c, out_2_c, padding, kernel_size): - super(convolution_Layer, self).__init__() - self.conv_1 = nn.Conv3d(in_c, out_1_c, kernel_size= kernel_size, padding=padding[0], bias=True) - self.batch_norm_1 = nn.BatchNorm3d(out_1_c) - self.relu = nn.ReLU() - self.conv_2 = nn.Conv3d(out_1_c, out_2_c, kernel_size= kernel_size, padding=padding[1], bias=True) - self.batch_norm_2 = nn.BatchNorm3d(out_2_c) - def forward(self, x): - x = self.batch_norm_1(self.relu(self.conv_1(x))) - return self.batch_norm_2(self.relu(self.relu(self.conv_2(x)))) - -class head_layer(nn.Module): - def __init__(self, in_c, out_c = 1, padding = "same"): - super(head_layer, self).__init__() - self.conv = nn.Conv3d(in_c, out_c, kernel_size=1, bias=True) - self.sig = nn.Sigmoid() - def forward(self, x): - return self.sig(self.conv(x)) #convolution - #return self.sig(self.pointwise(self.depthwise(x))) #convolution - -class Encoder(nn.Module): - def __init__(self,kernel_size, chs, padding=((0,"same"),("same","same"),("same","same"))): - super().__init__() - self.channels = chs - self.enc_blocks = nn.ModuleList([depthwise_separable_conv(chs[i][0], chs[i][1], chs[i][2], kernel_size=kernel_size, padding=padding[i]) for i in range(len(chs))]) - self.pool = nn.MaxPool3d(kernel_size=2, stride=2) - #self.batch_norm = nn.ModuleList([nn.BatchNorm3d( chs[i][2]) for i in range(len(chs))]) - self.periodic_upsample = nn.ReflectionPad3d(int((kernel_size-1)/2)) - - - def forward(self, x): - ftrs = [] - x = self.periodic_upsample(x) - for i in range(len(self.channels)): - ftrs.append(x) - x =self.enc_blocks[i](x) - #print(f'size of ftrs: {ftrs[i].size()}') - x = self.pool(x) - #print(f'size of x after pooling{x.size()}') - ftrs.append(x) - #print(f'size of ftrs: {ftrs[3].size()}') - #print(f'length of ftrs: {len(ftrs)}') - return ftrs - -class Decoder(nn.Module): - def __init__(self,kernel_size, chs_upsampling, chs_conv, padding=(("same","same"),("same","same"),("same","same"))): - super().__init__() - assert len(chs_conv) == len(chs_upsampling) - self.chs = chs_upsampling - self.upconvs = nn.ModuleList([nn.ConvTranspose3d(chs_upsampling[i], chs_upsampling[i], 2, 2) for i in range(len(chs_upsampling))]) - self.dec_blocks = nn.ModuleList([depthwise_separable_conv(chs_conv[i][0], chs_conv[i][1], chs_conv[i][2], kernel_size=kernel_size, padding=padding[i]) for i in range(len(chs_conv))]) - self.head = head_layer(chs_conv[-1][2]) - def forward(self, x, encoder_features): - for i in range(len(self.chs)): - x = self.upconvs[i](x) - #print(f'size after upsampling: {x.size()}') - enc_ftrs = self.crop(encoder_features[i], x) - x = torch.cat([x, enc_ftrs], dim=1) - #print(f'size after cropping&cat: {x.size()}') - - x = self.dec_blocks[i](x) - #print(f'size after convolution: {x.size()}') - x = self.head(x) - return x - - def crop(self, tensor, target_tensor): - target_size = target_tensor.size()[2] - tensor_size = tensor.size()[2] - delta = tensor_size - target_size - delta = delta // 2 - return tensor[:,:,delta:tensor_size-delta,delta:tensor_size-delta,delta:tensor_size-delta] - -class UNetBase(nn.Module): - def training_step(self, batch): - input, labels = batch - out = self(input) # Generate predictions - loss = F.l1_loss(out, labels) # Calculate loss - return loss - - def validation_step(self, batch): - input, labels = batch - out = self(input) # Generate predictions - loss = F.l1_loss(out, labels) # Calculate loss - acc = accuracy(out.detach(), labels.detach()) # Calculate accuracy - return {'val_loss': loss.detach(), 'val_acc': acc} - - def validation_epoch_end(self, outputs): - batch_losses = [x['val_loss'] for x in outputs] - epoch_loss = torch.stack(batch_losses).mean() # Combine losses - batch_accs = [x['val_acc'] for x in outputs] - epoch_acc = torch.stack(batch_accs).mean() # Combine accuracies - return {'val_loss': epoch_loss.item(), 'val_acc': epoch_acc.item()} - - def epoch_end(self, epoch, result): - print("Epoch [{}], train_loss: {:.6f}, val_loss: {:.6f}, val_acc: {:.6f}".format( - epoch, result['train_loss'], result['val_loss'], result['val_acc'])) - -def accuracy(outputs, labels, threshold = 0.05): - error = (abs(outputs - labels)/outputs) - right_predic = torch.sum(error < threshold) - percentage = ((right_predic/torch.numel(error))*100.) - return percentage - -class UNet(UNetBase): - def __init__(self,kernel_size = 5, enc_chs=((6,16,32), (32,32,64), (64,64,128)), dec_chs_up=(128, 128, 64), dec_chs_conv=((192,128, 128),(160,64,64),(70,32,32))): - super().__init__() - self.encoder = Encoder(kernel_size = kernel_size, chs = enc_chs) - self.decoder = Decoder(kernel_size = kernel_size, chs_upsampling = dec_chs_up, chs_conv = dec_chs_conv) - #self.head = depthwise_separable_conv(1, 1, padding = "same", kernel_size=1) - - - def forward(self, x): - enc_ftrs = self.encoder(x) - out = self.decoder(enc_ftrs[::-1][0], enc_ftrs[::-1][1:]) - #out = self.head(out) - return out - -@torch.no_grad() -def evaluate(model, val_loader): - model.eval() - outputs = [model.validation_step(batch) for batch in val_loader] - return model.validation_epoch_end(outputs) - -def fit(epochs, lr, model, train_loader, val_loader, path, opt_func=torch.optim.Adam): - history = [] - optimizer = opt_func(model.parameters(), lr, eps=1e-07) - for epoch in range(epochs): - # Training Phase - model.train() - train_losses = [] - for batch in train_loader: - loss = model.training_step(batch) - train_losses.append(loss) - loss.backward() - optimizer.step() - optimizer.zero_grad() - # Validation phase - result = evaluate(model, val_loader) - result['train_loss'] = torch.stack(train_losses).mean().item() - model.epoch_end(epoch, result) - history.append(result) - torch.save(model.state_dict(),f'{path}/Unet_dict_V6_2_64.pth') - torch.save(history,f'{path}/history_V6_2_64.pt') - return history - -def get_default_device(): - """Pick GPU if available, else CPU""" - if torch.cuda.is_available(): - return torch.device('cuda') - else: - print('no GPU found') - return torch.device('cpu') - -def to_device(data, device): - """Move tensor(s) to chosen device""" - if isinstance(data, (list,tuple)): - return [to_device(x, device) for x in data] - return data.to(device, non_blocking=True) - -class DeviceDataLoader(): - """Wrap a dataloader to move data to a device""" - def __init__(self, dl, device): - self.dl = dl - self.device = device - - def __iter__(self): - """Yield a batch of data after moving it to device""" - for b in self.dl: - yield to_device(b, self.device) - - def __len__(self): - """Number of batches""" - return len(self.dl) - -def Create_Dataloader(path, batch_size = 100, percent_val = 0.2): - dataset = torch.load(path) # create the pytorch dataset - #size_data = 500 #shrink dataset for colab - #rest = len(dataset) -size_data - #dataset,_ = torch.utils.data.random_split(dataset, [size_data, rest]) - val_size = int(len(dataset) * percent_val) - train_size = len(dataset) - val_size - - train_ds, val_ds = random_split(dataset, [train_size, val_size]) - # Create DataLoader - train_dl = DataLoader(train_ds, batch_size, shuffle=True, num_workers=1, pin_memory=True) - valid_dl = DataLoader(val_ds, batch_size, num_workers=1, pin_memory=True) - - return train_dl, valid_dl - -if __name__ == '__main__': - #os.chdir('F:/RWTH/HiWi_IEHK/DAMASK3/UNet/Trainingsdata') - use_seeds = False - seed = 373686838 - num_epochs = 1300 - b_size = 8 - opt_func = torch.optim.Adam - lr = 0.00001 - kernel - print(f'number auf epochs: {num_epochs}') - print(f'batchsize: {b_size}') - print(f'learning rate: {lr}') - if not use_seeds: - seed = random.randrange(2**32 - 1) - print(f' seed is: {seed}') - torch.manual_seed(seed) - random.seed(seed) - np.random.seed(seed) - device = get_default_device() - train_dl, valid_dl = Create_Dataloader('/home/yk138599/Hiwi/damask3/UNet/Trainingsdata/Training_Dataset_normalized_64.pt', batch_size= b_size ) - train_dl = DeviceDataLoader(train_dl, device) - valid_dl = DeviceDataLoader(valid_dl, device) - - model = to_device(UNet().double(), device) - history = fit(num_epochs, lr, model, train_dl, valid_dl,'/home/yk138599/Hiwi/damask3/UNet/output', opt_func) diff --git a/UNet/2_Train_model.sh b/UNet/2_Train_model.sh deleted file mode 100644 index 178eef405a78faeee70e67eb4fa8279d5fff9d52..0000000000000000000000000000000000000000 --- a/UNet/2_Train_model.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/local_rwth/bin/zsh -### Project account -#SBATCH --account=rwth0744 - -### Cluster Partition -#SBATCH --partition=c18g - -#SBATCH -J training_model -#SBATCH -o Sim_logs/UNet_V17_%J.log - -#SBATCH --gres=gpu:1 -#SBATCH --time=90:00:00 -### Request memory you need for your job in MB -#SBATCH --mem-per-cpu=20000 -#SBATCH --mem-per-gpu=16000 -module load cuda -module load python/3.7.11 -pip3 install --user -Iv -q torch==1.10.1 -#time python3 ./UNet_V12.py -time python3 ./UNet_V17.py -#time python3 ./UNet_V14.py -#print GPU Information -#$CUDA_ROOT/extras/demo_suite/deviceQuery -noprompt diff --git a/UNet/3_Train_model.sh b/UNet/3_Train_model.sh deleted file mode 100644 index 61264b9b8cca3ac59df5aec868408b231fa88d20..0000000000000000000000000000000000000000 --- a/UNet/3_Train_model.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/local_rwth/bin/zsh -### Project account -#SBATCH --account=rwth0744 - -### Cluster Partition -#SBATCH --partition=c18g - -#SBATCH -J training_model -#SBATCH -o Sim_logs/UNet_V15_%J.log - -#SBATCH --gres=gpu:1 -#SBATCH --time=90:00:00 -### Request memory you need for your job in MB -#SBATCH --mem-per-cpu=20000 -#SBATCH --mem-per-gpu=16000 -module load cuda -module load python/3.7.11 -pip3 install --user -Iv -q torch==1.10.1 - -time python3 ./UNet_V15.py -#print GPU Information -#$CUDA_ROOT/extras/demo_suite/deviceQuery -noprompt diff --git a/UNet/4_Train_model.sh b/UNet/4_Train_model.sh deleted file mode 100644 index 2d13029d3835869f1d2b73a30296dc68f8d05556..0000000000000000000000000000000000000000 --- a/UNet/4_Train_model.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/local_rwth/bin/zsh -### Project account -#SBATCH --account=rwth0744 - -### Cluster Partition -#SBATCH --partition=c18g - -#SBATCH -J training_model -#SBATCH -o Sim_logs/UNet_V16_%J.log - -#SBATCH --gres=gpu:1 -#SBATCH --time=90:00:00 -### Request memory you need for your job in MB -#SBATCH --mem-per-cpu=20000 -#SBATCH --mem-per-gpu=16000 -module load cuda -module load python/3.7.11 -pip3 install --user -Iv -q torch==1.10.1 - -time python3 ./UNet_V16.py -#print GPU Information -#$CUDA_ROOT/extras/demo_suite/deviceQuery -noprompt diff --git a/UNet/5_Train_model.sh b/UNet/5_Train_model.sh deleted file mode 100644 index 747df366e4d5eebb83ffed3365d94016f292b6d4..0000000000000000000000000000000000000000 --- a/UNet/5_Train_model.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/local_rwth/bin/zsh -### Project account -#SBATCH --account=rwth0744 - -### Cluster Partition -#SBATCH --partition=c18g - -#SBATCH -J training_model -#SBATCH -o Sim_logs/UNet_V16_K3_%J.log - -#SBATCH --gres=gpu:1 -#SBATCH --time=90:00:00 -### Request memory you need for your job in MB -#SBATCH --mem-per-cpu=20000 -#SBATCH --mem-per-gpu=16000 -module load cuda -module load python/3.7.11 -pip3 install --user -Iv -q torch==1.10.1 - -time python3 ./UNet_V16.py -#print GPU Information -#$CUDA_ROOT/extras/demo_suite/deviceQuery -noprompt diff --git a/UNet/NormalizeTrainingdata_32.ipynb b/UNet/NormalizeTrainingdata_32.ipynb index a24703fb7ab2bc22ec39b4d170251298cfcd7d30..4b6bc14e5ff37c6b2569f9bd6a493d832dd1f320 100644 --- a/UNet/NormalizeTrainingdata_32.ipynb +++ b/UNet/NormalizeTrainingdata_32.ipynb @@ -1,5 +1,13 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Erzeugt aus dem Numpy Array einen Pytorch Tensor dessen \n", + "workflow: #Check_results.py --> Delete Corrupted Samples --> Export_vtk.py --> Export_to_numpy.py --> NormalizeTrainingdata_xx.ipynb\n" + ] + }, { "cell_type": "code", "execution_count": 1, @@ -293,7 +301,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.5" + "version": "3.9.10" }, "orig_nbformat": 4 }, diff --git a/UNet/1_Train_model.sh b/UNet/Train_model.sh similarity index 100% rename from UNet/1_Train_model.sh rename to UNet/Train_model.sh diff --git a/UNet/Train_model15.sh b/UNet/Train_model15.sh deleted file mode 100644 index cf9477de13891c1ff3c2c25f29cefb774478a102..0000000000000000000000000000000000000000 --- a/UNet/Train_model15.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/local_rwth/bin/zsh -### Project account -#SBATCH --account=rwth0744 - -### Cluster Partition -#SBATCH --partition=c18g - -#SBATCH -J training_model -#SBATCH -o Sim_logs/UNet_64_V15_%J.log - -#SBATCH --gres=gpu:1 -#SBATCH --time=90:00:00 -### Request memory you need for your job in MB -#SBATCH --mem-per-cpu=15000 -#SBATCH --mem-per-gpu=16000 -module load cuda -module load python/3.7.11 -pip3 install --user -Iv -q torch==1.10.1 -#time python3 ./UNet_V12.py -#time python3 ./UNet_V13.py -time python3 ./UNet_V15.py -#print GPU Information -#$CUDA_ROOT/extras/demo_suite/deviceQuery -noprompt diff --git a/UNet/UNet_V1.py b/UNet/U-Net archive/UNet_V1.py similarity index 100% rename from UNet/UNet_V1.py rename to UNet/U-Net archive/UNet_V1.py diff --git a/UNet/UNet_V10.py b/UNet/U-Net archive/UNet_V10.py similarity index 100% rename from UNet/UNet_V10.py rename to UNet/U-Net archive/UNet_V10.py diff --git a/UNet/UNet_V12.py b/UNet/U-Net archive/UNet_V12.py similarity index 100% rename from UNet/UNet_V12.py rename to UNet/U-Net archive/UNet_V12.py diff --git a/UNet/UNet_V14.py b/UNet/U-Net archive/UNet_V14.py similarity index 100% rename from UNet/UNet_V14.py rename to UNet/U-Net archive/UNet_V14.py diff --git a/UNet/UNet_V17.py b/UNet/U-Net archive/UNet_V17.py similarity index 100% rename from UNet/UNet_V17.py rename to UNet/U-Net archive/UNet_V17.py diff --git a/UNet/UNet_V18.py b/UNet/U-Net archive/UNet_V18.py similarity index 100% rename from UNet/UNet_V18.py rename to UNet/U-Net archive/UNet_V18.py diff --git a/UNet/UNet_V19.py b/UNet/U-Net archive/UNet_V19.py similarity index 100% rename from UNet/UNet_V19.py rename to UNet/U-Net archive/UNet_V19.py diff --git a/UNet/UNet_V2.py b/UNet/U-Net archive/UNet_V2.py similarity index 100% rename from UNet/UNet_V2.py rename to UNet/U-Net archive/UNet_V2.py diff --git a/UNet/UNet_V3.py b/UNet/U-Net archive/UNet_V3.py similarity index 100% rename from UNet/UNet_V3.py rename to UNet/U-Net archive/UNet_V3.py diff --git a/UNet/UNet_V4.py b/UNet/U-Net archive/UNet_V4.py similarity index 100% rename from UNet/UNet_V4.py rename to UNet/U-Net archive/UNet_V4.py diff --git a/UNet/UNet_V5.py b/UNet/U-Net archive/UNet_V5.py similarity index 100% rename from UNet/UNet_V5.py rename to UNet/U-Net archive/UNet_V5.py diff --git a/UNet/UNet_V6.py b/UNet/U-Net archive/UNet_V6.py similarity index 100% rename from UNet/UNet_V6.py rename to UNet/U-Net archive/UNet_V6.py diff --git a/UNet/UNet_V6_2.py b/UNet/U-Net archive/UNet_V6_2.py similarity index 100% rename from UNet/UNet_V6_2.py rename to UNet/U-Net archive/UNet_V6_2.py diff --git a/UNet/UNet_V7.py b/UNet/U-Net archive/UNet_V7.py similarity index 100% rename from UNet/UNet_V7.py rename to UNet/U-Net archive/UNet_V7.py diff --git a/UNet/UNet_V8.py b/UNet/U-Net archive/UNet_V8.py similarity index 100% rename from UNet/UNet_V8.py rename to UNet/U-Net archive/UNet_V8.py diff --git a/UNet/UNet_V9_1.py b/UNet/U-Net archive/UNet_V9_1.py similarity index 100% rename from UNet/UNet_V9_1.py rename to UNet/U-Net archive/UNet_V9_1.py diff --git a/UNet/UNet_V9_2.py b/UNet/U-Net archive/UNet_V9_2.py similarity index 100% rename from UNet/UNet_V9_2.py rename to UNet/U-Net archive/UNet_V9_2.py diff --git a/UNet/UNet_V9_3.py b/UNet/U-Net archive/UNet_V9_3.py similarity index 100% rename from UNet/UNet_V9_3.py rename to UNet/U-Net archive/UNet_V9_3.py diff --git a/UNet/UNet_V15.py b/UNet/UNet_32_phase.py similarity index 99% rename from UNet/UNet_V15.py rename to UNet/UNet_32_phase.py index 7d35a871d3450ebc4ca3c04a9d74c48a6d2fc82f..b193bfafe397071fca372073516df7f5047c1909 100644 --- a/UNet/UNet_V15.py +++ b/UNet/UNet_32_phase.py @@ -33,7 +33,7 @@ class depthwise_separable_conv(nn.Module): x = self.batch_norm_1(self.relu(self.droptout(self.pointwise_1(self.depthwise_1(x))))) return self.batch_norm_2(self.relu(self.droptout(self.pointwise_2(self.depthwise_2(x))))) -class convolution_Layer(nn.Module): +class convolution_Layer(nn.Module):#Not currently used, but could replace the depthwise convolution def __init__(self, in_c, out_1_c, out_2_c, padding, kernel_size): super(convolution_Layer, self).__init__() self.conv_1 = nn.Conv3d(in_c, out_1_c, kernel_size= kernel_size, padding=padding[0], bias=True) diff --git a/UNet/UNet_V16.py b/UNet/UNet_32_phase_angles.py similarity index 99% rename from UNet/UNet_V16.py rename to UNet/UNet_32_phase_angles.py index 3621c74541a8a9011babd85a5056d4150eb021a6..8c22bd0e8677fafa578859e2b87a05ba696374f6 100644 --- a/UNet/UNet_V16.py +++ b/UNet/UNet_32_phase_angles.py @@ -34,7 +34,7 @@ class depthwise_separable_conv(nn.Module): x = self.batch_norm_1(self.relu(self.droptout(self.pointwise_1(self.depthwise_1(x))))) return self.batch_norm_2(self.relu(self.droptout(self.pointwise_2(self.depthwise_2(x))))) -class convolution_Layer(nn.Module): +class convolution_Layer(nn.Module): #Not currently used, but could replace the depthwise convolution def __init__(self, in_c, out_1_c, out_2_c, padding, kernel_size): super(convolution_Layer, self).__init__() self.conv_1 = nn.Conv3d(in_c, out_1_c, kernel_size= kernel_size, padding=padding[0], bias=True) diff --git a/UNet/UNet_V13.py b/UNet/UNet_64_phase_angels_extraLayer.py similarity index 99% rename from UNet/UNet_V13.py rename to UNet/UNet_64_phase_angels_extraLayer.py index 7c4d893c8640f2459fdb5df764eba5325f76840f..ccb6f598e7c9ab7ac14f7109a515e877967a1677 100644 --- a/UNet/UNet_V13.py +++ b/UNet/UNet_64_phase_angels_extraLayer.py @@ -34,7 +34,7 @@ class depthwise_separable_conv(nn.Module): x = self.batch_norm_1(self.relu(self.droptout(self.pointwise_1(self.depthwise_1(x))))) return self.batch_norm_2(self.relu(self.droptout(self.pointwise_2(self.depthwise_2(x))))) -class convolution_Layer(nn.Module): +class convolution_Layer(nn.Module):#Not currently used, but could replace the depthwise convolution def __init__(self, in_c, out_1_c, out_2_c, padding, kernel_size): super(convolution_Layer, self).__init__() self.conv_1 = nn.Conv3d(in_c, out_1_c, kernel_size= kernel_size, padding=padding[0], bias=True) diff --git a/UNet/UNet_V11.py b/UNet/UNet_64_phase_angles.py similarity index 99% rename from UNet/UNet_V11.py rename to UNet/UNet_64_phase_angles.py index fc4d65a0021f0bdacf038f7e9d8e27cbf8bce994..569bd8ea1bb54cd5ad1b4fb2e58d8a8587185480 100644 --- a/UNet/UNet_V11.py +++ b/UNet/UNet_64_phase_angles.py @@ -32,7 +32,7 @@ class depthwise_separable_conv(nn.Module): x = self.batch_norm_1(self.relu(self.pointwise_1(self.depthwise_1(x)))) return self.batch_norm_2(self.relu(self.pointwise_2(self.depthwise_2(x)))) -class convolution_Layer(nn.Module): +class convolution_Layer(nn.Module):#Not currently used, but could replace the depthwise convolution def __init__(self, in_c, out_1_c, out_2_c, padding, kernel_size): super(convolution_Layer, self).__init__() self.conv_1 = nn.Conv3d(in_c, out_1_c, kernel_size= kernel_size, padding=padding[0], bias=True) diff --git a/UNet/grain_ numbers.ipynb b/UNet/grain_ numbers.ipynb index 9efd501e05b8ae4973885f3bb0aebb4e0d0330e8..86f3cb6161e68402c06df9b11062cbeb0c82e039 100644 --- a/UNet/grain_ numbers.ipynb +++ b/UNet/grain_ numbers.ipynb @@ -1,11 +1,19 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bestimmt Die Anzahl an Martensite Grains pro RVE in einem Trainingset" + ] + }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ + "\n", "import pyvista as pv\n", "import numpy as np\n", "import os\n", @@ -33,13 +41,6 @@ "\n" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": 5, diff --git a/UNet/output/V14/result_14.vtk b/UNet/output/BA_results/V14/result_14.vtk similarity index 100% rename from UNet/output/V14/result_14.vtk rename to UNet/output/BA_results/V14/result_14.vtk diff --git a/UNet/output/V3/Unet_state_dict.pth b/UNet/output/V3/Unet_state_dict.pth deleted file mode 100644 index 6b7f5e3a04edf75e005fd79fc390d8f8865b00de..0000000000000000000000000000000000000000 Binary files a/UNet/output/V3/Unet_state_dict.pth and /dev/null differ diff --git a/UNet/output/V3/history.pt b/UNet/output/V3/history.pt deleted file mode 100644 index 4acf17977dc394806459a47445c5d95909743f36..0000000000000000000000000000000000000000 Binary files a/UNet/output/V3/history.pt and /dev/null differ diff --git a/UNet/output/V4/history_4.pt b/UNet/output/V4/history_4.pt deleted file mode 100644 index 0a3a4ded8250f27f2055afef62509ccd769aaaa8..0000000000000000000000000000000000000000 Binary files a/UNet/output/V4/history_4.pt and /dev/null differ diff --git a/UNet/postprocessing_old.ipynb b/UNet/postprocessing_old.ipynb deleted file mode 100644 index 1a173b1672e50689fb8a7d4b6af1111d00795d14..0000000000000000000000000000000000000000 --- a/UNet/postprocessing_old.ipynb +++ /dev/null @@ -1,266 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import torch\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import UNet_V9 as UNet\n", - "import pyvista as pv\n", - "from matplotlib.colors import ListedColormap\n", - "import copy\n", - "from pyvista import examples\n", - "from torch.utils.data import TensorDataset" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "def predict_stress(image_id, normalization, model, dataset, threshold = 0.05):\n", - " input, output = dataset[image_id]\n", - " input = copy.deepcopy(input)\n", - " output = copy.deepcopy(output)\n", - " input = torch.unsqueeze(input,0)\n", - " output = torch.unsqueeze(output,0)\n", - " xb = UNet.to_device(input, device)\n", - " model.eval()\n", - " prediction = model(xb)\n", - " input = input.detach().numpy()\n", - " prediction = prediction.detach().numpy()\n", - " output = output.detach().numpy()\n", - " prediction = rescale(prediction, normalization)\n", - " output = rescale(output, normalization)\n", - " error = (abs(output - prediction)/output)\n", - " print(f'Maximum error is : {error.max()*100.:.4} %')\n", - " print(f'average error is : {error.mean()*100.:.4} %')\n", - " right_predic = (error < threshold).sum()\n", - " print(f'{(right_predic/error.size)*100.:.4}% of voxels have a diviation less than {threshold*100.}%')\n", - " grains,colormap = grain_matrix_colormap(input)\n", - " plot_difference(error,grains,colormap,output, threshold)\n", - "\n", - "def rescale(output, normalization):\n", - " output_rescale = output.reshape(output.shape[2],output.shape[3],output.shape[4])\n", - " if normalization is not None: \n", - " min_label, max_label,_ = normalization\n", - " output_rescale *= max_label\n", - " output_rescale += min_label\n", - " return output_rescale\n", - "\n", - "def get_colormap_grains(grains,index_ferrit_grains,index_martensite_grains):\n", - " black = np.array([11/256, 11/256, 11/256, 1])\n", - " red = np.array([203/256, 6/256, 29/256, 1])\n", - " new_color = np.empty(np.unique(grains),4)\n", - " new_color[index_ferrit_grains] = black\n", - " new_color[index_ferrit_grains] = red\n", - " return ListedColormap(new_color)\n", - "\n", - "\n", - "def get_colormap(mesh, threshold): \n", - " black = np.array([11/256, 11/256, 11/256, 1])\n", - " yellow = np.array([255/256, 237/256, 0/256, 1])\n", - " orange = np.array([245/256, 167/256, 0/256, 1])\n", - " red = np.array([203/256, 6/256, 29/256, 1])\n", - " bordeaux = np.array([160/256, 15/256, 53/256, 1])\n", - "\n", - " mapping = np.linspace(mesh['error'].min(), mesh['error'].max(),256)\n", - " newcolors = np.empty((256,4))\n", - " newcolors[mapping >=0.75] = bordeaux\n", - " newcolors[mapping <0.75] = red\n", - " newcolors[mapping <0.5] = orange\n", - " newcolors[mapping <0.25] = yellow\n", - " newcolors[mapping <threshold] = black\n", - " return ListedColormap(newcolors)\n", - "\n", - "\n", - "def plot_losses(history): \n", - " train_losses = [x['train_loss'] for x in history[50:]]\n", - " val_acc = [x['val_acc'] for x in history[50:]]\n", - " val_loss = [x['val_loss'] for x in history[50:]]\n", - "\n", - " plt.plot(train_losses, '-x',)\n", - " plt.plot(val_acc, '-x',)\n", - " plt.plot(val_loss, '-x',)\n", - "\n", - " plt.xlabel('epoch')\n", - " plt.ylabel('loss')\n", - " plt.title('Loss vs. No. of epochs')\n", - "\n", - "def grain_matrix_colormap(input): \n", - " matrix_grains = input[0,0,:,:,:]\n", - " matrix_ferrit = input[0,5,:,:,:] #matrix with elements = 1 if the phase is ferrit else 0\n", - " unique_angles = np.unique(matrix_grains)\n", - " for index, angle in enumerate(unique_angles):\n", - " matrix_grains[matrix_grains == angle] = (index + 1) # matrix with id for each grain add 1 to perfome the elementwise multiplication to get the index of phase grains\n", - " matrix_ferrit_grains = np.multiply(matrix_grains, matrix_ferrit)# matrix where only the ferrit grains are nonzero\n", - " index_ferrit_grains = np.unique(matrix_ferrit_grains[matrix_ferrit_grains != 0])\n", - " index_martensite_grains = np.setdiff1d(np.unique(matrix_grains),index_ferrit_grains)\n", - " black = np.array([11/256, 11/256, 11/256, 1])\n", - " red = np.array([203/256, 6/256, 29/256, 1])\n", - " new_color = np.empty((np.unique(matrix_grains),4))\n", - " new_color[index_ferrit_grains] = black\n", - " new_color[index_martensite_grains] = red\n", - " return matrix_grains,ListedColormap(new_color)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "def plot_difference(error, grains, colormap_grains, stress, threshold): \n", - " grid_1 = pv.UniformGrid()\n", - " grid_1.dimensions = np.array(error.shape) +1\n", - " grid_1.spacing = (1,1,1)\n", - " grid_1.cell_data[\"error\"] = error.flatten(order = \"F\")\n", - " grid_2 = pv.UniformGrid()\n", - " grid_2.dimensions = np.array(grains.shape) +1\n", - " grid_2.spacing = (1,1,1)\n", - " grid_2.cell_data[\"grain\"] = grains.flatten(order = \"F\")\n", - " grid_3 = pv.UniformGrid()\n", - " grid_3.dimensions = np.array(stress.shape) +1\n", - " grid_3.spacing = (1,1,1)\n", - " grid_3.cell_data[\"stress\"] = stress.flatten(order = \"F\")\n", - " colormap_error = get_colormap(grid_1, threshold)\n", - " p = pv.Plotter(notebook=False,shape=(3,1))\n", - " def my_plane_func(normal, origin):\n", - " slc_1 = grid_1.slice(normal=normal, origin=origin)\n", - " slc_2 = grid_2.slice(normal=normal, origin=origin)\n", - " slc_3 = grid_3.slice(normal=normal, origin=origin)\n", - "\n", - " p.subplot(0,0)\n", - " p.add_mesh(slc_2, name=\"my_slice_2\", cmap = colormap_grains)\n", - " p.subplot(2,0)\n", - " p.add_mesh(slc_1, name=\"my_slice_1\", cmap = colormap_error)\n", - " p.subplot(1,0)\n", - " p.add_mesh(slc_3, name=\"my_slice_3\")\n", - "\n", - " p.subplot(0,0)\n", - " p.add_title('Grains',font_size=10)\n", - " p.add_mesh(grid_2,scalars = \"grain\" ,opacity=0, cmap = colormap_grains)\n", - " p.add_plane_widget(my_plane_func)\n", - " p.subplot(2,0)\n", - " p.add_title('Error',font_size=10)\n", - " p.add_mesh(grid_1,scalars = \"error\" ,opacity=0,cmap = colormap_error)\n", - " p.add_plane_widget(my_plane_func)\n", - "\n", - " p.subplot(1,0)\n", - " p.add_title('Stress',font_size=10)\n", - " p.add_mesh(grid_3,scalars = \"stress\" ,opacity=0)\n", - " p.add_plane_widget(my_plane_func)\n", - "\n", - " p.link_views()\n", - " p.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "no GPU found\n" - ] - } - ], - "source": [ - "dataset = torch.load('E:/Data/damask3/UNet/Input/Training_Dataset_normalized__32_V2.pt')\n", - "#history = torch.load('E:/Data/damask3/UNet/output/V6_64/history_V6_2_64.pt')\n", - "#history_2 = torch.load('E:/Data/damask3/UNet/output/history_test.pt')\n", - "normalization = np.load('E:/Data/damask3/UNet/Input/Norm_min_max_32_V2.npy', allow_pickle=True)\n", - "model = UNet.UNet()\n", - "model.load_state_dict(torch.load('E:/Data/damask3/UNet/output/V9/Unet_dict_V9.pth',map_location=torch.device('cpu')))\n", - "device = UNet.get_default_device()\n", - "model = UNet.to_device(model.double(), device)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Maximum error is : 272.0 %\n", - "average error is : 14.51 %\n", - "24.97% of voxels have a diviation less than 5.0%\n" - ] - }, - { - "ename": "IndexError", - "evalue": "index 5 is out of bounds for axis 1 with size 2", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_24852/1619662343.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mpredict_stress\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m7\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnormalization\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnormalization\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmodel\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdataset\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_24852/1249646142.py\u001b[0m in \u001b[0;36mpredict_stress\u001b[1;34m(image_id, normalization, model, dataset, threshold)\u001b[0m\n\u001b[0;32m 18\u001b[0m \u001b[0mright_predic\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0merror\u001b[0m \u001b[1;33m<\u001b[0m \u001b[0mthreshold\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mf'{(right_predic/error.size)*100.:.4}% of voxels have a diviation less than {threshold*100.}%'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m \u001b[0mgrains\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcolormap\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgrain_matrix_colormap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 21\u001b[0m \u001b[0mplot_difference\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0merror\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mgrains\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcolormap\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0moutput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mthreshold\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_24852/1249646142.py\u001b[0m in \u001b[0;36mgrain_matrix_colormap\u001b[1;34m(input)\u001b[0m\n\u001b[0;32m 70\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mgrain_matrix_colormap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 71\u001b[0m \u001b[0mmatrix_grains\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0minput\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 72\u001b[1;33m \u001b[0mmatrix_ferrit\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0minput\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;31m#matrix with elements = 1 if the phase is ferrit else 0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 73\u001b[0m \u001b[0munique_angles\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0munique\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmatrix_grains\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 74\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mangle\u001b[0m \u001b[1;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0munique_angles\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mIndexError\u001b[0m: index 5 is out of bounds for axis 1 with size 2" - ] - } - ], - "source": [ - "predict_stress(7, normalization = normalization, model = model, dataset = dataset)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "train_losses = [x['train_loss'] for x in history[50:]]\n", - "plt.plot(train_losses)\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_difference_2(error, grains,output, threshold) \n" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "97ae2fbf52e0575424be8b71df1b468d27bac9d21e20089d11e8b4b02c5eac36" - }, - "kernelspec": { - "display_name": "Python 3.9.5 64-bit ('base': conda)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.5" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/UNet/postprocessing_routines.ipynb b/UNet/postprocessing_routines.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..3aab58771d86059a348c5a176b4f4e293b7212ae --- /dev/null +++ b/UNet/postprocessing_routines.ipynb @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","metadata":{},"source":["Diverse Routinen zum erstellen von Graphen und der Performance eines Models"]},{"cell_type":"code","execution_count":2,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":22772,"status":"ok","timestamp":1646649281506,"user":{"displayName":"Christopher Wasels","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"15760373283147466404"},"user_tz":-60},"id":"2TEXGl6dFUdv","outputId":"fe3f4fb2-bbc8-4d90-d590-b9bcb848dec8"},"outputs":[{"name":"stdout","output_type":"stream","text":["Mounted at /content/drive\n"]}],"source":["\n","import torch\n","import numpy as np\n","import matplotlib.pyplot as plt\n","import sys\n","import UNet_V16 as UNet\n","from matplotlib.colors import ListedColormap\n","import copy\n","from torch.utils.data import TensorDataset\n","import matplotlib.ticker as ticker\n","import time"]},{"cell_type":"code","execution_count":3,"metadata":{"executionInfo":{"elapsed":316,"status":"ok","timestamp":1646649281816,"user":{"displayName":"Christopher Wasels","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"15760373283147466404"},"user_tz":-60},"id":"-xKJ3QwuFUdx"},"outputs":[],"source":["\n","def rescale(output, normalization):\n"," output_rescale = output.reshape(output.shape[2],output.shape[3],output.shape[4])\n"," if normalization is not None:\n"," if normalization.shape[0] == 2:\n"," min_label, max_label = normalization\n"," else:\n"," min_label, max_label,_ = normalization\n"," output_rescale *= max_label\n"," output_rescale += min_label\n"," return output_rescale\n","\n","def plot_losses(history): \n"," plt.rc('font', size=18) #controls default text size\n"," train_losses = [x['train_loss'] for x in history[50:]]\n"," val_acc = [x['val_acc'] for x in history[50:]]\n"," val_loss = [x['val_loss'] for x in history[50:]]\n","\n"," fig, ax1 = plt.subplots()\n"," color = 'black'\n"," ax1.set_xlabel('epoch')\n"," ax1.set_ylabel('train/validation loss', color=color)\n"," lns1 = ax1.plot(train_losses, color='tab:red', label = 'train loss')\n"," lns2 = ax1.plot(val_loss, color='m', label = 'val loss')\n","\n"," ax1.tick_params(axis='y', labelcolor=color)\n"," ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis\n","\n"," color = 'tab:blue'\n"," ax2.set_ylabel('validation accuracy [%]', color=color) # we already handled the x-label with ax1\n"," lns3 = ax2.plot(val_acc, color=color, label = 'val accuracy')\n"," ax2.tick_params(axis='y', labelcolor=color)\n"," lns = lns1+lns2+lns3\n"," labs = [l.get_label() for l in lns]\n"," #ax1.legend(lns, labs, loc='center right')\n"," fig.tight_layout() # otherwise the right y-label is slightly clipped\n"," #plt.title('Loss vs. No. of epochs')\n"," #plt.legend(loc='center right')\n","\n","\n","def plot_error(result):\n"," fig, axis = plt.subplots(3, 2,figsize=(8,8))\n"," plt.rc('font', size=18) #controls default text size\n"," axis[0, 0].hist(result[0])\n"," axis[0, 0].set_title('Mean Error')\n"," axis[0, 0].set_ylabel('Nr. Samples')\n"," axis[0, 0].xaxis.set_major_formatter(ticker.PercentFormatter(decimals=0))\n"," axis[1, 0].hist(result[1])\n"," axis[1, 0].set_title('Maximum Error')\n"," axis[1, 0].set_ylabel('Nr. samples')\n"," axis[1, 0].xaxis.set_major_formatter(ticker.PercentFormatter(decimals=0))\n","\n"," axis[0, 1].hist(result[2])\n"," axis[0, 1].set_title('Correct Percentile')\n"," axis[0, 1].set_ylabel('Nr. Samples')\n"," axis[0, 1].xaxis.set_major_formatter(ticker.PercentFormatter(decimals=0))\n","\n"," axis[1, 1].hist(result[4]*100)\n"," axis[1, 1].set_title('Deviation')\n"," axis[1, 1].set_ylabel('Nr. Samples') \n"," axis[1, 1].xaxis.set_major_formatter(ticker.PercentFormatter(decimals=0))\n","\n"," axis[2, 0].hist(result[5]/1e9)\n"," axis[2, 0].set_title('DAMASK')\n"," axis[2, 0].set_ylabel('Nr. Samples')\n"," axis[2, 0].set_xlabel('Avg. stress Mart(GPa)') \n"," \n"," #axis[2, 1].xaxis.set_major_formatter(ticker.PercentFormatter(decimals=0))\n","\n"," axis[2, 1].hist(result[6]/1e9)\n"," axis[2, 1].set_title('UNet')\n"," axis[2, 1].set_ylabel('Nr. Samples') \n"," axis[2, 1].set_xlabel('Avg. stress Mart (GPa)') \n","\n"," #axis[2, 1].xaxis.set_major_formatter(ticker.PercentFormatter(decimals=0))\n","\n"," fig.subplots_adjust(hspace=0.5, wspace=0.5)\n"," plt.savefig('/content/drive/MyDrive/Bachlorarbeit/martensite_stress.png')\n","\n","\n"," fig.subplots_adjust(hspace=0.5, wspace=0.5)\n","\n","def plot_mart_stress(result,martensite):\n"," fig, axis = plt.subplots(1,3,figsize=(8,4))\n"," plt.rc('font', size=18) #controls default text size\n","\n"," axis[2].hist(result[5]/1e9)\n"," axis[2].set_title('DAMASK')\n"," axis[2].set_ylabel('Nr. Samples')\n"," axis[2].set_xlabel('Average Stress (GPa)') \n"," \n"," #axis[2, 1].xaxis.set_major_formatter(ticker.PercentFormatter(decimals=0))\n","\n"," axis[1].hist(result[6]/1e9)\n"," axis[1].set_title('U-Net')\n"," axis[1].set_ylabel('Nr. Samples') \n"," axis[1].set_xlabel('Average Stress (GPa)')\n","\n"," axis[0].hist(martensite)\n"," axis[0].set_title('Martensite Percentage')\n"," axis[0].set_ylabel('Nr. Samples') \n"," axis[0].xaxis.set_major_formatter(ticker.PercentFormatter(decimals=0))\n"," fig.subplots_adjust( wspace=0.5)\n","\n","\n","def dataset_evaluation( normalization, model, dataset, threshold = 0.05):\n"," model.eval()\n"," mean_error = np.empty(len(dataset))\n"," max_error = np.empty(len(dataset))\n"," correct_per = np.empty(len(dataset)) #percentage of voxel that are guessed corrected, according to threshold\n"," mean_deviation_abs = np.empty(len(dataset)) #absolute mean deviation between prediction and label per RVE\n"," mean_deviation_per = np.empty(len(dataset)) #percentile mean deviation between prediction and label per RVE\n"," average_stress_total_DAMASK = np.empty(len(dataset))\n"," average_stress_martensite_DAMASK = np.empty(len(dataset))\n"," average_stress_martensite_UNet = np.empty(len(dataset))\n"," average_stress_ferrite_DAMASK = np.empty(len(dataset))\n"," average_stress_ferrite_UNet = np.empty(len(dataset))\n","\n"," for index in range(len(dataset)):\n"," input, output = dataset[index]\n"," input = copy.copy(input)\n"," output = copy.copy(output)\n"," input = torch.unsqueeze(input,0)\n"," output = torch.unsqueeze(output,0)\n"," xb = UNet.to_device(input, device)\n"," prediction = model(xb)\n"," input = input.detach().numpy()\n"," martensite_matrix = input[:,4,:,:,:].reshape(32,32,32)\n"," ferrite_matrix = input[:,5,:,:,:].reshape(32,32,32)\n","\n"," prediction = prediction.cpu().detach().numpy()\n"," output = output.detach().numpy()\n"," prediction = rescale(prediction, normalization)\n"," output = rescale(output, normalization)\n","\n"," stress_martensite_DAMASK_matrix = np.multiply(martensite_matrix,output)\n"," average_stress_martensite_DAMASK[index]=stress_martensite_DAMASK_matrix[np.nonzero(stress_martensite_DAMASK_matrix)].mean()\n","\n"," stress_martensite_UNet_matrix = np.multiply(martensite_matrix,prediction)\n"," average_stress_martensite_UNet[index]=stress_martensite_UNet_matrix[np.nonzero(stress_martensite_UNet_matrix)].mean()\n","\n"," stress_ferrite_DAMASK_matrix = np.multiply(ferrite_matrix,output)\n"," average_stress_ferrite_DAMASK[index]=stress_ferrite_DAMASK_matrix[np.nonzero(stress_ferrite_DAMASK_matrix)].mean()\n","\n"," stress_ferrite_UNet_matrix = np.multiply(ferrite_matrix,prediction)\n"," average_stress_ferrite_UNet[index]=stress_ferrite_UNet_matrix[np.nonzero(stress_ferrite_UNet_matrix)].mean() \n","\n"," average_stress_total_DAMASK[index] = output.mean()\n","\n"," error = (abs(output - prediction)/output)\n"," right_predic = (error < threshold).sum()\n"," mean_error[index] = error.mean()*100.\n"," max_error[index] = error.max()*100.\n"," mean_deviation_abs[index] = prediction.mean() - output.mean()\n"," mean_deviation_per[index] = (prediction.mean() - output.mean())/output.mean()\n","\n"," correct_per[index] = (right_predic/error.size)*100.\n"," return [mean_error, max_error, correct_per, mean_deviation_abs,mean_deviation_per,average_stress_martensite_DAMASK,average_stress_martensite_UNet,average_stress_ferrite_DAMASK,average_stress_ferrite_UNet,average_stress_total_DAMASK]\n","\n","def print_result(result):\n"," print(f'\\t mean error over whole set: {result[0].mean():.4}%')\n"," print(f'\\t max error average: {result[1].mean():.4}% and maximum {result[1].max():.4}%')\n"," print(f'\\t average correct percentile of voxels over whole set: {result[2].mean():.4}%')\n"," print(f'\\t average deviation per RVE over whole set: {result[3].mean():.4} Pa')\n"," print(f'\\t average deviation in percent per RVE over whole set: {result[4].mean()*100.:.4} %')\n"," print(f'\\t average stress in martensite according to DAMASK: {result[5].mean()/1e9:.4} GPa')\n"," print(f'\\t average stress in martensite according to UNet: {result[6].mean()/1e9:.6} GPa')\n"," print(f'\\t average stress in ferrite according to DAMASK: {result[7].mean()/1e9:.6} GPa')\n"," print(f'\\t average stress in ferrite according to UNet: {result[8].mean()/1e9:.6} GPa')\n"," print(f'\\t average stress in RVE according to DAMASK: {result[9].mean()/1e9:.6} GPa')\n","\n","\n","def best_sample_id(result):\n"," index_min = min(range(len(result[0])), key=result[0].__getitem__)\n"," print(f'sample with index {index_min} has the best mean error with {result[0][index_min]:.4}%')\n"," return index_min\n"]},{"cell_type":"code","execution_count":7,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":317},"executionInfo":{"elapsed":1419,"status":"ok","timestamp":1646643358701,"user":{"displayName":"Christopher Wasels","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"15760373283147466404"},"user_tz":-60},"id":"HVazRK80EV-o","outputId":"b130076a-e82c-433f-8274-a1be49bc42ef"},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 576x288 with 3 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["result = np.load('/content/drive/MyDrive/Bachlorarbeit/output/V16/evaluation_1.npy')\n","per_mart =np.load('/content/drive/MyDrive/Bachlorarbeit/Trainingsdata/percentage_mart.npy')\n","\n","#print_result(result)\n","#plot_error(result)\n","plot_mart_stress(result,per_mart)\n","\n","#plt.savefig('/content/drive/MyDrive/Bachlorarbeit/performance.png')\n","#best_sample_id(result)"]},{"cell_type":"markdown","metadata":{"id":"wro0NEBKgBj6"},"source":["# **Kornverteilung**"]},{"cell_type":"code","execution_count":1,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":246},"executionInfo":{"elapsed":633,"status":"error","timestamp":1646649253582,"user":{"displayName":"Christopher Wasels","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"15760373283147466404"},"user_tz":-60},"id":"9LWq50v2bFCy","outputId":"c09c4b87-0ddd-4929-cdaa-b48b1720db5c"},"outputs":[{"ename":"NameError","evalue":"ignored","output_type":"error","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)","\u001b[0;32m<ipython-input-1-fda6685b2dfe>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mseaborn\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mgrain_number_32\u001b[0m \u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/content/drive/MyDrive/Bachlorarbeit/Trainingsdata/grain_numbers_32.npy'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mgrain_number_64\u001b[0m \u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/content/drive/MyDrive/Bachlorarbeit/Trainingsdata/grain_numbers_64.npy'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;31m#ax1.savefig('/content/drive/MyDrive/Bachlorarbeit/grain_distribution_32.png')\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mNameError\u001b[0m: name 'np' is not defined"]}],"source":["import seaborn as sns\n","grain_number_32 =np.load('/content/drive/MyDrive/Bachlorarbeit/Trainingsdata/grain_numbers_32.npy')\n","grain_number_64 =np.load('/content/drive/MyDrive/Bachlorarbeit/Trainingsdata/grain_numbers_64.npy')\n","\n","#ax1.savefig('/content/drive/MyDrive/Bachlorarbeit/grain_distribution_32.png')\n","ax1 = sns.displot(grain_number_32, stat='percent')\n","ax1.set(xlabel='Number of grains',ylabel='Training Data [%]')\n","#ax1.set_ylabels(')\n","ax1.savefig('/content/drive/MyDrive/Bachlorarbeit/grain_distribution_32.png')\n"]},{"cell_type":"markdown","metadata":{"id":"xypI7Y2JgHwS"},"source":["# **Martensite Anteil*"]},{"cell_type":"code","execution_count":4,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":383},"executionInfo":{"elapsed":1279,"status":"ok","timestamp":1646649283093,"user":{"displayName":"Christopher Wasels","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"15760373283147466404"},"user_tz":-60},"id":"dftccvHff5vb","outputId":"d39f7d09-5d32-40d6-8ff1-1d4c20ffb080"},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 360x360 with 1 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["import seaborn as sns\n","per_mart =np.load('/content/drive/MyDrive/Bachlorarbeit/Trainingsdata/percentage_mart.npy')*100\n","\n","ax1 = sns.displot(per_mart, stat='percent')\n","ax1.set(xlabel='Martensite [%]',ylabel='Training Data [%]')\n","#ax1.set_ylabels(')\n","\n","ax1.savefig('/content/drive/MyDrive/Bachlorarbeit/martensite_percentage.png')"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"BEs7n3R5e2pu"},"outputs":[],"source":["result_15= np.load('/content/drive/MyDrive/Bachlorarbeit/output/V15/evaluation.npy')\n","result_16= np.load('/content/drive/MyDrive/Bachlorarbeit/output/V16/evaluation.npy')"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":8,"status":"ok","timestamp":1645515844659,"user":{"displayName":"Christopher Wasels","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"15760373283147466404"},"user_tz":-60},"id":"0Ju75VmbYCJT","outputId":"e57ebcf8-9897-44f9-85b8-b2293fc5f6f1"},"outputs":[{"name":"stdout","output_type":"stream","text":["layer = 3,kernel = 7,phases, dropout =0.5,resolution = 32\n","\t mean error over whole set: 13.96%\n","\t max error average: 144.2% and maximum 550.5%\n","\t average correct percentile of voxels over whole set: 45.84%\n","layer = 3,kernel = 7,angles, dropout =0.5,resolution = 32\n","\t mean error over whole set: 14.12%\n","\t max error average: 154.0% and maximum 585.8%\n","\t average correct percentile of voxels over whole set: 45.77%\n","sample with index 1288 has the best mean error with 9.575%\n"]},{"data":{"text/plain":["1288"]},"execution_count":4,"metadata":{},"output_type":"execute_result"}],"source":["print('layer = 3,kernel = 7,phases, dropout =0.5,resolution = 32')\n","print_result(result_15)\n","print('layer = 3,kernel = 7,angles, dropout =0.5,resolution = 32')\n","print_result(result_16)\n","best_sample_id(result_15)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"-vmVTKIec0WD"},"outputs":[],"source":["history = torch.load('/content/drive/MyDrive/Bachlorarbeit/output/V16/history_V16.pt')\n","plot_losses(history)\n","#plt.savefig('/content/drive/MyDrive/Bachlorarbeit/overfitting_no_dropout.png')\n","#plot_error(result_15)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"RvnA7gPPcAYz"},"outputs":[],"source":["history = torch.load('/content/drive/MyDrive/Bachlorarbeit/output/V15/history_V15_2.pt')\n","plot_losses(history)\n","result_15_2= np.load('/content/drive/MyDrive/Bachlorarbeit/output/V15/evaluation_2.npy')\n","plot_error(result_15_2)\n","print_result(result_15_2)\n","best_sample_id(result_15_2)"]},{"cell_type":"markdown","metadata":{"id":"xUtK4Qmxxs-v"},"source":["# Auswertung über Datensatz\n"]},{"cell_type":"markdown","metadata":{"id":"i2NBQuW5bdMl"},"source":["Für 64"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"m03GR2xobZkc"},"outputs":[],"source":["Training_data = torch.load(f'/content/drive/MyDrive/Bachlorarbeit/Input/TD_norm_32_angles.pt')\n","#Training_data = torch.load(f'/content/drive/MyDrive/Bachlorarbeit/Input/TD_norm_32_phase.pt')\n","\n","normalization = np.load(f'/content/drive/MyDrive/Bachlorarbeit/Input/Norm_min_max_32_angles.npy', allow_pickle=True)\n","#normalization = np.load(f'/content/drive/MyDrive/Bachlorarbeit/Input/Norm_min_max_32_phase.npy', allow_pickle=True)\n","model = UNet.UNet()\n","device = UNet.get_default_device()\n","model = UNet.to_device(model.double(), device)\n","\n","model.load_state_dict(torch.load(f'/content/drive/MyDrive/Bachlorarbeit/output/V16/Unet_dict_V16_K3.pth',map_location=torch.device('cpu')))\n","result= dataset_evaluation( normalization = normalization, model = model, dataset = copy.copy(Training_data), threshold = 0.05)"]},{"cell_type":"markdown","metadata":{"id":"2ZprcQolbW7t"},"source":["Für 32\n"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":15089,"status":"ok","timestamp":1646410411763,"user":{"displayName":"Christopher Wasels","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"15760373283147466404"},"user_tz":-60},"id":"K-1bEl78I0_d","outputId":"bb139874-37e4-4750-f721-f7c55252aa9b"},"outputs":[{"data":{"text/plain":["<All keys matched successfully>"]},"execution_count":7,"metadata":{},"output_type":"execute_result"}],"source":["Training_data = torch.load(f'/content/drive/MyDrive/Bachlorarbeit/Input/TD_norm_32_angles.pt')\n","#Training_data = torch.load(f'/content/drive/MyDrive/Bachlorarbeit/Input/TD_norm_32_phase.pt')\n","\n","normalization = np.load(f'/content/drive/MyDrive/Bachlorarbeit/Input/Norm_min_max_32_angles.npy', allow_pickle=True)\n","#normalization = np.load(f'/content/drive/MyDrive/Bachlorarbeit/Input/Norm_min_max_32_phase.npy', allow_pickle=True)\n","model = UNet.UNet()\n","device = UNet.get_default_device()\n","model = UNet.to_device(model.double(), device)\n","\n","model.load_state_dict(torch.load(f'/content/drive/MyDrive/Bachlorarbeit/output/V16/Unet_dict_V16.pth'))\n","#result= dataset_evaluation( normalization = normalization, model = model, dataset = copy.copy(Training_data), threshold = 0.05)"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":191,"status":"ok","timestamp":1646410501874,"user":{"displayName":"Christopher Wasels","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"15760373283147466404"},"user_tz":-60},"id":"90awmKwIscAS","outputId":"92e1adb0-8471-446f-b4dd-b4e1bd17840d"},"outputs":[{"name":"stdout","output_type":"stream","text":["0.05885744094848633\n"]}],"source":["sample_index = 144\n","sample = UNet.to_device(copy.copy(Training_data[sample_index]), device)\n","start_time = time.time()\n","inpu, output = sample\n","inpu=torch.unsqueeze(inpu,0)\n","prediction = model(inpu)\n","\n","end_time = time.time()\n","time_elapsed = (end_time - start_time)\n","print(time_elapsed)\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Sl-CdLhdcIX2"},"outputs":[],"source":["np.save('/content/drive/MyDrive/Bachlorarbeit/output/V16/evaluation_1.npy',result)"]},{"cell_type":"code","execution_count":17,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":774},"executionInfo":{"elapsed":3060,"status":"ok","timestamp":1646645378323,"user":{"displayName":"Christopher Wasels","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"15760373283147466404"},"user_tz":-60},"id":"pXWiEdDyR_Yz","outputId":"226f6e94-bfb1-4aaf-952b-9531cd02ec03"},"outputs":[{"name":"stdout","output_type":"stream","text":["\t mean error over whole set: 14.12%\n","\t max error average: 154.0% and maximum 585.8%\n","\t average correct percentile of voxels over whole set: 25.61%\n","\t average deviation per RVE over whole set: -5.881e+06 Pa\n","\t average deviation in percent per RVE over whole set: -0.2972 %\n","\t average stress in martensite according to DAMASK: 2.061 GPa\n","\t average stress in martensite according to UNet: 1.94805 GPa\n","\t average stress in ferrite according to DAMASK: 1.32914 GPa\n","\t average stress in ferrite according to UNet: 1.35741 GPa\n","\t average stress in RVE according to DAMASK: 1.5054 GPa\n","sample with index 1288 has the best mean error with 9.365%\n","1.8859330501495506\n","2.223558279824213\n"]},{"data":{"image/png":"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","text/plain":["<Figure size 576x576 with 6 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["result = np.load('/content/drive/MyDrive/Bachlorarbeit/output/V16/evaluation_1.npy',allow_pickle=True)\n","print_result(result)\n","plot_error(result)\n","#plt.savefig('/content/drive/MyDrive/Bachlorarbeit/performance.png')\n","best_sample_id(result)\n","print((result[5]/1e9).min())\n","print((result[5]/1e9).max())"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":170,"status":"ok","timestamp":1646409348054,"user":{"displayName":"Christopher Wasels","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"15760373283147466404"},"user_tz":-60},"id":"2NczS-a3o-yL","outputId":"a27cef91-93ab-417c-c123-63ee9e236961"},"outputs":[{"name":"stdout","output_type":"stream","text":["1945898165.9640791\n","1945898165.9640791\n"]}],"source":["print(result[6].max())\n","print(result[6].min())"]}],"metadata":{"accelerator":"GPU","colab":{"collapsed_sections":[],"name":"show_results.ipynb","provenance":[]},"interpreter":{"hash":"97ae2fbf52e0575424be8b71df1b468d27bac9d21e20089d11e8b4b02c5eac36"},"kernelspec":{"display_name":"Python 3.9.5 64-bit ('base': conda)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.9.5"},"orig_nbformat":4},"nbformat":4,"nbformat_minor":0} diff --git a/UNet/visualize_vtk.ipynb b/UNet/results_screenshot.ipynb similarity index 97% rename from UNet/visualize_vtk.ipynb rename to UNet/results_screenshot.ipynb index 80e7ecdac710fe17eb2d011d072352cf18204fe3..70739b0c3d5246d2d16448600733310c3f345bb3 100644 --- a/UNet/visualize_vtk.ipynb +++ b/UNet/results_screenshot.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Erstellt Screenshot von Spannungs Schätzung/Label, Error, Grain distribution" + ] + }, { "cell_type": "code", "execution_count": 2, @@ -15,7 +22,7 @@ "from matplotlib import colors\n", "import torch\n", "import copy\n", - "import UNet_V16 as UNet" + "import UNet_V16 as UNet #import proper U_net" ] }, { @@ -155,56 +162,6 @@ "slice['label'] = slice['label']/1000000000\n" ] }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<table><tr><th>Header</th><th>Data Arrays</th></tr><tr><td>\n", - "<table>\n", - "<tr><th>UniformGrid</th><th>Information</th></tr>\n", - "<tr><td>N Cells</td><td>32768</td></tr>\n", - "<tr><td>N Points</td><td>35937</td></tr>\n", - "<tr><td>X Bounds</td><td>0.000e+00, 3.200e+01</td></tr>\n", - "<tr><td>Y Bounds</td><td>0.000e+00, 3.200e+01</td></tr>\n", - "<tr><td>Z Bounds</td><td>0.000e+00, 3.200e+01</td></tr>\n", - "<tr><td>Dimensions</td><td>33, 33, 33</td></tr>\n", - "<tr><td>Spacing</td><td>1.000e+00, 1.000e+00, 1.000e+00</td></tr>\n", - "<tr><td>N Arrays</td><td>1</td></tr>\n", - "</table>\n", - "\n", - "</td><td>\n", - "<table>\n", - "<tr><th>Name</th><th>Field</th><th>Type</th><th>N Comp</th><th>Min</th><th>Max</th></tr>\n", - "<tr><td><b>label</b></td><td>Cells</td><td>float64</td><td>1</td><td>-1.215e+308</td><td>3.347e+305</td></tr>\n", - "</table>\n", - "\n", - "</td></tr> </table>" - ], - "text/plain": [ - "UniformGrid (0x20607430d60)\n", - " N Cells:\t32768\n", - " N Points:\t35937\n", - " X Bounds:\t0.000e+00, 3.200e+01\n", - " Y Bounds:\t0.000e+00, 3.200e+01\n", - " Z Bounds:\t0.000e+00, 3.200e+01\n", - " Dimensions:\t33, 33, 33\n", - " Spacing:\t1.000e+00, 1.000e+00, 1.000e+00\n", - " N Arrays:\t1" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "grid" - ] - }, { "cell_type": "code", "execution_count": 5, @@ -412,7 +369,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.5" + "version": "3.9.10" }, "orig_nbformat": 4 }, diff --git a/UNet/unet.py b/UNet/unet.py deleted file mode 100644 index cd369ff8acc9e421df9f953846ae6a98a27c3e1f..0000000000000000000000000000000000000000 --- a/UNet/unet.py +++ /dev/null @@ -1,225 +0,0 @@ -# -*- coding: utf-8 -*- -"""UNet.ipynb - -Automatically generated by Colaboratory. - -Original file is located at - https://colab.research.google.com/drive/1k2vpe8w4qjFhVofhOLVIJ2a9An2dZ_F2 -""" - -import torch -import torch.nn as nn -import numpy as np -from torch.utils.data.sampler import SubsetRandomSampler -from torch.utils.data.dataloader import DataLoader -from torch.utils.data import TensorDataset -import torch.nn.functional as F -from torch.utils.data import random_split -import os - -class convolution_Layer(nn.Module): - def __init__(self, in_c, out_1_c, out_2_c, padding, kernel_size): - super(convolution_Layer, self).__init__() - self.conv1 = nn.Conv3d(in_c, out_1_c, kernel_size= kernel_size, padding=padding) - - self.relu = nn.ReLU() - self.conv2 = nn.Conv3d(out_1_c, out_2_c, kernel_size= kernel_size, padding=padding) - def forward(self, x): - return self.relu(self.conv2(self.relu(self.conv1(x)))) #second convolution - -class head_layer(nn.Module): - def __init__(self, in_c, out_1_c, out_2_c, padding, kernel_size): - super(head_layer, self).__init__() - self.conv = nn.Conv3d(in_c, out_1_c, kernel_size= kernel_size, padding=padding) - self.relu = nn.ReLU() - - self.head = nn.Conv3d( out_1_c, out_2_c, kernel_size= 1, padding=padding) - self.sig = nn.Sigmoid() - def forward(self, x): - return self.sig(self.head(self.relu(self.conv(x)))) #convolution - -class Encoder(nn.Module): - def __init__(self,kernel_size, chs=((6,16,32),(32,32,64),(64,64,128)), padding=("same","same","same",)): - super().__init__() - self.channels = chs - self.enc_blocks = nn.ModuleList([convolution_Layer(chs[i][0], chs[i][1], chs[i][2],kernel_size=kernel_size, padding=padding[i]) for i in range(len(chs))]) - self.pool = nn.MaxPool3d(kernel_size=2, stride=2) - self.batch_norm = nn.ModuleList([nn.BatchNorm3d( chs[i][-1]) for i in range(len(chs))]) - self.periodic_upsample = nn.ReflectionPad3d(int((kernel_size-1)/2)) - - - def forward(self, x): - ftrs = [] - #x = self.periodic_upsample(x) - for i in range(len(self.channels)): - ftrs.append(x) - x =self.enc_blocks[i](x) - #print(f'size of ftrs: {ftrs[i].size()}') - x = self.batch_norm[i](x) - x = self.pool(x) - #print(f'size of ftrs: {ftrs[3].size()}') - - return ftrs - -from torch.nn.modules.activation import ReLU -class Decoder(nn.Module): - def __init__(self,kernel_size, chs_upsampling=(128, 64, 32, 16),chs_conv=((192,64,64),(96,32,32),(38,1,1)), padding=("same","same","same",)): - super().__init__() - assert len(chs_conv) == len(chs_upsampling) - self.chs = chs_upsampling - self.upconvs = nn.ModuleList([nn.ConvTranspose3d(chs_upsampling[i], chs_upsampling[i], 2, 2) for i in range(len(chs_upsampling))]) - self.dec_blocks = nn.ModuleList([convolution_Layer(chs_conv[i][0], chs_conv[i][1], chs_conv[i][2], kernel_size=kernel_size, padding=padding[i]) for i in range(len(chs_conv) - 1)]) - self.head = head_layer(chs_conv[-1][0], chs_conv[-1][1], chs_conv[-1][2], kernel_size=kernel_size, padding=padding[-1]) - def forward(self, x, encoder_features): - for i in range(len(self.chs) - 1): - x = self.upconvs[i](x) - #print(f'size after upsampling: {x.size()}') - #print(f'size of skipped tensor: {encoder_features[i].size()}') - enc_ftrs = self.crop(encoder_features[i], x) - x = torch.cat([x, enc_ftrs], dim=1) - #print(f'size after cropping&cat: {x.size()}') - - x = self.dec_blocks[i](x) - #print(f'size after convolution: {x.size()}') - x = self.upconvs[-1](x) - enc_ftrs = self.crop(encoder_features[-1], x) - x = torch.cat([x, enc_ftrs], dim=1) - x = self.head(x) - return x - - def crop(self, tensor, target_tensor): - target_size = target_tensor.size()[2] - tensor_size = tensor.size()[2] - delta = tensor_size - target_size - delta = delta // 2 - return tensor[:,:,delta:tensor_size-delta,delta:tensor_size-delta,delta:tensor_size-delta] - -class UNetBase(nn.Module): - def training_step(self, batch): - input, labels = batch - out = self(input) # Generate predictions - loss = F.l1_loss(out, labels) # Calculate loss - return loss - - def validation_step(self, batch): - input, labels = batch - out = self(input) # Generate predictions - loss = F.l1_loss(out, labels) # Calculate loss - acc = accuracy(out,labels) #calculate accuracy - return {'val_loss': loss.detach(), 'val_acc': acc} - - def validation_epoch_end(self, outputs): - batch_losses = [x['val_loss'] for x in outputs] - epoch_loss = torch.stack(batch_losses).mean() # Combine losses - batch_accs = [x['val_acc'] for x in outputs] - epoch_acc = torch.stack(batch_accs).mean() # Combine accuracies - return {'val_loss': epoch_loss.item(), 'val_acc': epoch_acc.item()} - - def epoch_end(self, epoch, result): - print("Epoch [{}], train_loss: {:.4f}, val_loss: {:.4f}, val_acc: {:.4f}".format( - epoch, result['train_loss'], result['val_loss'], result['val_acc'])) - -def accuracy(outputs, labels): - deviation = torch.max(abs( torch.div((outputs - labels),labels))) - return deviation.float() - -class UNet(UNetBase): - def __init__(self,kernel_size = 5, enc_chs=((6,16,32),(32,32,64),(64,64,128)), dec_chs_up=(128, 64, 32), dec_chs_conv=((192,64,64),(96,32,32),(38,1,1))): - super().__init__() - self.encoder = Encoder(kernel_size = kernel_size, chs = enc_chs) - self.decoder = Decoder(kernel_size = kernel_size, chs_upsampling = dec_chs_up, chs_conv = dec_chs_conv) - - def forward(self, x): - enc_ftrs = self.encoder(x) - out = self.decoder(enc_ftrs[::-1][0], enc_ftrs[::-1][1:]) - return out - -@torch.no_grad() -def evaluate(model, val_loader): - model.eval() - outputs = [model.validation_step(batch) for batch in val_loader] - return model.validation_epoch_end(outputs) - -def fit(epochs, lr, model, train_loader, val_loader, path, opt_func=torch.optim.Adam): - history = [] - optimizer = opt_func(model.parameters(), lr, eps=1e-07) - for epoch in range(epochs): - # Training Phase - model.train() - train_losses = [] - for batch in train_loader: - loss = model.training_step(batch) - train_losses.append(loss) - loss.backward() - optimizer.step() - optimizer.zero_grad() - # Validation phase - result = evaluate(model, val_loader) - result['train_loss'] = torch.stack(train_losses).mean().item() - model.epoch_end(epoch, result) - history.append(result) - torch.save(model,f'{path}/Unet.pt') - #torch.save(history,f'{path}/history.pt') - return history - -def get_default_device(): - """Pick GPU if available, else CPU""" - if torch.cuda.is_available(): - return torch.device('cuda') - else: - print('no GPU found') - return torch.device('cpu') - -def to_device(data, device): - """Move tensor(s) to chosen device""" - if isinstance(data, (list,tuple)): - return [to_device(x, device) for x in data] - return data.to(device, non_blocking=True) - -class DeviceDataLoader(): - """Wrap a dataloader to move data to a device""" - def __init__(self, dl, device): - self.dl = dl - self.device = device - - def __iter__(self): - """Yield a batch of data after moving it to device""" - for b in self.dl: - yield to_device(b, self.device) - - def __len__(self): - """Number of batches""" - return len(self.dl) - -def Create_Dataloader(path, batch_size = 100, percent_val = 0.2): - dataset = torch.load(path) # create the pytorch dataset - #size_data = 500 #shrink dataset for colab - #rest = len(dataset) -size_data - #dataset,_ = torch.utils.data.random_split(dataset, [size_data, rest]) - val_size = int(len(dataset) * percent_val) - train_size = len(dataset) - val_size - - train_ds, val_ds = random_split(dataset, [train_size, val_size]) - # Create DataLoader - train_dl = DataLoader(train_ds, batch_size, shuffle=True, num_workers=1, pin_memory=False) - valid_dl = DataLoader(val_ds, batch_size*2, num_workers=1, pin_memory=False) - - return train_dl, valid_dl - -if __name__ == '__main__': - #os.chdir('F:/RWTH/HiWi_IEHK/DAMASK3/UNet/Trainingsdata') - num_epochs = 1000 - opt_func = torch.optim.Adam - batch_size = 32 - lr = 0.00001 - print(f'number of epochs: {num_epochs}') - print(f'batch size: {batch_size}') - print(f'learning rate: {lr}') - - device = get_default_device() - train_dl, valid_dl = Create_Dataloader('/home/yk138599/Hiwi/damask3/UNet/Trainingsdata/Training_Dataset.pt', batch_size= 32 ) - train_dl = DeviceDataLoader(train_dl, device) - valid_dl = DeviceDataLoader(valid_dl, device) - - model = to_device(UNet().double(), device) - history = fit(num_epochs, lr, model, train_dl, valid_dl,'/home/yk138599/Hiwi/damask3/UNet/output', opt_func) diff --git a/UNet/postprocessing_new.ipynb b/UNet/visualize_RVE.ipynb similarity index 76% rename from UNet/postprocessing_new.ipynb rename to UNet/visualize_RVE.ipynb index 46ed8ac3ac389abb5f8d0e8684f02216cef3c512..1964ad8045198878dac940c4d3b9f531ff9231e7 100644 --- a/UNet/postprocessing_new.ipynb +++ b/UNet/visualize_RVE.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Erzeugt Grain distribution, Stress prediction und error für ein gegebenes RVE. das U-Net muss importiert werden" + ] + }, { "cell_type": "code", "execution_count": 2, @@ -9,10 +16,7 @@ "import torch\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", - "import UNet_V15 as UNet15\n", "import UNet_V16 as UNet16\n", - "\n", - "import UNet_V9_3 as UNet9\n", "import pyvista as pv\n", "from matplotlib.colors import ListedColormap\n", "import copy\n", @@ -62,11 +66,11 @@ "\n", "\n", "def get_colormap(mesh, threshold): \n", - " black = np.array([11/256, 11/256, 11/256, 1])\n", - " yellow = np.array([255/256, 237/256, 0/256, 1])\n", - " orange = np.array([245/256, 167/256, 0/256, 1])\n", + " #black = np.array([11/256, 11/256, 11/256, 1])\n", + " #yellow = np.array([255/256, 237/256, 0/256, 1])\n", + " #orange = np.array([245/256, 167/256, 0/256, 1])\n", " red = np.array([203/256, 6/256, 29/256, 1])\n", - " bordeaux = np.array([160/256, 15/256, 53/256, 1])\n", + " #bordeaux = np.array([160/256, 15/256, 53/256, 1])\n", " blue = np.array([0/256, 84/256, 159/256, 1])\n", "\n", " mapping = np.linspace(mesh['error'].min(), mesh['error'].max(),256)\n", @@ -240,105 +244,16 @@ "#history_2 = torch.load('E:/Data/damask3/UNet/output/history_test.pt')\n", "normalization_64 = np.load(f'{path_to_UNET}/UNet/Input/Norm_min_max_64_phase.npy', allow_pickle=True)\n", "\n", - "model_15 = UNet.UNet()\n", - "model_15.load_state_dict(torch.load(f'{path_to_UNET}/UNet/output/V15/Unet_dict_V15.pth',map_location=torch.device('cpu')))\n", + "model = UNet.UNet()\n", + "model.load_state_dict(torch.load(f'{path_to_UNET}/UNet/output/V15/Unet_dict_V15.pth',map_location=torch.device('cpu')))\n", "\n", - "device_15 = UNet.get_default_device()\n", + "device = UNet.get_default_device()\n", "\n", - "model_15 = UNet.to_device(model_15.double(), device_15)\n", + "model = UNet.to_device(model.double(), device)\n", "\n", "sample_index = np.random.randint(low=0, high=len(Training_data_64))\n", "print(f'sample number: {sample_index}')\n", - "predict_stress(sample_index, normalization = normalization_64, model = model_15, dataset = Training_data_64,UNet = UNet,grain_data =grain_data_64)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "sample number: 982\n", - "Maximum error is : 142.9 %\n", - "average error is : 15.91 %\n", - "43.13% of voxels have a diviation less than 10.0%\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ERROR:root:1: #version 150\n" - ] - } - ], - "source": [ - "sample_index = np.random.randint(low=0, high=len(Training_data_32))\n", - "print(f'sample number: {sample_index}')\n", - "predict_stress(sample_index, normalization = normalization_32, model = model_9, dataset = Training_data_32,grain_data =grain_data_32)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sample_index = np.random.randint(low=0, high=len(Training_data_64))\n", - "print(f'sample number: {sample_index}')\n", - "predict_stress(sample_index, normalization = normalization_64, model = model_15, dataset = Training_data_64,grain_data =grain_data_64)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "mean_error, max_error, correct_per = dataset_evaluation( normalization = normalization, model = model, dataset = Training_data, threshold = 0.1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def dataset_evaluation( normalization = normalization, model = model, dataset = Training_data, threshold = 0.05):\n", - " model.eval()\n", - " mean_error = np.empty(len(dataset))\n", - " max_error = np.empty(len(dataset))\n", - " correct_per = np.empty(len(dataset)) #percentage of voxel that are guessed corrected, according to threshold\n", - " for index in range(len(dataset)):\n", - " input, output = dataset[index]\n", - " input = copy.copy(input)\n", - " output = copy.copy(output)\n", - " input = torch.unsqueeze(input,0)\n", - " output = torch.unsqueeze(output,0)\n", - " xb = UNet.to_device(input, device)\n", - " prediction = model(xb)\n", - " input = input.detach().numpy()\n", - " prediction = prediction.detach().numpy()\n", - " output = output.detach().numpy()\n", - " prediction = rescale(prediction, normalization)\n", - " output = rescale(output, normalization)\n", - " error = (abs(output - prediction)/output)\n", - " right_predic = (error < threshold).sum()\n", - " mean_error[index] = error.mean()*100.\n", - " max_error[index] = error.max()*100.\n", - " correct_per[index] = right_predic * 100.\n", - " return mean_error, max_error, correct_per\n", - " " + "predict_stress(sample_index, normalization = normalization_64, model = model, dataset = Training_data_64,UNet = UNet,grain_data =grain_data_64)" ] } ], @@ -361,7 +276,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.5" + "version": "3.9.10" }, "orig_nbformat": 4 },