0.7.7
parent
819e04956b
commit
dd5e2ca166
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Awesome-ReID — torchreid 0.7.6 documentation</title>
|
||||
<title>Awesome-ReID — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Model Zoo — torchreid 0.7.6 documentation</title>
|
||||
<title>Model Zoo — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -60,7 +60,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Overview: module code — torchreid 0.7.6 documentation</title>
|
||||
<title>Overview: module code — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -204,9 +204,9 @@
|
|||
<li><a href="torchreid/models/pcb.html">torchreid.models.pcb</a></li>
|
||||
<li><a href="torchreid/models/resnet.html">torchreid.models.resnet</a></li>
|
||||
<li><a href="torchreid/models/resnetmid.html">torchreid.models.resnetmid</a></li>
|
||||
<li><a href="torchreid/models/resnext.html">torchreid.models.resnext</a></li>
|
||||
<li><a href="torchreid/models/senet.html">torchreid.models.senet</a></li>
|
||||
<li><a href="torchreid/models/shufflenet.html">torchreid.models.shufflenet</a></li>
|
||||
<li><a href="torchreid/models/shufflenetv2.html">torchreid.models.shufflenetv2</a></li>
|
||||
<li><a href="torchreid/models/squeezenet.html">torchreid.models.squeezenet</a></li>
|
||||
<li><a href="torchreid/models/xception.html">torchreid.models.xception</a></li>
|
||||
<li><a href="torchreid/optim/lr_scheduler.html">torchreid.optim.lr_scheduler</a></li>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datamanager — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datamanager — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.__init__ — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.__init__ — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.dataset — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.dataset — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.image.cuhk01 — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.image.cuhk01 — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.image.cuhk03 — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.image.cuhk03 — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.image.dukemtmcreid — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.image.dukemtmcreid — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.image.grid — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.image.grid — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.image.ilids — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.image.ilids — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.image.market1501 — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.image.market1501 — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.image.msmt17 — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.image.msmt17 — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.image.prid — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.image.prid — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.image.sensereid — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.image.sensereid — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.image.viper — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.image.viper — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.video.dukemtmcvidreid — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.video.dukemtmcvidreid — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.video.ilidsvid — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.video.ilidsvid — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.video.mars — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.video.mars — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.datasets.video.prid2011 — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.datasets.video.prid2011 — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.sampler — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.sampler — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data.transforms — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data.transforms — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.engine.engine — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.engine.engine — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -219,7 +219,7 @@
|
|||
<span class="sd"> max_epoch (int): maximum epoch.</span>
|
||||
<span class="sd"> start_epoch (int, optional): starting epoch. Default is 0.</span>
|
||||
<span class="sd"> fixbase_epoch (int, optional): number of epochs to train ``open_layers`` (new layers)</span>
|
||||
<span class="sd"> while keeping base layers frozen. Default is 0. ``fixbase_epoch`` is not counted</span>
|
||||
<span class="sd"> while keeping base layers frozen. Default is 0. ``fixbase_epoch`` is counted</span>
|
||||
<span class="sd"> in ``max_epoch``.</span>
|
||||
<span class="sd"> open_layers (str or list, optional): layers (attribute names) open for training.</span>
|
||||
<span class="sd"> start_eval (int, optional): from which epoch to start evaluation. Default is 0.</span>
|
||||
|
@ -263,15 +263,8 @@
|
|||
<span class="n">time_start</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'=> Start training'</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">fixbase_epoch</span><span class="o">></span><span class="mi">0</span> <span class="ow">and</span> <span class="p">(</span><span class="n">open_layers</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Pretrain open layers (</span><span class="si">{}</span><span class="s1">) for </span><span class="si">{}</span><span class="s1"> epochs'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">open_layers</span><span class="p">,</span> <span class="n">fixbase_epoch</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">fixbase_epoch</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">train</span><span class="p">(</span><span class="n">epoch</span><span class="p">,</span> <span class="n">trainloader</span><span class="p">,</span> <span class="n">fixbase</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">open_layers</span><span class="o">=</span><span class="n">open_layers</span><span class="p">,</span>
|
||||
<span class="n">print_freq</span><span class="o">=</span><span class="n">print_freq</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Done. From now on all layers are open to train for </span><span class="si">{}</span><span class="s1"> epochs'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">max_epoch</span><span class="p">))</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">start_epoch</span><span class="p">,</span> <span class="n">max_epoch</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">train</span><span class="p">(</span><span class="n">epoch</span><span class="p">,</span> <span class="n">trainloader</span><span class="p">,</span> <span class="n">print_freq</span><span class="o">=</span><span class="n">print_freq</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">train</span><span class="p">(</span><span class="n">epoch</span><span class="p">,</span> <span class="n">max_epoch</span><span class="p">,</span> <span class="n">trainloader</span><span class="p">,</span> <span class="n">fixbase_epoch</span><span class="p">,</span> <span class="n">open_layers</span><span class="p">,</span> <span class="n">print_freq</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">></span><span class="n">start_eval</span> <span class="ow">and</span> <span class="n">eval_freq</span><span class="o">></span><span class="mi">0</span> <span class="ow">and</span> <span class="p">(</span><span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">%</span><span class="n">eval_freq</span><span class="o">==</span><span class="mi">0</span> <span class="ow">and</span> <span class="p">(</span><span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">!=</span><span class="n">max_epoch</span><span class="p">:</span>
|
||||
<span class="n">rank1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">test</span><span class="p">(</span>
|
||||
|
@ -362,7 +355,7 @@
|
|||
|
||||
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">targets</span><span class="p">:</span>
|
||||
<span class="n">domain</span> <span class="o">=</span> <span class="s1">'source'</span> <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">datamanager</span><span class="o">.</span><span class="n">sources</span> <span class="k">else</span> <span class="s1">'target'</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">##### Evaluating </span><span class="si">{}</span><span class="s1"> (</span><span class="si">{}</span><span class="s1">) #####'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">domain</span><span class="p">))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'##### Evaluating </span><span class="si">{}</span><span class="s1"> (</span><span class="si">{}</span><span class="s1">) #####'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">domain</span><span class="p">))</span>
|
||||
<span class="n">queryloader</span> <span class="o">=</span> <span class="n">testloader</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="s1">'query'</span><span class="p">]</span>
|
||||
<span class="n">galleryloader</span> <span class="o">=</span> <span class="n">testloader</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="s1">'gallery'</span><span class="p">]</span>
|
||||
<span class="n">rank1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_evaluate</span><span class="p">(</span>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.engine.image.softmax — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.engine.image.softmax — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -182,7 +182,7 @@
|
|||
|
||||
|
||||
<div class="viewcode-block" id="ImageSoftmaxEngine"><a class="viewcode-back" href="../../../../pkg/engine.html#torchreid.engine.image.softmax.ImageSoftmaxEngine">[docs]</a><span class="k">class</span> <span class="nc">ImageSoftmaxEngine</span><span class="p">(</span><span class="n">engine</span><span class="o">.</span><span class="n">Engine</span><span class="p">):</span>
|
||||
<span class="sd">"""Softmax-loss engine for image-reid.</span>
|
||||
<span class="sa">r</span><span class="sd">"""Softmax-loss engine for image-reid.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> datamanager (DataManager): an instance of ``torchreid.data.ImageDataManager``</span>
|
||||
|
@ -239,24 +239,15 @@
|
|||
<span class="n">label_smooth</span><span class="o">=</span><span class="n">label_smooth</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="ImageSoftmaxEngine.train"><a class="viewcode-back" href="../../../../pkg/engine.html#torchreid.engine.image.softmax.ImageSoftmaxEngine.train">[docs]</a> <span class="k">def</span> <span class="nf">train</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">epoch</span><span class="p">,</span> <span class="n">trainloader</span><span class="p">,</span> <span class="n">fixbase</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">open_layers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">print_freq</span><span class="o">=</span><span class="mi">10</span><span class="p">):</span>
|
||||
<span class="sd">"""Trains the model for one epoch on source datasets using softmax loss.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> epoch (int): current epoch.</span>
|
||||
<span class="sd"> trainloader (Dataloader): training dataloader.</span>
|
||||
<span class="sd"> fixbase (bool, optional): whether to fix base layers. Default is False.</span>
|
||||
<span class="sd"> open_layers (str or list, optional): layers open for training.</span>
|
||||
<span class="sd"> print_freq (int, optional): print frequency. Default is 10.</span>
|
||||
<span class="sd"> """</span>
|
||||
<div class="viewcode-block" id="ImageSoftmaxEngine.train"><a class="viewcode-back" href="../../../../pkg/engine.html#torchreid.engine.image.softmax.ImageSoftmaxEngine.train">[docs]</a> <span class="k">def</span> <span class="nf">train</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">epoch</span><span class="p">,</span> <span class="n">max_epoch</span><span class="p">,</span> <span class="n">trainloader</span><span class="p">,</span> <span class="n">fixbase_epoch</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">open_layers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">print_freq</span><span class="o">=</span><span class="mi">10</span><span class="p">):</span>
|
||||
<span class="n">losses</span> <span class="o">=</span> <span class="n">AverageMeter</span><span class="p">()</span>
|
||||
<span class="n">accs</span> <span class="o">=</span> <span class="n">AverageMeter</span><span class="p">()</span>
|
||||
<span class="n">batch_time</span> <span class="o">=</span> <span class="n">AverageMeter</span><span class="p">()</span>
|
||||
<span class="n">data_time</span> <span class="o">=</span> <span class="n">AverageMeter</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">fixbase</span> <span class="ow">and</span> <span class="p">(</span><span class="n">open_layers</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o"><=</span><span class="n">fixbase_epoch</span> <span class="ow">and</span> <span class="n">open_layers</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'* Only train </span><span class="si">{}</span><span class="s1"> (epoch: </span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">)'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">open_layers</span><span class="p">,</span> <span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">fixbase_epoch</span><span class="p">))</span>
|
||||
<span class="n">open_specified_layers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">open_layers</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">open_all_layers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">)</span>
|
||||
|
@ -282,20 +273,30 @@
|
|||
<span class="n">accs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">metrics</span><span class="o">.</span><span class="n">accuracy</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">pids</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">item</span><span class="p">())</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">batch_idx</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">print_freq</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Epoch: [</span><span class="si">{0}</span><span class="s1">][</span><span class="si">{1}</span><span class="s1">/</span><span class="si">{2}</span><span class="s1">]</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="c1"># estimate remaining time</span>
|
||||
<span class="n">num_batches</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">trainloader</span><span class="p">)</span>
|
||||
<span class="n">eta_seconds</span> <span class="o">=</span> <span class="n">batch_time</span><span class="o">.</span><span class="n">avg</span> <span class="o">*</span> <span class="p">(</span><span class="n">num_batches</span><span class="o">-</span><span class="p">(</span><span class="n">batch_idx</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="n">max_epoch</span><span class="o">-</span><span class="p">(</span><span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span><span class="o">*</span><span class="n">num_batches</span><span class="p">)</span>
|
||||
<span class="n">eta_str</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">eta_seconds</span><span class="p">)))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Epoch: [</span><span class="si">{0}</span><span class="s1">/</span><span class="si">{1}</span><span class="s1">][</span><span class="si">{2}</span><span class="s1">/</span><span class="si">{3}</span><span class="s1">]</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Time </span><span class="si">{batch_time.val:.3f}</span><span class="s1"> (</span><span class="si">{batch_time.avg:.3f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Data </span><span class="si">{data_time.val:.3f}</span><span class="s1"> (</span><span class="si">{data_time.avg:.3f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Loss </span><span class="si">{loss.val:.4f}</span><span class="s1"> (</span><span class="si">{loss.avg:.4f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Acc </span><span class="si">{acc.val:.2f}</span><span class="s1"> (</span><span class="si">{acc.avg:.2f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">epoch</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">batch_idx</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">trainloader</span><span class="p">),</span>
|
||||
<span class="s1">'Acc </span><span class="si">{acc.val:.2f}</span><span class="s1"> (</span><span class="si">{acc.avg:.2f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Lr </span><span class="si">{lr:.6f}</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Eta </span><span class="si">{eta}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">max_epoch</span><span class="p">,</span> <span class="n">batch_idx</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">trainloader</span><span class="p">),</span>
|
||||
<span class="n">batch_time</span><span class="o">=</span><span class="n">batch_time</span><span class="p">,</span>
|
||||
<span class="n">data_time</span><span class="o">=</span><span class="n">data_time</span><span class="p">,</span>
|
||||
<span class="n">loss</span><span class="o">=</span><span class="n">losses</span><span class="p">,</span>
|
||||
<span class="n">acc</span><span class="o">=</span><span class="n">accs</span><span class="p">))</span>
|
||||
<span class="n">acc</span><span class="o">=</span><span class="n">accs</span><span class="p">,</span>
|
||||
<span class="n">lr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">param_groups</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'lr'</span><span class="p">],</span>
|
||||
<span class="n">eta</span><span class="o">=</span><span class="n">eta_str</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">end</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scheduler</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">fixbase</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">scheduler</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">scheduler</span><span class="o">.</span><span class="n">step</span><span class="p">()</span></div></div>
|
||||
</pre></div>
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.engine.image.triplet — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.engine.image.triplet — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -182,7 +182,7 @@
|
|||
|
||||
|
||||
<div class="viewcode-block" id="ImageTripletEngine"><a class="viewcode-back" href="../../../../pkg/engine.html#torchreid.engine.image.triplet.ImageTripletEngine">[docs]</a><span class="k">class</span> <span class="nc">ImageTripletEngine</span><span class="p">(</span><span class="n">engine</span><span class="o">.</span><span class="n">Engine</span><span class="p">):</span>
|
||||
<span class="sd">"""Triplet-loss engine for image-reid.</span>
|
||||
<span class="sa">r</span><span class="sd">"""Triplet-loss engine for image-reid.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> datamanager (DataManager): an instance of ``torchreid.data.ImageDataManager``</span>
|
||||
|
@ -250,16 +250,7 @@
|
|||
<span class="n">label_smooth</span><span class="o">=</span><span class="n">label_smooth</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="ImageTripletEngine.train"><a class="viewcode-back" href="../../../../pkg/engine.html#torchreid.engine.image.triplet.ImageTripletEngine.train">[docs]</a> <span class="k">def</span> <span class="nf">train</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">epoch</span><span class="p">,</span> <span class="n">trainloader</span><span class="p">,</span> <span class="n">fixbase</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">open_layers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">print_freq</span><span class="o">=</span><span class="mi">10</span><span class="p">):</span>
|
||||
<span class="sd">"""Trains the model for one epoch on source datasets using hard mining triplet loss.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> epoch (int): current epoch.</span>
|
||||
<span class="sd"> trainloader (Dataloader): training dataloader.</span>
|
||||
<span class="sd"> fixbase (bool, optional): whether to fix base layers. Default is False.</span>
|
||||
<span class="sd"> open_layers (str or list, optional): layers open for training.</span>
|
||||
<span class="sd"> print_freq (int, optional): print frequency. Default is 10.</span>
|
||||
<span class="sd"> """</span>
|
||||
<div class="viewcode-block" id="ImageTripletEngine.train"><a class="viewcode-back" href="../../../../pkg/engine.html#torchreid.engine.image.triplet.ImageTripletEngine.train">[docs]</a> <span class="k">def</span> <span class="nf">train</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">epoch</span><span class="p">,</span> <span class="n">max_epoch</span><span class="p">,</span> <span class="n">trainloader</span><span class="p">,</span> <span class="n">fixbase_epoch</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">open_layers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">print_freq</span><span class="o">=</span><span class="mi">10</span><span class="p">):</span>
|
||||
<span class="n">losses_t</span> <span class="o">=</span> <span class="n">AverageMeter</span><span class="p">()</span>
|
||||
<span class="n">losses_x</span> <span class="o">=</span> <span class="n">AverageMeter</span><span class="p">()</span>
|
||||
<span class="n">accs</span> <span class="o">=</span> <span class="n">AverageMeter</span><span class="p">()</span>
|
||||
|
@ -267,8 +258,8 @@
|
|||
<span class="n">data_time</span> <span class="o">=</span> <span class="n">AverageMeter</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">fixbase</span> <span class="ow">and</span> <span class="p">(</span><span class="n">open_layers</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o"><=</span><span class="n">fixbase_epoch</span> <span class="ow">and</span> <span class="n">open_layers</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'* Only train </span><span class="si">{}</span><span class="s1"> (epoch: </span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">)'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">open_layers</span><span class="p">,</span> <span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">fixbase_epoch</span><span class="p">))</span>
|
||||
<span class="n">open_specified_layers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">open_layers</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">open_all_layers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">)</span>
|
||||
|
@ -297,22 +288,32 @@
|
|||
<span class="n">accs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">metrics</span><span class="o">.</span><span class="n">accuracy</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">pids</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">item</span><span class="p">())</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">batch_idx</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">print_freq</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Epoch: [</span><span class="si">{0}</span><span class="s1">][</span><span class="si">{1}</span><span class="s1">/</span><span class="si">{2}</span><span class="s1">]</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="c1"># estimate remaining time</span>
|
||||
<span class="n">num_batches</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">trainloader</span><span class="p">)</span>
|
||||
<span class="n">eta_seconds</span> <span class="o">=</span> <span class="n">batch_time</span><span class="o">.</span><span class="n">avg</span> <span class="o">*</span> <span class="p">(</span><span class="n">num_batches</span><span class="o">-</span><span class="p">(</span><span class="n">batch_idx</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="n">max_epoch</span><span class="o">-</span><span class="p">(</span><span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span><span class="o">*</span><span class="n">num_batches</span><span class="p">)</span>
|
||||
<span class="n">eta_str</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">eta_seconds</span><span class="p">)))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Epoch: [</span><span class="si">{0}</span><span class="s1">/</span><span class="si">{1}</span><span class="s1">][</span><span class="si">{2}</span><span class="s1">/</span><span class="si">{3}</span><span class="s1">]</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Time </span><span class="si">{batch_time.val:.3f}</span><span class="s1"> (</span><span class="si">{batch_time.avg:.3f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Data </span><span class="si">{data_time.val:.3f}</span><span class="s1"> (</span><span class="si">{data_time.avg:.3f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Triplet </span><span class="si">{loss_t.val:.4f}</span><span class="s1"> (</span><span class="si">{loss_t.avg:.4f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Softmax </span><span class="si">{loss_x.val:.4f}</span><span class="s1"> (</span><span class="si">{loss_x.avg:.4f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Acc </span><span class="si">{acc.val:.2f}</span><span class="s1"> (</span><span class="si">{acc.avg:.2f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">epoch</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">batch_idx</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">trainloader</span><span class="p">),</span>
|
||||
<span class="s1">'Loss_t </span><span class="si">{loss_t.val:.4f}</span><span class="s1"> (</span><span class="si">{loss_t.avg:.4f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Loss_x </span><span class="si">{loss_x.val:.4f}</span><span class="s1"> (</span><span class="si">{loss_x.avg:.4f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Acc </span><span class="si">{acc.val:.2f}</span><span class="s1"> (</span><span class="si">{acc.avg:.2f}</span><span class="s1">)</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Lr </span><span class="si">{lr:.6f}</span><span class="se">\t</span><span class="s1">'</span>
|
||||
<span class="s1">'Eta </span><span class="si">{eta}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">max_epoch</span><span class="p">,</span> <span class="n">batch_idx</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">trainloader</span><span class="p">),</span>
|
||||
<span class="n">batch_time</span><span class="o">=</span><span class="n">batch_time</span><span class="p">,</span>
|
||||
<span class="n">data_time</span><span class="o">=</span><span class="n">data_time</span><span class="p">,</span>
|
||||
<span class="n">loss_t</span><span class="o">=</span><span class="n">losses_t</span><span class="p">,</span>
|
||||
<span class="n">loss_x</span><span class="o">=</span><span class="n">losses_x</span><span class="p">,</span>
|
||||
<span class="n">acc</span><span class="o">=</span><span class="n">accs</span><span class="p">))</span>
|
||||
<span class="n">acc</span><span class="o">=</span><span class="n">accs</span><span class="p">,</span>
|
||||
<span class="n">lr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">param_groups</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'lr'</span><span class="p">],</span>
|
||||
<span class="n">eta</span><span class="o">=</span><span class="n">eta_str</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">end</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scheduler</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">fixbase</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">scheduler</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">scheduler</span><span class="o">.</span><span class="n">step</span><span class="p">()</span></div></div>
|
||||
</pre></div>
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.engine.video.softmax — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.engine.video.softmax — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.engine.video.triplet — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.engine.video.triplet — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.losses.cross_entropy_loss — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.losses.cross_entropy_loss — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.losses.hard_mine_triplet_loss — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.losses.hard_mine_triplet_loss — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.metrics.accuracy — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.metrics.accuracy — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.metrics.distance — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.metrics.distance — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.metrics.rank — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.metrics.rank — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.__init__ — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.__init__ — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -171,7 +171,6 @@
|
|||
|
||||
<span class="kn">from</span> <span class="nn">.resnet</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">.resnetmid</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">.resnext</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">.senet</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">.densenet</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">.inceptionresnetv2</span> <span class="k">import</span> <span class="o">*</span>
|
||||
|
@ -182,6 +181,7 @@
|
|||
<span class="kn">from</span> <span class="nn">.mobilenetv2</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">.shufflenet</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">.squeezenet</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">.shufflenetv2</span> <span class="k">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.mudeep</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">.hacnn</span> <span class="k">import</span> <span class="o">*</span>
|
||||
|
@ -196,9 +196,9 @@
|
|||
<span class="s1">'resnet50'</span><span class="p">:</span> <span class="n">resnet50</span><span class="p">,</span>
|
||||
<span class="s1">'resnet101'</span><span class="p">:</span> <span class="n">resnet101</span><span class="p">,</span>
|
||||
<span class="s1">'resnet152'</span><span class="p">:</span> <span class="n">resnet152</span><span class="p">,</span>
|
||||
<span class="s1">'resnet50_fc512'</span><span class="p">:</span> <span class="n">resnet50_fc512</span><span class="p">,</span>
|
||||
<span class="s1">'resnext50_32x4d'</span><span class="p">:</span> <span class="n">resnext50_32x4d</span><span class="p">,</span>
|
||||
<span class="s1">'resnext50_32x4d_fc512'</span><span class="p">:</span> <span class="n">resnext50_32x4d_fc512</span><span class="p">,</span>
|
||||
<span class="s1">'resnext101_32x8d'</span><span class="p">:</span> <span class="n">resnext101_32x8d</span><span class="p">,</span>
|
||||
<span class="s1">'resnet50_fc512'</span><span class="p">:</span> <span class="n">resnet50_fc512</span><span class="p">,</span>
|
||||
<span class="s1">'se_resnet50'</span><span class="p">:</span> <span class="n">se_resnet50</span><span class="p">,</span>
|
||||
<span class="s1">'se_resnet50_fc512'</span><span class="p">:</span> <span class="n">se_resnet50_fc512</span><span class="p">,</span>
|
||||
<span class="s1">'se_resnet101'</span><span class="p">:</span> <span class="n">se_resnet101</span><span class="p">,</span>
|
||||
|
@ -220,6 +220,10 @@
|
|||
<span class="s1">'squeezenet1_0'</span><span class="p">:</span> <span class="n">squeezenet1_0</span><span class="p">,</span>
|
||||
<span class="s1">'squeezenet1_0_fc512'</span><span class="p">:</span> <span class="n">squeezenet1_0_fc512</span><span class="p">,</span>
|
||||
<span class="s1">'squeezenet1_1'</span><span class="p">:</span> <span class="n">squeezenet1_1</span><span class="p">,</span>
|
||||
<span class="s1">'shufflenet_v2_x0_5'</span><span class="p">:</span> <span class="n">shufflenet_v2_x0_5</span><span class="p">,</span>
|
||||
<span class="s1">'shufflenet_v2_x1_0'</span><span class="p">:</span> <span class="n">shufflenet_v2_x1_0</span><span class="p">,</span>
|
||||
<span class="s1">'shufflenet_v2_x1_5'</span><span class="p">:</span> <span class="n">shufflenet_v2_x1_5</span><span class="p">,</span>
|
||||
<span class="s1">'shufflenet_v2_x2_0'</span><span class="p">:</span> <span class="n">shufflenet_v2_x2_0</span><span class="p">,</span>
|
||||
<span class="c1"># reid-specific models</span>
|
||||
<span class="s1">'mudeep'</span><span class="p">:</span> <span class="n">MuDeep</span><span class="p">,</span>
|
||||
<span class="s1">'resnet50mid'</span><span class="p">:</span> <span class="n">resnet50mid</span><span class="p">,</span>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.densenet — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.densenet — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -165,7 +165,10 @@
|
|||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for torchreid.models.densenet</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">Code source: https://github.com/pytorch/vision</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'densenet121'</span><span class="p">,</span> <span class="s1">'densenet169'</span><span class="p">,</span> <span class="s1">'densenet201'</span><span class="p">,</span> <span class="s1">'densenet161'</span><span class="p">,</span> <span class="s1">'densenet121_fc512'</span><span class="p">]</span>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.hacnn — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.hacnn — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.inceptionresnetv2 — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.inceptionresnetv2 — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.inceptionv4 — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.inceptionv4 — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.mlfn — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.mlfn — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.mobilenetv2 — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.mobilenetv2 — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.mudeep — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.mudeep — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.nasnet — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.nasnet — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.pcb — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.pcb — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.resnet — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.resnet — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -165,10 +165,14 @@
|
|||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for torchreid.models.resnet</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">Code source: https://github.com/pytorch/vision</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'resnet18'</span><span class="p">,</span> <span class="s1">'resnet34'</span><span class="p">,</span> <span class="s1">'resnet50'</span><span class="p">,</span> <span class="s1">'resnet101'</span><span class="p">,</span> <span class="s1">'resnet152'</span><span class="p">,</span> <span class="s1">'resnet50_fc512'</span><span class="p">]</span>
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'resnet18'</span><span class="p">,</span> <span class="s1">'resnet34'</span><span class="p">,</span> <span class="s1">'resnet50'</span><span class="p">,</span> <span class="s1">'resnet101'</span><span class="p">,</span> <span class="s1">'resnet152'</span><span class="p">,</span> <span class="s1">'resnext50_32x4d'</span><span class="p">,</span>
|
||||
<span class="s1">'resnext101_32x8d'</span><span class="p">,</span> <span class="s1">'resnet50_fc512'</span><span class="p">]</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
<span class="kn">from</span> <span class="nn">torch</span> <span class="k">import</span> <span class="n">nn</span>
|
||||
|
@ -183,30 +187,45 @@
|
|||
<span class="s1">'resnet50'</span><span class="p">:</span> <span class="s1">'https://download.pytorch.org/models/resnet50-19c8e357.pth'</span><span class="p">,</span>
|
||||
<span class="s1">'resnet101'</span><span class="p">:</span> <span class="s1">'https://download.pytorch.org/models/resnet101-5d3b4d8f.pth'</span><span class="p">,</span>
|
||||
<span class="s1">'resnet152'</span><span class="p">:</span> <span class="s1">'https://download.pytorch.org/models/resnet152-b121ed2d.pth'</span><span class="p">,</span>
|
||||
<span class="s1">'resnext50_32x4d'</span><span class="p">:</span> <span class="s1">'https://download.pytorch.org/models/resnext50_32x4d-7cdf4587.pth'</span><span class="p">,</span>
|
||||
<span class="s1">'resnext101_32x8d'</span><span class="p">:</span> <span class="s1">'https://download.pytorch.org/models/resnext101_32x8d-8ba56ff5.pth'</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">conv3x3</span><span class="p">(</span><span class="n">in_planes</span><span class="p">,</span> <span class="n">out_planes</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">conv3x3</span><span class="p">(</span><span class="n">in_planes</span><span class="p">,</span> <span class="n">out_planes</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">groups</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">dilation</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="sd">"""3x3 convolution with padding"""</span>
|
||||
<span class="k">return</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">in_planes</span><span class="p">,</span> <span class="n">out_planes</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="n">stride</span><span class="p">,</span>
|
||||
<span class="n">padding</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">padding</span><span class="o">=</span><span class="n">dilation</span><span class="p">,</span> <span class="n">groups</span><span class="o">=</span><span class="n">groups</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dilation</span><span class="o">=</span><span class="n">dilation</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">conv1x1</span><span class="p">(</span><span class="n">in_planes</span><span class="p">,</span> <span class="n">out_planes</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="sd">"""1x1 convolution"""</span>
|
||||
<span class="k">return</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">in_planes</span><span class="p">,</span> <span class="n">out_planes</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="n">stride</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">BasicBlock</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="n">expansion</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">downsample</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">downsample</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">groups</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
||||
<span class="n">base_width</span><span class="o">=</span><span class="mi">64</span><span class="p">,</span> <span class="n">dilation</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">norm_layer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">BasicBlock</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">norm_layer</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">norm_layer</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span>
|
||||
<span class="k">if</span> <span class="n">groups</span> <span class="o">!=</span> <span class="mi">1</span> <span class="ow">or</span> <span class="n">base_width</span> <span class="o">!=</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'BasicBlock only supports groups=1 and base_width=64'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">dilation</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Dilation > 1 not supported in BasicBlock"</span><span class="p">)</span>
|
||||
<span class="c1"># Both self.conv1 and self.downsample layers downsample the input when stride != 1</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv1</span> <span class="o">=</span> <span class="n">conv3x3</span><span class="p">(</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">stride</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">planes</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn1</span> <span class="o">=</span> <span class="n">norm_layer</span><span class="p">(</span><span class="n">planes</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">relu</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv2</span> <span class="o">=</span> <span class="n">conv3x3</span><span class="p">(</span><span class="n">planes</span><span class="p">,</span> <span class="n">planes</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">planes</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn2</span> <span class="o">=</span> <span class="n">norm_layer</span><span class="p">(</span><span class="n">planes</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">downsample</span> <span class="o">=</span> <span class="n">downsample</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">stride</span> <span class="o">=</span> <span class="n">stride</span>
|
||||
|
||||
<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">x</span><span class="p">):</span>
|
||||
<span class="n">residual</span> <span class="o">=</span> <span class="n">x</span>
|
||||
<span class="n">identity</span> <span class="o">=</span> <span class="n">x</span>
|
||||
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">conv1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bn1</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
|
@ -216,9 +235,9 @@
|
|||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bn2</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">downsample</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">residual</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">downsample</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">identity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">downsample</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
|
||||
<span class="n">out</span> <span class="o">+=</span> <span class="n">residual</span>
|
||||
<span class="n">out</span> <span class="o">+=</span> <span class="n">identity</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">out</span>
|
||||
|
@ -227,21 +246,25 @@
|
|||
<span class="k">class</span> <span class="nc">Bottleneck</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="n">expansion</span> <span class="o">=</span> <span class="mi">4</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">downsample</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">downsample</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">groups</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
||||
<span class="n">base_width</span><span class="o">=</span><span class="mi">64</span><span class="p">,</span> <span class="n">dilation</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">norm_layer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">Bottleneck</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">planes</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">planes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="n">stride</span><span class="p">,</span>
|
||||
<span class="n">padding</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">planes</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv3</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">planes</span><span class="p">,</span> <span class="n">planes</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">expansion</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn3</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">planes</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">expansion</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">norm_layer</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">norm_layer</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span>
|
||||
<span class="n">width</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">planes</span> <span class="o">*</span> <span class="p">(</span><span class="n">base_width</span> <span class="o">/</span> <span class="mf">64.</span><span class="p">))</span> <span class="o">*</span> <span class="n">groups</span>
|
||||
<span class="c1"># Both self.conv2 and self.downsample layers downsample the input when stride != 1</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv1</span> <span class="o">=</span> <span class="n">conv1x1</span><span class="p">(</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">width</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn1</span> <span class="o">=</span> <span class="n">norm_layer</span><span class="p">(</span><span class="n">width</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv2</span> <span class="o">=</span> <span class="n">conv3x3</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">stride</span><span class="p">,</span> <span class="n">groups</span><span class="p">,</span> <span class="n">dilation</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn2</span> <span class="o">=</span> <span class="n">norm_layer</span><span class="p">(</span><span class="n">width</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv3</span> <span class="o">=</span> <span class="n">conv1x1</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">planes</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">expansion</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn3</span> <span class="o">=</span> <span class="n">norm_layer</span><span class="p">(</span><span class="n">planes</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">expansion</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">relu</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">downsample</span> <span class="o">=</span> <span class="n">downsample</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">stride</span> <span class="o">=</span> <span class="n">stride</span>
|
||||
|
||||
<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">x</span><span class="p">):</span>
|
||||
<span class="n">residual</span> <span class="o">=</span> <span class="n">x</span>
|
||||
<span class="n">identity</span> <span class="o">=</span> <span class="n">x</span>
|
||||
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">conv1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bn1</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
|
@ -255,9 +278,9 @@
|
|||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bn3</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">downsample</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">residual</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">downsample</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">identity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">downsample</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
|
||||
<span class="n">out</span> <span class="o">+=</span> <span class="n">residual</span>
|
||||
<span class="n">out</span> <span class="o">+=</span> <span class="n">identity</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">out</span>
|
||||
|
@ -267,7 +290,8 @@
|
|||
<span class="sd">"""Residual network.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> Reference:</span>
|
||||
<span class="sd"> He et al. Deep Residual Learning for Image Recognition. CVPR 2016.</span>
|
||||
<span class="sd"> - He et al. Deep Residual Learning for Image Recognition. CVPR 2016.</span>
|
||||
<span class="sd"> - Xie et al. Aggregated Residual Transformations for Deep Neural Networks. CVPR 2017.</span>
|
||||
|
||||
<span class="sd"> Public keys:</span>
|
||||
<span class="sd"> - ``resnet18``: ResNet18.</span>
|
||||
|
@ -275,49 +299,80 @@
|
|||
<span class="sd"> - ``resnet50``: ResNet50.</span>
|
||||
<span class="sd"> - ``resnet101``: ResNet101.</span>
|
||||
<span class="sd"> - ``resnet152``: ResNet152.</span>
|
||||
<span class="sd"> - ``resnext50_32x4d``: ResNeXt50.</span>
|
||||
<span class="sd"> - ``resnext101_32x8d``: ResNeXt101.</span>
|
||||
<span class="sd"> - ``resnet50_fc512``: ResNet50 + FC.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="p">,</span> <span class="n">block</span><span class="p">,</span> <span class="n">layers</span><span class="p">,</span>
|
||||
<span class="n">last_stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="n">fc_dims</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">dropout_p</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span> <span class="o">=</span> <span class="mi">64</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="p">,</span> <span class="n">block</span><span class="p">,</span> <span class="n">layers</span><span class="p">,</span> <span class="n">zero_init_residual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">groups</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">width_per_group</span><span class="o">=</span><span class="mi">64</span><span class="p">,</span> <span class="n">replace_stride_with_dilation</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">norm_layer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">last_stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">fc_dims</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dropout_p</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">ResNet</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">norm_layer</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">norm_layer</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_norm_layer</span> <span class="o">=</span> <span class="n">norm_layer</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">loss</span> <span class="o">=</span> <span class="n">loss</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">feature_dim</span> <span class="o">=</span> <span class="mi">512</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span>
|
||||
|
||||
<span class="c1"># backbone network</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="mi">64</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span> <span class="o">=</span> <span class="mi">64</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dilation</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="k">if</span> <span class="n">replace_stride_with_dilation</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1"># each element in the tuple indicates if we should replace</span>
|
||||
<span class="c1"># the 2x2 stride with a dilated convolution instead</span>
|
||||
<span class="n">replace_stride_with_dilation</span> <span class="o">=</span> <span class="p">[</span><span class="kc">False</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">False</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">replace_stride_with_dilation</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">3</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"replace_stride_with_dilation should be None "</span>
|
||||
<span class="s2">"or a 3-element tuple, got </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">replace_stride_with_dilation</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">groups</span> <span class="o">=</span> <span class="n">groups</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">base_width</span> <span class="o">=</span> <span class="n">width_per_group</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span>
|
||||
<span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn1</span> <span class="o">=</span> <span class="n">norm_layer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">relu</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">maxpool</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">MaxPool2d</span><span class="p">(</span><span class="n">kernel_size</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layer1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_layer</span><span class="p">(</span><span class="n">block</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="n">layers</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layer2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_layer</span><span class="p">(</span><span class="n">block</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="n">layers</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layer3</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_layer</span><span class="p">(</span><span class="n">block</span><span class="p">,</span> <span class="mi">256</span><span class="p">,</span> <span class="n">layers</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layer4</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_layer</span><span class="p">(</span><span class="n">block</span><span class="p">,</span> <span class="mi">512</span><span class="p">,</span> <span class="n">layers</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">stride</span><span class="o">=</span><span class="n">last_stride</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">global_avgpool</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">AdaptiveAvgPool2d</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layer2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_layer</span><span class="p">(</span><span class="n">block</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="n">layers</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="n">dilate</span><span class="o">=</span><span class="n">replace_stride_with_dilation</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layer3</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_layer</span><span class="p">(</span><span class="n">block</span><span class="p">,</span> <span class="mi">256</span><span class="p">,</span> <span class="n">layers</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="n">dilate</span><span class="o">=</span><span class="n">replace_stride_with_dilation</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layer4</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_layer</span><span class="p">(</span><span class="n">block</span><span class="p">,</span> <span class="mi">512</span><span class="p">,</span> <span class="n">layers</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">stride</span><span class="o">=</span><span class="n">last_stride</span><span class="p">,</span>
|
||||
<span class="n">dilate</span><span class="o">=</span><span class="n">replace_stride_with_dilation</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">global_avgpool</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">AdaptiveAvgPool2d</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">fc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_construct_fc_layer</span><span class="p">(</span><span class="n">fc_dims</span><span class="p">,</span> <span class="mi">512</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span><span class="p">,</span> <span class="n">dropout_p</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">classifier</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">feature_dim</span><span class="p">,</span> <span class="n">num_classes</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_init_params</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_make_layer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">block</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">blocks</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="c1"># Zero-initialize the last BN in each residual branch,</span>
|
||||
<span class="c1"># so that the residual branch starts with zeros, and each residual block behaves like an identity.</span>
|
||||
<span class="c1"># This improves the model by 0.2~0.3% according to https://arxiv.org/abs/1706.02677</span>
|
||||
<span class="k">if</span> <span class="n">zero_init_residual</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">m</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">modules</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">Bottleneck</span><span class="p">):</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">constant_</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">bn3</span><span class="o">.</span><span class="n">weight</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">BasicBlock</span><span class="p">):</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">constant_</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">bn2</span><span class="o">.</span><span class="n">weight</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_make_layer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">block</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">blocks</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">dilate</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="n">norm_layer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_norm_layer</span>
|
||||
<span class="n">downsample</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">previous_dilation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dilation</span>
|
||||
<span class="k">if</span> <span class="n">dilate</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dilation</span> <span class="o">*=</span> <span class="n">stride</span>
|
||||
<span class="n">stride</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="k">if</span> <span class="n">stride</span> <span class="o">!=</span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span> <span class="o">!=</span> <span class="n">planes</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span><span class="p">:</span>
|
||||
<span class="n">downsample</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span><span class="p">,</span>
|
||||
<span class="n">kernel_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="n">stride</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">planes</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span><span class="p">),</span>
|
||||
<span class="n">conv1x1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span><span class="p">,</span> <span class="n">stride</span><span class="p">),</span>
|
||||
<span class="n">norm_layer</span><span class="p">(</span><span class="n">planes</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">layers</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">layers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">block</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">stride</span><span class="p">,</span> <span class="n">downsample</span><span class="p">))</span>
|
||||
<span class="n">layers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">block</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">stride</span><span class="p">,</span> <span class="n">downsample</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">groups</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">base_width</span><span class="p">,</span> <span class="n">previous_dilation</span><span class="p">,</span> <span class="n">norm_layer</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span> <span class="o">=</span> <span class="n">planes</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">blocks</span><span class="p">):</span>
|
||||
<span class="n">layers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">block</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">blocks</span><span class="p">):</span>
|
||||
<span class="n">layers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">block</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">groups</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">groups</span><span class="p">,</span>
|
||||
<span class="n">base_width</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">base_width</span><span class="p">,</span> <span class="n">dilation</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dilation</span><span class="p">,</span>
|
||||
<span class="n">norm_layer</span><span class="o">=</span><span class="n">norm_layer</span><span class="p">))</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span><span class="o">*</span><span class="n">layers</span><span class="p">)</span>
|
||||
|
||||
|
@ -409,17 +464,7 @@
|
|||
<span class="n">model</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">model_dict</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">Residual network configurations:</span>
|
||||
<span class="sd">--</span>
|
||||
<span class="sd">resnet18: block=BasicBlock, layers=[2, 2, 2, 2]</span>
|
||||
<span class="sd">resnet34: block=BasicBlock, layers=[3, 4, 6, 3]</span>
|
||||
<span class="sd">resnet50: block=Bottleneck, layers=[3, 4, 6, 3]</span>
|
||||
<span class="sd">resnet101: block=Bottleneck, layers=[3, 4, 23, 3]</span>
|
||||
<span class="sd">resnet152: block=Bottleneck, layers=[3, 8, 36, 3]</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
|
||||
<span class="sd">"""ResNet"""</span>
|
||||
<span class="k">def</span> <span class="nf">resnet18</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'softmax'</span><span class="p">,</span> <span class="n">pretrained</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ResNet</span><span class="p">(</span>
|
||||
<span class="n">num_classes</span><span class="o">=</span><span class="n">num_classes</span><span class="p">,</span>
|
||||
|
@ -500,8 +545,45 @@
|
|||
<span class="k">return</span> <span class="n">model</span>
|
||||
|
||||
|
||||
<span class="sd">"""ResNeXt"""</span>
|
||||
<span class="k">def</span> <span class="nf">resnext50_32x4d</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'softmax'</span><span class="p">,</span> <span class="n">pretrained</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ResNet</span><span class="p">(</span>
|
||||
<span class="n">num_classes</span><span class="o">=</span><span class="n">num_classes</span><span class="p">,</span>
|
||||
<span class="n">loss</span><span class="o">=</span><span class="n">loss</span><span class="p">,</span>
|
||||
<span class="n">block</span><span class="o">=</span><span class="n">Bottleneck</span><span class="p">,</span>
|
||||
<span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span>
|
||||
<span class="n">last_stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="n">fc_dims</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">dropout_p</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">groups</span><span class="o">=</span><span class="mi">32</span><span class="p">,</span>
|
||||
<span class="n">width_per_group</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">pretrained</span><span class="p">:</span>
|
||||
<span class="n">init_pretrained_weights</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">model_urls</span><span class="p">[</span><span class="s1">'resnext50_32x4d'</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">model</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">resnext101_32x8d</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'softmax'</span><span class="p">,</span> <span class="n">pretrained</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ResNet</span><span class="p">(</span>
|
||||
<span class="n">num_classes</span><span class="o">=</span><span class="n">num_classes</span><span class="p">,</span>
|
||||
<span class="n">loss</span><span class="o">=</span><span class="n">loss</span><span class="p">,</span>
|
||||
<span class="n">block</span><span class="o">=</span><span class="n">Bottleneck</span><span class="p">,</span>
|
||||
<span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">23</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span>
|
||||
<span class="n">last_stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="n">fc_dims</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">dropout_p</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">groups</span><span class="o">=</span><span class="mi">32</span><span class="p">,</span>
|
||||
<span class="n">width_per_group</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">pretrained</span><span class="p">:</span>
|
||||
<span class="n">init_pretrained_weights</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">model_urls</span><span class="p">[</span><span class="s1">'resnext101_32x8d'</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">model</span>
|
||||
|
||||
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">resnet + fc</span>
|
||||
<span class="sd">ResNet + FC</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="k">def</span> <span class="nf">resnet50_fc512</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'softmax'</span><span class="p">,</span> <span class="n">pretrained</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ResNet</span><span class="p">(</span>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.resnetmid — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.resnetmid — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -1,447 +0,0 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.resnext — torchreid 0.7.6 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
|
||||
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home"> torchreid
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../user_guide.html">How-to</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../datasets.html">Datasets</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../evaluation.html">Evaluation</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Package Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/data.html">torchreid.data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/engine.html">torchreid.engine</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/losses.html">torchreid.losses</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/metrics.html">torchreid.metrics</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/models.html">torchreid.models</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/optim.html">torchreid.optim</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/utils.html">torchreid.utils</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Resources</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../AWESOME_REID.html">Awesome-ReID</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../MODEL_ZOO.html">Model Zoo</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">torchreid</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../../index.html">Docs</a> »</li>
|
||||
|
||||
<li><a href="../../index.html">Module code</a> »</li>
|
||||
|
||||
<li>torchreid.models.resnext</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for torchreid.models.resnext</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'resnext50_32x4d'</span><span class="p">,</span> <span class="s1">'resnext50_32x4d_fc512'</span><span class="p">]</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
<span class="kn">from</span> <span class="nn">torch</span> <span class="k">import</span> <span class="n">nn</span>
|
||||
<span class="kn">from</span> <span class="nn">torch.nn</span> <span class="k">import</span> <span class="n">functional</span> <span class="k">as</span> <span class="n">F</span>
|
||||
<span class="kn">import</span> <span class="nn">torchvision</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.utils.model_zoo</span> <span class="k">as</span> <span class="nn">model_zoo</span>
|
||||
|
||||
|
||||
<span class="n">model_urls</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="c1"># top1 = 76.3</span>
|
||||
<span class="s1">'resnext50_32x4d'</span><span class="p">:</span> <span class="s1">'http://www.eecs.qmul.ac.uk/~kz303/deep-person-reid/model-zoo/imagenet-pretrained/resnext50_32x4d-453b60f8.pth'</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">ResNeXtBottleneck</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="n">expansion</span> <span class="o">=</span> <span class="mi">4</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">groups</span><span class="o">=</span><span class="mi">32</span><span class="p">,</span> <span class="n">base_width</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">downsample</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">ResNeXtBottleneck</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="n">width</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">planes</span> <span class="o">*</span> <span class="p">(</span><span class="n">base_width</span> <span class="o">/</span> <span class="mf">64.</span><span class="p">))</span> <span class="o">*</span> <span class="n">groups</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">width</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="n">stride</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">groups</span><span class="o">=</span><span class="n">groups</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">width</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv3</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">planes</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">expansion</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn3</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">planes</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">expansion</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">relu</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">downsample</span> <span class="o">=</span> <span class="n">downsample</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">stride</span> <span class="o">=</span> <span class="n">stride</span>
|
||||
|
||||
<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">x</span><span class="p">):</span>
|
||||
<span class="n">residual</span> <span class="o">=</span> <span class="n">x</span>
|
||||
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">conv1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bn1</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">conv2</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bn2</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">conv3</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bn3</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">downsample</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">residual</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">downsample</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
|
||||
<span class="n">out</span> <span class="o">+=</span> <span class="n">residual</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">out</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ResNeXt"><a class="viewcode-back" href="../../../pkg/models.html#torchreid.models.resnext.ResNeXt">[docs]</a><span class="k">class</span> <span class="nc">ResNeXt</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="sd">"""ResNeXt.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> Reference:</span>
|
||||
<span class="sd"> Xie et al. Aggregated Residual Transformations for Deep</span>
|
||||
<span class="sd"> Neural Networks. CVPR 2017.</span>
|
||||
|
||||
<span class="sd"> Public keys:</span>
|
||||
<span class="sd"> - ``resnext50_32x4d``: ResNeXt50 (groups=32, width=4).</span>
|
||||
<span class="sd"> - ``resnext50_32x4d_fc512`` ResNeXt50 (groups=32, width=4) + FC.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="p">,</span> <span class="n">block</span><span class="p">,</span> <span class="n">layers</span><span class="p">,</span>
|
||||
<span class="n">groups</span><span class="o">=</span><span class="mi">32</span><span class="p">,</span>
|
||||
<span class="n">base_width</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>
|
||||
<span class="n">last_stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="n">fc_dims</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">dropout_p</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span> <span class="o">=</span> <span class="mi">64</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">ResNeXt</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">loss</span> <span class="o">=</span> <span class="n">loss</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">feature_dim</span> <span class="o">=</span> <span class="mi">512</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span>
|
||||
|
||||
<span class="c1"># backbone network</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bn1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="mi">64</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">relu</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">maxpool</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">MaxPool2d</span><span class="p">(</span><span class="n">kernel_size</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layer1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_layer</span><span class="p">(</span><span class="n">block</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="n">layers</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">groups</span><span class="p">,</span> <span class="n">base_width</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layer2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_layer</span><span class="p">(</span><span class="n">block</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="n">layers</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">groups</span><span class="p">,</span> <span class="n">base_width</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layer3</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_layer</span><span class="p">(</span><span class="n">block</span><span class="p">,</span> <span class="mi">256</span><span class="p">,</span> <span class="n">layers</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">groups</span><span class="p">,</span> <span class="n">base_width</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layer4</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_layer</span><span class="p">(</span><span class="n">block</span><span class="p">,</span> <span class="mi">512</span><span class="p">,</span> <span class="n">layers</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">groups</span><span class="p">,</span> <span class="n">base_width</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="n">last_stride</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">global_avgpool</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">AdaptiveAvgPool2d</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">fc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_construct_fc_layer</span><span class="p">(</span><span class="n">fc_dims</span><span class="p">,</span> <span class="mi">512</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span><span class="p">,</span> <span class="n">dropout_p</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">classifier</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">feature_dim</span><span class="p">,</span> <span class="n">num_classes</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_init_params</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_make_layer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">block</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">blocks</span><span class="p">,</span> <span class="n">groups</span><span class="p">,</span> <span class="n">base_width</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">downsample</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="n">stride</span> <span class="o">!=</span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span> <span class="o">!=</span> <span class="n">planes</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span><span class="p">:</span>
|
||||
<span class="n">downsample</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span><span class="p">,</span>
|
||||
<span class="n">kernel_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="n">stride</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">planes</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">layers</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">layers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">block</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">groups</span><span class="p">,</span> <span class="n">base_width</span><span class="p">,</span> <span class="n">stride</span><span class="p">,</span> <span class="n">downsample</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span> <span class="o">=</span> <span class="n">planes</span> <span class="o">*</span> <span class="n">block</span><span class="o">.</span><span class="n">expansion</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">blocks</span><span class="p">):</span>
|
||||
<span class="n">layers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">block</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inplanes</span><span class="p">,</span> <span class="n">planes</span><span class="p">,</span> <span class="n">groups</span><span class="p">,</span> <span class="n">base_width</span><span class="p">))</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span><span class="o">*</span><span class="n">layers</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_construct_fc_layer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fc_dims</span><span class="p">,</span> <span class="n">input_dim</span><span class="p">,</span> <span class="n">dropout_p</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Constructs fully connected layer.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> fc_dims (list or tuple): dimensions of fc layers, if None, no fc layers are constructed</span>
|
||||
<span class="sd"> input_dim (int): input dimension</span>
|
||||
<span class="sd"> dropout_p (float): dropout probability, if None, dropout is unused</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">fc_dims</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">feature_dim</span> <span class="o">=</span> <span class="n">input_dim</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">fc_dims</span><span class="p">,</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="s1">'fc_dims must be either list or tuple, but got </span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">fc_dims</span><span class="p">))</span>
|
||||
|
||||
<span class="n">layers</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">dim</span> <span class="ow">in</span> <span class="n">fc_dims</span><span class="p">:</span>
|
||||
<span class="n">layers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">input_dim</span><span class="p">,</span> <span class="n">dim</span><span class="p">))</span>
|
||||
<span class="n">layers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm1d</span><span class="p">(</span><span class="n">dim</span><span class="p">))</span>
|
||||
<span class="n">layers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">dropout_p</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">layers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Dropout</span><span class="p">(</span><span class="n">p</span><span class="o">=</span><span class="n">dropout_p</span><span class="p">))</span>
|
||||
<span class="n">input_dim</span> <span class="o">=</span> <span class="n">dim</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">feature_dim</span> <span class="o">=</span> <span class="n">fc_dims</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span><span class="o">*</span><span class="n">layers</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_init_params</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">m</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">modules</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">):</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">kaiming_normal_</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">weight</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">'fan_out'</span><span class="p">,</span> <span class="n">nonlinearity</span><span class="o">=</span><span class="s1">'relu'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">m</span><span class="o">.</span><span class="n">bias</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">constant_</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">bias</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">):</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">constant_</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">weight</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">constant_</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">bias</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm1d</span><span class="p">):</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">constant_</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">weight</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">constant_</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">bias</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">):</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">normal_</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">weight</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mf">0.01</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">m</span><span class="o">.</span><span class="n">bias</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">constant_</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">bias</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">featuremaps</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">conv1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bn1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">maxpool</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">layer1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">layer2</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">layer3</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">layer4</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">x</span>
|
||||
|
||||
<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">x</span><span class="p">):</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">featuremaps</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">global_avgpool</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="n">v</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">v</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fc</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fc</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">training</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">v</span>
|
||||
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">classifier</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss</span> <span class="o">==</span> <span class="s1">'softmax'</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">y</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss</span> <span class="o">==</span> <span class="s1">'triplet'</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">y</span><span class="p">,</span> <span class="n">v</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">"Unsupported loss: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">loss</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">init_pretrained_weights</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">model_url</span><span class="p">):</span>
|
||||
<span class="sd">"""Initializes model with pretrained weights.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> Layers that don't match with pretrained layers in name or size are kept unchanged.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">pretrain_dict</span> <span class="o">=</span> <span class="n">model_zoo</span><span class="o">.</span><span class="n">load_url</span><span class="p">(</span><span class="n">model_url</span><span class="p">)</span>
|
||||
<span class="n">model_dict</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">state_dict</span><span class="p">()</span>
|
||||
<span class="n">pretrain_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">pretrain_dict</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">model_dict</span> <span class="ow">and</span> <span class="n">model_dict</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="n">v</span><span class="o">.</span><span class="n">size</span><span class="p">()}</span>
|
||||
<span class="n">model_dict</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">pretrain_dict</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">model_dict</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">resnext50_32x4d</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'softmax'</span><span class="p">,</span> <span class="n">pretrained</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ResNeXt</span><span class="p">(</span>
|
||||
<span class="n">num_classes</span><span class="o">=</span><span class="n">num_classes</span><span class="p">,</span>
|
||||
<span class="n">loss</span><span class="o">=</span><span class="n">loss</span><span class="p">,</span>
|
||||
<span class="n">block</span><span class="o">=</span><span class="n">ResNeXtBottleneck</span><span class="p">,</span>
|
||||
<span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span>
|
||||
<span class="n">groups</span><span class="o">=</span><span class="mi">32</span><span class="p">,</span>
|
||||
<span class="n">base_width</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>
|
||||
<span class="n">last_stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="n">fc_dims</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">dropout_p</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">pretrained</span><span class="p">:</span>
|
||||
<span class="n">init_pretrained_weights</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">model_urls</span><span class="p">[</span><span class="s1">'resnext50_32x4d'</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">model</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">resnext50_32x4d_fc512</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'softmax'</span><span class="p">,</span> <span class="n">pretrained</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ResNeXt</span><span class="p">(</span>
|
||||
<span class="n">num_classes</span><span class="o">=</span><span class="n">num_classes</span><span class="p">,</span>
|
||||
<span class="n">loss</span><span class="o">=</span><span class="n">loss</span><span class="p">,</span>
|
||||
<span class="n">block</span><span class="o">=</span><span class="n">ResNeXtBottleneck</span><span class="p">,</span>
|
||||
<span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span>
|
||||
<span class="n">groups</span><span class="o">=</span><span class="mi">32</span><span class="p">,</span>
|
||||
<span class="n">base_width</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>
|
||||
<span class="n">last_stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
||||
<span class="n">fc_dims</span><span class="o">=</span><span class="p">[</span><span class="mi">512</span><span class="p">],</span>
|
||||
<span class="n">dropout_p</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">pretrained</span><span class="p">:</span>
|
||||
<span class="n">init_pretrained_weights</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">model_urls</span><span class="p">[</span><span class="s1">'resnext50_32x4d'</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">model</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2019, Kaiyang Zhou
|
||||
|
||||
</p>
|
||||
</div>
|
||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.senet — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.senet — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.shufflenet — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.shufflenet — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,419 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.shufflenetv2 — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
|
||||
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home"> torchreid
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../user_guide.html">How-to</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../datasets.html">Datasets</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../evaluation.html">Evaluation</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Package Reference</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/data.html">torchreid.data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/engine.html">torchreid.engine</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/losses.html">torchreid.losses</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/metrics.html">torchreid.metrics</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/models.html">torchreid.models</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/optim.html">torchreid.optim</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../pkg/utils.html">torchreid.utils</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">Resources</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../AWESOME_REID.html">Awesome-ReID</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../MODEL_ZOO.html">Model Zoo</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">torchreid</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../../index.html">Docs</a> »</li>
|
||||
|
||||
<li><a href="../../index.html">Module code</a> »</li>
|
||||
|
||||
<li>torchreid.models.shufflenetv2</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for torchreid.models.shufflenetv2</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">Code source: https://github.com/pytorch/vision</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'shufflenet_v2_x0_5'</span><span class="p">,</span> <span class="s1">'shufflenet_v2_x1_0'</span><span class="p">,</span> <span class="s1">'shufflenet_v2_x1_5'</span><span class="p">,</span> <span class="s1">'shufflenet_v2_x2_0'</span><span class="p">]</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
<span class="kn">from</span> <span class="nn">torch</span> <span class="k">import</span> <span class="n">nn</span>
|
||||
<span class="kn">from</span> <span class="nn">torch.nn</span> <span class="k">import</span> <span class="n">functional</span> <span class="k">as</span> <span class="n">F</span>
|
||||
<span class="kn">import</span> <span class="nn">torchvision</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.utils.model_zoo</span> <span class="k">as</span> <span class="nn">model_zoo</span>
|
||||
|
||||
|
||||
<span class="n">model_urls</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'shufflenetv2_x0.5'</span><span class="p">:</span> <span class="s1">'https://download.pytorch.org/models/shufflenetv2_x0.5-f707e7126e.pth'</span><span class="p">,</span>
|
||||
<span class="s1">'shufflenetv2_x1.0'</span><span class="p">:</span> <span class="s1">'https://download.pytorch.org/models/shufflenetv2_x1-5666bf0f80.pth'</span><span class="p">,</span>
|
||||
<span class="s1">'shufflenetv2_x1.5'</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="s1">'shufflenetv2_x2.0'</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">channel_shuffle</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">groups</span><span class="p">):</span>
|
||||
<span class="n">batchsize</span><span class="p">,</span> <span class="n">num_channels</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">width</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">size</span><span class="p">()</span>
|
||||
<span class="n">channels_per_group</span> <span class="o">=</span> <span class="n">num_channels</span> <span class="o">//</span> <span class="n">groups</span>
|
||||
|
||||
<span class="c1"># reshape</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">batchsize</span><span class="p">,</span> <span class="n">groups</span><span class="p">,</span>
|
||||
<span class="n">channels_per_group</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">width</span><span class="p">)</span>
|
||||
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">contiguous</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># flatten</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">batchsize</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">width</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">x</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">InvertedResidual</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inp</span><span class="p">,</span> <span class="n">oup</span><span class="p">,</span> <span class="n">stride</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">InvertedResidual</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="mi">1</span> <span class="o"><=</span> <span class="n">stride</span> <span class="o"><=</span> <span class="mi">3</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'illegal stride value'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">stride</span> <span class="o">=</span> <span class="n">stride</span>
|
||||
|
||||
<span class="n">branch_features</span> <span class="o">=</span> <span class="n">oup</span> <span class="o">//</span> <span class="mi">2</span>
|
||||
<span class="k">assert</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stride</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">inp</span> <span class="o">==</span> <span class="n">branch_features</span> <span class="o"><<</span> <span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">stride</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">branch1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">depthwise_conv</span><span class="p">(</span><span class="n">inp</span><span class="p">,</span> <span class="n">inp</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">stride</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">inp</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">inp</span><span class="p">,</span> <span class="n">branch_features</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">branch_features</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">branch2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">inp</span> <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stride</span> <span class="o">></span> <span class="mi">1</span><span class="p">)</span> <span class="k">else</span> <span class="n">branch_features</span><span class="p">,</span>
|
||||
<span class="n">branch_features</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">branch_features</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">depthwise_conv</span><span class="p">(</span><span class="n">branch_features</span><span class="p">,</span> <span class="n">branch_features</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">stride</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">branch_features</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">branch_features</span><span class="p">,</span> <span class="n">branch_features</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">branch_features</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">depthwise_conv</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">o</span><span class="p">,</span> <span class="n">kernel_size</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">o</span><span class="p">,</span> <span class="n">kernel_size</span><span class="p">,</span> <span class="n">stride</span><span class="p">,</span> <span class="n">padding</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="n">bias</span><span class="p">,</span> <span class="n">groups</span><span class="o">=</span><span class="n">i</span><span class="p">)</span>
|
||||
|
||||
<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">x</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">stride</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">x1</span><span class="p">,</span> <span class="n">x2</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">chunk</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">x1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">branch2</span><span class="p">(</span><span class="n">x2</span><span class="p">)),</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">branch1</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">branch2</span><span class="p">(</span><span class="n">x</span><span class="p">)),</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="n">channel_shuffle</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">out</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ShuffleNetV2"><a class="viewcode-back" href="../../../pkg/models.html#torchreid.models.shufflenetv2.ShuffleNetV2">[docs]</a><span class="k">class</span> <span class="nc">ShuffleNetV2</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="sd">"""ShuffleNetV2.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> Reference:</span>
|
||||
<span class="sd"> Ma et al. ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design. ECCV 2018.</span>
|
||||
|
||||
<span class="sd"> Public keys:</span>
|
||||
<span class="sd"> - ``shufflenet_v2_x0_5``: ShuffleNetV2 x0.5.</span>
|
||||
<span class="sd"> - ``shufflenet_v2_x1_0``: ShuffleNetV2 x1.0.</span>
|
||||
<span class="sd"> - ``shufflenet_v2_x1_5``: ShuffleNetV2 x1.5.</span>
|
||||
<span class="sd"> - ``shufflenet_v2_x2_0``: ShuffleNetV2 x2.0.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="p">,</span> <span class="n">stages_repeats</span><span class="p">,</span> <span class="n">stages_out_channels</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">ShuffleNetV2</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">loss</span> <span class="o">=</span> <span class="n">loss</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">stages_repeats</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">3</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'expected stages_repeats as list of 3 positive ints'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">stages_out_channels</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">5</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'expected stages_out_channels as list of 5 positive ints'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_stage_out_channels</span> <span class="o">=</span> <span class="n">stages_out_channels</span>
|
||||
|
||||
<span class="n">input_channels</span> <span class="o">=</span> <span class="mi">3</span>
|
||||
<span class="n">output_channels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stage_out_channels</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">input_channels</span><span class="p">,</span> <span class="n">output_channels</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">output_channels</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">input_channels</span> <span class="o">=</span> <span class="n">output_channels</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">maxpool</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">MaxPool2d</span><span class="p">(</span><span class="n">kernel_size</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="n">stage_names</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'stage</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">]]</span>
|
||||
<span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">repeats</span><span class="p">,</span> <span class="n">output_channels</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span>
|
||||
<span class="n">stage_names</span><span class="p">,</span> <span class="n">stages_repeats</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stage_out_channels</span><span class="p">[</span><span class="mi">1</span><span class="p">:]):</span>
|
||||
<span class="n">seq</span> <span class="o">=</span> <span class="p">[</span><span class="n">InvertedResidual</span><span class="p">(</span><span class="n">input_channels</span><span class="p">,</span> <span class="n">output_channels</span><span class="p">,</span> <span class="mi">2</span><span class="p">)]</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">repeats</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">seq</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">InvertedResidual</span><span class="p">(</span><span class="n">output_channels</span><span class="p">,</span> <span class="n">output_channels</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span><span class="o">*</span><span class="n">seq</span><span class="p">))</span>
|
||||
<span class="n">input_channels</span> <span class="o">=</span> <span class="n">output_channels</span>
|
||||
|
||||
<span class="n">output_channels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stage_out_channels</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv5</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">input_channels</span><span class="p">,</span> <span class="n">output_channels</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="n">output_channels</span><span class="p">),</span>
|
||||
<span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">global_avgpool</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">AdaptiveAvgPool2d</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">classifier</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">output_channels</span><span class="p">,</span> <span class="n">num_classes</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">featuremaps</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">conv1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">maxpool</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stage2</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stage3</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stage4</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">conv5</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">x</span>
|
||||
|
||||
<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">x</span><span class="p">):</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">featuremaps</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">global_avgpool</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="n">v</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">v</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">training</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">v</span>
|
||||
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">classifier</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss</span> <span class="o">==</span> <span class="s1">'softmax'</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">y</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss</span> <span class="o">==</span> <span class="s1">'triplet'</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">y</span><span class="p">,</span> <span class="n">v</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">"Unsupported loss: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">loss</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">init_pretrained_weights</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">model_url</span><span class="p">):</span>
|
||||
<span class="sd">"""Initializes model with pretrained weights.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> Layers that don't match with pretrained layers in name or size are kept unchanged.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">model_url</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="kn">import</span> <span class="nn">warnings</span>
|
||||
<span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s1">'ImageNet pretrained weights are unavailable for this model'</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">pretrain_dict</span> <span class="o">=</span> <span class="n">model_zoo</span><span class="o">.</span><span class="n">load_url</span><span class="p">(</span><span class="n">model_url</span><span class="p">)</span>
|
||||
<span class="n">model_dict</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">state_dict</span><span class="p">()</span>
|
||||
<span class="n">pretrain_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">pretrain_dict</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">model_dict</span> <span class="ow">and</span> <span class="n">model_dict</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="n">v</span><span class="o">.</span><span class="n">size</span><span class="p">()}</span>
|
||||
<span class="n">model_dict</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">pretrain_dict</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">model_dict</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">shufflenet_v2_x0_5</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'softmax'</span><span class="p">,</span> <span class="n">pretrained</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ShuffleNetV2</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="p">,</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mi">24</span><span class="p">,</span> <span class="mi">48</span><span class="p">,</span> <span class="mi">96</span><span class="p">,</span> <span class="mi">192</span><span class="p">,</span> <span class="mi">1024</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">pretrained</span><span class="p">:</span>
|
||||
<span class="n">init_pretrained_weights</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">model_urls</span><span class="p">[</span><span class="s1">'shufflenetv2_x0.5'</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">model</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">shufflenet_v2_x1_0</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'softmax'</span><span class="p">,</span> <span class="n">pretrained</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ShuffleNetV2</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="p">,</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mi">24</span><span class="p">,</span> <span class="mi">116</span><span class="p">,</span> <span class="mi">232</span><span class="p">,</span> <span class="mi">464</span><span class="p">,</span> <span class="mi">1024</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">pretrained</span><span class="p">:</span>
|
||||
<span class="n">init_pretrained_weights</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">model_urls</span><span class="p">[</span><span class="s1">'shufflenetv2_x1.0'</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">model</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">shufflenet_v2_x1_5</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'softmax'</span><span class="p">,</span> <span class="n">pretrained</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ShuffleNetV2</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="p">,</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mi">24</span><span class="p">,</span> <span class="mi">176</span><span class="p">,</span> <span class="mi">352</span><span class="p">,</span> <span class="mi">704</span><span class="p">,</span> <span class="mi">1024</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">pretrained</span><span class="p">:</span>
|
||||
<span class="n">init_pretrained_weights</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">model_urls</span><span class="p">[</span><span class="s1">'shufflenetv2_x1.5'</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">model</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">shufflenet_v2_x2_0</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s1">'softmax'</span><span class="p">,</span> <span class="n">pretrained</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ShuffleNetV2</span><span class="p">(</span><span class="n">num_classes</span><span class="p">,</span> <span class="n">loss</span><span class="p">,</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mi">24</span><span class="p">,</span> <span class="mi">244</span><span class="p">,</span> <span class="mi">488</span><span class="p">,</span> <span class="mi">976</span><span class="p">,</span> <span class="mi">2048</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">pretrained</span><span class="p">:</span>
|
||||
<span class="n">init_pretrained_weights</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">model_urls</span><span class="p">[</span><span class="s1">'shufflenetv2_x2.0'</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">model</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2019, Kaiyang Zhou
|
||||
|
||||
</p>
|
||||
</div>
|
||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.squeezenet — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.squeezenet — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -165,7 +165,10 @@
|
|||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for torchreid.models.squeezenet</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">Code source: https://github.com/pytorch/vision</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models.xception — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models.xception — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.optim.lr_scheduler — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.optim.lr_scheduler — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.optim.optimizer — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.optim.optimizer — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.utils.avgmeter — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.utils.avgmeter — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.utils.loggers — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.utils.loggers — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.utils.model_complexity — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.utils.model_complexity — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.utils.reidtools — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.utils.reidtools — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.utils.tools — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.utils.tools — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -170,7 +170,7 @@
|
|||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'mkdir_if_missing'</span><span class="p">,</span> <span class="s1">'check_isfile'</span><span class="p">,</span> <span class="s1">'read_json'</span><span class="p">,</span> <span class="s1">'write_json'</span><span class="p">,</span>
|
||||
<span class="s1">'set_random_seed'</span><span class="p">,</span> <span class="s1">'download_url'</span><span class="p">,</span> <span class="s1">'read_image'</span><span class="p">]</span>
|
||||
<span class="s1">'set_random_seed'</span><span class="p">,</span> <span class="s1">'download_url'</span><span class="p">,</span> <span class="s1">'read_image'</span><span class="p">,</span> <span class="s1">'collect_env_info'</span><span class="p">]</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
<span class="kn">import</span> <span class="nn">os</span>
|
||||
|
@ -182,6 +182,7 @@
|
|||
<span class="kn">import</span> <span class="nn">warnings</span>
|
||||
<span class="kn">import</span> <span class="nn">random</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">PIL</span>
|
||||
<span class="kn">from</span> <span class="nn">PIL</span> <span class="k">import</span> <span class="n">Image</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
|
@ -281,6 +282,17 @@
|
|||
<span class="nb">print</span><span class="p">(</span><span class="s1">'IOError incurred when reading "</span><span class="si">{}</span><span class="s1">". Will redo. Don</span><span class="se">\'</span><span class="s1">t worry. Just chill.'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">img_path</span><span class="p">))</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="k">return</span> <span class="n">img</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="collect_env_info"><a class="viewcode-back" href="../../../pkg/utils.html#torchreid.utils.tools.collect_env_info">[docs]</a><span class="k">def</span> <span class="nf">collect_env_info</span><span class="p">():</span>
|
||||
<span class="sd">"""Returns env info as a string.</span>
|
||||
|
||||
<span class="sd"> Code source: github.com/facebookresearch/maskrcnn-benchmark</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">from</span> <span class="nn">torch.utils.collect_env</span> <span class="k">import</span> <span class="n">get_pretty_env_info</span>
|
||||
<span class="n">env_str</span> <span class="o">=</span> <span class="n">get_pretty_env_info</span><span class="p">()</span>
|
||||
<span class="n">env_str</span> <span class="o">+=</span> <span class="s1">'</span><span class="se">\n</span><span class="s1"> Pillow (</span><span class="si">{}</span><span class="s1">)'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">PIL</span><span class="o">.</span><span class="n">__version__</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">env_str</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.utils.torchtools — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.utils.torchtools — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -14,7 +14,6 @@ ImageNet Classification Models
|
|||
-------------------------------
|
||||
|
||||
.. autoclass:: torchreid.models.resnet.ResNet
|
||||
.. autoclass:: torchreid.models.resnext.ResNeXt
|
||||
.. autoclass:: torchreid.models.senet.SENet
|
||||
.. autoclass:: torchreid.models.densenet.DenseNet
|
||||
.. autoclass:: torchreid.models.inceptionresnetv2.InceptionResNetV2
|
||||
|
@ -29,6 +28,7 @@ Lightweight Models
|
|||
.. autoclass:: torchreid.models.mobilenetv2.MobileNetV2
|
||||
.. autoclass:: torchreid.models.shufflenet.ShuffleNet
|
||||
.. autoclass:: torchreid.models.squeezenet.SqueezeNet
|
||||
.. autoclass:: torchreid.models.shufflenetv2.ShuffleNetV2
|
||||
|
||||
|
||||
ReID-specific Models
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
|
||||
VERSION: '0.7.6',
|
||||
VERSION: '0.7.7',
|
||||
LANGUAGE: 'None',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Datasets — torchreid 0.7.6 documentation</title>
|
||||
<title>Datasets — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Evaluation — torchreid 0.7.6 documentation</title>
|
||||
<title>Evaluation — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Index — torchreid 0.7.6 documentation</title>
|
||||
<title>Index — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -60,7 +60,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -227,6 +227,8 @@
|
|||
<li><a href="pkg/data.html#torchreid.data.datasets.dataset.Dataset.check_before_run">check_before_run() (torchreid.data.datasets.dataset.Dataset method)</a>
|
||||
</li>
|
||||
<li><a href="pkg/utils.html#torchreid.utils.tools.check_isfile">check_isfile() (in module torchreid.utils.tools)</a>
|
||||
</li>
|
||||
<li><a href="pkg/utils.html#torchreid.utils.tools.collect_env_info">collect_env_info() (in module torchreid.utils.tools)</a>
|
||||
</li>
|
||||
<li><a href="pkg/data.html#torchreid.data.transforms.ColorAugmentation">ColorAugmentation (class in torchreid.data.transforms)</a>
|
||||
</li>
|
||||
|
@ -236,10 +238,10 @@
|
|||
<li><a href="pkg/data.html#torchreid.data.datasets.video.mars.Mars.combine_all">(torchreid.data.datasets.video.mars.Mars method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="pkg/metrics.html#torchreid.metrics.distance.compute_distance_matrix">compute_distance_matrix() (in module torchreid.metrics.distance)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pkg/metrics.html#torchreid.metrics.distance.compute_distance_matrix">compute_distance_matrix() (in module torchreid.metrics.distance)</a>
|
||||
</li>
|
||||
<li><a href="pkg/utils.html#torchreid.utils.model_complexity.compute_model_complexity">compute_model_complexity() (in module torchreid.utils.model_complexity)</a>
|
||||
</li>
|
||||
<li><a href="pkg/metrics.html#torchreid.metrics.distance.cosine_distance">cosine_distance() (in module torchreid.metrics.distance)</a>
|
||||
|
@ -457,8 +459,6 @@
|
|||
<li><a href="pkg/models.html#torchreid.models.resnet.ResNet">ResNet (class in torchreid.models.resnet)</a>
|
||||
</li>
|
||||
<li><a href="pkg/models.html#torchreid.models.resnetmid.ResNetMid">ResNetMid (class in torchreid.models.resnetmid)</a>
|
||||
</li>
|
||||
<li><a href="pkg/models.html#torchreid.models.resnext.ResNeXt">ResNeXt (class in torchreid.models.resnext)</a>
|
||||
</li>
|
||||
<li><a href="pkg/utils.html#torchreid.utils.torchtools.resume_from_checkpoint">resume_from_checkpoint() (in module torchreid.utils.torchtools)</a>
|
||||
</li>
|
||||
|
@ -495,6 +495,8 @@
|
|||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pkg/models.html#torchreid.models.shufflenet.ShuffleNet">ShuffleNet (class in torchreid.models.shufflenet)</a>
|
||||
</li>
|
||||
<li><a href="pkg/models.html#torchreid.models.shufflenetv2.ShuffleNetV2">ShuffleNetV2 (class in torchreid.models.shufflenetv2)</a>
|
||||
</li>
|
||||
<li><a href="pkg/models.html#torchreid.models.squeezenet.SqueezeNet">SqueezeNet (class in torchreid.models.squeezenet)</a>
|
||||
</li>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Torchreid — torchreid 0.7.6 documentation</title>
|
||||
<title>Torchreid — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -60,7 +60,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
BIN
objects.inv
BIN
objects.inv
Binary file not shown.
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.data — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.data — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.engine — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.engine — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -210,7 +210,7 @@ or <code class="docutils literal notranslate"><span class="pre">torchreid.data.V
|
|||
<li><strong>max_epoch</strong> (<em>int</em>) – maximum epoch.</li>
|
||||
<li><strong>start_epoch</strong> (<em>int</em><em>, </em><em>optional</em>) – starting epoch. Default is 0.</li>
|
||||
<li><strong>fixbase_epoch</strong> (<em>int</em><em>, </em><em>optional</em>) – number of epochs to train <code class="docutils literal notranslate"><span class="pre">open_layers</span></code> (new layers)
|
||||
while keeping base layers frozen. Default is 0. <code class="docutils literal notranslate"><span class="pre">fixbase_epoch</span></code> is not counted
|
||||
while keeping base layers frozen. Default is 0. <code class="docutils literal notranslate"><span class="pre">fixbase_epoch</span></code> is counted
|
||||
in <code class="docutils literal notranslate"><span class="pre">max_epoch</span></code>.</li>
|
||||
<li><strong>open_layers</strong> (<em>str</em><em> or </em><em>list</em><em>, </em><em>optional</em>) – layers (attribute names) open for training.</li>
|
||||
<li><strong>start_eval</strong> (<em>int</em><em>, </em><em>optional</em>) – from which epoch to start evaluation. Default is 0.</li>
|
||||
|
@ -363,23 +363,17 @@ or <code class="docutils literal notranslate"><span class="pre">torchreid.data.V
|
|||
</div>
|
||||
<dl class="method">
|
||||
<dt id="torchreid.engine.image.softmax.ImageSoftmaxEngine.train">
|
||||
<code class="descname">train</code><span class="sig-paren">(</span><em>epoch</em>, <em>trainloader</em>, <em>fixbase=False</em>, <em>open_layers=None</em>, <em>print_freq=10</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/torchreid/engine/image/softmax.html#ImageSoftmaxEngine.train"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#torchreid.engine.image.softmax.ImageSoftmaxEngine.train" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Trains the model for one epoch on source datasets using softmax loss.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
|
||||
<li><strong>epoch</strong> (<em>int</em>) – current epoch.</li>
|
||||
<li><strong>trainloader</strong> (<em>Dataloader</em>) – training dataloader.</li>
|
||||
<li><strong>fixbase</strong> (<em>bool</em><em>, </em><em>optional</em>) – whether to fix base layers. Default is False.</li>
|
||||
<li><strong>open_layers</strong> (<em>str</em><em> or </em><em>list</em><em>, </em><em>optional</em>) – layers open for training.</li>
|
||||
<li><strong>print_freq</strong> (<em>int</em><em>, </em><em>optional</em>) – print frequency. Default is 10.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<code class="descname">train</code><span class="sig-paren">(</span><em>epoch</em>, <em>max_epoch</em>, <em>trainloader</em>, <em>fixbase_epoch=0</em>, <em>open_layers=None</em>, <em>print_freq=10</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/torchreid/engine/image/softmax.html#ImageSoftmaxEngine.train"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#torchreid.engine.image.softmax.ImageSoftmaxEngine.train" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Performs training on source datasets for one epoch.</p>
|
||||
<p>This will be called every epoch in <code class="docutils literal notranslate"><span class="pre">run()</span></code>, e.g.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">start_epoch</span><span class="p">,</span> <span class="n">max_epoch</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">train</span><span class="p">(</span><span class="n">some_arguments</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">This needs to be implemented in subclasses.</p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
@ -448,23 +442,17 @@ or <code class="docutils literal notranslate"><span class="pre">torchreid.data.V
|
|||
</div>
|
||||
<dl class="method">
|
||||
<dt id="torchreid.engine.image.triplet.ImageTripletEngine.train">
|
||||
<code class="descname">train</code><span class="sig-paren">(</span><em>epoch</em>, <em>trainloader</em>, <em>fixbase=False</em>, <em>open_layers=None</em>, <em>print_freq=10</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/torchreid/engine/image/triplet.html#ImageTripletEngine.train"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#torchreid.engine.image.triplet.ImageTripletEngine.train" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Trains the model for one epoch on source datasets using hard mining triplet loss.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
|
||||
<li><strong>epoch</strong> (<em>int</em>) – current epoch.</li>
|
||||
<li><strong>trainloader</strong> (<em>Dataloader</em>) – training dataloader.</li>
|
||||
<li><strong>fixbase</strong> (<em>bool</em><em>, </em><em>optional</em>) – whether to fix base layers. Default is False.</li>
|
||||
<li><strong>open_layers</strong> (<em>str</em><em> or </em><em>list</em><em>, </em><em>optional</em>) – layers open for training.</li>
|
||||
<li><strong>print_freq</strong> (<em>int</em><em>, </em><em>optional</em>) – print frequency. Default is 10.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<code class="descname">train</code><span class="sig-paren">(</span><em>epoch</em>, <em>max_epoch</em>, <em>trainloader</em>, <em>fixbase_epoch=0</em>, <em>open_layers=None</em>, <em>print_freq=10</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/torchreid/engine/image/triplet.html#ImageTripletEngine.train"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#torchreid.engine.image.triplet.ImageTripletEngine.train" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Performs training on source datasets for one epoch.</p>
|
||||
<p>This will be called every epoch in <code class="docutils literal notranslate"><span class="pre">run()</span></code>, e.g.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">start_epoch</span><span class="p">,</span> <span class="n">max_epoch</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">train</span><span class="p">(</span><span class="n">some_arguments</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">This needs to be implemented in subclasses.</p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.losses — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.losses — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.metrics — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.metrics — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.models — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.models — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -231,11 +231,15 @@ Default is True.</li>
|
|||
<h2>ImageNet Classification Models<a class="headerlink" href="#imagenet-classification-models" title="Permalink to this headline">¶</a></h2>
|
||||
<dl class="class">
|
||||
<dt id="torchreid.models.resnet.ResNet">
|
||||
<em class="property">class </em><code class="descclassname">torchreid.models.resnet.</code><code class="descname">ResNet</code><span class="sig-paren">(</span><em>num_classes</em>, <em>loss</em>, <em>block</em>, <em>layers</em>, <em>last_stride=2</em>, <em>fc_dims=None</em>, <em>dropout_p=None</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/torchreid/models/resnet.html#ResNet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#torchreid.models.resnet.ResNet" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><code class="descclassname">torchreid.models.resnet.</code><code class="descname">ResNet</code><span class="sig-paren">(</span><em>num_classes</em>, <em>loss</em>, <em>block</em>, <em>layers</em>, <em>zero_init_residual=False</em>, <em>groups=1</em>, <em>width_per_group=64</em>, <em>replace_stride_with_dilation=None</em>, <em>norm_layer=None</em>, <em>last_stride=2</em>, <em>fc_dims=None</em>, <em>dropout_p=None</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/torchreid/models/resnet.html#ResNet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#torchreid.models.resnet.ResNet" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Residual network.</p>
|
||||
<dl class="docutils">
|
||||
<dt>Reference:</dt>
|
||||
<dd>He et al. Deep Residual Learning for Image Recognition. CVPR 2016.</dd>
|
||||
<dd><ul class="first last simple">
|
||||
<li>He et al. Deep Residual Learning for Image Recognition. CVPR 2016.</li>
|
||||
<li>Xie et al. Aggregated Residual Transformations for Deep Neural Networks. CVPR 2017.</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt>Public keys:</dt>
|
||||
<dd><ul class="first last simple">
|
||||
<li><code class="docutils literal notranslate"><span class="pre">resnet18</span></code>: ResNet18.</li>
|
||||
|
@ -243,29 +247,14 @@ Default is True.</li>
|
|||
<li><code class="docutils literal notranslate"><span class="pre">resnet50</span></code>: ResNet50.</li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">resnet101</span></code>: ResNet101.</li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">resnet152</span></code>: ResNet152.</li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">resnext50_32x4d</span></code>: ResNeXt50.</li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">resnext101_32x8d</span></code>: ResNeXt101.</li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">resnet50_fc512</span></code>: ResNet50 + FC.</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="torchreid.models.resnext.ResNeXt">
|
||||
<em class="property">class </em><code class="descclassname">torchreid.models.resnext.</code><code class="descname">ResNeXt</code><span class="sig-paren">(</span><em>num_classes</em>, <em>loss</em>, <em>block</em>, <em>layers</em>, <em>groups=32</em>, <em>base_width=4</em>, <em>last_stride=2</em>, <em>fc_dims=None</em>, <em>dropout_p=None</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/torchreid/models/resnext.html#ResNeXt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#torchreid.models.resnext.ResNeXt" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>ResNeXt.</p>
|
||||
<dl class="docutils">
|
||||
<dt>Reference:</dt>
|
||||
<dd>Xie et al. Aggregated Residual Transformations for Deep
|
||||
Neural Networks. CVPR 2017.</dd>
|
||||
<dt>Public keys:</dt>
|
||||
<dd><ul class="first last simple">
|
||||
<li><code class="docutils literal notranslate"><span class="pre">resnext50_32x4d</span></code>: ResNeXt50 (groups=32, width=4).</li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">resnext50_32x4d_fc512</span></code> ResNeXt50 (groups=32, width=4) + FC.</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="torchreid.models.senet.SENet">
|
||||
<em class="property">class </em><code class="descclassname">torchreid.models.senet.</code><code class="descname">SENet</code><span class="sig-paren">(</span><em>num_classes</em>, <em>loss</em>, <em>block</em>, <em>layers</em>, <em>groups</em>, <em>reduction</em>, <em>dropout_p=0.2</em>, <em>inplanes=128</em>, <em>input_3x3=True</em>, <em>downsample_kernel_size=3</em>, <em>downsample_padding=1</em>, <em>last_stride=2</em>, <em>fc_dims=None</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/torchreid/models/senet.html#SENet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#torchreid.models.senet.SENet" title="Permalink to this definition">¶</a></dt>
|
||||
|
@ -424,6 +413,24 @@ and< 0.5 MB model size. arXiv:1602.07360.</dd>
|
|||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="torchreid.models.shufflenetv2.ShuffleNetV2">
|
||||
<em class="property">class </em><code class="descclassname">torchreid.models.shufflenetv2.</code><code class="descname">ShuffleNetV2</code><span class="sig-paren">(</span><em>num_classes</em>, <em>loss</em>, <em>stages_repeats</em>, <em>stages_out_channels</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/torchreid/models/shufflenetv2.html#ShuffleNetV2"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#torchreid.models.shufflenetv2.ShuffleNetV2" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>ShuffleNetV2.</p>
|
||||
<dl class="docutils">
|
||||
<dt>Reference:</dt>
|
||||
<dd>Ma et al. ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design. ECCV 2018.</dd>
|
||||
<dt>Public keys:</dt>
|
||||
<dd><ul class="first last simple">
|
||||
<li><code class="docutils literal notranslate"><span class="pre">shufflenet_v2_x0_5</span></code>: ShuffleNetV2 x0.5.</li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">shufflenet_v2_x1_0</span></code>: ShuffleNetV2 x1.0.</li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">shufflenet_v2_x1_5</span></code>: ShuffleNetV2 x1.5.</li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">shufflenet_v2_x2_0</span></code>: ShuffleNetV2 x2.0.</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="reid-specific-models">
|
||||
<h2>ReID-specific Models<a class="headerlink" href="#reid-specific-models" title="Permalink to this headline">¶</a></h2>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.optim — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.optim — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>torchreid.utils — torchreid 0.7.6 documentation</title>
|
||||
<title>torchreid.utils — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -382,6 +382,13 @@ to show the summarized results, which are convenient for analysis.</p>
|
|||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="torchreid.utils.tools.collect_env_info">
|
||||
<code class="descclassname">torchreid.utils.tools.</code><code class="descname">collect_env_info</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/torchreid/utils/tools.html#collect_env_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#torchreid.utils.tools.collect_env_info" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns env info as a string.</p>
|
||||
<p>Code source: github.com/facebookresearch/maskrcnn-benchmark</p>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="module-torchreid.utils.reidtools">
|
||||
<span id="reid-tools"></span><h2>ReID Tools<a class="headerlink" href="#module-torchreid.utils.reidtools" title="Permalink to this headline">¶</a></h2>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Python Module Index — torchreid 0.7.6 documentation</title>
|
||||
<title>Python Module Index — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -62,7 +62,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Search — torchreid 0.7.6 documentation</title>
|
||||
<title>Search — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -60,7 +60,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>How-to — torchreid 0.7.6 documentation</title>
|
||||
<title>How-to — torchreid 0.7.7 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
|
||||
<div class="version">
|
||||
0.7.6
|
||||
0.7.7
|
||||
</div>
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue