El camino de la modernización de TorchVision – Memorias de un desarrollador de TorchVision – 3

  • 21 de mayo de 2022
  • Vasilis Vryniotis
  • . Sin comentarios

Ha pasado un tiempo desde la última vez que publiqué una nueva entrada en la serie de memorias de TorchVision. Pensé, anteriormente compartí noticias en el blog oficial de PyTorch y en Gorjeo, Pensé que sería una buena idea hablar más sobre lo que sucedió en la última versión de TorchVision (v0.12), lo que saldrá en la próxima (v0.13) y cuáles son nuestros planes para 2022H2. Mi objetivo es ir más allá de proporcionar una descripción general de las nuevas funciones y, más bien, brindar información sobre a dónde queremos llevar el proyecto en los próximos meses.

TorchVision v0.12 fue un lanzamiento considerable con doble enfoque: a) actualizar nuestras políticas de obsolescencia y contribución de modelos para mejorar la transparencia y atraer a más contribuyentes de la comunidad y b) duplicar nuestros esfuerzos de modernización al agregar nuevas arquitecturas de modelos populares, conjuntos de datos y técnicas de ML.

Actualización de nuestras políticas

La clave para un proyecto de código abierto exitoso es mantener una comunidad sana y activa que contribuya y lo impulse. Por lo tanto, un objetivo importante para nuestro equipo es aumentar la cantidad de contribuciones de la comunidad, con la visión a largo plazo de permitir que la comunidad contribuya con grandes características (nuevos modelos, técnicas de ML, etc.) además de las mejoras incrementales habituales (correcciones de errores/documentos). , pequeñas características, etc.).

Históricamente, aunque la comunidad era ansioso de aportar tales características, nuestro equipo dudó en aceptarlas. El bloqueador clave fue la falta de un modelo concreto de contribución y política de depreciación. Para abordar esto, Joao Gomes trabajó con la comunidad para redactar y publicar nuestro primer pautas de contribución modelo lo que brinda claridad sobre el proceso de contribución de nuevas arquitecturas, pesos previamente entrenados y características que requieren entrenamiento del modelo. Además, Nicolas Hug trabajó con los desarrolladores centrales de PyTorch para formular y adoptar un política de desaprobación.

Los cambios antes mencionados tuvieron efectos positivos inmediatos en el proyecto. La nueva política de contribuciones nos ayudó a recibir numerosas contribuciones de la comunidad para funciones grandes (más detalles a continuación) y la clara política de obsolescencia nos permitió limpiar nuestra base de código y al mismo tiempo asegurarnos de que TorchVision ofrece sólidas garantías de compatibilidad con versiones anteriores. Nuestro equipo está muy motivado para continuar trabajando con los desarrolladores de código abierto, los equipos de investigación y los creadores de bibliotecas posteriores para mantener TorchVision relevante y actualizado. Si tiene alguna retroalimentación, comentario o una solicitud de función, por favor alcanzar para nosotros.

Modernización de TorchVision

No es ningún secreto que en los últimos lanzamientos nuestro objetivo fue agregar a TorchVision todos los aumentos, pérdidas, capas, utilidades de entrenamiento y arquitecturas novedosas necesarias para que nuestros usuarios puedan reproducir fácilmente los resultados de SOTA usando PyTorch. TorchVision v0.12 continuó por ese camino:

  • Nuestros colaboradores de la comunidad rockstar, Hu Ye y Zhiqiang Wang, han contribuido con la FCOS arquitectura que es un modelo de detección de objetos de una etapa.

  • Nicolas Hug ha agregado soporte de flujo óptico en TorchVision al agregar el BALSA arquitectura.

  • Yiwen Song ha agregado soporte para Transformador de visión (ViT) y he añadido el ConvNext arquitectura junto con pesos pre-entrenados mejorados.

  • Finalmente con el ayuda de nuestra comunidad, hemos agregado 14 nueva clasificación y 5 nuevo flujo óptico conjuntos de datos

  • Como de costumbre, el lanzamiento vino con numerosas mejoras menores, correcciones de errores y mejoras en la documentación. Para ver todas las funciones nuevas y la lista de nuestros colaboradores, consulte la notas de la versión v0.12.

TorchVision v0.13 está a la vuelta de la esquina, con su lanzamiento previsto para principios de junio. Es un lanzamiento muy grande con una cantidad significativa de nuevas funciones y grandes mejoras en la API.

Terminando las modernizaciones y cerrando la brecha de SOTA

