- 1. Introdução
- 2. Reconhecimento visual
- 3. Controle de temperatura
- 4. Avaliação
- 5. Pré-requisitos
- 6. Treinamento do modelo
- 7. Configure o Device no IoT Platform
- 8. Aplicação na nuvem
- 9. Submissão
Dois dos grandes desafios das empresas do ramo alimentício que possuem seus produtos expostos para venda em diferentes estabelecimentos é manter os expositores devidamente abastecidos e organizados, sem lacunas, posição correta e sem danos, além de garantir que os produtos com as devidas condições de temperatura para manter a qualidade do produto.
Para resolver este problema, as empresas dispõem de funcionários para vistorias regulares e manutenção dos freezers. Porém, como geralmente as empresas possuem seus produtos expostos em diversos canais (supermercados, atacados, mercearias, lojas de conveniência, etc) fica inviável a logística de vistoria mais frequente, o que acaba resultando na má experiência dos clientes.
Baseado neste cenário, a BRF deseja criar um sistema que utilize inteligência artificial para identificar freezers não organizados adequadamente e que envie alertas nos casos em que a temperatura esteja fora do padrão aceito para manter a qualidade do produto.
Como citado anteriormente, conforme os clientes interagem com os produtos presentes nos freezers, pode ocorrer a danificação de algumas embalagens, a desorganização dos produtos ocasionando a falta de padronização e a danificação do próprio produto caso a temperatura do freezer estiver inadequada.
Com isto a iniciativa visa posicionar uma câmera na frente de cada freezer que é acionada cada vez que o freezer sofre uma interação e um sensor de temperatura para cada freezer.
A imagem capturada pela câmera será enviada para sistema automático de verificação e, após ser processada, ela será classificada nas seguintes categorias: organizado e desorganizado. Sendo assim, este desafio é composto por dois problemas: reconhecimento visual e controle de temperatura.
Nas fotos 1 é possível visualizar o freezer que está organizado.
As figuras 3 e 4 são exemplos de freezers desorganizados. Na figura 3 os produtos não estão dispostos na mesma ordem e na figura 4 é possível ver um produto totalmente diferente no freezer.
O objetivo deste desafio é criar um sistema automático de verificação de produtos. Para realizar esta atividade, aconselhamos que o participante utilize do produto Watson Visual Recognition. A base de dados de imagens será fornecida junto ao desafio para cada participante. Portanto, cada participante deve criar seu próprio classificador. Mas, antes terá que separar manualmente as imagens da base nas duas classes citadas anteriormente. Caso considere pertinente, cada participante pode manipular as imagens da base previamente afim de melhorar o acurácia de classificação do modelo do Watson Visual Recognition.
Lembrando que a câmera possui um posicionamento fixo frente ao freezer, portanto as imagens serão capturadas sempre do mesmo ângulo e não vão possuir nenhuma variação de luminosidade ou qualidade.
Cada participante deve considerar as seguintes definições para as classes organizado e desorganizado:
- Organizado: todos os itens dispostos da mesma forma, todos os itens iguais na mesma pilha e sem nenhum objeto diferente da maioria dos demais objetos.
- Desorganizado: nem todos os itens estão dispostos da mesma forma ou itens em isolados em pilhas diferentes ou com algum objeto diferente da maioria dos demais produtos.
Como dito anteriormente, um freezer precisa manter uma temperatura adequada para os produtos que estão no freezer. Desta forma, faz parte deste exercício medir a temperatura dos freezers usando uma solução de IoT. Para este desafio, temos um (1) sensor em um (1) freezer. Este sensor está conectado em na plataforma de IoT Internet of Things Platform da IBM Cloud. Nesta parte do desafio você terá que criar um device lógico do tipo sensor de temperatura, criar um simulador para geração de dados de sensor, criar algoritmo para gerar os alertas de temperatura fora do padrão.
O sistema testará o reconhecimento de exposição dos freezers, através de envio de imagens de freezer organizados e não organizados, conforme os modelos criados pelo participantes. O participante pode criar uma classe, com o nome de organizado
ou desorganizado
, ou pode criar duas classes, com os nomes de organizado
e desorganizado
.
O sistema de validação vai enviar dados fictícios de sensor para a solução do participante e validar os envios de alertas, de acordo com o valor enviado e ranges de temperaturas estabelecidos.
Você deverá cumprir os seguintes itens:
- Registrar na Maratona Behind the Code e confirmar o e-mail de cadastro.
- Registrar na IBM Cloud e confirmar o e-mail de cadastro.
🚨 É POSSÍVEL USAR A MESMA INSTÂNCIA DO WATSON STUDIO E VISUAL RECOGNITION NESTE DESAFIO 🚨
Veja o vídeo abaixo de como treinar o seu modelo de Visual Recognition, usando Watson Studio.
- Crie uma instância de Watson Studio, em
Dallas
e acesse a plataforma, clicando no botão "Get Started". - Separe o dataset.zip em duas classes:
organizado
edesorganizado
. - Faça o treinamento, com o dataset.zip, no Visual Recognition.
🚨 SALVE AS CREDENCIAIS. VOCÊ IRÁ PRECISAR PARA SUBIR A APLICAÇÃO 🚨
Para pegar o IAM_APIKEY
(ou, em alguns casos, API Key
apenas), acesse o https://cloud.ibm.com/resources e veja na lista de Service
, você encontrará todos os serviços provisionados na sua conta (incluindo o Watson Assistant, Discovery, Watson Studio, Visual Recognition e Machine Learning, serviços dos desafios 1, 2, 3 e 4). Lembre-se: Caso você já tenha realizado o Desafio 3, você deve ter uma instância com o nome de watson-vision-combined-dsx
. Este é o serviço do Visual Recognition
criado pelo Watson Studio
. Não precisa criar outra instância.
Veja o vídeo abaixo de como configurar um novo device
no Internet of Things Platform
e como configurar um simulador de dados no device.
- Crie uma instância de Internet of Things Platform, em
Dallas
e acesse a plataforma, clicando no botão "Launch". - Na aba
Devices
, crie um novo dispositivo clicando em, preenchendo o
Device Type
eDevice ID
(pule os próximos campos, clicando em próximo) pois não há necessidade de preenchê-los – lembre-se: Guarde as informações do seu dispositivo como o token pois você não terá acesso a elas depois. - Após ter criado seu dispositivo, clique na aba aplicativos (lista do lado esquerdo da tela) , gere uma nova
API Key
, clicando no canto superior direito da tela, e ao criar selecione a opçãoStandard Application
. Guarde sua chave API e token de autorização, pois o usaremos mais tarde. - Vá até a aba
Settings
, ative a opçãoLast Event Cache
e o deixe configurado com validade de7 dias
. Clique no menu do lado esquerdo na opçãoDevice Simulator
e a ative. - Depois de ativar o
Device Simulator
clique na aba que se encontra no canto inferior direito, conforme print abaixo.
Coloque o Event type name
com o valor de temperatura
e o payload
com a estrutura abaixo.
- Uma aba suspensa será aberta (como um pop-up), clique no botão
+ Create simulation
, selecione o dispositivo que você criou anteriormente e configure o campo editável com as informações mostradas abaixo.
{
"temperatura": random(0, 20)
}
Clique em salvar e em seguida clique no botão Use Registered Device
selecione o seu dispositivo e feche a janela.
Para subir a aplicação na IBM Cloud, você deve clicar no botão
abaixo para subir usando o IBM Continuous Delivery (também conhecido como Delivery Pipeline). Você deve subir a sua aplicação em Dallas.
🚨 CLIQUE PARA SUBIR A APLICAÇÃO NA IBM CLOUD 🚨
-
Configure o
Toolchain Name
com<maratona-id>-desafio5-behindthecode
, substituindo o<maratona-id>
pelo seu ID da Maratona (Ex: 100001). Se você não souber, verifique no seu e-mail, usado no registro da Maratona, para pegar o seu ID. -
Configure o
App name
com a mesmo valor usado no item 1. -
Crie uma chave (de uso interno). Basta clicar em "Create" e depois clique em "Create" novamente. Espere um instante até carregar todas os dados. Se demorar muito (mais de 5 minutos), recarregue a página e faça novamente o passo 1 e 2. Na parte superior, você pode deixar em Washington DC ou Dallas. Já na parte inferior (abaixo do item 2), é mandatório configurar a Região de Dallas.
Clique em Eclipse Orion Web IDE
para configurar a aplicação.
Abaixo está o passo-a-passo, obrigatório, para configurar a sua aplicação no Eclipse Orion Web IDE.
- Abra o arquivo
.env
para colocar as credenciais doVisual Recognition
,Internet of Things Platform
e daMaratona
(lembre-se de que é o mesmo código usado para indicar novos participantes na Maratona). Preencha com os dados, após o=
(símbolo de igual).
# Credenciais para o Desafio 5
DESAFIO=5
MARATONA_ID=
# Visual Recognition
IAM_APIKEY=
CLASSIFIER_ID=
# Internet of Things Platform
ORG_ID=
API_KEY=
AUTH_TOKEN=
DEVICE_ID=
DEVICE_TYPE=
DEVICE_TOKEN=
- Abra o arquivo
manifest.yml
e altere o<maratona-id>
com o seu ID da Maratona, o mesmo usado acima. Lembre-se: é mandatório ter a URL com o formato doname
, apresentado abaixo.
applications:
- name: <seu-id>-desafio5-behindthecode
memory: 256M
instances: 1
buildpack: sdk-for-nodejs
Clique em Create new launch configuration
e crie a configuração para a sua aplicação (que está sendo criada em background). Launch Config Name
, Application Name
e Host
devem ter o mesmo nome, com o formato <maratona-id>-desafio5-behindthecode
, igual nos itens anteriores. Clique em SAVE
para salvar as configurações.
Clique em PLAY
(primeiro botão na imagem). Espere até ficar verde
(com o status: running
). Depois, clique em Open
(terceiro botão na imagem). Vai abrir a sua aplicação, com as configurações implementadas.
🚨 TESTE BASTANTE O SEU MODELO DE TREINAMENTO 🚨
Mande várias imagens ou fotos para testar o seu modelo. Faça quantos testes forem necessários e, se precisar, treine e re-treine o seu modelo para melhorar cada vez mais. Quando se sentir confortável, faça a submissão do seu desafio. Lembre-se: NÃO é possível submeter mais de uma vez. Fique atento!
Através da aplicação na IBM Cloud (https://<maratona-id>-desafio5-behindthecode.mybluemix.net
), você irá clicar no botão SUBMETER DESAFIO, preencher com o seu CPF e enviar para a avaliação final.
FIQUEM LIGADOS NO SITE DA MARATONA PARA ACOMPANHAR O RANKING GERAL E O RANKING DO DESAFIO! FIQUE NA TORCIDA PARA ESTAR ENTRE OS MELHORES!
-
No
Logs
da aplicação, apresentou um erro (em vermelho). O que pode ser?Resposta: Veja se você colocou as credenciais da Maratona, Watson Assistant e Machine Learning no arquivo
.env
e se o arquivomanifest.yml
está correto, conforme descrito acima. Veja se a sua aplicação está rodando na URL correta conforme descrito acima.
Acesse o slack e mande a sua dúvida: ibm.biz/convite-slack.
Copyright 2019 Maratona Behind the Code
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.