Multiplicador de datos: aumente la cantidad de datos mientras satisface la construcción de imágenes objetivo pequeñas

prefacio

  Según el libro de la sandía: los datos y las características determinan el límite superior del aprendizaje automático, y los modelos y algoritmos solo se aproximan a este límite superior. Por lo tanto, en el aprendizaje automático, a menudo necesitamos una gran cantidad de conjuntos de datos de alta calidad. Por esta razón , hemos probado varios medios de aumento de datos, como:

  1. Aumentar o disminuir el brillo de la imagen
  2. Agregar ruido o filtrar ruido
  3. reflejo de la imagen

......

  Entonces, ¿cómo debemos usar de manera eficiente el conjunto de datos existente para una rápida expansión de datos (datos de imagen + datos Xml), para los requisitos anteriores, podemos dividirlo en dos elementos principales para el procesamiento: escalado y empalme de imágenes, análisis y reproducción de archivos Xml Para esto razón, en este blog, el editor propone un método de reducción y empalme para expandir rápidamente el conjunto de datos para mejorar la cantidad y calidad de los datos. (para conjuntos de datos de tipo Voc)

Costuras de reducción de imagen

  Por ejemplo: cuando obtenemos una imagen A.jpg con un tamaño de píxel de 1920x1080 , necesitamos reducir la imagen A para que se ajuste al estilo 3x3, por lo que debemos reducir la imagen A 3 veces y, al mismo tiempo, necesitamos copiar 9 copias de la imagen, y luego Las 9 imágenes se unen en una nueva imagen del tamaño de la imagen original A. El proceso es el siguiente:

graph TD
读取图像 --> 计算宽高
计算宽高 --> 宽高缩小3倍
宽高缩小3倍 --> Copy9份
Copy9份 --> 集合9份拼接
复制代码

Muestra de imagen original sin etiquetar: Muestra s.jpgde imagen original anotada:image.png

  Al etiquetar las muestras de imágenes originales, podemos ver los siguientes cuadros y números de etiquetas y los archivos xml que los acompañan de la siguiente manera
: etiqueta1: ojos
etiqueta2: nariz
etiqueta3: rubor
etiqueta4: boca

<annotation>
   <folder>11</folder>
   <filename>s.jpg</filename>
   <path>C:\Users\kiven\Desktop\11\s.jpg</path>
   <source>
      <database>Unknown</database>
   </source>
   <size>
      <width>1920</width>
      <height>1080</height>
      <depth>3</depth>
   </size>
   <segmented>0</segmented>
   <object>
      <name>1</name>
      <pose>Unspecified</pose>
      <truncated>0</truncated>
      <difficult>0</difficult>
      <bndbox>
         <xmin>365</xmin>
         <ymin>467</ymin>
         <xmax>676</xmax>
         <ymax>660</ymax>
      </bndbox>
   </object>
   <object>
      <name>1</name>
      <pose>Unspecified</pose>
      <truncated>0</truncated>
      <difficult>0</difficult>
      <bndbox>
         <xmin>1221</xmin>
         <ymin>414</ymin>
         <xmax>1530</xmax>
         <ymax>610</ymax>
      </bndbox>
   </object>
   <object>
      <name>2</name>
      <pose>Unspecified</pose>
      <truncated>0</truncated>
      <difficult>0</difficult>
      <bndbox>
         <xmin>938</xmin>
         <ymin>714</ymin>
         <xmax>1055</xmax>
         <ymax>769</ymax>
      </bndbox>
   </object>
   <object>
      <name>3</name>
      <pose>Unspecified</pose>
      <truncated>0</truncated>
      <difficult>0</difficult>
      <bndbox>
         <xmin>149</xmin>
         <ymin>819</ymin>
         <xmax>535</xmax>
         <ymax>964</ymax>
      </bndbox>
   </object>
   <object>
      <name>3</name>
      <pose>Unspecified</pose>
      <truncated>0</truncated>
      <difficult>0</difficult>
      <bndbox>
         <xmin>1401</xmin>
         <ymin>697</ymin>
         <xmax>1785</xmax>
         <ymax>848</ymax>
      </bndbox>
   </object>
   <object>
      <name>4</name>
      <pose>Unspecified</pose>
      <truncated>0</truncated>
      <difficult>0</difficult>
      <bndbox>
         <xmin>782</xmin>
         <ymin>905</ymin>
         <xmax>1226</xmax>
         <ymax>1042</ymax>
      </bndbox>
   </object>
</annotation>

Reduzca la escala de la imagen cosida:s.jpg