Seguimos con nuestro viaje de modernización de la biblioteca agregando las primitivas, las arquitecturas de modelos y las utilidades de receta necesarias para producir resultados SOTA para tareas clave de visión por computadora:

  • Con la ayuda de Victor Fomin, he agregado importantes técnicas de aumento de datos que faltan, como AgoMix, Jitter a gran escala etc. Estas técnicas nos permitieron cerrar la brecha de SOTA y producir mejores pesos (ver más abajo).

  • Con la ayuda de Aditya Oke, Hu Ye, Yassine Alouini y Abhijit Deo, hemos agregado importantes elementos básicos comunes, como el Soltar bloque capa, la MLP bloque, el cIoU & DIO pérdida, etc. Finalmente, trabajé con Shen Li para solucionar un problema de larga data en PyTorch’s SyncBatchNorm capa que afectó a los modelos de detección.

  • Hu Ye con el apoyo de Joao Gomes añadió Transformador giratorio junto con pesos pre-entrenados mejorados. agregué el EfficientNetV2 arquitectura y varias optimizaciones arquitectónicas posteriores al artículo sobre la implementación de RetinaNet, FasterRCNN y MaskRCNN.

  • Como mencioné anteriormente en el blog de PyTorch, hemos realizado un esfuerzo significativo para mejorar nuestros pesos preentrenados mediante la creación de un mejor receta de entrenamiento. Esto nos permitió mejorar la precisión de nuestros Modelos de clasificación por 3 puntos de precisión, logrando nuevos SOTA para varias arquitecturas. Un esfuerzo similar se realizó para Detección y Segmentación, donde mejoramos la precisión de los modelos en más de 8,1 mA en promedio. Finalmente, Yosua Michael M trabajó con Laura Gustafson, Mannat Singhand y Aaron Adcock para agregar apoyo a ESTILOun conjunto de pesas preentrenadas de última generación y alta precisión para ViT y RegNets.

Nueva API de soporte de peso múltiple

como yo discutido previamente en el blog de PyTorch, TorchVision ha ampliado su mecanismo de generación de modelos existente para admitir múltiples pesos preentrenados. La nueva API es totalmente compatible con versiones anteriores, permite instanciar modelos con diferentes pesos y proporciona mecanismos para obtener metadatos útiles (como categorías, número de parámetros, métricas, etc.) y las transformaciones de inferencia de preprocesamiento del modelo. Hay un comentario dedicado problema en Github para ayudarnos a planchar nuestros bordes ásperos.

Documentación renovada

Nicolas Hug lideró los esfuerzos de reestructuración de la documentación del modelo de TorchVision. La nueva estructura puede hacer uso de las características que provienen de la API de soporte de pesos múltiples para ofrecer una mejor documentación de los pesos preentrenados y su uso en la biblioteca. Un gran agradecimiento a los miembros de nuestra comunidad por ayudándonos documentar todas las arquitecturas a tiempo.

Aunque nuestra hoja de ruta detallada para 2022H2 aún no está finalizada, aquí hay algunos proyectos clave en los que estamos planeando trabajar actualmente:

  • Estamos trabajando en estrecha colaboración con Haoqi Fan y Christoph Feichtenhofer de Vídeo PyTorchpara agregar el Transformador de visión multiescala mejorado (MViTv2) arquitectura a TorchVision.

  • Philip Meier y Nicolas Hug están trabajando en una versión mejorada del API de conjuntos de datos (v2) que utiliza TorchData y tuberías de datos. Philip Meier, Victor Fomin y yo también estamos trabajando para ampliar nuestra API de transformaciones (v2) para admitir no solo imágenes, sino también cuadros delimitadores, máscaras de segmentación, etc.

  • Finalmente, la comunidad nos está ayudando a mantener TorchVision actualizado y relevante al agregar arquitecturas y técnicas populares. Lezwon Castelino está trabajando actualmente con Victor Fomin para agregar el SimpleCopiarPegar aumento. Hu Ye está trabajando actualmente para agregar el Arquitectura DeTR.

Si desea involucrarse en el proyecto, por favor, eche un vistazo a nuestro buenos primeros números y el Se busca ayudante liza. Si es un veterano de PyTorch/Computer Vision y le gustaría contribuir, tenemos varios proyectos candidatos para nuevos operadores, pérdidas, aumentos y modelos.

Espero que hayas encontrado interesante el artículo. Si quieres ponerte en contacto contáctame LinkedIn o Gorjeo.



Fuente del artículo

Deja un comentario