RandomAffine in PyTorch (1)

Buy Me a Coffee

*Memos:

RandomAffine() can do random rotation or random affine transformation for an image as shown below:

*Memos:

  • The 1st argument for initialization is degrees(Required-Type:int, float or tuple/list(int or float)): *Memos:
    • It can do rotation.
    • It’s the range of the degrees [min, max] so it must min <= max.
    • A degrees value is randomly taken from the range of [min, max].
    • A tuple/list must be the 1D with 2 elements.
    • A single value(int or float) means [-degrees(min), +degrees(max)].
    • A single value(int or float) must be 0 <= x.
  • The 2nd argument for initialization is translate(Optional-Default:None-Type:tuple/list(int or float)): *Memos:
    • It’s [a, b].
    • It must be 0 <= 1.
    • It must be the 1D with 2 elements.
    • The 1st element is for the horizontal shift randomly taken in the range of -img_width * a < horizontal shift < img_width * a.
    • The 2nd element is for the vertical shift randomly taken in the range of -img_height * b < vertical shift < img_height * b.
  • The 3rd argument for initialization is scale(Optional-Default:None-Type:tuple/list(int or float)): *Memos:
    • It’s [min, max] so it must min <= max.
    • It must be 0 < x.
    • It must be the 1D with 2 elements.
    • A scale value is randomly taken from the range of [min, max].
  • The 4th argument for initialization is shear(Optional-Default:None-Type:int, float or tuple/list(int or float)): *Memos:
    • It can do affine transformation with x and y.
    • It’s [min, max, min, max] so it must min <= max. *Memos:
    • The 1st two elements are the range of x.
    • The 2nd two elements are the range of y.
    • x value is randomly taken from the range of the 1st two elements.
    • y value is randomly taken from the range of the 2nd two elements.
    • A tuple/list must be the 1D with 2 or 4 elements.
    • The tuple/list of 2 elements means [shear[0](min), shear[1](max), 0.0(min), 0.0(min)].
    • A single value means [-shear(min), +shear(max), 0.0(min), 0.0(max)].
    • A single value must be 0 <= x.
  • The 5th argument for initialization is interpolation(Optional-Default:InterpolationMode.NEAREST-Type:InterpolationMode).
  • The 6th argument for initialization is fill(Optional-Default:0-Type:int, float or tuple/list(int or float)): *Memos:
    • It can change the background of an image. *The background can be seen when doing rotation or affine transformation for an image.
    • A tuple/list must be the 1D with 1 or 3 elements.
  • The 7th argument for initialization is center(Optional-Default:None-Type:tuple/list(int or float)): *Memos:
    • It can change the center position of an image.
    • It must be the 1D with 2 elements.
  • The 1st argument is img(Required-Type:PIL Image or tensor(int)): *Memos:
    • A tensor must be 3D.
    • Don’t use img=.
  • v2 is recommended to use according to V1 or V2? Which one should I use?.
<span>from</span> <span>torchvision.datasets</span> <span>import</span> <span>OxfordIIITPet</span>
<span>from</span> <span>torchvision.transforms.v2</span> <span>import</span> <span>RandomAffine</span>
<span>from</span> <span>torchvision.transforms.functional</span> <span>import</span> <span>InterpolationMode</span>
<span>randomaffine</span> <span>=</span> <span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>90</span><span>)</span>
<span>randomaffine</span> <span>=</span> <span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>-</span><span>90</span><span>,</span> <span>90</span><span>],</span>
<span>translate</span><span>=</span><span>None</span><span>,</span>
<span>scale</span><span>=</span><span>None</span><span>,</span>
<span>shear</span><span>=</span><span>None</span><span>,</span>
<span>interpolation</span><span>=</span><span>InterpolationMode</span><span>.</span><span>NEAREST</span><span>,</span>
<span>fill</span><span>=</span><span>0</span><span>,</span>
<span>center</span><span>=</span><span>None</span><span>)</span>
<span>randomaffine</span>
<span># RandomAffine(degrees=[-90, 90], # interpolation=InterpolationMode.NEAREST, # fill=0) </span>
<span>randomaffine</span><span>.</span><span>degrees</span>
<span># [-90.0, 90.0] </span>
<span>print</span><span>(</span><span>randomaffine</span><span>.</span><span>translate</span><span>)</span>
<span># None </span>
<span>print</span><span>(</span><span>randomaffine</span><span>.</span><span>scale</span><span>)</span>
<span># None </span>
<span>print</span><span>(</span><span>randomaffine</span><span>.</span><span>shear</span><span>)</span>
<span># None </span>
<span>randomaffine</span><span>.</span><span>interpolation</span>
<span># <InterpolationMode.NEAREST: 'nearest'> </span>
<span>randomaffine</span><span>.</span><span>fill</span>
<span># 0 </span>
<span>print</span><span>(</span><span>randomaffine</span><span>.</span><span>center</span><span>)</span>
<span># None </span>
<span>origin_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>None</span>
<span># transform=RandomAffine(degrees=[0, 0]) </span><span>)</span>
<span>d90_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span> <span># `d` is degrees. </span> <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>90</span><span>)</span>
<span># transform=RandomAffine(degrees=[-90, 90]) </span><span>)</span>
<span>d90_90_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>90</span><span>,</span> <span>90</span><span>])</span>
<span>)</span>
<span>dn90n90_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span> <span># `n` is negative. </span> <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>-</span><span>90</span><span>,</span> <span>-</span><span>90</span><span>])</span>
<span>)</span>
<span>d180_180_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>180</span><span>,</span> <span>180</span><span>])</span>
<span>)</span>
<span>hrvrtran_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span> <span># `hr` is horizontal and `vr` is vertical. </span> <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span> <span># `tran` is translate. </span> <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>translate</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0.5</span><span>])</span>
<span>)</span>
<span>hrtran_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>translate</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0</span><span>])</span>
<span>)</span>
<span>vrtran_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>translate</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0.5</span><span>])</span>
<span>)</span>
<span>dn45n45fgray_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>-</span><span>45</span><span>,</span> <span>-</span><span>45</span><span>],</span> <span>fill</span><span>=</span><span>150</span><span>)</span>
<span>)</span>
<span>d135_135fpurple_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>135</span><span>,</span> <span>135</span><span>],</span> <span>fill</span><span>=</span><span>[</span><span>160</span><span>,</span> <span>32</span><span>,</span> <span>240</span><span>])</span>
<span>)</span>
<span>d180_180c270_200_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span> <span># `c` is center. </span> <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>180</span><span>,</span> <span>180</span><span>],</span> <span>center</span><span>=</span><span>[</span><span>270</span><span>,</span> <span>200</span><span>])</span>
<span>)</span>
<span>scale01_5_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>5</span><span>])</span>
<span>)</span>
<span>scale01_1_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>1</span><span>])</span>
<span>)</span>
<span>scale1_5_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>1</span><span>,</span> <span>5</span><span>])</span>
<span>)</span>
<span>scale1_1origin_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>1</span><span>,</span> <span>1</span><span>])</span>
<span>)</span>
<span>scale08_08_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0.8</span><span>])</span>
<span>)</span>
<span>scale06_06_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.6</span><span>,</span> <span>0.6</span><span>])</span>
<span>)</span>
<span>scale04_04_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.4</span><span>,</span> <span>0.4</span><span>])</span>
<span>)</span>
<span>scale02_02_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.2</span><span>,</span> <span>0.2</span><span>])</span>
<span>)</span>
<span>scale01_01_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>0.1</span><span>])</span>
<span>)</span>
<span>scale001_001_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.01</span><span>,</span> <span>0.01</span><span>])</span>
<span>)</span>
<span>scale0001_0001_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.001</span><span>,</span> <span>0.001</span><span>])</span>
<span>)</span>
<span>scale2_2_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>2</span><span>,</span> <span>2</span><span>])</span>
<span>)</span>
<span>scale5_5_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>5</span><span>,</span> <span>5</span><span>])</span>
<span>)</span>
<span>scale10_10_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>10</span><span>,</span> <span>10</span><span>])</span>
<span>)</span>
<span>scale20_20_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>20</span><span>,</span> <span>20</span><span>])</span>
<span>)</span>
<span>scale50_50_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>50</span><span>,</span> <span>50</span><span>])</span>
<span>)</span>
<span>scale100_100_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>100</span><span>,</span> <span>100</span><span>])</span>
<span>)</span>
<span>scale300_300_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
<span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
<span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>300</span><span>,</span> <span>300</span><span>])</span>
<span>)</span>
<span>import</span> <span>matplotlib.pyplot</span> <span>as</span> <span>plt</span>
<span>def</span> <span>show_images1</span><span>(</span><span>data</span><span>,</span> <span>main_title</span><span>=</span><span>None</span><span>):</span>
<span>plt</span><span>.</span><span>figure</span><span>(</span><span>figsize</span><span>=</span><span>[</span><span>10</span><span>,</span> <span>5</span><span>])</span>
<span>plt</span><span>.</span><span>suptitle</span><span>(</span><span>t</span><span>=</span><span>main_title</span><span>,</span> <span>y</span><span>=</span><span>0.8</span><span>,</span> <span>fontsize</span><span>=</span><span>14</span><span>)</span>
<span>for</span> <span>i</span><span>,</span> <span>(</span><span>im</span><span>,</span> <span>_</span><span>)</span> <span>in</span> <span>zip</span><span>(</span><span>range</span><span>(</span><span>1</span><span>,</span> <span>6</span><span>),</span> <span>data</span><span>):</span>
<span>plt</span><span>.</span><span>subplot</span><span>(</span><span>1</span><span>,</span> <span>5</span><span>,</span> <span>i</span><span>)</span>
<span>plt</span><span>.</span><span>imshow</span><span>(</span><span>X</span><span>=</span><span>im</span><span>)</span>
<span>plt</span><span>.</span><span>xticks</span><span>(</span><span>ticks</span><span>=</span><span>[])</span>
<span>plt</span><span>.</span><span>yticks</span><span>(</span><span>ticks</span><span>=</span><span>[])</span>
<span>plt</span><span>.</span><span>tight_layout</span><span>()</span>
<span>plt</span><span>.</span><span>show</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>origin_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>d90_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d90_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>d90_90_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d90_90_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>dn90n90_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>dn90n90_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>d180_180_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d180_180_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>hrvrtran_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>hrvrtran_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>hrtran_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>hrtran_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>vrtran_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>vrtran_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>dn45n45fgray_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>dn45n45fgray_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>d135_135fpurple_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d135_135fpurple_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>d180_180c270_200_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d180_180c270_200_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale01_5_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_5_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale01_1_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_1_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale1_5_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_5_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale1_1origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_1origin_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale08_08_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale08_08_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale06_06_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale06_06_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale04_04_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale04_04_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale02_02_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale02_02_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale01_01_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_01_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale001_001_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale001_001_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale0001_0001_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale0001_0001_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale1_1origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_1origin_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale2_2_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale2_2_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale5_5_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale5_5_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale10_10_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale10_10_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale20_20_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale20_20_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale50_50_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale50_50_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale100_100_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale100_100_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale300_300_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale300_300_data</span><span>"</span><span>)</span>
<span># ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ </span><span>def</span> <span>show_images2</span><span>(</span><span>data</span><span>,</span> <span>main_title</span><span>=</span><span>None</span><span>,</span> <span>d</span><span>=</span><span>0</span><span>,</span> <span>t</span><span>=</span><span>None</span><span>,</span>
<span>sc</span><span>=</span><span>None</span><span>,</span> <span>sh</span><span>=</span><span>None</span><span>,</span> <span>f</span><span>=</span><span>0</span><span>,</span> <span>c</span><span>=</span><span>None</span><span>):</span>
<span>plt</span><span>.</span><span>figure</span><span>(</span><span>figsize</span><span>=</span><span>[</span><span>10</span><span>,</span> <span>5</span><span>])</span>
<span>plt</span><span>.</span><span>suptitle</span><span>(</span><span>t</span><span>=</span><span>main_title</span><span>,</span> <span>y</span><span>=</span><span>0.8</span><span>,</span> <span>fontsize</span><span>=</span><span>14</span><span>)</span>
<span>for</span> <span>i</span><span>,</span> <span>(</span><span>im</span><span>,</span> <span>_</span><span>)</span> <span>in</span> <span>zip</span><span>(</span><span>range</span><span>(</span><span>1</span><span>,</span> <span>6</span><span>),</span> <span>data</span><span>):</span>
<span>plt</span><span>.</span><span>subplot</span><span>(</span><span>1</span><span>,</span> <span>5</span><span>,</span> <span>i</span><span>)</span>
<span>ra</span> <span>=</span> <span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>d</span><span>,</span> <span>translate</span><span>=</span><span>t</span><span>,</span> <span>scale</span><span>=</span><span>sc</span><span>,</span> <span># Here </span> <span>shear</span><span>=</span><span>sh</span><span>,</span> <span>center</span><span>=</span><span>c</span><span>,</span> <span>fill</span><span>=</span><span>f</span><span>)</span>
<span>plt</span><span>.</span><span>imshow</span><span>(</span><span>X</span><span>=</span><span>ra</span><span>(</span><span>im</span><span>))</span> <span># Here </span> <span>plt</span><span>.</span><span>xticks</span><span>(</span><span>ticks</span><span>=</span><span>[])</span>
<span>plt</span><span>.</span><span>yticks</span><span>(</span><span>ticks</span><span>=</span><span>[])</span>
<span>plt</span><span>.</span><span>tight_layout</span><span>()</span>
<span>plt</span><span>.</span><span>show</span><span>()</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>origin_data</span><span>"</span><span>)</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d90_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>90</span><span>)</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d90_90_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>90</span><span>,</span> <span>90</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>dn90n90_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>-</span><span>90</span><span>,</span> <span>-</span><span>90</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d180_180_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>180</span><span>,</span> <span>180</span><span>])</span>
<span>print</span><span>()</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>hrvrtran_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>t</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0.5</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>hrtran_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>t</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>vrtran_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>t</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0.5</span><span>])</span>
<span>print</span><span>()</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>dn45n45fgray_data</span><span>"</span><span>,</span>
<span>d</span><span>=</span><span>[</span><span>-</span><span>45</span><span>,</span> <span>-</span><span>45</span><span>],</span> <span>f</span><span>=</span><span>150</span><span>)</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d135_135fpurple_data</span><span>"</span><span>,</span>
<span>d</span><span>=</span><span>[</span><span>135</span><span>,</span> <span>135</span><span>],</span> <span>f</span><span>=</span><span>[</span><span>160</span><span>,</span> <span>32</span><span>,</span> <span>240</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d180_180c270_200_data</span><span>"</span><span>,</span>
<span>d</span><span>=</span><span>[</span><span>180</span><span>,</span> <span>180</span><span>],</span> <span>c</span><span>=</span><span>[</span><span>270</span><span>,</span> <span>200</span><span>])</span>
<span>print</span><span>()</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_5_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0.0</span><span>,</span> <span>0.0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>5</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_1_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0.0</span><span>,</span> <span>0.0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>1</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_5_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0.0</span><span>,</span> <span>0.0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>1</span><span>,</span> <span>5</span><span>])</span>
<span>print</span><span>()</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_1origin_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>1</span><span>,</span> <span>1</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale08_08_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0.8</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale06_06_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>0.6</span><span>,</span> <span>0.6</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale04_04_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>0.4</span><span>,</span> <span>0.4</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale02_02_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>0.2</span><span>,</span> <span>0.2</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_01_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>0.1</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale001_001_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>0.01</span><span>,</span> <span>0.01</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale0001_0001_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>0.001</span><span>,</span> <span>0.001</span><span>])</span>
<span>print</span><span>()</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_1origin_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>1</span><span>,</span> <span>1</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale2_2_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>2</span><span>,</span> <span>2</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale5_5_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>5</span><span>,</span> <span>5</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale10_10_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>10</span><span>,</span> <span>10</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale20_20_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>20</span><span>,</span> <span>20</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale50_50_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>50</span><span>,</span> <span>50</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale100_100_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>100</span><span>,</span> <span>100</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale300_300_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
<span>sc</span><span>=</span><span>[</span><span>300</span><span>,</span> <span>300</span><span>])</span>
<span>from</span> <span>torchvision.datasets</span> <span>import</span> <span>OxfordIIITPet</span>
<span>from</span> <span>torchvision.transforms.v2</span> <span>import</span> <span>RandomAffine</span>
<span>from</span> <span>torchvision.transforms.functional</span> <span>import</span> <span>InterpolationMode</span>

