Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

ddrnet_loss.html 11 KB

You have to be logged in to leave a comment. Sign In
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
  1. <!DOCTYPE html>
  2. <html class="writer-html5" lang="en" >
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>super_gradients.training.losses.ddrnet_loss &mdash; SuperGradients 1.0 documentation</title>
  7. <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
  8. <link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
  9. <link rel="stylesheet" href="../../../../_static/graphviz.css" type="text/css" />
  10. <!--[if lt IE 9]>
  11. <script src="../../../../_static/js/html5shiv.min.js"></script>
  12. <![endif]-->
  13. <script data-url_root="../../../../" id="documentation_options" src="../../../../_static/documentation_options.js"></script>
  14. <script src="../../../../_static/jquery.js"></script>
  15. <script src="../../../../_static/underscore.js"></script>
  16. <script src="../../../../_static/doctools.js"></script>
  17. <script src="../../../../_static/js/theme.js"></script>
  18. <link rel="index" title="Index" href="../../../../genindex.html" />
  19. <link rel="search" title="Search" href="../../../../search.html" />
  20. </head>
  21. <body class="wy-body-for-nav">
  22. <div class="wy-grid-for-nav">
  23. <nav data-toggle="wy-nav-shift" class="wy-nav-side">
  24. <div class="wy-side-scroll">
  25. <div class="wy-side-nav-search" >
  26. <a href="../../../../index.html" class="icon icon-home"> SuperGradients
  27. </a>
  28. <div role="search">
  29. <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
  30. <input type="text" name="q" placeholder="Search docs" />
  31. <input type="hidden" name="check_keywords" value="yes" />
  32. <input type="hidden" name="area" value="default" />
  33. </form>
  34. </div>
  35. </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
  36. <p class="caption"><span class="caption-text">SuperGradients</span></p>
  37. <ul>
  38. <li class="toctree-l1"><a class="reference internal" href="../../../../welcome.html">SuperGradients</a></li>
  39. <li class="toctree-l1"><a class="reference internal" href="../../../../super_gradients.common.html">Common</a></li>
  40. <li class="toctree-l1"><a class="reference internal" href="../../../../super_gradients.training.html">Training</a></li>
  41. </ul>
  42. </div>
  43. </div>
  44. </nav>
  45. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
  46. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  47. <a href="../../../../index.html">SuperGradients</a>
  48. </nav>
  49. <div class="wy-nav-content">
  50. <div class="rst-content">
  51. <div role="navigation" aria-label="Page navigation">
  52. <ul class="wy-breadcrumbs">
  53. <li><a href="../../../../index.html" class="icon icon-home"></a> &raquo;</li>
  54. <li><a href="../../../index.html">Module code</a> &raquo;</li>
  55. <li>super_gradients.training.losses.ddrnet_loss</li>
  56. <li class="wy-breadcrumbs-aside">
  57. </li>
  58. </ul>
  59. <hr/>
  60. </div>
  61. <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
  62. <div itemprop="articleBody">
  63. <h1>Source code for super_gradients.training.losses.ddrnet_loss</h1><div class="highlight"><pre>
  64. <span></span><span class="kn">import</span> <span class="nn">torch</span>
  65. <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Union</span>
  66. <span class="kn">from</span> <span class="nn">super_gradients.training.losses.ohem_ce_loss</span> <span class="kn">import</span> <span class="n">OhemCELoss</span>
  67. <div class="viewcode-block" id="DDRNetLoss"><a class="viewcode-back" href="../../../../super_gradients.training.losses.html#super_gradients.training.losses.ddrnet_loss.DDRNetLoss">[docs]</a><span class="k">class</span> <span class="nc">DDRNetLoss</span><span class="p">(</span><span class="n">OhemCELoss</span><span class="p">):</span>
  68. <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
  69. <span class="n">threshold</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.7</span><span class="p">,</span>
  70. <span class="n">ohem_percentage</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.1</span><span class="p">,</span>
  71. <span class="n">weights</span><span class="p">:</span> <span class="nb">list</span> <span class="o">=</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">0.4</span><span class="p">],</span>
  72. <span class="n">ignore_label</span><span class="o">=</span><span class="mi">255</span><span class="p">,</span>
  73. <span class="n">num_pixels_exclude_ignored</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span>
  74. <span class="sd">&quot;&quot;&quot;</span>
  75. <span class="sd"> This loss is an extension of the Ohem (Online Hard Example Mining Cross Entropy) Loss.</span>
  76. <span class="sd"> as define in paper:</span>
  77. <span class="sd"> Accurate Semantic Segmentation of Road Scenes ( https://arxiv.org/pdf/2101.06085.pdf )</span>
  78. <span class="sd"> :param threshold: threshold to th hard example mining algorithm</span>
  79. <span class="sd"> :param ohem_percentage: minimum percentage of total pixels for the hard example mining algorithm</span>
  80. <span class="sd"> (taking only the largest) losses</span>
  81. <span class="sd"> :param weights: weights per each input of the loss. This loss supports a multi output (like in DDRNet with</span>
  82. <span class="sd"> an auxiliary head). the losses of each head can be weighted.</span>
  83. <span class="sd"> :param ignore_label: targets label to be ignored</span>
  84. <span class="sd"> :param num_pixels_exclude_ignored: whether to exclude ignore pixels when calculating the mining percentage.</span>
  85. <span class="sd"> see OhemCELoss doc for more details.</span>
  86. <span class="sd"> &quot;&quot;&quot;</span>
  87. <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">threshold</span><span class="o">=</span><span class="n">threshold</span><span class="p">,</span> <span class="n">mining_percent</span><span class="o">=</span><span class="n">ohem_percentage</span><span class="p">,</span> <span class="n">ignore_lb</span><span class="o">=</span><span class="n">ignore_label</span><span class="p">,</span>
  88. <span class="n">num_pixels_exclude_ignored</span><span class="o">=</span><span class="n">num_pixels_exclude_ignored</span><span class="p">)</span>
  89. <span class="bp">self</span><span class="o">.</span><span class="n">weights</span> <span class="o">=</span> <span class="n">weights</span>
  90. <div class="viewcode-block" id="DDRNetLoss.forward"><a class="viewcode-back" href="../../../../super_gradients.training.losses.html#super_gradients.training.losses.ddrnet_loss.DDRNetLoss.forward">[docs]</a> <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">predictions_list</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">list</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">],</span>
  91. <span class="n">targets</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">):</span>
  92. <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">predictions_list</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">):</span>
  93. <span class="n">predictions_list</span> <span class="o">=</span> <span class="p">(</span><span class="n">predictions_list</span><span class="p">,)</span>
  94. <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">predictions_list</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">weights</span><span class="p">),</span> <span class="s2">&quot;num of prediction must be the same as num of loss weights&quot;</span>
  95. <span class="n">losses</span> <span class="o">=</span> <span class="p">[]</span>
  96. <span class="n">unweighted_losses</span> <span class="o">=</span> <span class="p">[]</span>
  97. <span class="k">for</span> <span class="n">predictions</span><span class="p">,</span> <span class="n">weight</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">predictions_list</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">weights</span><span class="p">):</span>
  98. <span class="n">unweighted_loss</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">forward</span><span class="p">(</span><span class="n">predictions</span><span class="p">,</span> <span class="n">targets</span><span class="p">)</span>
  99. <span class="n">unweighted_losses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">unweighted_loss</span><span class="p">)</span>
  100. <span class="n">losses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">unweighted_loss</span> <span class="o">*</span> <span class="n">weight</span><span class="p">)</span>
  101. <span class="n">total_loss</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="n">losses</span><span class="p">)</span>
  102. <span class="n">unweighted_losses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">total_loss</span><span class="p">)</span>
  103. <span class="k">return</span> <span class="n">total_loss</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">unweighted_losses</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span></div></div>
  104. </pre></div>
  105. </div>
  106. </div>
  107. <footer>
  108. <hr/>
  109. <div role="contentinfo">
  110. <p>&#169; Copyright 2021, SuperGradients team.</p>
  111. </div>
  112. Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
  113. <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
  114. provided by <a href="https://readthedocs.org">Read the Docs</a>.
  115. </footer>
  116. </div>
  117. </div>
  118. </section>
  119. </div>
  120. <script>
  121. jQuery(function () {
  122. SphinxRtdTheme.Navigation.enable(true);
  123. });
  124. </script>
  125. </body>
  126. </html>
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...