	{"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\/br\/blog\/tensorflow-and-open-source-made-product-recognition-model\/","title":{"rendered":"Como usar o Tensorflow e suas contribui\u00e7\u00f5es de c\u00f3digo aberto relacionadas para criar um modelo de reconhecimento de produto personalizado"},"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>NOT\u00cdCIAS \/ CI\u00caNCIA DE DADOS<\/p>\n<\/div><div class=\"fusion-text fusion-text-2\"><p>Imagine que o senhor \u00e9 o diretor de uma nova empresa iniciante de alta tecnologia, que pretende vender um produto totalmente novo (digamos, um novo dispositivo de IoT) para o mercado. O senhor participou de muitas confer\u00eancias, exposi\u00e7\u00f5es e demonstra\u00e7\u00f5es para comunicar antecipadamente sobre o seu produto e aumentar a conscientiza\u00e7\u00e3o. O impacto direto que o senhor espera \u00e9 que as vendas do seu produto, uma vez lan\u00e7ado, possam ser altas o suficiente para atender aos seus 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;\">Imagine que o senhor \u00e9 o diretor de uma nova empresa iniciante de alta tecnologia, que pretende vender um produto totalmente novo (digamos, um novo dispositivo de IoT) para o mercado. O senhor participou de muitas confer\u00eancias, exposi\u00e7\u00f5es e demonstra\u00e7\u00f5es para comunicar antecipadamente sobre o seu produto e aumentar a conscientiza\u00e7\u00e3o. O impacto direto que o senhor espera \u00e9 que as vendas do seu produto, uma vez lan\u00e7ado, possam ser altas o suficiente para atender aos seus objetivos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Aqui est\u00e1 um problema: o senhor n\u00e3o tem nenhum meio de prever e estimar a demanda pelo seu produto.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Um fato simples que o senhor pode verificar \u00e9 o quanto as pessoas est\u00e3o falando sobre o seu produto na Internet. O senhor poderia dar uma olhada nas principais redes sociais (Facebook, Twitter, Instagram...) e quantificar quantas publica\u00e7\u00f5es mencionam seu produto. Isso lhe daria uma ideia da magnitude das vendas que o senhor poderia esperar.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O senhor tem duas op\u00e7\u00f5es para reconhecer um produto em uma publica\u00e7\u00e3o social. O senhor pode analisar o texto executando a minera\u00e7\u00e3o de texto ou pode executar o reconhecimento de imagem na imagem da publica\u00e7\u00e3o. Mas h\u00e1 um problema com a an\u00e1lise do texto: quando um produto \u00e9 lan\u00e7ado, h\u00e1 poucas chances de que todos saibam seu nome e o mencionem imediatamente ap\u00f3s a data de lan\u00e7amento. Portanto, o reconhecimento de imagens \u00e9 a solu\u00e7\u00e3o preferida. Para reconhecer um produto em imagens (se o senhor tiver v\u00e1rios produtos para reconhecer), ser\u00e1 necess\u00e1rio executar <\/span><b>Detec\u00e7\u00e3o de objetos<\/b><span style=\"font-weight: 400;\"> E \u00e9 a\u00ed que entra o Tensorflow.<\/span><\/p>\n<h3><strong><span style=\"color: #ff0066;\">O que \u00e9 o Tensorflow?<\/span><\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">O Tensorflow \u00e9 um <strong>c\u00f3digo aberto<\/strong> biblioteca matem\u00e1tica que fornece APIs Python e C est\u00e1veis, usadas para v\u00e1rias tarefas de manipula\u00e7\u00e3o de data. Ela \u00e9 altamente conhecida e usada para aplicativos de aprendizagem autom\u00e1tica e aprendizagem profunda, como redes neurais. Os casos de uso pelos quais o Tensorflow \u00e9 mais conhecido s\u00e3o o reconhecimento de imagens, o processamento de linguagem natural e a an\u00e1lise de fala para texto.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nosso caso de uso espec\u00edfico \u00e9 <strong>Detec\u00e7\u00e3o de objetos<\/strong>. O senhor pode usar o Tensorflow em diferentes n\u00edveis:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><strong>N\u00edvel 1<\/strong><span style=\"font-weight: 400;\"><strong>:<\/strong> Use um modelo pr\u00e9-treinado dispon\u00edvel no mercado e aplique-o diretamente ao seu data para reconhecer os produtos. Esse m\u00e9todo \u00e9 o menos complexo e mais r\u00e1pido, pois o senhor n\u00e3o precisa criar ou treinar um modelo.<\/span><\/li>\n<li style=\"font-weight: 400;\"><strong>N\u00edvel 2<\/strong><span style=\"font-weight: 400;\"><strong>:<\/strong> Treine um modelo em seu pr\u00f3prio data, para que o modelo possa aprender e conhecer a gama de seus produtos com precis\u00e3o. Esse n\u00edvel requer o treinamento de um modelo no data que o senhor etiquetou previamente. Isso leva mais tempo, mas traz resultados mais relevantes, pois o modelo reconhecer\u00e1 as refer\u00eancias exatas do produto.<\/span><\/li>\n<li style=\"font-weight: 400;\"><strong>N\u00edvel 3<\/strong><span style=\"font-weight: 400;\"><strong>:<\/strong> Crie seu pr\u00f3prio modelo do zero. Nesse n\u00edvel, o senhor n\u00e3o apenas treina um modelo, mas o constr\u00f3i desde o in\u00edcio. Pode ser o ajuste de par\u00e2metros em um modelo existente, bem como o desenvolvimento de uma nova arquitetura de rede neural. \u00c9 mais dedicado a fins de pesquisa, pois \u00e9 uma abordagem que consome muito tempo.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">A seguir, descreveremos cada n\u00edvel de uso do Tensorflow em mais detalhes.<\/span><\/p>\n<h3><strong><span style=\"color: #ff0066;\">N\u00edvel 1 - Usar um modelo pr\u00e9-treinado<\/span><\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">O primeiro uso b\u00e1sico \u00e9 usar um modelo que j\u00e1 tenha sido treinado em um conjunto de data rotulado. Essa op\u00e7\u00e3o deve ser escolhida sempre que o data ao qual o senhor deseja aplicar o modelo for muito semelhante ao data de treinamento. Por exemplo, quando o senhor deseja reconhecer objetos gen\u00e9ricos como sapatos, smartphones, bolsas e assim por diante. Portanto, essa abordagem n\u00e3o ser\u00e1 adequada se o senhor espera reconhecer uma marca e um modelo preciso de sua linha de produtos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Normalmente, esses modelos s\u00e3o treinados em conjuntos padr\u00e3o data, como o <\/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;\">link do github aqui<\/span><\/a><span style=\"font-weight: 400;\">) ou <\/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;\">link aqui<\/span><\/a><span style=\"font-weight: 400;\">). Esses datasets s\u00e3o compostos por enormes cole\u00e7\u00f5es de imagens que j\u00e1 est\u00e3o rotuladas e prontas para serem usadas no treinamento de modelos. Ele \u00e9 amplamente usado para treinar modelos de classifica\u00e7\u00e3o de imagens e detec\u00e7\u00e3o de objetos, que podem ser usados como modelos pr\u00e9-treinados para reconhecimento gen\u00e9rico de produtos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Agora que sabemos mais sobre o data, vamos ter uma vis\u00e3o geral r\u00e1pida do modelo pr\u00e9-treinado que o senhor poderia usar. Um dos recursos mais comuns para encontrar modelos pr\u00e9-treinados \u00e9 o <\/span><strong>Keras<\/strong><span style=\"font-weight: 400;\">. Ele tem um m\u00f3dulo no qual o senhor pode encontrar v\u00e1rios tipos de modelos de classifica\u00e7\u00e3o de imagens (VGG16, ResNet50, IncetopnV3...), que foram treinados em conjuntos padr\u00e3o data. ImageNet para esses casos. O fluxo de trabalho \u00e9 simples: o senhor carrega o modelo e o aplica diretamente \u00e0s suas imagens para extrair os recursos. Por exemplo, o senhor pode classificar diretamente quais das suas imagens cont\u00eam rel\u00f3gios, fones de ouvido, fones de ouvido... H\u00e1 outro exemplo mais espec\u00edfico para o caso de uso de detec\u00e7\u00e3o de objetos e foi desenvolvido pela equipe do Tensorflow do Google. Eles criaram uma s\u00e9rie de modelos pr\u00e9-treinados (um deles \u00e9 baseado no Coco dataset), para ser usado diretamente em novas imagens para detec\u00e7\u00e3o de objetos (<\/span><a href=\"https:\/\/github.com\/tensorflow\/models\/tree\/master\/research\/object_detection\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">link do github aqui<\/span><\/a><span style=\"font-weight: 400;\">). Esses modelos tamb\u00e9m podem ser usados como modelos para treinar novamente o seu pr\u00f3prio data, com o qual lidaremos no n\u00edvel 2.<\/span><\/p>\n<h3><strong><span style=\"color: #ff0066;\">N\u00edvel 2 - Treinar um modelo por conta pr\u00f3pria data<\/span><\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Quando o senhor trabalha com um dataset bastante diferente do dataset original usado para treinar o modelo, simplesmente aplic\u00e1-lo n\u00e3o funcionar\u00e1. O senhor precisar\u00e1 criar seu pr\u00f3prio dataset de treinamento e treinar novamente o modelo com ele. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">A maioria dos problemas de reconhecimento de imagens exige o uso de redes neurais convolucionais (CNN). As primeiras camadas (camadas convolucionais) extraem padr\u00f5es e recursos da imagem. Esses recursos s\u00e3o ent\u00e3o passados para as \u00faltimas camadas (camadas totalmente conectadas) para previs\u00e3o. H\u00e1 duas abordagens para treinar novamente um modelo em seu pr\u00f3prio data: <\/span><strong>Aprendizagem por transfer\u00eancia<\/strong><span style=\"font-weight: 400;\"> e <\/span><strong>Ajuste fino<\/strong><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Aprendizagem por transfer\u00eancia<\/strong> consiste em usar as camadas convolucionais pr\u00e9-treinadas do modelo original e treinar as camadas totalmente conectadas nos recursos extra\u00eddos do nosso conjunto de imagens. A ideia aqui \u00e9 usar o conhecimento adquirido durante o treinamento do modelo no dataset original e us\u00e1-lo em nosso problema. Essa t\u00e9cnica \u00e9 eficiente nos casos em que os dois datasets s\u00e3o semelhantes, por exemplo, um modelo treinado para reconhecer carros pode ser treinado novamente para reconhecer caminh\u00f5es. A raz\u00e3o para isso \u00e9 que as imagens de carros s\u00e3o semelhantes \u00e0s imagens de caminh\u00f5es e os padr\u00f5es extra\u00eddos pelas camadas convolucionais dessas imagens provavelmente ser\u00e3o semelhantes. A figura abaixo ilustra o processo:<\/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>Se o seu dataset for muito diferente do dataset original, o senhor precisar\u00e1 executar\u00a0<strong>Ajuste fino<\/strong>. Diferentemente do Transfer Learning, aqui toda a rede (ou pelo menos a maioria das camadas convolucionais) \u00e9 treinada novamente. Assim, as camadas convolucionais s\u00e3o treinadas em suas imagens e podem extrair recursos totalmente adaptados \u00e0s suas imagens. A vantagem do ajuste fino \u00e9 que o modelo \u00e9 totalmente treinado no dataset e provavelmente ter\u00e1 melhor desempenho, mas tamb\u00e9m consome mais tempo e \u00e9 mais caro do ponto de vista computacional. A figura abaixo ilustra o processo:<\/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 criar um dataset para detec\u00e7\u00e3o de objetos, o senhor precisa coletar muitas imagens de treinamento, mas \"Quantas exatamente?\", algu\u00e9m pode perguntar. Alguns dizem que s\u00e3o centenas, outros dizem que s\u00e3o milhares ou at\u00e9 mesmo centenas de milhares, mas n\u00e3o existe uma verdade b\u00e1sica. No entanto, \u00e9 recomend\u00e1vel ter mais de cem imagens para cada classe que o senhor deseja que o modelo reconhe\u00e7a.<\/p>\n<p>Depois de coletar as imagens, o senhor precisa rotul\u00e1-las.\u00a0<strong>O processo de rotulagem consiste na cria\u00e7\u00e3o de arquivos JSON contendo as coordenadas e a classe do objeto que o modelo deve detectar e reconhecer em cada imagem<\/strong>. Essa parte geralmente \u00e9 feita manualmente, mas pode ser semi-automatizada por c\u00f3digo. V\u00e1rias ferramentas de c\u00f3digo aberto foram desenvolvidas para agilizar a rotulagem manual, e uma delas \u00e9 o<a href=\"https:\/\/github.com\/puzzledqs\/BBox-Label-Tool\" target=\"_blank\" rel=\"noopener\">\u00a0Ferramenta de etiquetas BBox<\/a>\u00a0no Github. A ferramenta consiste em uma interface de usu\u00e1rio, carregando todas as imagens e permitindo que o usu\u00e1rio rotule uma imagem com dois cliques:<\/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>O usu\u00e1rio s\u00f3 precisa clicar no canto superior esquerdo e no canto inferior direito do objeto e, em seguida, a ferramenta desenha um ret\u00e2ngulo ao redor da imagem e salva as coordenadas em um arquivo. Isso reduz o tempo de rotulagem (al\u00e9m de adicionar a classe do objeto) para 3 segundos. O arquivo JSON final, depois de adicionar a classe do objeto, deve ter a seguinte apar\u00eancia: <\/p>\n<p>A etapa final \u00e9 converter os arquivos em um \u00fanico arquivo, especialmente formatado para o Tensorflow. Um tutorial simples \u00e9 fornecido<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\">\u00a0aqui<\/a>.<\/p>\n<p>Depois de criar seu dataset, o senhor pode come\u00e7ar a treinar seu modelo, mas primeiro precisa encontrar um modelo pr\u00e9-treinado! Pesquisas recentes em aprendizagem profunda levaram ao desenvolvimento de v\u00e1rios modelos baseados em redes neurais para detec\u00e7\u00e3o de objetos. Uma arquitetura famosa \u00e9 a Faster R-CNN baseada em redes de proposta de regi\u00e3o (RPN). A Faster R-CNN tem duas redes: uma RPN para gerar propostas de regi\u00f5es e uma rede que usa essas propostas para detectar objetos. A equipe do Tensorflow no Google desenvolveu uma s\u00e9rie de modelos de aprendizagem profunda para serem facilmente utilizados pelos cientistas do data e um deles \u00e9 um modelo de detec\u00e7\u00e3o de objetos baseado no Faster R-CNN. O modelo \u00e9 fornecido no site do Tensorflow<a href=\"https:\/\/github.com\/tensorflow\/models\/tree\/master\/research\/object_detection\" target=\"_blank\" rel=\"noopener\">\u00a0Github<\/a>\u00a0com um tutorial. O<a href=\"https:\/\/github.com\/tensorflow\/models\/blob\/master\/research\/object_detection\/g3doc\/running_pets.md\" target=\"_blank\" rel=\"noopener\">\u00a0tutorial<\/a>\u00a0mostra as etapas para treinar novamente o modelo (com Transfer Learning) e implant\u00e1-lo no Google ML Engine.<\/p>\n<h3><strong><span style=\"color: #ff0066;\">N\u00edvel 3 - Criar seu pr\u00f3prio modelo a partir do zero<\/span><\/strong><\/h3>\n<p>Se o senhor tiver alma de pesquisador ou se tiver um problema muito espec\u00edfico de vis\u00e3o computacional, poder\u00e1 criar seu pr\u00f3prio modelo do zero. Nesse caso, o senhor tem tr\u00eas op\u00e7\u00f5es:<\/p>\n<ul>\n<li><strong>Criar um modelo de classifica\u00e7\u00e3o de imagens com CNNs<\/strong><\/li>\n<\/ul>\n<p>A solu\u00e7\u00e3o mais simples para o reconhecimento de produtos \u00e9 a classifica\u00e7\u00e3o de imagens com a arquitetura de rede neural convolucional. Esses modelos recebem uma imagem como entrada e emitem um r\u00f3tulo indicando o objeto. Portanto, eles s\u00f3 devem ser usados quando as imagens contiverem apenas um objeto que o senhor deseja detectar. No entanto, o uso de um modelo de classifica\u00e7\u00e3o de imagem para a detec\u00e7\u00e3o de objetos provavelmente ter\u00e1 um desempenho ruim simplesmente por causa do ru\u00eddo ao redor do objeto na imagem. Os modelos de classifica\u00e7\u00e3o de imagens s\u00e3o projetados para extrair recursos de toda a imagem e classific\u00e1-la como um todo. O problema aqui \u00e9 que duas imagens diferentes, por exemplo, uma imagem de um c\u00f4modo e uma imagem de uma rua, ambas contendo o objeto desejado, podem ter o mesmo r\u00f3tulo. Isso dificulta a tarefa de classifica\u00e7\u00e3o. Veja a seguir<a href=\"https:\/\/www.tensorflow.org\/tutorials\/estimators\/cnn\" target=\"_blank\" rel=\"noopener\">\u00a0dois<\/a><a href=\"https:\/\/medium.com\/@mroman09\/building-a-convolutional-neural-network-to-classify-images-in-fashion-mnist-57589b94898e\" target=\"_blank\" rel=\"noopener\">\u00a0tutoriais<\/a>\u00a0sobre como criar CNNs do zero.<\/p>\n<ul>\n<li><strong>Criar um modelo de detec\u00e7\u00e3o de objetos<\/strong><\/li>\n<\/ul>\n<p>Como dito anteriormente, os modelos de detec\u00e7\u00e3o de objetos surgiram recentemente com a pesquisa em aprendizagem profunda. A arquitetura Faster R-CNN foi introduzida no final de 2015 como uma itera\u00e7\u00e3o da arquitetura mais antiga Fast R-CNN. Ela produz :<\/p>\n<p>a) uma lista de caixas delimitadoras<\/p>\n<p>b) um r\u00f3tulo atribu\u00eddo a cada caixa delimitadora<\/p>\n<p>c) uma probabilidade para cada r\u00f3tulo e caixa delimitadora<\/p>\n<p>Primeiro, uma CNN pr\u00e9-treinada \u00e9 aplicada \u00e0 imagem, criando um mapa de recursos. Esses recursos s\u00e3o ent\u00e3o passados para um RPN para encontrar regi\u00f5es candidatas (caixas delimitadoras) que contenham objetos relevantes. A \u00faltima etapa consiste em usar os recursos computados pela CNN e as caixas delimitadoras para classificar o conte\u00fado das caixas delimitadoras e ajustar suas coordenadas (para que se ajustem melhor ao objeto). Isso \u00e9 feito por meio do m\u00f3dulo RCNN. A figura abaixo ilustra a arquitetura:<\/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>Mais detalhes s\u00e3o fornecidos neste<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>, O trabalho de c\u00f3digo aberto sobre o t\u00f3pico est\u00e1 dispon\u00edvel<a href=\"https:\/\/github.com\/tryolabs\/luminoth\/tree\/master\/luminoth\/models\/fasterrcnn\" target=\"_blank\" rel=\"noopener\">\u00a0aqui<\/a>.<\/p>\n<ul>\n<li><strong>Crie um modelo h\u00edbrido usando arquiteturas de detec\u00e7\u00e3o de objetos e CNNs<\/strong><\/li>\n<\/ul>\n<p>Se quiser melhorar seu desempenho, o senhor pode considerar a abordagem h\u00edbrida. \u00c9 poss\u00edvel que uma abordagem de detec\u00e7\u00e3o de objetos resulte em classifica\u00e7\u00e3o ruim (o objeto \u00e9 bem detectado, mas o r\u00f3tulo errado \u00e9 previsto). Nesse caso, o senhor pode primeiro treinar um modelo de detec\u00e7\u00e3o de objetos no dataset, com apenas um r\u00f3tulo (\"objeto\", por exemplo) e, em seguida, cortar as imagens com base nas coordenadas das caixas delimitadoras. Isso criar\u00e1 um conjunto de imagens contendo apenas o objeto relevante detectado nas imagens originais. O senhor pode ent\u00e3o usar esse conjunto como um conjunto de treinamento para a classifica\u00e7\u00e3o de imagens CNN.<\/p>\n<h3><strong><span style=\"color: #ff0066;\">Extens\u00e3o - Aprendizado autom\u00e1tico de m\u00e1quina<\/span><\/strong><\/h3>\n<p>Atualmente, podemos observar o desenvolvimento de novas iniciativas com o objetivo de tornar o processo de cria\u00e7\u00e3o e personaliza\u00e7\u00e3o de seu pr\u00f3prio modelo dispon\u00edvel para qualquer pessoa, mesmo para pessoas sem forma\u00e7\u00e3o t\u00e9cnica. O objetivo \u00e9 que, em vez de usar modelos prontos para aplicar (como o n\u00edvel 1), o senhor possa treinar seu pr\u00f3prio modelo sem precisar ter o conhecimento subjacente.<\/p>\n<p><strong>Como isso funciona?<\/strong><\/p>\n<p>A solu\u00e7\u00e3o envolve a automatiza\u00e7\u00e3o da cria\u00e7\u00e3o do modelo de classifica\u00e7\u00e3o de imagens ou do modelo de detec\u00e7\u00e3o de objetos. O senhor s\u00f3 precisaria fornecer um conjunto de data rotulado com suas imagens e, em seguida, envi\u00e1-las para a solu\u00e7\u00e3o. Esse data ser\u00e1 ingerido para treinar um modelo de vis\u00e3o computacional nele (como n\u00edvel 2 ou n\u00edvel 3). Ele produzir\u00e1 um modelo treinado, \u00e0s vezes at\u00e9 uma API, que o senhor pode usar para prever os r\u00f3tulos e localizar objetos em novas imagens. O modelo se otimiza sozinho, portanto, o senhor n\u00e3o precisa saber como implement\u00e1-lo e como parametriz\u00e1-lo.<\/p>\n<p><strong>Quais s\u00e3o as solu\u00e7\u00f5es?<\/strong><\/p>\n<p>Dois atores principais est\u00e3o surgindo nessa \u00e1rea e lan\u00e7aram ferramentas que ainda est\u00e3o em vers\u00e3o beta no momento.<\/p>\n<ul>\n<li>Em primeiro lugar, temos o Google e seu componente Google Cloud AutoML de seu conjunto de plataformas em nuvem (<a href=\"https:\/\/cloud.google.com\/automl\/\" target=\"_blank\" rel=\"noopener\">link aqui<\/a>). O Cloud AutoML n\u00e3o foi projetado apenas para problemas de vis\u00e3o computacional, mas tamb\u00e9m pode ser \u00fatil para qualquer aplicativo de aprendizado de m\u00e1quina, bem como para processamento e tradu\u00e7\u00e3o de idioma natural.<\/li>\n<li>Em segundo lugar, temos a iniciativa de c\u00f3digo aberto AutoKeras (<a href=\"https:\/\/autokeras.com\/start\/\" target=\"_blank\" rel=\"noopener\">link aqui<\/a>). Ele \u00e9 baseado no Keras e se baseia na pesquisa autom\u00e1tica de arquitetura e hiperpar\u00e2metros de modelos de aprendizagem profunda.<\/li>\n<\/ul>\n<p><em>Artigo escrito em conjunto por Matthieu Montaigu e Kasra Mansouri, cientistas do Data no Artefact.<\/em><\/p>\n<p><strong>O senhor est\u00e1 interessado em saber mais sobre previs\u00e3o de vendas gra\u00e7as a modelos de reconhecimento de produtos feitos sob medida? Nossos especialistas est\u00e3o \u00e0 sua disposi\u00e7\u00e3o para responder a quaisquer perguntas que o senhor possa ter!\u00a0<\/strong><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/p>","protected":false},"excerpt":{"rendered":"<p>Imagine que o senhor \u00e9 o diretor de uma nova empresa iniciante de alta tecnologia, que pretende vender um produto totalmente novo (digamos, um novo dispositivo de IoT) para o mercado. O senhor participou de muitas confer\u00eancias, exposi\u00e7\u00f5es e demonstra\u00e7\u00f5es para comunicar antecipadamente sobre o seu produto e aumentar a conscientiza\u00e7\u00e3o. O impacto direto que o senhor espera \u00e9 que as vendas do seu produto, uma vez lan\u00e7ado, possam ser altas o suficiente para atender aos seus 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\/br\/wp-json\/wp\/v2\/blog\/745","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/media\/746"}],"wp:attachment":[{"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/media?parent=745"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/blog-category?post=745"},{"taxonomy":"blog-language","embeddable":true,"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/blog-language?post=745"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}