<span>randomaffine</span> <span>=</span> <span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>90</span><span>)</span>
<span>randomaffine</span> <span>=</span> <span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>-</span><span>90</span><span>,</span> <span>90</span><span>],</span>
                            <span>translate</span><span>=</span><span>None</span><span>,</span>
                            <span>scale</span><span>=</span><span>None</span><span>,</span>
                            <span>shear</span><span>=</span><span>None</span><span>,</span>
                            <span>interpolation</span><span>=</span><span>InterpolationMode</span><span>.</span><span>NEAREST</span><span>,</span>
                            <span>fill</span><span>=</span><span>0</span><span>,</span>
                            <span>center</span><span>=</span><span>None</span><span>)</span>
<span>randomaffine</span>
<span># RandomAffine(degrees=[-90, 90], # interpolation=InterpolationMode.NEAREST, # fill=0) </span>
<span>randomaffine</span><span>.</span><span>degrees</span>
<span># [-90.0, 90.0] </span>
<span>print</span><span>(</span><span>randomaffine</span><span>.</span><span>translate</span><span>)</span>
<span># None </span>
<span>print</span><span>(</span><span>randomaffine</span><span>.</span><span>scale</span><span>)</span>
<span># None </span>
<span>print</span><span>(</span><span>randomaffine</span><span>.</span><span>shear</span><span>)</span>
<span># None </span>
<span>randomaffine</span><span>.</span><span>interpolation</span>
<span># <InterpolationMode.NEAREST: 'nearest'> </span>
<span>randomaffine</span><span>.</span><span>fill</span>
<span># 0 </span>
<span>print</span><span>(</span><span>randomaffine</span><span>.</span><span>center</span><span>)</span>
<span># None </span>
<span>origin_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>None</span>
    <span># transform=RandomAffine(degrees=[0, 0]) </span><span>)</span>

