Skip to content

Commit

Permalink
New translations how-open-food-facts-uses-logos-to-get-information-on…
Browse files Browse the repository at this point in the history
…-food-products.html (Portuguese, Brazilian)
  • Loading branch information
openfoodfacts-bot committed Sep 8, 2024
1 parent 0e6b74a commit fedf318
Showing 1 changed file with 18 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ <h3><strong>🧂Uma pitada de contexto:</strong> “logos” ?</h3>
<!-- /wp:paragraph -->

<!-- wp:table -->
<figure class="wp-block-table"><table><tbody><tr><td><strong>* What is Robotoff ?</strong><br><a rel="noreferrer noopener" href="https://github.com/openfoodfacts/robotoff" target="_blank">Robotoff</a> is a service developed by contributors to help Open Food Facts data processing. Com base nas informações já disponíveis no banco de dados, o objetivo é recuperar o máximo de informações possível sobre cada produto e adicioná-los ao banco de dados. Atualmente, as atualizações feitas pelo Robotoff vêm da análise de imagens, através de Reconhecimento Óptico de Caracteres ou modelos mais gerais de Visão Computacional. Algumas atualizações são aplicadas automaticamente ao banco de dados, mas outras precisam de validação manual através de perguntas ou pelo programa Hunger Games.<br><br><em><strong>Para saber mais sobre Robotoff, dê uma olhada <a rel="noreferrer noopener" href="https://github.com/openfoodfacts/robotoff#readme" target="_blank">aqui</a>!</strong></em>👀</td></tr></tbody></table></figure>
<figure class="wp-block-table"><table><tbody><tr><td><strong>* O que é Robotoff?</strong><br><a rel="noreferrer noopener" href="https://github.com/openfoodfacts/robotoff" target="_blank">Robotoff</a> é um serviço desenvolvido por colaboradores para ajudar no processamento de dados do Open Food Facts. Com base nas informações já disponíveis no banco de dados, o objetivo é recuperar o máximo de informações possível sobre cada produto e adicioná-los ao banco de dados. Atualmente, as atualizações feitas pelo Robotoff vêm da análise de imagens, através de Reconhecimento Óptico de Caracteres ou modelos mais gerais de Visão Computacional. Algumas atualizações são aplicadas automaticamente ao banco de dados, mas outras precisam de validação manual através de perguntas ou pelo programa Hunger Games.<br><br><em><strong>Para saber mais sobre Robotoff, dê uma olhada <a rel="noreferrer noopener" href="https://github.com/openfoodfacts/robotoff#readme" target="_blank">aqui</a>!</strong></em>👀</td></tr></tbody></table></figure>
<!-- /wp:table -->

