Conteúdo


Desenvolva com as dicas do Watson: melhores práticas para usar classificadores customizados no Watson Visual Recognition

Comments

A API IBM Watson Visual Recognition é uma ferramenta cognitiva poderosa que identifica conteúdo de imagem. A API é fornecida com modelos pré-treinados que podem detectar com precisão objetos, rostos, cenas, cores e alimentos, o que facilita a rapidez da adoção e da implementação. Mas o verdadeiro poder vem da capacidade de treinar o Watson para reconhecer classes customizadas.

Com o poder dos classificadores customizados, os usuários ajudaram a Califórnia a economizar água,, realizaram inspeções de infraestrutura com drones, e automatizaram as inspeções de controle de qualidade das linhas de montagem automotivas. Para aproveitar ao máximo a API Visual Recognition, existem várias técnicas e otimizações que ajudarão a maximizar a precisão.

Preparação é fundamental

A precisão de um classificador customizado depende da qualidade das imagens de treinamento fornecidas. Anteriormente, os usuários que controlavam de perto seus processos de treinamento observaram uma precisão superior a 98 por cento. A precisão, diferentemente da confiança, é baseada em uma verdade absoluta para um problema de classificação específico e um conjunto de dados.

Como melhor prática, crie uma verdade absoluta como referência para a precisão do classificador em relação à classificação humana. Os benefícios do reconhecimento automatizado, além do aumento da precisão, envolvem resultados confiáveis ao longo do tempo, uma vez que, não havendo fadiga, o sistema é capaz de processar imagens em grande escala com bastante rapidez.

Para que um classificador customizado seja considerado preciso, não basta que ele seja capaz de identificar corretamente quando as imagens devem estar em uma classe, ele também deve garantir que nenhuma imagem seja atribuída incorretamente a essa classe. Essas atribuições incorretas são chamadas de falsos positivos.

Evitar esses falsos positivos é o motivo pelo qual devem ser fornecidos dois conjuntos de imagens durante o treinamento. O primeiro representa os "exemplos positivos" da classe. O segundo conjunto representa os "exemplos negativos", por exemplo, o objeto ou a condição não existe na imagem.

Para aumentar a precisão do classificador, é fundamental que os exemplos negativos sejam visualmente semelhantes aos exemplos positivos mas sem exibir a condição desejada para essa classe. Dessa forma, o Watson aprende que as características da imagem são importantes, o que reduz os falsos positivos.

Para criar esses conjuntos de exemplos positivos e negativos, é necessário ter uma lista de imagens classificadas manualmente. É importante que as imagens de treinamento fornecidas tenham um alto grau de confiança, portanto, é melhor não incluir nenhuma imagem que cause dúvidas ao ser classificada manualmente.

Em termos de tamanho do conjunto de dados de treinamento, é recomendado fornecer no mínimo 50 exemplos positivos e 50 exemplos negativos. Quanto mais imagens forem fornecidas, maior será a precisão do classificador. No entanto, após 5000 imagens a melhoria provavelmente passará a ser mínima. A recomendação é treinar de 150 a 200 imagens para fornecer um bom equilíbrio entre o tempo de treinamento e a precisão.

Ao procurar as imagens classificadas manualmente, é melhor encontrar uma ampla variedade para maximizar a experiência que o Watson oferece. Há vários fatores a serem considerados, incluindo:

  • Iluminação
  • Ângulos
  • Foco
  • Cor
  • Forma
  • Distância e assunto
  • Presença de outros objetos na imagem

Observe que o Watson adota uma abordagem holística ao ser treinado em cada imagem. Embora ele avalie todos os elementos listados acima, ele não consegue considerar exclusivamente um elemento específico.

No entanto, nem sempre é viável desenvolver um conjunto de dados de treinamento com esse nível de variação. Esse problema pode ser solucionado por meio da geração automática de imagens manipuladas. Por exemplo, as imagens podem ser duplicadas e giradas, deslocadas, escaladas novamente, ter o zoom aumentado e ser espelhadas horizontalmente de maneira automática. Isso pode aumentar radicalmente o tamanho do conjunto de dados de treinamento com pouco esforço.

Se a condição que você estiver tentando reconhecer estiver apenas em uma pequena seção da imagem, o Watson poderá se esforçar para aprender a reconhecer a classe sem um conjunto de dados de treinamento muito grande. Nesse caso, é melhor dividi-la em imagens menores, classificar cada uma e agregar os resultados.

Com as imagens classificadas manualmente que são reunidas e geradas, será possível treinar o classificador customizado. Para poder testar a precisão, essas imagens precisam ser divididas em dois conjuntos, um para treinamento e outro para teste. Deve-se executar esse processo tanto para os exemplos negativos, quanto para os exemplos positivos.

Para obter resultados melhores, as imagens classificadas manualmente devem ser atribuídas aleatoriamente aos conjuntos de imagens de treinamento e teste. Isso assegura que exista variação de imagens em ambos os conjuntos. Se essa atribuição aleatória não for feita, o classificador poderá aprender com um conjunto de dados muito restrito, o que resultará em um desempenho fraco quando testado em relação a imagens visualmente distintas. Os métodos de como dividir e testar o conjunto de dados durante essa fase são assuntos muito complexos. Para começar, dividir o treinamento de imagens de 50:50 e 70:30 é suficiente.

Classificando uma imagem

Para classificar uma imagem, envie a imagem para o terminal classify, substituindo a chave de API pela sua própria nesta URL:

curl -X POST -F "images_file=@fruitbowl.jpg" "https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classify?api_key={api-key}&version=2016-05-20"

A resposta JSON fornece uma lista de pontuações de confiança de classe para cada imagem enviada.

{
    "images": [
        {
            "classifiers": [
                {
                    "classes": [
                        {
                            "class": "apple",
                            "score": 0.645656
                        },
                        {
                            "class": "fruit",
                            "score": 0.598688
                        },
                        {
                            "class": "food",
                            "score": 0.598688
                        },
                        {
                            "class": "orange",
                            "score": 0.5
                        },
                        {
                            "class": "vegetable",
                            "score": 0.28905
                        },
                        {
                            "class": "tree",
                            "score": 0.28905
                        }
                    ],
                    "classifier_id": "default",
                    "name": "default"
                },
            ],
            "image": "orange-apple-banana-isolated.jpg"
        },

Cada pontuação é de 0 a 1 e representa a confiança que o Watson tem na classificação retornada com base nos dados de treinamento para esse classificador. A API classifica para todas as classes no classificador, mas é possível ajustar o limite para retornar somente os resultados acima de uma determinada pontuação de confiança.

As pontuações do classificador customizado podem ser comparadas entre si para avaliar probabilidades. O ponto de corte no qual as pontuações de confiança são consideradas fortes o suficiente para colocar a imagem em uma classe depende do caso de uso. Avaliar os benefícios, os riscos, os falsos positivos ou os negativos verdadeiros ajuda a saber qual deve ser esse limite.

Exemplos de casos de uso difíceis

Embora o Watson Visual Recognition seja altamente flexível, têm havido uma série de casos de uso em que a API encontra dificuldade ou requer um trabalho anterior ou posterior significativo do usuário.

  • Reconhecimento facial: o Visual Recognition tem a capacidade de detecção facial (detectar a presença de rostos) não de reconhecimento facial (identificar indivíduos).
  • Detectando detalhes: ocasionalmente, os usuários desejam classificar uma imagem com base em uma pequena seção da imagem ou em detalhes espalhados na imagem. Como o Watson analisa a imagem inteira durante o treinamento, ele pode encontrar dificuldade em classificações que dependem de um pequeno detalhe. Alguns usuários têm adotado a estratégia de quebrar a imagem em partes ou aumentar o zoom nas partes relevantes de uma imagem. Veja este vídeo de classificação de danos causados por granizo como exemplo.
  • Emoção: a classificação de emoção (seja emoção facial ou emoção contextual) não é um recurso suportado pelo Visual Recognition no momento. Alguns usuários têm tentado fazer isso usando classificadores customizados, mas esse é um caso limite e a precisão desse tipo de treinamento não pode ser estimada.

Exemplos de imagens de treinamento boas e ruins

Imagens de treinamento boas

As imagens a seguir foram usadas para treinamento e teste pela nossa parceira OmniEarth. Essas imagens demonstram um bom treinamento porque as imagens nos conjuntos de treinamento e teste devem ser semelhantes entre si em relação a ângulo, iluminação, distância, tamanho do sujeito e assim por diante. Veja o estudo de caso OmniEarth: Combating drought with IBM Watson cognitive capabilities para obter mais detalhes.

Imagens de treinamento

Images of lots of tennis courts
Images of lots of tennis courts

Imagem de teste

Image of one tennis court
Image of one tennis court

Imagens de treinamento ruins

As imagens a seguir demonstram um treinamento ruim porque a imagem de treinamento mostra uma foto de close-up de uma única maçã enquanto a imagem de teste mostra um grupo de maças fotografadas a uma certa distância com outros itens visuais introduzidos (como a esteira transportadora). É possível que o Watson falhe ao classificar a imagem de teste como maçãs, principalmente se outra classe no classificador contiver imagens de treinamento de um grande grupo objetos arredondados (como peras ou laranjas).

Imagem de treinamento

Image of 1 apple
Image of 1 apple

Imagem de teste

Image of apples on a conveyor belt
Image of apples on a conveyor belt

As imagens a seguir demonstram um treinamento ruim porque a imagem de treinamento mostra uma foto de close-up, de um único sofá, em uma configuração de estúdio bem iluminada, enquanto a imagem de teste mostra um sofá em uma configuração visualmente confusa, mais afastado, e situado entre vários outros objetos. O Watson pode não ser capaz de classificar a imagem de teste adequadamente devido ao número de outros objetos que confundem a cena.

Imagem de treinamento

Image of a single sofa
Image of a single sofa

Imagem de teste

Image of several sofas
Image of several sofas

Recomendações para dados de treinamento

Para resumir, minhas dicas para maximizar a precisão do classificador customizado:

  • Inclua pelo menos 150 exemplos positivos e negativos durante o treinamento.
  • Maximize a variação na composição da imagem em cada conjunto de exemplo.
  • Minimize a variação entre os exemplos positivos e negativos.
  • Corte as imagens se a condição a ser correspondida representar somente uma pequena parte da imagem maior.
  • Considere gerar conjuntos de dados de treinamento maiores aplicando transformações automaticamente para criar variantes.

Estamos entusiasmados para ver o que você desenvolveu com o Watson Visual Recognition. Nunca foi tão fácil ou tão barato treinar um classificador de imagem com o IBM Watson. Se você precisar de ajuda durante o processo, envie suas perguntas para os fóruns do developerWorks.


Recursos para download


Temas relacionados


Comentários

Acesse ou registre-se para adicionar e acompanhar os comentários.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Cognitive computing
ArticleID=1050587
ArticleTitle=Desenvolva com as dicas do Watson: melhores práticas para usar classificadores customizados no Watson Visual Recognition
publish-date=10042017