<span>d90_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span> <span># `d` is degrees. </span>    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>90</span><span>)</span>
    <span># transform=RandomAffine(degrees=[-90, 90]) </span><span>)</span>

<span>d90_90_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>90</span><span>,</span> <span>90</span><span>])</span>
<span>)</span>

<span>dn90n90_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span> <span># `n` is negative. </span>    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>-</span><span>90</span><span>,</span> <span>-</span><span>90</span><span>])</span>
<span>)</span>

<span>d180_180_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>180</span><span>,</span> <span>180</span><span>])</span>
<span>)</span>

<span>hrvrtran_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span> <span># `hr` is horizontal and `vr` is vertical. </span>    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>               <span># `tran` is translate. </span>    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>translate</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0.5</span><span>])</span>
<span>)</span>

<span>hrtran_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>translate</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0</span><span>])</span>
<span>)</span>

<span>vrtran_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>translate</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0.5</span><span>])</span>
<span>)</span>

<span>dn45n45fgray_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>-</span><span>45</span><span>,</span> <span>-</span><span>45</span><span>],</span> <span>fill</span><span>=</span><span>150</span><span>)</span>
<span>)</span>

<span>d135_135fpurple_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>135</span><span>,</span> <span>135</span><span>],</span> <span>fill</span><span>=</span><span>[</span><span>160</span><span>,</span> <span>32</span><span>,</span> <span>240</span><span>])</span>
<span>)</span>

