	{"id":745,"date":"2018-10-26T13:17:33","date_gmt":"2018-10-26T12:17:33","guid":{"rendered":"https:\/\/www.artefact.com\/?post_type=news&#038;p=745"},"modified":"2024-09-20T17:45:00","modified_gmt":"2024-09-20T16:45:00","slug":"tensorflow-and-open-source-made-product-recognition-model","status":"publish","type":"blog","link":"https:\/\/www.artefact.com\/es\/blog\/tensorflow-and-open-source-made-product-recognition-model\/","title":{"rendered":"C\u00f3mo utilizar Tensorflow y sus contribuciones de c\u00f3digo abierto relacionadas para construir un modelo de reconocimiento de productos a medida"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-margin-bottom:40px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_2 1_2 fusion-flex-column avada-news-bloc-image\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element\" style=\"text-align:left;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-1 hover-type-none\"><img decoding=\"async\" width=\"1057\" height=\"591\" title=\"data-driven\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271057%27%20height%3D%27591%27%20viewBox%3D%270%200%201057%20591%27%3E%3Crect%20width%3D%271057%27%20height%3D%27591%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/wp-content\/uploads\/2019\/10\/image00.0.0.jpg\" alt class=\"lazyload img-responsive wp-image-30246\"\/><\/span><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-padding-top:10px;--awb-padding-right:10px;--awb-padding-bottom:10px;--awb-padding-left:10px;--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1\"><p>NOTICIAS \/ CIENCIA DE DATOS<\/p>\n<\/div><div class=\"fusion-text fusion-text-2\"><p>Imag\u00ednese que es usted el director de una nueva empresa de alta tecnolog\u00eda que quiere vender al mercado un producto totalmente nuevo (un nuevo dispositivo IoT, digamos). Ha participado en numerosas conferencias, exposiciones y demostraciones para dar a conocer su producto con antelaci\u00f3n y darlo a conocer. El impacto directo que espera es que las ventas de su producto, una vez lanzado, puedan ser lo suficientemente elevadas como para alcanzar sus objetivos.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-color:#ffffff;--awb-bg-color-hover:#ffffff;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-3\" style=\"--awb-text-color:#000000;\"><p><span style=\"font-weight: 400;\">Imag\u00ednese que es usted el director de una nueva empresa de alta tecnolog\u00eda que quiere vender al mercado un producto totalmente nuevo (un nuevo dispositivo IoT, digamos). Ha participado en numerosas conferencias, exposiciones y demostraciones para dar a conocer su producto con antelaci\u00f3n y darlo a conocer. El impacto directo que espera es que las ventas de su producto, una vez lanzado, puedan ser lo suficientemente elevadas como para alcanzar sus objetivos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">He aqu\u00ed un problema: no dispone de medios para anticipar y estimar la demanda de su producto.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Un dato sencillo que podr\u00eda comprobar es cu\u00e1nto habla la gente de su producto en Internet. Podr\u00eda echar un vistazo a las principales redes sociales (Facebook, Twitter, Instagram...) y cuantificar cu\u00e1ntas publicaciones mencionan su producto. Eso le dar\u00eda una idea de la magnitud de las ventas que podr\u00eda esperar.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tiene dos opciones para reconocer un producto en un post social. Puede analizar su texto realizando Text Mining o puede realizar Image Recognition en la imagen del post. Pero hay un problema con el an\u00e1lisis del texto: cuando un producto sale a la venta, hay pocas posibilidades de que todo el mundo conozca su nombre y lo mencione inmediatamente despu\u00e9s de la fecha de lanzamiento. Por ello, el reconocimiento de im\u00e1genes es la soluci\u00f3n preferida. Para reconocer un producto en im\u00e1genes (si tiene varios productos que reconocer), necesitar\u00e1 realizar <\/span><b>Detecci\u00f3n de objetos<\/b><span style=\"font-weight: 400;\"> y ah\u00ed es donde entra Tensorflow.<\/span><\/p>\n<h3><strong><span style=\"color: #ff0066;\">\u00bfQu\u00e9 es Tensorflow?<\/span><\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Tensorflow es un <strong>c\u00f3digo abierto<\/strong> librer\u00eda matem\u00e1tica, que proporciona APIs estables en Python y C, utilizada para varias tareas de manipulaci\u00f3n data. Es muy conocida y utilizada para aplicaciones de aprendizaje autom\u00e1tico y aprendizaje profundo, como las redes neuronales. Los casos de uso por los que Tensorflow es m\u00e1s conocido son el reconocimiento de im\u00e1genes, el procesamiento del lenguaje natural y el an\u00e1lisis de voz a texto.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nuestro caso de uso espec\u00edfico es <strong>Detecci\u00f3n de objetos<\/strong>. Puede utilizar Tensorflow a diferentes niveles:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><strong>Nivel 1<\/strong><span style=\"font-weight: 400;\"><strong>:<\/strong> Utilice un modelo preentrenado de la estanter\u00eda y apl\u00edquelo directamente a su data para reconocer los productos. Este m\u00e9todo es el menos complejo y el m\u00e1s r\u00e1pido, ya que no necesita construir ni entrenar un modelo.<\/span><\/li>\n<li style=\"font-weight: 400;\"><strong>Nivel 2<\/strong><span style=\"font-weight: 400;\"><strong>:<\/strong> Entrene un modelo en su propio data, para que el modelo pueda aprender y conocer con precisi\u00f3n la gama de sus productos. Este nivel requiere entrenar un modelo sobre data que usted haya etiquetado de antemano. Lleva m\u00e1s tiempo pero aporta resultados m\u00e1s relevantes, ya que el modelo reconocer\u00e1 las referencias exactas de los productos.<\/span><\/li>\n<li style=\"font-weight: 400;\"><strong>Nivel 3<\/strong><span style=\"font-weight: 400;\"><strong>:<\/strong> Cree su propio modelo desde cero. En este nivel, usted no s\u00f3lo entrena un modelo, sino que lo construye desde el principio. Puede ser el ajuste de par\u00e1metros sobre un modelo existente, as\u00ed como el desarrollo de una nueva arquitectura de red neuronal. Est\u00e1 m\u00e1s dedicado a fines de investigaci\u00f3n, ya que es un enfoque que requiere mucho tiempo.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">A continuaci\u00f3n describimos con m\u00e1s detalle cada nivel de uso de Tensorflow.<\/span><\/p>\n<h3><strong><span style=\"color: #ff0066;\">Nivel 1 - Utilizar un modelo preentrenado<\/span><\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">El primer uso b\u00e1sico es utilizar un modelo que ya ha sido entrenado en un conjunto data etiquetado. Esta opci\u00f3n debe elegirse siempre que el data al que desee aplicar el modelo sea muy similar al data de entrenamiento. Por ejemplo, cuando desee reconocer objetos gen\u00e9ricos como zapatos, smartphones, bolsos, etc. Por lo tanto, este enfoque no ser\u00e1 adecuado si espera reconocer una marca y un modelo preciso de su gama de productos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Normalmente, estos modelos se entrenan con conjuntos data est\u00e1ndar, como el <\/span><strong>Coco dataset<\/strong><span style=\"font-weight: 400;\"> (<\/span><a href=\"https:\/\/github.com\/cocodataset\/cocoapi\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">enlace github aqu\u00ed<\/span><\/a><span style=\"font-weight: 400;\">) o <\/span><strong>ImageNet dataset<\/strong><span style=\"font-weight: 400;\"> (<\/span><a href=\"http:\/\/image-net.org\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">enlace aqu\u00ed<\/span><\/a><span style=\"font-weight: 400;\">). Estos datasets est\u00e1n compuestos por enormes colecciones de im\u00e1genes ya etiquetadas y listas para ser utilizadas en el entrenamiento de modelos. Su uso est\u00e1 muy extendido para entrenar modelos de clasificaci\u00f3n de im\u00e1genes y detecci\u00f3n de objetos, que pueden utilizarse como modelos preentrenados para el reconocimiento gen\u00e9rico de productos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ahora que sabemos m\u00e1s sobre el data, echemos un vistazo r\u00e1pido al modelo preentrenado que podr\u00eda utilizar. Uno de los recursos m\u00e1s comunes para encontrar modelos preentrenados es <\/span><strong>Keras<\/strong><span style=\"font-weight: 400;\">. Dispone de un m\u00f3dulo en el que puede encontrar varios tipos de modelos de clasificaci\u00f3n de im\u00e1genes (VGG16, ResNet50, IncetopnV3...), que han sido entrenados en conjuntos est\u00e1ndar datasets. ImageNet para estos casos. El flujo de trabajo es entonces sencillo, usted carga el modelo y lo aplica directamente a sus im\u00e1genes para extraer las caracter\u00edsticas. Por ejemplo, puede clasificar directamente cu\u00e1les de sus im\u00e1genes contienen relojes, auriculares, cascos... Hay otro ejemplo m\u00e1s espec\u00edfico para el caso de uso de la detecci\u00f3n de objetos y fue desarrollado por el equipo Tensorflow de Google. Construyeron una serie de modelos preentrenados (uno de ellos se basa en el conjunto Coco data), para utilizarlos directamente en im\u00e1genes nuevas para la detecci\u00f3n de objetos (<\/span><a href=\"https:\/\/github.com\/tensorflow\/models\/tree\/master\/research\/object_detection\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">enlace github aqu\u00ed<\/span><\/a><span style=\"font-weight: 400;\">). Estos modelos tambi\u00e9n podr\u00edan utilizarse como modelos para volver a entrenar en su propio data, de lo que nos ocuparemos en el nivel 2.<\/span><\/p>\n<h3><strong><span style=\"color: #ff0066;\">Nivel 2 - Entrene un modelo por su cuenta data<\/span><\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Cuando trabaje con un dataset bastante diferente del dataset original utilizado para entrenar el modelo, la simple aplicaci\u00f3n no funcionar\u00e1. Tendr\u00e1 que construir su propio dataset de entrenamiento y volver a entrenar el modelo con \u00e9l. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">La mayor\u00eda de los problemas de reconocimiento de im\u00e1genes requieren el uso de redes neuronales convolucionales (CNN). Las primeras capas (capas convolucionales) extraen patrones y caracter\u00edsticas de la imagen. Estas caracter\u00edsticas se pasan a las \u00faltimas capas (capas totalmente conectadas) para la predicci\u00f3n. Existen dos enfoques para volver a entrenar un modelo en su propio data: <\/span><strong>Aprendizaje por transferencia<\/strong><span style=\"font-weight: 400;\"> y <\/span><strong>Ajuste fino<\/strong><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Aprendizaje por transferencia<\/strong> consiste en utilizar las capas convolucionales preentrenadas del modelo original y entrenar las capas totalmente conectadas sobre las caracter\u00edsticas extra\u00eddas de nuestro conjunto de im\u00e1genes. La idea aqu\u00ed es utilizar los conocimientos adquiridos al entrenar el modelo en el conjunto data original y utilizarlos para nuestro problema. Esta t\u00e9cnica es eficaz en los casos en que los dos conjuntos data son similares, por ejemplo, un modelo entrenado para reconocer coches podr\u00eda volver a entrenarse para reconocer camiones. La raz\u00f3n es que las im\u00e1genes de coches son similares a las de camiones y es probable que los patrones extra\u00eddos por las capas convolucionales de estas im\u00e1genes sean similares. La figura siguiente ilustra el proceso:<\/span><\/p>\n<p><img decoding=\"async\" class=\"lazyload wp-image-747 aligncenter\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27694%27%20height%3D%27243%27%20viewBox%3D%270%200%20694%20243%27%3E%3Crect%20width%3D%27694%27%20height%3D%27243%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"http:\/\/briqahg.cluster028.hosting.ovh.net\/wp\/wp-content\/uploads\/2019\/10\/Training-last-layer-300x105.png\" alt=\"\" width=\"694\" height=\"243\" \/><\/p>\n<div class=\"articleblock text\">\n<div class=\"content\">\n<p>Si su dataset es muy diferente del dataset original, tendr\u00e1 que realizar\u00a0<strong>Ajuste fino<\/strong>. A diferencia del aprendizaje por transferencia, aqu\u00ed se vuelve a entrenar toda la red (o al menos la mayor\u00eda de las capas convolucionales). As\u00ed, las capas convolucionales se entrenan en sus im\u00e1genes y pueden extraer caracter\u00edsticas totalmente adaptadas a ellas. La ventaja del ajuste fino es que el modelo se entrena completamente en el conjunto data y es probable que tenga mejores prestaciones, pero tambi\u00e9n requiere m\u00e1s tiempo y es m\u00e1s caro computacionalmente. La figura siguiente ilustra el proceso:<\/p>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" class=\"lazyload wp-image-748 aligncenter\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27697%27%20height%3D%27223%27%20viewBox%3D%270%200%20697%20223%27%3E%3Crect%20width%3D%27697%27%20height%3D%27223%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"http:\/\/briqahg.cluster028.hosting.ovh.net\/wp\/wp-content\/uploads\/2019\/10\/original-labels-300x96.png\" alt=\"\" width=\"697\" height=\"223\" \/><\/p>\n<p>Para construir un dataset para la detecci\u00f3n de objetos es necesario recopilar muchas im\u00e1genes de entrenamiento, pero \"\u00bfcu\u00e1ntas exactamente?\", cabe preguntarse. Algunos dicen que cientos, otros que miles o incluso cientos de miles, pero en realidad no existe una verdad de base. Sin embargo, se recomienda tener m\u00e1s de cien im\u00e1genes para cada clase que quiera que reconozca su modelo.<\/p>\n<p>Una vez que haya recopilado sus im\u00e1genes, deber\u00e1 etiquetarlas.\u00a0<strong>El proceso de etiquetado consiste en crear archivos JSON que contengan las coordenadas y la clase del objeto que el modelo debe detectar y reconocer en cada imagen<\/strong>. Esta parte suele hacerse manualmente, pero puede semiautomatizarse mediante c\u00f3digo. Se han desarrollado varias herramientas de c\u00f3digo abierto para agilizar el etiquetado manual, y una de ellas es el<a href=\"https:\/\/github.com\/puzzledqs\/BBox-Label-Tool\" target=\"_blank\" rel=\"noopener\">\u00a0BBox-Label-Tool<\/a>\u00a0en Github. La herramienta consiste en una interfaz de usuario, que carga todas las im\u00e1genes y permite al usuario etiquetar una imagen con 2 clics:<\/p>\n<p><img decoding=\"async\" class=\"lazyload wp-image-749 aligncenter\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27912%27%20height%3D%27511%27%20viewBox%3D%270%200%20912%20511%27%3E%3Crect%20width%3D%27912%27%20height%3D%27511%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"http:\/\/briqahg.cluster028.hosting.ovh.net\/wp\/wp-content\/uploads\/2019\/10\/img-wear-300x168.png\" alt=\"\" width=\"912\" height=\"511\" \/><\/p>\n<p>El usuario s\u00f3lo tiene que hacer clic en la esquina superior izquierda y en la esquina inferior derecha del objeto, entonces la herramienta dibuja un rect\u00e1ngulo alrededor de la imagen y guarda las coordenadas en un archivo. Esto reduce el tiempo de etiquetado (aparte de a\u00f1adir la clase del objeto) a 3 segundos. El archivo JSON final, despu\u00e9s de a\u00f1adir la clase del objeto, deber\u00eda tener este aspecto: <\/p>\n<p>El \u00faltimo paso es convertir los archivos en un \u00fanico archivo, especialmente formateado para Tensorflow. Se ofrece un sencillo tutorial<a href=\"https:\/\/medium.com\/@WuStangDan\/step-by-step-tensorflow-object-detection-api-tutorial-part-2-converting-dataset-to-tfrecord-47f24be9248d\" target=\"_blank\" rel=\"noopener\">\u00a0aqu\u00ed<\/a>.<\/p>\n<p>Una vez que haya creado su dataset, puede empezar a entrenar su modelo, \u00a1pero primero necesita encontrar un modelo preentrenado! Las recientes investigaciones en aprendizaje profundo han llevado al desarrollo de varios modelos basados en redes neuronales para la detecci\u00f3n de objetos. Una arquitectura famosa es la Faster R-CNN basada en redes de propuestas regionales (RPN). Faster R-CNN tiene dos redes: una RPN para generar propuestas de regiones y una red que utiliza estas propuestas para detectar objetos. El equipo Tensorflow de Google ha desarrollado una serie de modelos de aprendizaje profundo para que sean f\u00e1cilmente utilizables por los cient\u00edficos del data y uno de ellos es un modelo de detecci\u00f3n de objetos basado en Faster R-CNN. El modelo se proporciona en la p\u00e1gina de Tensorflow<a href=\"https:\/\/github.com\/tensorflow\/models\/tree\/master\/research\/object_detection\" target=\"_blank\" rel=\"noopener\">\u00a0Github<\/a>\u00a0p\u00e1gina con un tutorial. La p\u00e1gina<a href=\"https:\/\/github.com\/tensorflow\/models\/blob\/master\/research\/object_detection\/g3doc\/running_pets.md\" target=\"_blank\" rel=\"noopener\">\u00a0tutorial<\/a>\u00a0muestra los pasos para volver a entrenar el modelo (con Aprendizaje por Transferencia) y desplegarlo en Google ML Engine.<\/p>\n<h3><strong><span style=\"color: #ff0066;\">Nivel 3 - Cree su propio modelo desde cero<\/span><\/strong><\/h3>\n<p>Si tiene alma de investigador o tiene un problema de visi\u00f3n por ordenador muy espec\u00edfico, puede crear su propio modelo desde cero. En este caso, tiene tres opciones :<\/p>\n<ul>\n<li><strong>Construir un modelo de clasificaci\u00f3n de im\u00e1genes con CNN<\/strong><\/li>\n<\/ul>\n<p>La soluci\u00f3n m\u00e1s sencilla para el reconocimiento de productos es la clasificaci\u00f3n de im\u00e1genes con arquitectura de redes neuronales convolucionales. Estos modelos toman una imagen como entrada y dan como salida una etiqueta que indica el objeto. Por tanto, s\u00f3lo deben utilizarse cuando las im\u00e1genes contengan un \u00fanico objeto que desee detectar. Sin embargo, es probable que el uso de un modelo de clasificaci\u00f3n de im\u00e1genes para la detecci\u00f3n de objetos tenga un rendimiento pobre simplemente por el ruido que rodea al objeto en la imagen. Los modelos de clasificaci\u00f3n de im\u00e1genes est\u00e1n dise\u00f1ados para extraer caracter\u00edsticas de toda la imagen y clasificarla en su conjunto. El problema aqu\u00ed es que dos im\u00e1genes diferentes, por ejemplo una imagen de una habitaci\u00f3n y otra de una calle, ambas con el objeto deseado, pueden tener la misma etiqueta. Esto dificulta la tarea de clasificaci\u00f3n. A continuaci\u00f3n<a href=\"https:\/\/www.tensorflow.org\/tutorials\/estimators\/cnn\" target=\"_blank\" rel=\"noopener\">\u00a0dos<\/a><a href=\"https:\/\/medium.com\/@mroman09\/building-a-convolutional-neural-network-to-classify-images-in-fashion-mnist-57589b94898e\" target=\"_blank\" rel=\"noopener\">\u00a0tutoriales<\/a>\u00a0sobre c\u00f3mo construir CNN desde cero.<\/p>\n<ul>\n<li><strong>Construir un modelo de detecci\u00f3n de objetos<\/strong><\/li>\n<\/ul>\n<p>Como ya se ha dicho, los modelos de detecci\u00f3n de objetos han surgido recientemente con la investigaci\u00f3n en Deep Learning. La arquitectura Faster R-CNN se introdujo a finales de 2015 como una iteraci\u00f3n de la arquitectura m\u00e1s antigua Fast R-CNN. Da salida a :<\/p>\n<p>a) una lista de cuadros delimitadores<\/p>\n<p>b) una etiqueta asignada a cada cuadro delimitador<\/p>\n<p>c) una probabilidad para cada etiqueta y cuadro delimitador<\/p>\n<p>En primer lugar, se aplica a la imagen una CNN preentrenada que crea un mapa de caracter\u00edsticas. A continuaci\u00f3n, estas caracter\u00edsticas se pasan a una RPN para encontrar regiones candidatas (cuadros delimitadores) que contengan objetos relevantes. El \u00faltimo paso consiste en utilizar las caracter\u00edsticas computadas por la CNN y los recuadros delimitadores para clasificar el contenido de los recuadros delimitadores y ajustar sus coordenadas (para que se ajuste mejor al objeto). Esto se hace mediante el m\u00f3dulo RCNN. La figura siguiente ilustra la arquitectura:<\/p>\n<p><img decoding=\"async\" class=\"lazyload wp-image-750 aligncenter\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27752%27%20height%3D%27178%27%20viewBox%3D%270%200%20752%20178%27%3E%3Crect%20width%3D%27752%27%20height%3D%27178%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"http:\/\/briqahg.cluster028.hosting.ovh.net\/wp\/wp-content\/uploads\/2019\/10\/RPN-300x71.png\" alt=\"\" width=\"752\" height=\"178\" \/><\/p>\n<p>En este<a href=\"https:\/\/tryolabs.com\/blog\/2018\/01\/18\/faster-r-cnn-down-the-rabbit-hole-of-modern-object-detection\/\" target=\"_blank\" rel=\"noopener\">\u00a0tutorial<\/a>, y existen trabajos de c\u00f3digo abierto sobre el tema<a href=\"https:\/\/github.com\/tryolabs\/luminoth\/tree\/master\/luminoth\/models\/fasterrcnn\" target=\"_blank\" rel=\"noopener\">\u00a0aqu\u00ed<\/a>.<\/p>\n<ul>\n<li><strong>Construir un modelo h\u00edbrido utilizando arquitecturas de detecci\u00f3n de objetos y CNNs<\/strong><\/li>\n<\/ul>\n<p>Si desea mejorar su rendimiento, puede considerar el enfoque h\u00edbrido. Es posible que un enfoque de detecci\u00f3n de objetos d\u00e9 como resultado una mala clasificaci\u00f3n (se detecta bien el objeto pero se predice una etiqueta err\u00f3nea). En este caso, puede entrenar primero un modelo de detecci\u00f3n de objetos en su dataset, con una sola etiqueta (\"objeto\", por ejemplo) y luego recortar sus im\u00e1genes bas\u00e1ndose en las coordenadas de los cuadros delimitadores. Esto crear\u00e1 un conjunto de im\u00e1genes que contendr\u00e1 s\u00f3lo el objeto relevante detectado en las im\u00e1genes originales. A continuaci\u00f3n, puede utilizar este conjunto como conjunto de entrenamiento para la clasificaci\u00f3n de im\u00e1genes CNN.<\/p>\n<h3><strong><span style=\"color: #ff0066;\">Ampliaci\u00f3n - Aprendizaje autom\u00e1tico<\/span><\/strong><\/h3>\n<p>Hoy en d\u00eda podemos observar el desarrollo de nuevas iniciativas que pretenden que el proceso de crear y personalizar su propio modelo est\u00e9 al alcance de cualquiera, incluso de personas sin formaci\u00f3n t\u00e9cnica. El objetivo es que en lugar de utilizar modelos listos para aplicar (como el nivel 1), usted pueda entrenar su propio modelo sin necesidad de tener los conocimientos subyacentes.<\/p>\n<p><strong>\u00bfC\u00f3mo funciona?<\/strong><\/p>\n<p>La soluci\u00f3n consiste en automatizar la creaci\u00f3n del modelo de clasificaci\u00f3n de im\u00e1genes o de detecci\u00f3n de objetos. S\u00f3lo tendr\u00e1 que proporcionar un conjunto data etiquetado con sus im\u00e1genes y enviarlo a la soluci\u00f3n. Este data se ingestar\u00e1 para entrenar sobre \u00e9l un modelo de visi\u00f3n por ordenador (como nivel 2 o nivel 3). Se obtendr\u00e1 un modelo entrenado, a veces incluso una API, que usted podr\u00e1 utilizar para predecir las etiquetas y localizar objetos en nuevas im\u00e1genes. El modelo se optimiza a s\u00ed mismo, por lo que no necesita saber c\u00f3mo implementarlo ni c\u00f3mo parametrizarlo.<\/p>\n<p><strong>\u00bfCu\u00e1les son las soluciones?<\/strong><\/p>\n<p>Dos actores principales est\u00e1n surgiendo en este \u00e1mbito, y han lanzado herramientas que por el momento se encuentran en fase beta.<\/p>\n<ul>\n<li>En primer lugar, tenemos a Google y su componente Google Cloud AutoML de su conjunto de plataformas en la nube (<a href=\"https:\/\/cloud.google.com\/automl\/\" target=\"_blank\" rel=\"noopener\">enlace aqu\u00ed<\/a>). Cloud AutoML no s\u00f3lo est\u00e1 dise\u00f1ado para problemas de visi\u00f3n por ordenador, sino que tambi\u00e9n puede ser \u00fatil para cualquier aplicaci\u00f3n de aprendizaje autom\u00e1tico, as\u00ed como para el procesamiento del lenguaje natural y la traducci\u00f3n.<\/li>\n<li>En segundo lugar, tenemos la iniciativa de c\u00f3digo abierto AutoKeras (<a href=\"https:\/\/autokeras.com\/start\/\" target=\"_blank\" rel=\"noopener\">enlace aqu\u00ed<\/a>). Est\u00e1 basado en Keras, y se basa en la b\u00fasqueda autom\u00e1tica de la arquitectura y los hiperpar\u00e1metros de los modelos de aprendizaje profundo.<\/li>\n<\/ul>\n<p><em>Art\u00edculo coescrito por Matthieu Montaigu y Kasra Mansouri, cient\u00edficos del Data en el Artefact.<\/em><\/p>\n<p><strong>\u00bf Le interesa saber m\u00e1s sobre la previsi\u00f3n de ventas gracias a modelos de reconocimiento de productos a medida ? \u00a1Nuestros expertos est\u00e1n a su disposici\u00f3n para responder a todas sus preguntas !\u00a0<\/strong><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/p>","protected":false},"excerpt":{"rendered":"<p>Imag\u00ednese que es usted el director de una nueva empresa de alta tecnolog\u00eda que quiere vender al mercado un producto totalmente nuevo (un nuevo dispositivo IoT, digamos). Ha participado en numerosas conferencias, exposiciones y demostraciones para dar a conocer su producto con antelaci\u00f3n y darlo a conocer. El impacto directo que espera es que las ventas de su producto, una vez lanzado, puedan ser lo suficientemente elevadas como para alcanzar sus objetivos.<\/p>","protected":false},"featured_media":746,"parent":0,"template":"","meta":{"_acf_changed":false,"ep_exclude_from_search":false},"blog-category":[22035],"blog-language":[2991],"class_list":["post-745","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-category-data-ai-consulting","blog-language-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.artefact.com\/es\/wp-json\/wp\/v2\/blog\/745","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artefact.com\/es\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.artefact.com\/es\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artefact.com\/es\/wp-json\/wp\/v2\/media\/746"}],"wp:attachment":[{"href":"https:\/\/www.artefact.com\/es\/wp-json\/wp\/v2\/media?parent=745"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.artefact.com\/es\/wp-json\/wp\/v2\/blog-category?post=745"},{"taxonomy":"blog-language","embeddable":true,"href":"https:\/\/www.artefact.com\/es\/wp-json\/wp\/v2\/blog-language?post=745"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}