<!-- wp:heading {"level":3} -->
Expand Down Expand Up @@ -93,71 +93,72 @@ <h4><em>2️⃣ </em>Converter imagens de logotipos em vetores:</h4>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Agora que podemos acessar os logotipos, precisamos vetorizá-los</strong>. Para isso, usamos um modelo pré-treinado do OpenAI chamado <a href="https://huggingface.co/docs/transformers/model_doc/clip" target="_blank" rel="noreferrer noopener">CLIP</a>. Even though the model was initially trained to match images with text, we use only the “computer vision” part of the model to get the embeddings (=logos embedded in a vector space) computed by CLIP for each logo.</p>
<p><strong>Agora que podemos acessar os logotipos, precisamos vetorizá-los</strong>. Para isso, usamos um modelo pré-treinado do OpenAI chamado <a href="https://huggingface.co/docs/transformers/model_doc/clip" target="_blank" rel="noreferrer noopener">CLIP</a>. Embora o modelo tenha sido inicialmente treinado para combinar imagens com texto, usamos apenas a parte de “visão computacional” do modelo para obter as inserções (=logotipos incorporados em um espaço vetorial) computados pelo CLIP para cada logotipo.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We thus have a logo image as input and a vector of dimension 512 as output. The smaller the distance between two vectors is, the more similar the two corresponding logos are.</p>
<p>Temos, portanto, uma imagem de logotipo como entrada e um vetor de dimensão 512 como saída. Quanto menor for a distância entre dois vetores, mais semelhantes serão os dois logotipos correspondentes.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The <a href="https://github.com/openfoodfacts/robotoff/blob/b209707cc062310b51f9886c87ee14be91527644/robotoff/workers/tasks/import_image.py#L398" target="_blank" rel="noreferrer noopener">save_logo_embeddings</a> function in Robotoff is in charge of applying the model to logos and save embeddings to the Robotoff postgresql database.</p>
<p>A função <a href="https://github.com/openfoodfacts/robotoff/blob/b209707cc062310b51f9886c87ee14be91527644/robotoff/workers/tasks/import_image.py#L398" target="_blank" rel="noreferrer noopener">save_logo_embeddings</a> no Robotoff é responsável por aplicar o modelo aos logotipos e salvar as inserções no banco de dados postgresql do Robotoff.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You can find a more explicit code <a href="https://github.com/openfoodfacts/openfoodfacts-ai/blob/develop/logo-ann/generation/02_generate_embeddings.py#L108" target="_blank" rel="noreferrer noopener">here</a> to understand how we use CLIP to generate logos embeddings.</p>
<p>Você pode encontrar um código mais explícito <a href="https://github.com/openfoodfacts/openfoodfacts-ai/blob/develop/logo-ann/generation/02_generate_embeddings.py#L108" target="_blank" rel="noreferrer noopener">aqui</a> para entender como usamos o CLIP para gerar inserções de logotipos.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4><em>3️⃣ </em>Find nearest neighbours:</h4>
<h4><em>3️⃣ </em>Encontre os vizinhos mais próximos:</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To find the nearest neighbors of a logo, we use an “index” to store the embeddings. Once this index is built, we could use the <strong>brute force” 💪 method which consists in computing the distance between the query logo and all the other logos of the db and return the closest ones</strong>. That’s the most precise method as it gives us the “true” nearest neighbors. However, this method is too slow to be applied. The time needed to extract the nearest neighbors for each logo when the total amount of logos is 2.5M is around 3s 😴</p>
<p>Para encontrar os vizinhos mais próximos de um logotipo, usamos um “índice” para armazenar as inserções. Uma vez construído esse índice, poderíamos usar o método <strong>força bruta” 💪 que consiste em calcular a distância entre o logo da consulta e todos os outros logos do banco de dados e retornar os mais próximos</strong>. Esse é o método mais preciso, pois nos dá os “verdadeiros” vizinhos mais próximos. Entretanto, esse método é muito lento para ser aplicado. O tempo necessário para extrair os vizinhos mais próximos de cada logotipo quando a quantidade total de logotipos é 2,5 milhões é de cerca de 3s 😴</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>As we needed a better search time and were ok with having less precision, we decided to use <strong>an approximate method</strong>. The one that Robotoff uses is called HNSW (hierarchical navigable small world). You can take a look at <a rel="noreferrer noopener" href="https://www.pinecone.io/learn/vector-indexes/" target="_blank">this article</a> to understand better nearest neighbours search.</p>
<p>Como precisávamos de um tempo de busca melhor e não nos importávamos com menos precisão, decidimos usar <strong>um método aproximado</strong>. O método utilizado por Robotoff usa é chamado HNSW (pequeno mundo hierárquico navegável). Você pode dar uma olhada <a rel="noreferrer noopener" href="https://www.pinecone.io/learn/vector-indexes/" target="_blank">neste artigo</a> para entender melhor a busca por vizinhos mais próximos.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Using a HNSW ElasticSearch index, Robotoff is now able to look for the nearest neighbours of each embedding among more than 2.5M vectors with a huge precision (more than 90% of the 100 nearest neighbours returned are among the exact 100 true nearest neighbours) and a short search time of less than 100ms 👏👏👏👏.</p>
<p>Usando um índice PMNH ElasticSearch, o Robotoff agora é capaz de procurar os vizinhos mais próximos de cada inserção entre mais de 2,5 milhões de vetores com uma precisão enorme (mais de 90% dos 100 vizinhos mais próximos retornados estão entre os exatos 100 vizinhos mais próximos verdadeiros) e um tempo de busca curto de menos de 100 ms 👏👏👏👏.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You can use the following API to get the nearest neighbours of a logo: <a href="https://robotoff.openfoodfacts.org/api/v1/ann/search/[logo_id]?count=[count]">https://robotoff.openfoodfacts.org/api/v1/ann/search/[logo_id]?count=[count]</a></p>
<p>Você pode usar a seguinte API para obter os vizinhos mais próximos de um logotipo: <a href="https://robotoff.openfoodfacts.org/api/v1/ann/search/[logo_id]?count=[count]">https://robotoff.openfoodfacts.org/api/v1/ann/search/[logo_id]?count=[count]</a></p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3><strong>🍯 A spoon of contributions: </strong>Where is it used?</h3>
<h3><strong>🍯 Uma colher de contribuições: </strong>Onde é usado?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>No automatic logo categorization is yet implemented in Robotoff. Everything I explained before is made only for <a href="https://hunger.openfoodfacts.org/">Hunger Games</a>.</p>
<p>Nenhuma categorização automática de logotipo ainda
foi implementada no Robotoff. Tudo o que expliquei antes é feito apenas para o programa <a href="https://hunger.openfoodfacts.org/">Jogos Vorazes</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>O que é isso? It is <strong>an annotation platform </strong>developed by a contributor named Alexandre Fauquette which <strong>allows everyone to answer check predictions made by Robotoff and to categorise logos</strong>.&nbsp;</p>
<p>O que é isso? É <strong>uma plataforma de anotação </strong>desenvolvida por um colaborador chamado Alexandre Fauquette que <strong>permite que todos respondam às previsões de verificação feitas pelo Robotoff e categorizem logotipos</strong>.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><br>You can try it. A quick introduction/tutorial will welcome you and you will be able to annotate logos ! 😉<br>A video tutorial of “How to use Hunger Games ?” should be out soon… ⏳ ⏳ ⏳ ⏳ ⏳ ⏳</p>
<p><br>Você pode tentar. Uma rápida introdução/tutorial lhe dará as boas-vindas e você poderá fazer anotações em logotipos! 😉<br>A video tutorial of “How to use Hunger Games ?” should be out soon… ⏳ ⏳ ⏳ ⏳ ⏳ ⏳</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":3433,"width":505,"height":633,"sizeSlug":"full","linkDestination":"custom"} -->
<figure class="wp-block-image aligncenter size-full is-resized"><a href="hunger.openfoodfacts.org"><img src="https://blog.openfoodfacts.org/wp-content/uploads/2023/02/Screenshot-2023-02-14-at-14.44.23.png" alt="" class="wp-image-3433" width="505" height="633"/></a><figcaption class="wp-element-caption">To play the Hunger Games: hunger.openfoodfacts.org</figcaption></figure>
<figure class="wp-block-image aligncenter size-full is-resized"><a href="hunger.openfoodfacts.org"><img src="https://blog.openfoodfacts.org/wp-content/uploads/2023/02/Screenshot-2023-02-14-at-14.44.23.png" alt="" class="wp-image-3433" width="505" height="633"/></a><figcaption class="wp-element-caption">Para jogar o programa Hunger Games: hunger.openfoodfacts.org</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p><strong>Annotating logos enhance Open Food Facts as it grows the amount of data we have on products and its quality.</strong> And thanks to the models and algorithms used in the background, you can be way more powerful and have a greater impact on people daily alimentation 🥰.</p>
<p><strong>Anotar logotipos aprimora o Open Food Facts à medida que aumenta a quantidade de dados que temos sobre produtos e sua qualidade.</strong> E graças aos modelos e algoritmos usados em segundo plano, você pode ser muito mais poderoso e ter um impacto maior na alimentação diária das pessoas 🥰.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Article by Gabriel</p>
<p>Artigo de Gabriel</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"left","id":3418,"width":167,"height":167,"sizeSlug":"full","linkDestination":"none"} -->
Expand Down

0 comments on commit fedf318

Please sign in to comment.