<span>d180_180c270_200_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span> <span># `c` is center. </span>    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>180</span><span>,</span> <span>180</span><span>],</span> <span>center</span><span>=</span><span>[</span><span>270</span><span>,</span> <span>200</span><span>])</span>
<span>)</span>

<span>scale01_5_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>5</span><span>])</span>
<span>)</span>

<span>scale01_1_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>1</span><span>])</span>
<span>)</span>

<span>scale1_5_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>1</span><span>,</span> <span>5</span><span>])</span>
<span>)</span>

<span>scale1_1origin_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>1</span><span>,</span> <span>1</span><span>])</span>
<span>)</span>

<span>scale08_08_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0.8</span><span>])</span>
<span>)</span>

<span>scale06_06_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.6</span><span>,</span> <span>0.6</span><span>])</span>
<span>)</span>

<span>scale04_04_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.4</span><span>,</span> <span>0.4</span><span>])</span>
<span>)</span>

<span>scale02_02_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.2</span><span>,</span> <span>0.2</span><span>])</span>
<span>)</span>

<span>scale01_01_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>0.1</span><span>])</span>
<span>)</span>

<span>scale001_001_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.01</span><span>,</span> <span>0.01</span><span>])</span>
<span>)</span>

<span>scale0001_0001_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>0.001</span><span>,</span> <span>0.001</span><span>])</span>
<span>)</span>

<span>scale2_2_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>2</span><span>,</span> <span>2</span><span>])</span>
<span>)</span>

<span>scale5_5_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>5</span><span>,</span> <span>5</span><span>])</span>
<span>)</span>

<span>scale10_10_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>10</span><span>,</span> <span>10</span><span>])</span>
<span>)</span>

<span>scale20_20_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>20</span><span>,</span> <span>20</span><span>])</span>
<span>)</span>

<span>scale50_50_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>50</span><span>,</span> <span>50</span><span>])</span>
<span>)</span>

<span>scale100_100_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>100</span><span>,</span> <span>100</span><span>])</span>
<span>)</span>

<span>scale300_300_data</span> <span>=</span> <span>OxfordIIITPet</span><span>(</span>
    <span>root</span><span>=</span><span>"</span><span>data</span><span>"</span><span>,</span>
    <span>transform</span><span>=</span><span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> <span>scale</span><span>=</span><span>[</span><span>300</span><span>,</span> <span>300</span><span>])</span>
<span>)</span>

<span>import</span> <span>matplotlib.pyplot</span> <span>as</span> <span>plt</span>

<span>def</span> <span>show_images1</span><span>(</span><span>data</span><span>,</span> <span>main_title</span><span>=</span><span>None</span><span>):</span>
    <span>plt</span><span>.</span><span>figure</span><span>(</span><span>figsize</span><span>=</span><span>[</span><span>10</span><span>,</span> <span>5</span><span>])</span>
    <span>plt</span><span>.</span><span>suptitle</span><span>(</span><span>t</span><span>=</span><span>main_title</span><span>,</span> <span>y</span><span>=</span><span>0.8</span><span>,</span> <span>fontsize</span><span>=</span><span>14</span><span>)</span>
    <span>for</span> <span>i</span><span>,</span> <span>(</span><span>im</span><span>,</span> <span>_</span><span>)</span> <span>in</span> <span>zip</span><span>(</span><span>range</span><span>(</span><span>1</span><span>,</span> <span>6</span><span>),</span> <span>data</span><span>):</span>
        <span>plt</span><span>.</span><span>subplot</span><span>(</span><span>1</span><span>,</span> <span>5</span><span>,</span> <span>i</span><span>)</span>
        <span>plt</span><span>.</span><span>imshow</span><span>(</span><span>X</span><span>=</span><span>im</span><span>)</span>
        <span>plt</span><span>.</span><span>xticks</span><span>(</span><span>ticks</span><span>=</span><span>[])</span>
        <span>plt</span><span>.</span><span>yticks</span><span>(</span><span>ticks</span><span>=</span><span>[])</span>
    <span>plt</span><span>.</span><span>tight_layout</span><span>()</span>
    <span>plt</span><span>.</span><span>show</span><span>()</span>