Refactorización de análisis XML

  Al analizar el archivo xml correspondiente a la imagen original, no es difícil encontrar que solo la parte del objeto del nuevo Xml que debe generarse debe cambiarse, y las otras partes pueden mantenerse igual. Al modificar la parte del objeto, debe prestar atención a los siguientes problemas:

  1. Hay uno o más nombres de cada objeto en la especie de imagen original, luego el nombre de la especie de imagen después de la reducción y el empalme debe corresponder a las coordenadas;
  2. pose、truncated和difficult 部分的参数都一样,故而不需要进行更改;
  3. 每个name对应的坐标在进行缩放拼接后对应的值需要转化为整数型计算,在返回时也需要转为整数型返回

程序逻辑:

graph TD
读取标签文件 --> 解析参数
解析参数 --> 获取非object部分参数
解析参数 --> 获取object部分参数
获取非object部分参数 --> 生成xml并填充
获取object部分参数 --> 计算name以及对应的坐标
计算name以及对应的坐标 --> 生成xml并填充
复制代码

经过缩小变换后的标注图如下所示: image.png    我们可以发现在每张小图上把眼睛鼻子腮红嘴巴都标注出来了,没有落下的,检查LabelImg发现也没有错误,编号都一一对应好了,这次的扩充数据算是圆满完成了。

扩增后的Xml文件:

