avatarOliver Lövström

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

11642

Abstract

class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, <span class="hljs-string">'m'</span>: [{<span class="hljs-string">'type'</span>: <span class="hljs-string">'Bottleneck'</span>, <span class="hljs-string">'cv1'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, <span class="hljs-string">'cv2'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}}, {<span class="hljs-string">'type'</span>: <span class="hljs-string">'Bottleneck'</span>, <span class="hljs-string">'cv1'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, <span class="hljs-string">'cv2'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">32</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}}]}, {<span class="hljs-string">'type'</span>: <span class="hljs-string">'Conv'</span>, <span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">2</span>, <span class="hljs-number">2</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">None</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, {<span class="hljs-string">'type'</span>: <span class="hljs-string">'C2f'</span>, <span class="hljs-string">'cv1'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, <span class="hljs-string">'cv2'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">256</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, <span class="hljs-string">'m'</span>: [{<span class="hljs-string">'type'</span>: <span class="hljs-string">'Bottleneck'</span>, <span class="hljs-string">'cv1'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, <span class="hljs-string">'cv2'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'

Options

affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}}, {<span class="hljs-string">'type'</span>: <span class="hljs-string">'Bottleneck'</span>, <span class="hljs-string">'cv1'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, <span class="hljs-string">'cv2'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">64</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}}]}, {<span class="hljs-string">'type'</span>: <span class="hljs-string">'Conv'</span>, <span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">256</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">2</span>, <span class="hljs-number">2</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">None</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">256</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, {<span class="hljs-string">'type'</span>: <span class="hljs-string">'C2f'</span>, <span class="hljs-string">'cv1'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">256</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">256</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">256</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, <span class="hljs-string">'cv2'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">384</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">256</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">256</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, <span class="hljs-string">'m'</span>: [{<span class="hljs-string">'type'</span>: <span class="hljs-string">'Bottleneck'</span>, <span class="hljs-string">'cv1'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}, <span class="hljs-string">'cv2'</span>: {<span class="hljs-string">'conv'</span>: {<span class="hljs-string">'in_channels'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'out_channels'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'kernel_size'</span>: (<span class="hljs-number">3</span>, <span class="hljs-number">3</span>), <span class="hljs-string">'stride'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'padding'</span>: (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>), <span class="hljs-string">'bias'</span>: <span class="hljs-literal">False</span>}, <span class="hljs-string">'bn'</span>: {<span class="hljs-string">'num_features'</span>: <span class="hljs-number">128</span>, <span class="hljs-string">'eps'</span>: <span class="hljs-number">0.001</span>, <span class="hljs-string">'momentum'</span>: <span class="hljs-number">0.03</span>, <span class="hljs-string">'affine'</span>: <span class="hljs-literal">True</span>, <span class="hljs-string">'track_running_stats'</span>: <span class="hljs-literal">True</span>}, <span class="hljs-string">'act'</span>: <span class="hljs-string">'SiLU'</span>}}]}, {<span class="hljs-string">'type'</span>: <span class="hljs-string">'SPPF'</span>}]</pre></div><p id="cdff"><i>Note: We will draw just the backbone of YOLOv8</i></p><p id="ced4">We draw each outer layer as a separate block:</p><figure id="e8ef"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*O110Vi-c4lt8uSRdaP_m8w.png"><figcaption>Image by Author</figcaption></figure><p id="2bcb">Let us add color:</p><figure id="e2cc"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*-gtrpfsrYM9zAZ2ytTbHOg.png"><figcaption>Image by Author</figcaption></figure><p id="2091">This doesn’t look super interesting; we will draw the shapes in a 3D space:</p><figure id="826f"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*n1CEU5mgiHQtkH26sEMRAA.png"><figcaption>Image by Author</figcaption></figure><p id="dd20">Now it looks better. Let’s change the dimensions of the blocks to match the output dimension and channels in each layer.</p><figure id="483c"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*z6js7xIbwlyDry-9P3wTQA.png"><figcaption>Image by Author</figcaption></figure><p id="db2a">And that’s it! It looks very nice, and the diagram is ready to be annotated with dimensions and layer descriptions.</p><p id="3bcf">Currently, the code is not very general, but it should be able to draw the backbone of any YOLOv8 model. If there’s interest, I‘ll consider updating and publishing the code. Just reach out to me, and I’ll send the GitHub link.</p><blockquote id="ee4d"><p>This was the first part of the <b>Data Science</b> series. <b>Let me know…</b> What do you want to see in the upcoming stories?</p></blockquote><blockquote id="a4aa"><p>In the next part we’ll be exploring <b>Data Visualization</b>.</p></blockquote><p id="7278">Here’s the intro to the series:</p><div id="2bda" class="link-block"> <a href="https://readmedium.com/30-day-challenge-craft-a-data-science-portfolio-that-will-get-you-hired-e2cd07ebb67e"> <div> <div> <h2>30-Day Challenge: Craft a Data Science Portfolio That Will Get You Hired</h2> <div><h3>Learn with Me!</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*hQQ-_DScFdvd3uhUWWpXFQ.jpeg)"></div> </div> </div> </a> </div><p id="1ad5">Thank you for reaching the end! 🙏 Here’s 🕵️‍♀️ Walda!</p></article></body>

Data Science Portfolio — Part 1

Drawing Deep Neural Network

Visualizing Deep Neural Network Using Matplotlib

Not a member yet? Read for free here!

This is the first part of the Data Science Portfolio that I’m doing for March.

This image was created with the assistance of DALL·E

In the first part, I’ll be showcasing a way to draw deep neural networks using Matplotlib.

From the YOLOv8-n model, we parse the following architecture:

[{'type': 'Conv', 'conv': {'in_channels': 3, 'out_channels': 16, 'kernel_size': (3, 3), 'stride': (2, 2), 'padding': (1, 1), 'bias': None}, 'bn': {'num_features': 16, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, {'type': 'Conv', 'conv': {'in_channels': 16, 'out_channels': 32, 'kernel_size': (3, 3), 'stride': (2, 2), 'padding': (1, 1), 'bias': None}, 'bn': {'num_features': 32, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, {'type': 'C2f', 'cv1': {'conv': {'in_channels': 32, 'out_channels': 32, 'kernel_size': (1, 1), 'stride': (1, 1), 'bias': False}, 'bn': {'num_features': 32, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'cv2': {'conv': {'in_channels': 48, 'out_channels': 32, 'kernel_size': (1, 1), 'stride': (1, 1), 'bias': False}, 'bn': {'num_features': 32, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'm': [{'type': 'Bottleneck', 'cv1': {'conv': {'in_channels': 16, 'out_channels': 16, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 16, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'cv2': {'conv': {'in_channels': 16, 'out_channels': 16, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 16, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}}]}, {'type': 'Conv', 'conv': {'in_channels': 32, 'out_channels': 64, 'kernel_size': (3, 3), 'stride': (2, 2), 'padding': (1, 1), 'bias': None}, 'bn': {'num_features': 64, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, {'type': 'C2f', 'cv1': {'conv': {'in_channels': 64, 'out_channels': 64, 'kernel_size': (1, 1), 'stride': (1, 1), 'bias': False}, 'bn': {'num_features': 64, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'cv2': {'conv': {'in_channels': 128, 'out_channels': 64, 'kernel_size': (1, 1), 'stride': (1, 1), 'bias': False}, 'bn': {'num_features': 64, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'm': [{'type': 'Bottleneck', 'cv1': {'conv': {'in_channels': 32, 'out_channels': 32, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 32, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'cv2': {'conv': {'in_channels': 32, 'out_channels': 32, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 32, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}}, {'type': 'Bottleneck', 'cv1': {'conv': {'in_channels': 32, 'out_channels': 32, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 32, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'cv2': {'conv': {'in_channels': 32, 'out_channels': 32, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 32, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}}]}, {'type': 'Conv', 'conv': {'in_channels': 64, 'out_channels': 128, 'kernel_size': (3, 3), 'stride': (2, 2), 'padding': (1, 1), 'bias': None}, 'bn': {'num_features': 128, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, {'type': 'C2f', 'cv1': {'conv': {'in_channels': 128, 'out_channels': 128, 'kernel_size': (1, 1), 'stride': (1, 1), 'bias': False}, 'bn': {'num_features': 128, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'cv2': {'conv': {'in_channels': 256, 'out_channels': 128, 'kernel_size': (1, 1), 'stride': (1, 1), 'bias': False}, 'bn': {'num_features': 128, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'm': [{'type': 'Bottleneck', 'cv1': {'conv': {'in_channels': 64, 'out_channels': 64, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 64, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'cv2': {'conv': {'in_channels': 64, 'out_channels': 64, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 64, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}}, {'type': 'Bottleneck', 'cv1': {'conv': {'in_channels': 64, 'out_channels': 64, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 64, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'cv2': {'conv': {'in_channels': 64, 'out_channels': 64, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 64, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}}]}, {'type': 'Conv', 'conv': {'in_channels': 128, 'out_channels': 256, 'kernel_size': (3, 3), 'stride': (2, 2), 'padding': (1, 1), 'bias': None}, 'bn': {'num_features': 256, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, {'type': 'C2f', 'cv1': {'conv': {'in_channels': 256, 'out_channels': 256, 'kernel_size': (1, 1), 'stride': (1, 1), 'bias': False}, 'bn': {'num_features': 256, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'cv2': {'conv': {'in_channels': 384, 'out_channels': 256, 'kernel_size': (1, 1), 'stride': (1, 1), 'bias': False}, 'bn': {'num_features': 256, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'm': [{'type': 'Bottleneck', 'cv1': {'conv': {'in_channels': 128, 'out_channels': 128, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 128, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}, 'cv2': {'conv': {'in_channels': 128, 'out_channels': 128, 'kernel_size': (3, 3), 'stride': (1, 1), 'padding': (1, 1), 'bias': False}, 'bn': {'num_features': 128, 'eps': 0.001, 'momentum': 0.03, 'affine': True, 'track_running_stats': True}, 'act': 'SiLU'}}]}, {'type': 'SPPF'}]

Note: We will draw just the backbone of YOLOv8

We draw each outer layer as a separate block:

Image by Author

Let us add color:

Image by Author

This doesn’t look super interesting; we will draw the shapes in a 3D space:

Image by Author

Now it looks better. Let’s change the dimensions of the blocks to match the output dimension and channels in each layer.

Image by Author

And that’s it! It looks very nice, and the diagram is ready to be annotated with dimensions and layer descriptions.

Currently, the code is not very general, but it should be able to draw the backbone of any YOLOv8 model. If there’s interest, I‘ll consider updating and publishing the code. Just reach out to me, and I’ll send the GitHub link.

This was the first part of the Data Science series. Let me know… What do you want to see in the upcoming stories?

In the next part we’ll be exploring Data Visualization.

Here’s the intro to the series:

Thank you for reaching the end! 🙏 Here’s 🕵️‍♀️ Walda!

Deep Learning
Artificial Intelligence
Visualization
Python
Matplotlib
Recommended from ReadMedium