<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>origin_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>d90_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d90_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>d90_90_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d90_90_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>dn90n90_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>dn90n90_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>d180_180_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d180_180_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>hrvrtran_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>hrvrtran_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>hrtran_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>hrtran_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>vrtran_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>vrtran_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>dn45n45fgray_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>dn45n45fgray_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>d135_135fpurple_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d135_135fpurple_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>d180_180c270_200_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d180_180c270_200_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale01_5_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_5_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale01_1_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_1_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale1_5_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_5_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale1_1origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_1origin_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale08_08_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale08_08_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale06_06_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale06_06_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale04_04_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale04_04_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale02_02_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale02_02_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale01_01_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_01_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale001_001_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale001_001_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale0001_0001_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale0001_0001_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale1_1origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_1origin_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale2_2_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale2_2_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale5_5_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale5_5_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale10_10_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale10_10_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale20_20_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale20_20_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale50_50_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale50_50_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale100_100_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale100_100_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>scale300_300_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale300_300_data</span><span>"</span><span>)</span>

<span># ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ </span><span>def</span> <span>show_images2</span><span>(</span><span>data</span><span>,</span> <span>main_title</span><span>=</span><span>None</span><span>,</span> <span>d</span><span>=</span><span>0</span><span>,</span> <span>t</span><span>=</span><span>None</span><span>,</span>
                 <span>sc</span><span>=</span><span>None</span><span>,</span> <span>sh</span><span>=</span><span>None</span><span>,</span> <span>f</span><span>=</span><span>0</span><span>,</span> <span>c</span><span>=</span><span>None</span><span>):</span>
    <span>plt</span><span>.</span><span>figure</span><span>(</span><span>figsize</span><span>=</span><span>[</span><span>10</span><span>,</span> <span>5</span><span>])</span>
    <span>plt</span><span>.</span><span>suptitle</span><span>(</span><span>t</span><span>=</span><span>main_title</span><span>,</span> <span>y</span><span>=</span><span>0.8</span><span>,</span> <span>fontsize</span><span>=</span><span>14</span><span>)</span>
    <span>for</span> <span>i</span><span>,</span> <span>(</span><span>im</span><span>,</span> <span>_</span><span>)</span> <span>in</span> <span>zip</span><span>(</span><span>range</span><span>(</span><span>1</span><span>,</span> <span>6</span><span>),</span> <span>data</span><span>):</span>
        <span>plt</span><span>.</span><span>subplot</span><span>(</span><span>1</span><span>,</span> <span>5</span><span>,</span> <span>i</span><span>)</span>
        <span>ra</span> <span>=</span> <span>RandomAffine</span><span>(</span><span>degrees</span><span>=</span><span>d</span><span>,</span> <span>translate</span><span>=</span><span>t</span><span>,</span> <span>scale</span><span>=</span><span>sc</span><span>,</span> <span># Here </span>                          <span>shear</span><span>=</span><span>sh</span><span>,</span> <span>center</span><span>=</span><span>c</span><span>,</span> <span>fill</span><span>=</span><span>f</span><span>)</span>
        <span>plt</span><span>.</span><span>imshow</span><span>(</span><span>X</span><span>=</span><span>ra</span><span>(</span><span>im</span><span>))</span> <span># Here </span>        <span>plt</span><span>.</span><span>xticks</span><span>(</span><span>ticks</span><span>=</span><span>[])</span>
        <span>plt</span><span>.</span><span>yticks</span><span>(</span><span>ticks</span><span>=</span><span>[])</span>
    <span>plt</span><span>.</span><span>tight_layout</span><span>()</span>
    <span>plt</span><span>.</span><span>show</span><span>()</span>

<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>origin_data</span><span>"</span><span>)</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d90_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>90</span><span>)</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d90_90_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>90</span><span>,</span> <span>90</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>dn90n90_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>-</span><span>90</span><span>,</span> <span>-</span><span>90</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d180_180_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>180</span><span>,</span> <span>180</span><span>])</span>
<span>print</span><span>()</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>hrvrtran_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>t</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0.5</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>hrtran_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>t</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>vrtran_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>t</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0.5</span><span>])</span>
<span>print</span><span>()</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>dn45n45fgray_data</span><span>"</span><span>,</span>
             <span>d</span><span>=</span><span>[</span><span>-</span><span>45</span><span>,</span> <span>-</span><span>45</span><span>],</span> <span>f</span><span>=</span><span>150</span><span>)</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d135_135fpurple_data</span><span>"</span><span>,</span>
             <span>d</span><span>=</span><span>[</span><span>135</span><span>,</span> <span>135</span><span>],</span> <span>f</span><span>=</span><span>[</span><span>160</span><span>,</span> <span>32</span><span>,</span> <span>240</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>d180_180c270_200_data</span><span>"</span><span>,</span>
             <span>d</span><span>=</span><span>[</span><span>180</span><span>,</span> <span>180</span><span>],</span> <span>c</span><span>=</span><span>[</span><span>270</span><span>,</span> <span>200</span><span>])</span>
<span>print</span><span>()</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_5_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0.0</span><span>,</span> <span>0.0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>5</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_1_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0.0</span><span>,</span> <span>0.0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>1</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_5_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0.0</span><span>,</span> <span>0.0</span><span>],</span> 
             <span>sc</span><span>=</span><span>[</span><span>1</span><span>,</span> <span>5</span><span>])</span>