<annotation>
    <folder>11</folder>
    <filename>s.jpg</filename>
    <path>C:\Users\kiven\Desktop\11\s.jpg</path>
    <size>
        <width>1920</width>
        <height>1080</height>
        <depth>3</depth>
    </size>
    <segmented>0</segmented>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>121</xmin>
            <ymin>155</ymin>
            <xmax>225</xmax>
            <ymax>220</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>761</xmin>
            <ymin>155</ymin>
            <xmax>865</xmax>
            <ymax>220</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1401</xmin>
            <ymin>155</ymin>
            <xmax>1505</xmax>
            <ymax>220</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>121</xmin>
            <ymin>515</ymin>
            <xmax>225</xmax>
            <ymax>580</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>761</xmin>
            <ymin>515</ymin>
            <xmax>865</xmax>
            <ymax>580</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1401</xmin>
            <ymin>515</ymin>
            <xmax>1505</xmax>
            <ymax>580</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>121</xmin>
            <ymin>875</ymin>
            <xmax>225</xmax>
            <ymax>940</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>761</xmin>
            <ymin>875</ymin>
            <xmax>865</xmax>
            <ymax>940</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1401</xmin>
            <ymin>875</ymin>
            <xmax>1505</xmax>
            <ymax>940</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>407</xmin>
            <ymin>138</ymin>
            <xmax>510</xmax>
            <ymax>203</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1047</xmin>
            <ymin>138</ymin>
            <xmax>1150</xmax>
            <ymax>203</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1687</xmin>
            <ymin>138</ymin>
            <xmax>1790</xmax>
            <ymax>203</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>407</xmin>
            <ymin>498</ymin>
            <xmax>510</xmax>
            <ymax>563</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1047</xmin>
            <ymin>498</ymin>
            <xmax>1150</xmax>
            <ymax>563</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1687</xmin>
            <ymin>498</ymin>
            <xmax>1790</xmax>
            <ymax>563</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>407</xmin>
            <ymin>858</ymin>
            <xmax>510</xmax>
            <ymax>923</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1047</xmin>
            <ymin>858</ymin>
            <xmax>1150</xmax>
            <ymax>923</ymax>
        </bndbox>
    </object>
    <object>
        <name>1</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1687</xmin>
            <ymin>858</ymin>
            <xmax>1790</xmax>
            <ymax>923</ymax>
        </bndbox>
    </object>
    <object>
        <name>2</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>312</xmin>
            <ymin>238</ymin>
            <xmax>351</xmax>
            <ymax>256</ymax>
        </bndbox>
    </object>
    <object>
        <name>2</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>952</xmin>
            <ymin>238</ymin>
            <xmax>991</xmax>
            <ymax>256</ymax>
        </bndbox>
    </object>
    <object>
        <name>2</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1592</xmin>
            <ymin>238</ymin>
            <xmax>1631</xmax>
            <ymax>256</ymax>
        </bndbox>
    </object>
    <object>
        <name>2</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>312</xmin>
            <ymin>598</ymin>
            <xmax>351</xmax>
            <ymax>616</ymax>
        </bndbox>
    </object>
    <object>
        <name>2</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>952</xmin>
            <ymin>598</ymin>
            <xmax>991</xmax>
            <ymax>616</ymax>
        </bndbox>
    </object>
    <object>
        <name>2</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1592</xmin>
            <ymin>598</ymin>
            <xmax>1631</xmax>
            <ymax>616</ymax>
        </bndbox>
    </object>
    <object>
        <name>2</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>312</xmin>
            <ymin>958</ymin>
            <xmax>351</xmax>
            <ymax>976</ymax>
        </bndbox>
    </object>
    <object>
        <name>2</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>952</xmin>
            <ymin>958</ymin>
            <xmax>991</xmax>
            <ymax>976</ymax>
        </bndbox>
    </object>
    <object>
        <name>2</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1592</xmin>
            <ymin>958</ymin>
            <xmax>1631</xmax>
            <ymax>976</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>49</xmin>
            <ymin>273</ymin>
            <xmax>178</xmax>
            <ymax>321</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>689</xmin>
            <ymin>273</ymin>
            <xmax>818</xmax>
            <ymax>321</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1329</xmin>
            <ymin>273</ymin>
            <xmax>1458</xmax>
            <ymax>321</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>49</xmin>
            <ymin>633</ymin>
            <xmax>178</xmax>
            <ymax>681</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>689</xmin>
            <ymin>633</ymin>
            <xmax>818</xmax>
            <ymax>681</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1329</xmin>
            <ymin>633</ymin>
            <xmax>1458</xmax>
            <ymax>681</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>49</xmin>
            <ymin>993</ymin>
            <xmax>178</xmax>
            <ymax>1041</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>689</xmin>
            <ymin>993</ymin>
            <xmax>818</xmax>
            <ymax>1041</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1329</xmin>
            <ymin>993</ymin>
            <xmax>1458</xmax>
            <ymax>1041</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>467</xmin>
            <ymin>232</ymin>
            <xmax>595</xmax>
            <ymax>282</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1107</xmin>
            <ymin>232</ymin>
            <xmax>1235</xmax>
            <ymax>282</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1747</xmin>
            <ymin>232</ymin>
            <xmax>1875</xmax>
            <ymax>282</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>467</xmin>
            <ymin>592</ymin>
            <xmax>595</xmax>
            <ymax>642</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1107</xmin>
            <ymin>592</ymin>
            <xmax>1235</xmax>
            <ymax>642</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1747</xmin>
            <ymin>592</ymin>
            <xmax>1875</xmax>
            <ymax>642</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>467</xmin>
            <ymin>952</ymin>
            <xmax>595</xmax>
            <ymax>1002</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1107</xmin>
            <ymin>952</ymin>
            <xmax>1235</xmax>
            <ymax>1002</ymax>
        </bndbox>
    </object>
    <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1747</xmin>
            <ymin>952</ymin>
            <xmax>1875</xmax>
            <ymax>1002</ymax>
        </bndbox>
    </object>
    <object>
        <name>4</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>260</xmin>
            <ymin>301</ymin>
            <xmax>408</xmax>
            <ymax>347</ymax>
        </bndbox>
    </object>
    <object>
        <name>4</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>900</xmin>
            <ymin>301</ymin>
            <xmax>1048</xmax>
            <ymax>347</ymax>
        </bndbox>
    </object>
    <object>
        <name>4</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1540</xmin>
            <ymin>301</ymin>
            <xmax>1688</xmax>
            <ymax>347</ymax>
        </bndbox>
    </object>
    <object>
        <name>4</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>260</xmin>
            <ymin>661</ymin>
            <xmax>408</xmax>
            <ymax>707</ymax>
        </bndbox>
    </object>
    <object>
        <name>4</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>900</xmin>
            <ymin>661</ymin>
            <xmax>1048</xmax>
            <ymax>707</ymax>
        </bndbox>
    </object>
    <object>
        <name>4</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1540</xmin>
            <ymin>661</ymin>
            <xmax>1688</xmax>
            <ymax>707</ymax>
        </bndbox>
    </object>
    <object>
        <name>4</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>260</xmin>
            <ymin>1021</ymin>
            <xmax>408</xmax>
            <ymax>1067</ymax>
        </bndbox>
    </object>
    <object>
        <name>4</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>900</xmin>
            <ymin>1021</ymin>
            <xmax>1048</xmax>
            <ymax>1067</ymax>
        </bndbox>
    </object>
    <object>
        <name>4</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>1540</xmin>
            <ymin>1021</ymin>
            <xmax>1688</xmax>
            <ymax>1067</ymax>
        </bndbox>
    </object>
</annotation>

回顾总结

   通过对图像的缩小拼接,我们可以快速完成数据集的扩增,与此同时,我们也得到了较小的目标,为小目标检测打下了数据基础。

Supongo que te gusta

Origin juejin.im/post/7116819375008514061
Recomendado
Clasificación