O objetivo do trabalho apresentado neste artigo é desenvolver tecnologia para reconhecimento automatizado de itens de alimentos e bebidas a partir de imagens tiradas por dispositivos móveis. A tecnologia é composta por duas abordagens diferentes – a primeira realiza o reconhecimento de imagem alimentar, enquanto a segunda realiza a segmentação de imagens alimentares.
Devido aos problemas e custos associados às abordagens manuais de avaliação alimentar, soluções automatizadas são necessárias para facilitar e acelerar o trabalho e aumentar sua qualidade. Hoje, soluções automatizadas são capazes de registrar a ingestão dietética de uma pessoa de uma forma muito mais simples, como tirar uma imagem com uma câmera de smartphone. Neste artigo, focaremos em tais abordagens baseadas em imagens para a avaliação alimentar. Para o problema do reconhecimento de imagens alimentares, redes neurais profundas alcançaram o estado da arte nos últimos anos, e apresentamos nosso trabalho neste campo. Em particular, descrevemos pela primeira vez o método de reconhecimento de imagem de alimentos e bebidas usando uma arquitetura de rede neural profunda, chamada NutriNet. Este método, como a maioria das pesquisas feitas nos primeiros dias de reconhecimento de imagem alimentar baseado em aprendizagem profunda, é limitado a uma saída por imagem e, portanto, inadequado para imagens com múltiplos itens de alimentos ou bebidas. É por isso que abordagens que realizam a segmentação de imagens alimentares são consideravelmente mais robustas, pois são capazes de identificar qualquer número de itens alimentares ou bebidas na imagem. Por isso, também apresentamos dois métodos para segmentação de imagens alimentares – um é baseado em redes totalmente convolucionais (FCNs) e outro em redes residuais profundas (ResNet).
A avaliação alimentar é um passo crucial na determinação de áreas acionáveis da dieta de um indivíduo. No entanto, a realização de avaliação alimentar usando abordagens tradicionalmente manuais está associada a custos consideráveis. Essas abordagens também são propensas a erros, pois muitas vezes dependem de auto-relato por parte do indivíduo. A avaliação alimentar automatizada aborda essas questões, fornecendo uma maneira mais simples de quantificar e qualificar a ingestão de alimentos. Tal abordagem também pode aliviar alguns dos erros presentes em abordagens manuais, como refeições perdidas, incapacidade de avaliar com precisão o volume de alimentos, etc. Portanto, há benefícios claros para automatizar a avaliação alimentar, desenvolvendo soluções que identifiquem diferentes alimentos e bebidas e quantifiquem a ingestão alimentar1. Essas soluções também podem ser utilizadas para possibilitar uma estimativa dos valores nutricionais dos alimentos e bebidas (a partir de agora “alimentos”). Consequentemente, a avaliação alimentar automatizada é útil para múltiplas aplicações – desde usos estritamente médicos, como permitir que nutricionistas rastreiem e analisem com mais facilidade e precisão as dietas de seus pacientes, até o uso dentro de aplicativos de bem-estar voltados para a população em geral.
Reconhecer automaticamente itens alimentares de imagens é um problema desafiador de visão computacional. Isso se deve aos alimentos serem objetos tipicamente deformáveis, e devido ao fato de que uma grande quantidade de informações visuais do item alimentar pode ser perdida durante sua preparação. Além disso, diferentes alimentos podem parecer muito semelhantes uns aos outros, e a mesma comida pode parecer substancialmente diferente em múltiplas imagens2. Além disso, a precisão do reconhecimento depende de muitos outros fatores, como a qualidade da imagem, se o item alimentar está obstruído por outro item, distância da qual a imagem foi tirada, etc. Reconhecer itens de bebidas apresenta seu próprio conjunto de desafios, sendo o principal a quantidade limitada de informações visuais que está disponível em uma imagem. Essas informações podem ser a cor da bebida, a cor e a estrutura do recipiente de bebidas, e, em condições ideais de imagem, a densidade da bebida2.
Para reconhecer com sucesso os alimentos a partir de imagens, é necessário aprender características de cada aula de alimentos e bebidas. Isso foi tradicionalmente feito usando extratores de características definidos manualmente3,4,5,6 que realizam reconhecimento com base em características específicas de itens como cor, textura, tamanho, etc., ou uma combinação desses recursos. Exemplos desses extratores de características incluem vários aprendizados de kernel4, características locais em pares5 e o modelo de saco de recursos6. Devido à complexidade das imagens alimentares, essas abordagens alcançaram principalmente uma baixa precisão de classificação – entre 10% e 40%3,4,5. A razão para isso é que a abordagem manual não é robusta o suficiente para ser suficientemente precisa. Como um item alimentar pode variar significativamente na aparência, não é viável englobar todas essas variâncias manualmente. A maior precisão de classificação pode ser alcançada com extratores de características definidos manualmente quando o número de classes alimentares é reduzido5, ou diferentes características de imagem são combinadas6, indicando assim que há necessidade de soluções mais complexas para este problema.
É por isso que o aprendizado profundo mostrou-se tão eficaz para o problema do reconhecimento de imagem alimentar. O aprendizado profundo, ou redes neurais profundas, foi inspirado em cérebros biológicos, e permite que modelos computacionais compostos de múltiplas camadas de processamento aprendam automaticamente recursos através do treinamento em um conjunto de imagens de entrada7,8. Por causa disso, o aprendizado profundo melhorou substancialmente o estado da arte em uma variedade de campos de pesquisa7, com visão computacional, e, posteriormente, reconhecimento de imagem alimentar, sendo um deles2.
Em particular, redes neurais convolucionais profundas (DCNNs) são mais populares para o reconhecimento de imagem alimentar – essas redes são inspiradas no sistema visual dos animais, onde neurônios individuais tentam obter uma compreensão da entrada visual reagindo a regiões sobrepostas no campo visual9. Uma rede neural convolucional pega a imagem de entrada e realiza uma série de operações em cada uma das camadas de rede, as mais comuns são camadas convolucionais, totalmente conectadas e de agrupamento. As camadas convolucionais contêm filtros aprendeu que respondem a certos recursos nos dados de entrada, enquanto camadas totalmente conectadas compõem dados de saída de outras camadas para obter conhecimento de nível superior a partir dele. O objetivo de agrupar camadas é diminuir a amostra dos dados de entrada2. Existem duas abordagens para o uso de modelos de aprendizagem profunda que se mostraram populares: tomar uma definição de rede neural profunda existente10,11, referida como uma arquitetura de aprendizagem profunda neste artigo, ou definir uma nova arquitetura de aprendizagem profunda12,13, e treinar qualquer um deles em um conjunto de dados de imagem alimentar. Há pontos fortes e fracos em ambas as abordagens – ao usar uma arquitetura de deep learning existente, uma arquitetura que teve um bom desempenho para outros problemas pode ser escolhida e afinada para o problema desejado, economizando tempo e garantindo que uma arquitetura validada tenha sido escolhida. Definir uma nova arquitetura de aprendizagem profunda, por outro lado, é mais demorado, mas permite que o desenvolvimento de arquiteturas que são feitas especificamente levem em conta as especificidades de um problema e, portanto, teoricamente funcionam melhor para esse problema.
Neste artigo, apresentamos ambas as abordagens. Para o problema do reconhecimento de imagem alimentar, desenvolvemos uma nova arquitetura DCNN chamada NutriNet2,que é uma modificação da conhecida arquitetura AlexNet14. Existem duas principais diferenças em comparação com a AlexNet: a NutriNet aceita imagens de 512×512 pixels como entrada (em oposição às imagens de 256×256 pixels para AlexNet), e a NutriNet tem uma camada convolucional adicional no início da rede neural. Essas duas alterações foram introduzidas para extrair o máximo de informações das imagens do conjunto de dados de reconhecimento possível. Ter imagens de maior resolução significava que há mais informações presentes nas imagens e ter camadas mais convolucionais significava que conhecimentos adicionais poderiam ser extraídos das imagens. Em comparação com os cerca de 60 milhões de parâmetros da AlexNet, a NutriNet contém menos parâmetros: aproximadamente 33 milhões. Isso se deve à diferença de dimensionalidade na primeira camada totalmente conectada causada pela camada convolucional adicional2. A Figura 1 contém um diagrama da arquitetura NutriNet. As imagens de alimentos que foram usadas para treinar o modelo NutriNet foram coletadas da Internet – o procedimento está descrito no texto do protocolo.
Para o problema da segmentação de imagens alimentares, utilizamos duas arquiteturas diferentes existentes: redes totalmente convolucionais (FCNs)15 e redes residuais profundas (ResNet)16,ambas representando o estado da arte para segmentação de imagens quando as usamos para desenvolver suas respectivas soluções de segmentação de imagem alimentar. Existem várias variantes FCN que foram introduzidas por Long et al.: FCN-32s, FCN-16s e FCN-8s15. FcN-32s produz um mapa de pixels baseado nas previsões da camada final da FCN, enquanto a variante FCN-16s combina essas previsões com as de uma camada anterior. O FCN-8s considera mais uma outra camada de previsões e, portanto, é capaz de fazer previsões no melhor grão, razão pela qual é adequado para o reconhecimento de imagem alimentar. O FCN-8s que usamos foi pré-treinado no conjunto de dados PASCAL Visual Object Classes (PASCAL VOC)17 e treinado e testado em imagens de réplicas de alimentos (a partir de agora ‘comida falsa’)18 devido à sua semelhança visual com a comida real e devido à falta de imagens anotadas de alimentos reais em um nível de pixel. Alimentos falsos são usados em diferentes estudos comportamentais e imagens são tiradas para todos os pratos de todos os participantes do estudo. Como o conteúdo alimentar dessas imagens é conhecido, torna o conjunto de dados de imagem útil para o treinamento de modelos de aprendizagem profunda. As etapas de processamento do conjunto de dados estão descritas no texto do protocolo.
A solução baseada em ResNet foi desenvolvida no âmbito do Food Recognition Challenge (FRC)19. Ele usa o método Hybrid Task Cascade (HTC)20 com uma espinha dorsal ResNet-10116. Esta é uma abordagem de última geração para o problema de segmentação de imagem que pode usar diferentes extratores de características, ou backbones. Também consideramos outras redes backbone, particularmente outras variantes da ResNet, como o ResNet-5016,mas o ResNet-101 foi o mais adequado devido à sua profundidade e capacidade de representar imagens de entrada de forma bastante complexa. O conjunto de dados usado para treinar o modelo HTC ResNet-101 foi o conjunto de dados FRC com imagens aumentadas adicionadas. Esses aumentos são apresentados no texto do protocolo.
Este artigo destina-se a ser um recurso para especialistas em machine learning que buscam informações sobre quais arquiteturas de deep learning e etapas de aumento de dados funcionam bem para os problemas de reconhecimento e segmentação de imagens alimentares, bem como para pesquisadores de nutrição que procuram usar nossa abordagem para automatizar o reconhecimento de imagens alimentares para uso na avaliação alimentar. Nos parágrafos abaixo, são apresentadas soluções de deep learning e conjuntos de dados do campo de reconhecimento de imagem alimentar. No texto do protocolo, detalhamos como cada uma das três abordagens foi usada para treinar modelos de rede neural profunda que podem ser usados para avaliação alimentar automatizada. Além disso, cada seção de protocolo contém uma descrição de como os conjuntos de dados de imagem alimentar usados para treinamento e testes foram adquiridos e processados.
As DCNNs geralmente obtiveram resultados substancialmente melhores do que outros métodos de reconhecimento e segmentação de imagem alimentar, razão pela qual a grande maioria das pesquisas recentes no campo é baseada nessas redes. Kawano et al. utilizaram DCNNs para complementar abordagens manuais21 e obtiveram uma precisão de classificação de 72,26% no conjunto de dados UEC-FOOD10022. Christodoulidis et al. usaram-nas exclusivamente para obter uma maior precisão de 84,90% em um conjunto de dados auto-adquirido23. Tanno et al. desenvolveram o DeepFoodCam – um aplicativo para smartphone para reconhecimento de imagem alimentar que usa DCNNs24. Liu et al. apresentaram um sistema que realiza uma avaliação dietética baseada em Internet das Coisas usando DCNNs25. Martinel et al. introduziram uma abordagem baseada em DCNN que explora as especificidades das imagens alimentares26 e relatou uma precisão de 90,27% no conjunto de dados Food-10127. Zhou et al. autor de uma revisão de soluções de aprendizagem profunda no domínio alimentar28.
Recentemente, Zhao et al. propuseram uma rede especificamente para reconhecimento de imagem alimentar em aplicativosmóveis 29. Essa abordagem usa uma rede menor de “alunos” que aprende com uma rede maior de “professores”. Com isso, conseguiram obter uma precisão de 84% sobre o UEC-FOOD25630 e uma precisão de 91,2% no conjunto de dados Food-10127. Hafiz et al. usaram DCNNs para desenvolver uma solução de reconhecimento de imagem somente para bebidas e relataram uma precisão muito alta de 98,51%31. Shimoda et al. descreveram um novo método para detectar regiões de placas em imagens de alimentos sem o uso da anotaçãopixel-wise 32. A Ciocca et al. introduziu um novo conjunto de dados contendo alimentos de 20 diferentes classes de alimentos em 11 estados diferentes (pasta sólida, fatiada, cremosa, etc.) e apresentou sua abordagem para modelos de reconhecimento de treinamento capazes de reconhecer o estado alimentar, além da classe alimentar33. Knez et al. avaliaram soluções de reconhecimento de imagem alimentar para dispositivosmóveis 34. Finalmente, Furtado et al. realizaram um estudo sobre como o sistema visual humano se compara ao desempenho das DCNNs e descobriu que o reconhecimento humano ainda supera dcnns com uma precisão de 80% versus 74,5%35. Os autores observaram que, com um pequeno número de aulas de alimentos, as DCNNs têm um bom desempenho, mas em um conjunto de dados com centenas de classes, a precisão do reconhecimento humano é maior35, destacando a complexidade do problema.
Apesar de seus resultados de última geração, o deep learning tem uma grande desvantagem – requer um grande conjunto de dados de entrada para treinar o modelo. No caso do reconhecimento de imagem alimentar, é necessário um grande conjunto de dados de imagem alimentar, e este conjunto de dados precisa abranger o maior número possível de cenários do mundo real. Na prática, isso significa que para cada item individual de alimentos ou bebidas, é necessária uma grande coleção de imagens, e o maior número possível de itens diferentes precisa estar presente no conjunto de dados. Se não houver imagens suficientes para um item específico no conjunto de dados, é improvável que esse item seja reconhecido com sucesso. Por outro lado, se apenas um pequeno número de itens for coberto pelo conjunto de dados, a solução será limitada em escopo, e só poderá reconhecer um punhado de alimentos e bebidas diferentes.
Vários conjuntos de dados foram disponibilizados no passado. O Pittsburgh Fast-Food Image Dataset (PFID)3 foi introduzido para incentivar mais pesquisas no campo do reconhecimento de imagens alimentares. A Universidade de Alimentos Eletro-Comunicações 100 (UEC-FOOD100)22 e a Universidade de Eletro-Comunicações Food 256 (UEC-FOOD256)30 conjuntos de dados contêm pratos japoneses, expandidos com alguns pratos internacionais no caso do conjunto de dados UEC-FOOD256. O conjunto de dados Food-101 contém pratos populares adquiridos a partir de um site27. Os conjuntos de dados Food-5036 e Video Retrieval Group Food 172 (VireoFood-172)37 são coleções chinesas de imagens de alimentos. O conjunto de dados da Universidade de Milano-Bicocca 2016 (UNIMIB2016) é composto por imagens de bandejas de alimentos de uma cantina italiana38. Recipe1M é um conjunto de dados em larga escala de receitas de cozimento e imagens de alimentos39. O conjunto de dados Food-47540 coleta quatro conjuntos de dados de imagem alimentar publicados anteriormente27,30,36,37 em um. O Beijing Technology and Business University Food 60 (BTBUFood-60) é um conjunto de imagens destinados à detecção de alimentos41. Recentemente, o conjunto de dados ISIA Food-50042 de imagens alimentares diversas foi disponibilizado. Em comparação com outros conjuntos de dados de imagem alimentar disponíveis publicamente, ele contém um grande número de imagens, divididas em 500 classes de alimentos, e tem como objetivo avançar o desenvolvimento de soluções multimídia de reconhecimento alimentar42.
Nos últimos anos, redes neurais profundas foram validadas várias vezes como uma solução adequada para o reconhecimento de imagens alimentares10,11,12,21,23,25,26,29,31,33. Nosso trabalho apresentado neste artigo serve para provar ainda mais este1,2. A abordagem de reconhecimento de imagem alimentar de uma saída única é simples e pode ser usada para aplicações simples onde imagens com apenas um item de alimentos ou bebidas são esperadas2.
A abordagem de segmentação de imagem alimentar parece particularmente adequada para o reconhecimento de imagens alimentares em geral, sem qualquer restrição ao número de alimentos1. Como funciona classificando cada pixel individual da imagem, ele é capaz de não apenas reconhecer qualquer número de itens alimentares na imagem, mas também especificar onde um item alimentar está localizado, bem como quão grande ele é. Este último pode então ser usado para realizar a estimativa de peso alimentar, particularmente se usado com um objeto de referência ou uma câmera de distância fixa.
Houve algum trabalho em relação à disponibilidade dos conjuntos de dados de imagem alimentar3,22,27,30,36,37,38,39,40,41,42, e esperamos que mais seja feito no futuro, especialmente quando se trata de agregar conjuntos de dados de imagem alimentar de diferentes regiões do mundo, o que permitiria que soluções mais robustas fossem desenvolvidas. Atualmente, a precisão das soluções automáticas de reconhecimento de imagem alimentar ainda não atingiu a precisão de nível humano35, e isso é provável em grande parte devido ao uso de conjuntos de dados de imagem alimentar de tamanho e qualidade insuficientes.
No futuro, nosso objetivo será avaliar ainda mais os procedimentos desenvolvidos em imagens do mundo real. Em geral, os conjuntos de dados neste campo geralmente contêm imagens tiradas em ambientes ou imagens controladas que foram otimizadas manualmente para reconhecimento. É por isso que é importante reunir um grande e diversificado conjunto de dados de imagem alimentar do mundo real para abranger todos os diferentes itens de alimentos e bebidas que os indivíduos podem querer reconhecer. O primeiro passo para isso foi dado pelo Desafio de Reconhecimento Alimentar, que incluiu um conjunto de dados de imagens alimentares do mundo real19,mas mais trabalho precisa ser feito para validar essa abordagem em imagens alimentares de todo o mundo e em cooperação com nutricionistas.
The authors have nothing to disclose.
Os autores gostariam de agradecer a Tamara Bucher, da Universidade de Newcastle, Austrália, por fornecer o conjunto de dados de imagem falsa. Este trabalho foi apoiado pelos programas de pesquisa e inovação Horizon 2020 da União Europeia (números de subvenção 863059 – FNS-Cloud, 769661 – SAAM); e a Agência de Pesquisa eslovena (número de subvenção P2-0098). A União Europeia e a Agência de Pesquisa eslovena não tiveram papel na concepção, análise ou redação deste artigo.
HARDWARE | |||
NVIDIA GPU | NVIDIA | N/A | An NVIDIA GPU is needed as some of the software frameworks below will not work otherwise. https://www.nvidia.com |
SOFTWARE | |||
Caffe | Berkeley AI Research | N/A | Caffe is a deep learning framework. https://caffe.berkeleyvision.org |
CLoDSA | Jónathan Heras | N/A | CLoDSA is a Python image augmentation library. https://github.com/joheras/CLoDSA |
Google API Client | N/A | Google API Client is a Python client library for Google's discovery based APIs. https://github.com/googleapis/google-api-python-client | |
JavaScript Segment Annotator | Kota Yamaguchi | N/A | JavaScript Segment Annotator is a JavaScript image annotation tool. https://github.com/kyamagu/js-segment-annotator |
MMDetection | Multimedia Laboratory, CUHK | N/A | MMDetection is an object detection toolbox based on PyTorch. https://github.com/open-mmlab/mmdetection |
NVIDIA DIGITS | NVIDIA | N/A | NVIDIA DIGITS is a wrapper for Caffe that provides a graphical web interface. https://developer.nvidia.com/digits |
OpenCV | Intel | N/A | OpenCV is a library for computer vision. https://opencv.org |
Python | Python Software Foundation | N/A | Python is a programming language. https://www.python.org |
PyTorch | Facebook AI Research | N/A | PyTorch is a machine learning framework. https://pytorch.org |
Ubuntu OS | Canonical | N/A | Ubuntu 14.04 is the OS used by the authors and offers compatibility with all of the software frameworks and tools above. https://ubuntu.com |