<span>print</span><span>()</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_1origin_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> 
             <span>sc</span><span>=</span><span>[</span><span>1</span><span>,</span> <span>1</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale08_08_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>0.8</span><span>,</span> <span>0.8</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale06_06_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>0.6</span><span>,</span> <span>0.6</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale04_04_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>0.4</span><span>,</span> <span>0.4</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale02_02_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>0.2</span><span>,</span> <span>0.2</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale01_01_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>0.1</span><span>,</span> <span>0.1</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale001_001_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>0.01</span><span>,</span> <span>0.01</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale0001_0001_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> 
             <span>sc</span><span>=</span><span>[</span><span>0.001</span><span>,</span> <span>0.001</span><span>])</span>
<span>print</span><span>()</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale1_1origin_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span> 
             <span>sc</span><span>=</span><span>[</span><span>1</span><span>,</span> <span>1</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale2_2_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>2</span><span>,</span> <span>2</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale5_5_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>5</span><span>,</span> <span>5</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale10_10_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>10</span><span>,</span> <span>10</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale20_20_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>20</span><span>,</span> <span>20</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale50_50_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>50</span><span>,</span> <span>50</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale100_100_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>100</span><span>,</span> <span>100</span><span>])</span>
<span>show_images2</span><span>(</span><span>data</span><span>=</span><span>origin_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>scale300_300_data</span><span>"</span><span>,</span> <span>d</span><span>=</span><span>[</span><span>0</span><span>,</span> <span>0</span><span>],</span>
             <span>sc</span><span>=</span><span>[</span><span>300</span><span>,</span> <span>300</span><span>])</span>
