RandomAutocontrast in PyTorch

Buy Me a Coffee

*Memos:

RandomAutocontrast() can randomly autocontrast an image with a given probability as shown below:

*Memos:

  • The 1st argument for initialization is p(Optional-Default:0.5-Type:int or float): *Memos:
    • It’s the probability of whether an image is inverted or not.
    • It must be 0 <= x <= 1.
  • 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>RandomAutocontrast</span>
<span>randomautocontrast</span> <span>=</span> <span>RandomAutocontrast</span><span>()</span>
<span>randomautocontrast</span> <span>=</span> <span>RandomAutocontrast</span><span>(</span><span>p</span><span>=</span><span>0.5</span><span>)</span>
<span>randomautocontrast</span>
<span># RandomAutocontrast(p=0.5) </span>
<span>randomautocontrast</span><span>.</span><span>p</span>
<span># 0.5 </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>)</span>
<span>p0_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>RandomAutocontrast</span><span>(</span><span>p</span><span>=</span><span>0</span><span>)</span>
<span>)</span>
<span>p05_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>RandomAutocontrast</span><span>(</span><span>p</span><span>=</span><span>0.5</span><span>)</span>
<span># transform=RandomAutocontrast() </span><span>)</span>
<span>p1_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>RandomAutocontrast</span><span>(</span><span>p</span><span>=</span><span>1</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>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p0_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p0_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p0_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p0_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p0_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p0_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p05_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p05_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p05_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p05_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p05_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p05_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p1_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p1_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p1_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p1_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p1_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p1_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>prob</span><span>=</span><span>0</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>RandomAutocontrast</span><span>(</span><span>p</span><span>=</span><span>prob</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>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>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>p0_data</span><span>"</span><span>,</span> <span>prob</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>p0_data</span><span>"</span><span>,</span> <span>prob</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>p0_data</span><span>"</span><span>,</span> <span>prob</span><span>=</span><span>0</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>p05_data</span><span>"</span><span>,</span> <span>prob</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>p05_data</span><span>"</span><span>,</span> <span>prob</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>p05_data</span><span>"</span><span>,</span> <span>prob</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>p1_data</span><span>"</span><span>,</span> <span>prob</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>p1_data</span><span>"</span><span>,</span> <span>prob</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>p1_data</span><span>"</span><span>,</span> <span>prob</span><span>=</span><span>1</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>RandomAutocontrast</span>

<span>randomautocontrast</span> <span>=</span> <span>RandomAutocontrast</span><span>()</span>
<span>randomautocontrast</span> <span>=</span> <span>RandomAutocontrast</span><span>(</span><span>p</span><span>=</span><span>0.5</span><span>)</span>

<span>randomautocontrast</span>
<span># RandomAutocontrast(p=0.5) </span>
<span>randomautocontrast</span><span>.</span><span>p</span> 
<span># 0.5 </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>)</span>

<span>p0_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>RandomAutocontrast</span><span>(</span><span>p</span><span>=</span><span>0</span><span>)</span>
<span>)</span>

<span>p05_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>RandomAutocontrast</span><span>(</span><span>p</span><span>=</span><span>0.5</span><span>)</span>
    <span># transform=RandomAutocontrast() </span><span>)</span>

<span>p1_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>RandomAutocontrast</span><span>(</span><span>p</span><span>=</span><span>1</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>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p0_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p0_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p0_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p0_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p0_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p0_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p05_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p05_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p05_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p05_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p05_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p05_data</span><span>"</span><span>)</span>
<span>print</span><span>()</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p1_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p1_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p1_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p1_data</span><span>"</span><span>)</span>
<span>show_images1</span><span>(</span><span>data</span><span>=</span><span>p1_data</span><span>,</span> <span>main_title</span><span>=</span><span>"</span><span>p1_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>prob</span><span>=</span><span>0</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>RandomAutocontrast</span><span>(</span><span>p</span><span>=</span><span>prob</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>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>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>p0_data</span><span>"</span><span>,</span> <span>prob</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>p0_data</span><span>"</span><span>,</span> <span>prob</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>p0_data</span><span>"</span><span>,</span> <span>prob</span><span>=</span><span>0</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>p05_data</span><span>"</span><span>,</span> <span>prob</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>p05_data</span><span>"</span><span>,</span> <span>prob</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>p05_data</span><span>"</span><span>,</span> <span>prob</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>p1_data</span><span>"</span><span>,</span> <span>prob</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>p1_data</span><span>"</span><span>,</span> <span>prob</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>p1_data</span><span>"</span><span>,</span> <span>prob</span><span>=</span><span>1</span><span>)</span>
from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import RandomAutocontrast randomautocontrast = RandomAutocontrast() randomautocontrast = RandomAutocontrast(p=0.5) randomautocontrast # RandomAutocontrast(p=0.5) randomautocontrast.p # 0.5 origin_data = OxfordIIITPet( root="data", transform=None ) p0_data = OxfordIIITPet( root="data", transform=RandomAutocontrast(p=0) ) p05_data = OxfordIIITPet( root="data", transform=RandomAutocontrast(p=0.5) # transform=RandomAutocontrast() ) p1_data = OxfordIIITPet( root="data", transform=RandomAutocontrast(p=1) ) 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") print() show_images1(data=p0_data, main_title="p0_data") show_images1(data=p0_data, main_title="p0_data") show_images1(data=p0_data, main_title="p0_data") print() show_images1(data=p05_data, main_title="p05_data") show_images1(data=p05_data, main_title="p05_data") show_images1(data=p05_data, main_title="p05_data") print() show_images1(data=p1_data, main_title="p1_data") show_images1(data=p1_data, main_title="p1_data") show_images1(data=p1_data, main_title="p1_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, prob=0): 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 = RandomAutocontrast(p=prob) plt.imshow(X=ra(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="p0_data", prob=0) show_images2(data=origin_data, main_title="p0_data", prob=0) show_images2(data=origin_data, main_title="p0_data", prob=0) print() show_images2(data=origin_data, main_title="p05_data", prob=0.5) show_images2(data=origin_data, main_title="p05_data", prob=0.5) show_images2(data=origin_data, main_title="p05_data", prob=0.5) print() show_images2(data=origin_data, main_title="p1_data", prob=1) show_images2(data=origin_data, main_title="p1_data", prob=1) show_images2(data=origin_data, main_title="p1_data", prob=1)

Enter fullscreen mode Exit fullscreen mode




原文链接:RandomAutocontrast in PyTorch

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
love understands love; it needs no talk.
相爱的心息息相通,无需用言语倾诉
评论 抢沙发

请登录后发表评论

    暂无评论内容