from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import RandomAffine from torchvision.transforms.functional import InterpolationMode randomaffine = RandomAffine(degrees=90) randomaffine = RandomAffine(degrees=[-90, 90], translate=None, scale=None, shear=None, interpolation=InterpolationMode.NEAREST, fill=0, center=None) randomaffine # RandomAffine(degrees=[-90, 90], # interpolation=InterpolationMode.NEAREST, # fill=0) randomaffine.degrees # [-90.0, 90.0] print(randomaffine.translate) # None print(randomaffine.scale) # None print(randomaffine.shear) # None randomaffine.interpolation # <InterpolationMode.NEAREST: 'nearest'> randomaffine.fill # 0 print(randomaffine.center) # None origin_data = OxfordIIITPet( root="data", transform=None # transform=RandomAffine(degrees=[0, 0]) ) d90_data = OxfordIIITPet( # `d` is degrees. root="data", transform=RandomAffine(degrees=90) # transform=RandomAffine(degrees=[-90, 90]) ) d90_90_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[90, 90]) ) dn90n90_data = OxfordIIITPet( # `n` is negative. root="data", transform=RandomAffine(degrees=[-90, -90]) ) d180_180_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[180, 180]) ) hrvrtran_data = OxfordIIITPet( # `hr` is horizontal and `vr` is vertical. root="data", # `tran` is translate. transform=RandomAffine(degrees=[0, 0], translate=[0.8, 0.5]) ) hrtran_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], translate=[0.8, 0]) ) vrtran_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], translate=[0, 0.5]) ) dn45n45fgray_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[-45, -45], fill=150) ) d135_135fpurple_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[135, 135], fill=[160, 32, 240]) ) d180_180c270_200_data = OxfordIIITPet( # `c` is center. root="data", transform=RandomAffine(degrees=[180, 180], center=[270, 200]) ) scale01_5_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.1, 5]) ) scale01_1_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.1, 1]) ) scale1_5_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[1, 5]) ) scale1_1origin_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[1, 1]) ) scale08_08_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.8, 0.8]) ) scale06_06_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.6, 0.6]) ) scale04_04_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.4, 0.4]) ) scale02_02_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.2, 0.2]) ) scale01_01_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.1, 0.1]) ) scale001_001_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.01, 0.01]) ) scale0001_0001_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[0.001, 0.001]) ) scale2_2_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[2, 2]) ) scale5_5_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[5, 5]) ) scale10_10_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[10, 10]) ) scale20_20_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[20, 20]) ) scale50_50_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[50, 50]) ) scale100_100_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[100, 100]) ) scale300_300_data = OxfordIIITPet( root="data", transform=RandomAffine(degrees=[0, 0], scale=[300, 300]) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") show_images1(data=d90_data, main_title="d90_data") show_images1(data=d90_90_data, main_title="d90_90_data") show_images1(data=dn90n90_data, main_title="dn90n90_data") show_images1(data=d180_180_data, main_title="d180_180_data") print() show_images1(data=hrvrtran_data, main_title="hrvrtran_data") show_images1(data=hrtran_data, main_title="hrtran_data") show_images1(data=vrtran_data, main_title="vrtran_data") print() show_images1(data=dn45n45fgray_data, main_title="dn45n45fgray_data") show_images1(data=d135_135fpurple_data, main_title="d135_135fpurple_data") show_images1(data=d180_180c270_200_data, main_title="d180_180c270_200_data") print() show_images1(data=scale01_5_data, main_title="scale01_5_data") show_images1(data=scale01_1_data, main_title="scale01_1_data") show_images1(data=scale1_5_data, main_title="scale1_5_data") print() show_images1(data=scale1_1origin_data, main_title="scale1_1origin_data") show_images1(data=scale08_08_data, main_title="scale08_08_data") show_images1(data=scale06_06_data, main_title="scale06_06_data") show_images1(data=scale04_04_data, main_title="scale04_04_data") show_images1(data=scale02_02_data, main_title="scale02_02_data") show_images1(data=scale01_01_data, main_title="scale01_01_data") show_images1(data=scale001_001_data, main_title="scale001_001_data") show_images1(data=scale0001_0001_data, main_title="scale0001_0001_data") print() show_images1(data=scale1_1origin_data, main_title="scale1_1origin_data") show_images1(data=scale2_2_data, main_title="scale2_2_data") show_images1(data=scale5_5_data, main_title="scale5_5_data") show_images1(data=scale10_10_data, main_title="scale10_10_data") show_images1(data=scale20_20_data, main_title="scale20_20_data") show_images1(data=scale50_50_data, main_title="scale50_50_data") show_images1(data=scale100_100_data, main_title="scale100_100_data") show_images1(data=scale300_300_data, main_title="scale300_300_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, d=0, t=None, sc=None, sh=None, f=0, c=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) ra = RandomAffine(degrees=d, translate=t, scale=sc, # Here shear=sh, center=c, fill=f) plt.imshow(X=ra(im)) # Here plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") show_images2(data=origin_data, main_title="d90_data", d=90) show_images2(data=origin_data, main_title="d90_90_data", d=[90, 90]) show_images2(data=origin_data, main_title="dn90n90_data", d=[-90, -90]) show_images2(data=origin_data, main_title="d180_180_data", d=[180, 180]) print() show_images2(data=origin_data, main_title="hrvrtran_data", d=[0, 0], t=[0.8, 0.5]) show_images2(data=origin_data, main_title="hrtran_data", d=[0, 0], t=[0.8, 0]) show_images2(data=origin_data, main_title="vrtran_data", d=[0, 0], t=[0, 0.5]) print() show_images2(data=origin_data, main_title="dn45n45fgray_data", d=[-45, -45], f=150) show_images2(data=origin_data, main_title="d135_135fpurple_data", d=[135, 135], f=[160, 32, 240]) show_images2(data=origin_data, main_title="d180_180c270_200_data", d=[180, 180], c=[270, 200]) print() show_images2(data=origin_data, main_title="scale01_5_data", d=[0.0, 0.0], sc=[0.1, 5]) show_images2(data=origin_data, main_title="scale01_1_data", d=[0.0, 0.0], sc=[0.1, 1]) show_images2(data=origin_data, main_title="scale1_5_data", d=[0.0, 0.0], sc=[1, 5]) print() show_images2(data=origin_data, main_title="scale1_1origin_data", d=[0, 0], sc=[1, 1]) show_images2(data=origin_data, main_title="scale08_08_data", d=[0, 0], sc=[0.8, 0.8]) show_images2(data=origin_data, main_title="scale06_06_data", d=[0, 0], sc=[0.6, 0.6]) show_images2(data=origin_data, main_title="scale04_04_data", d=[0, 0], sc=[0.4, 0.4]) show_images2(data=origin_data, main_title="scale02_02_data", d=[0, 0], sc=[0.2, 0.2]) show_images2(data=origin_data, main_title="scale01_01_data", d=[0, 0], sc=[0.1, 0.1]) show_images2(data=origin_data, main_title="scale001_001_data", d=[0, 0], sc=[0.01, 0.01]) show_images2(data=origin_data, main_title="scale0001_0001_data", d=[0, 0], sc=[0.001, 0.001]) print() show_images2(data=origin_data, main_title="scale1_1origin_data", d=[0, 0], sc=[1, 1]) show_images2(data=origin_data, main_title="scale2_2_data", d=[0, 0], sc=[2, 2]) show_images2(data=origin_data, main_title="scale5_5_data", d=[0, 0], sc=[5, 5]) show_images2(data=origin_data, main_title="scale10_10_data", d=[0, 0], sc=[10, 10]) show_images2(data=origin_data, main_title="scale20_20_data", d=[0, 0], sc=[20, 20]) show_images2(data=origin_data, main_title="scale50_50_data", d=[0, 0], sc=[50, 50]) show_images2(data=origin_data, main_title="scale100_100_data", d=[0, 0], sc=[100, 100]) show_images2(data=origin_data, main_title="scale300_300_data", d=[0, 0], sc=[300, 300])

Enter fullscreen mode Exit fullscreen mode






原文链接:RandomAffine in PyTorch (1)

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
The greatest test of courage on earth is to bear defeat without losing heart.
世界上对勇气的最大考验是忍受失败而不丧失信心
评论 抢沙发

请登录后发表评论

    暂无评论内容