Waiting
Login processing...

Trial ends in Request Full Access Tell Your Colleague About Jove
Click here for the English version

Engineering

이미지 기반 식이 평가를 위한 심층 신경망

Published: March 13, 2021 doi: 10.3791/61906

Summary

이 문서에서 제시된 작업의 목표는 모바일 장치에서 촬영한 이미지에서 식음료 품목을 자동 인식하기 위한 기술을 개발하는 것입니다. 이 기술은 두 가지 접근 법으로 구성됩니다 - 첫 번째 접근 방식은 식품 이미지 인식을 수행하는 반면 두 번째 접근법은 식품 이미지 세분화를 수행합니다.

Abstract

수동 식이 평가 접근 방식과 관련된 문제와 비용으로 인해 작업을 용이하게 하고 속도를 높이고 품질을 높이기 위해 자동화된 솔루션이 필요합니다. 오늘날 자동화된 솔루션은 스마트폰 카메라로 이미지를 촬영하는 것과 같이 사람의 식이 섭취량을 훨씬 더 간단한 방식으로 기록할 수 있습니다. 이 문서에서는 식이 평가에 대한 이러한 이미지 기반 접근 방식에 초점을 맞출 것입니다. 식품 이미지 인식 문제의 경우, 심층 신경망은 최근 몇 년 동안 최첨단 기술을 달성했으며, 우리는이 분야에서 우리의 작품을 제시합니다. 특히, 우리는 먼저 NutriNet라는 깊은 신경망 아키텍처를 사용하여 식음료 이미지 인식 방법을 설명합니다. 딥 러닝 기반 식품 이미지 인식 초기에 수행된 대부분의 연구와 마찬가지로 이 방법은 이미지당 하나의 출력으로 제한되므로 여러 음식 또는 음료 품목이 있는 이미지에 적합하지 않습니다. 그렇기 때문에 이미지의 음식 또는 음료 품목을 식별할 수 있기 때문에 식품 이미지 세분화를 수행하는 접근 방식이 훨씬 더 강력합니다. 따라서 우리는 또한 식품 이미지 세분화를위한 두 가지 방법을 제시합니다 - 하나는 완전히 복잡한 네트워크 (FCN)를 기반으로하고 다른 하나는 깊은 잔류 네트워크 (ResNet)에 있습니다.

Introduction

식이 평가는 개인의 식단의 실행 가능한 영역을 결정하는 중요한 단계입니다. 그러나, 전통적으로 수동 접근 방식을 사용 하 여 식이 평가 수행 상당한 비용과 관련 된. 이러한 접근 방식은 종종 개인의 자체 보고에 의존하기 때문에 오류가 발생하기 쉽습니다. 자동 식이 평가는 음식 섭취를 정량화하고 자격을 갖추는 간단한 방법을 제공함으로써 이러한 문제를 해결합니다. 이러한 접근 방식은 또한 누락 된 식사, 식품 볼륨을 정확하게 평가할 수 없음 등과 같은 수동 접근 방식에 존재하는 오류 중 일부를 완화 할 수 있습니다. 따라서, 다른 음식과 음료를 식별하고 식품 섭취를 정량화하는 솔루션을 개발하여 식이 평가를 자동화하는 명확한 이점이 있다1. 이러한 솔루션은 식음료 품목(이후 '식품 품목')의 영양가를 추정하는 데에도 사용할 수 있습니다. 따라서, 자동 식이 평가는 영양사들이 환자의 식단을 보다 쉽고 정확하게 추적하고 분석할 수 있도록 하는 것과 같은 엄격하게 의료용용도부터 일반 인구를 대상으로 하는 웰빙 앱 내부의 사용에 이르기까지 여러 응용 분야에 유용합니다.

이미지에서 식품을 자동으로 인식하는 것은 컴퓨터 비전 문제입니다. 이는 식품이 일반적으로 변형 가능한 물체이기 때문이며, 준비 중에 많은 양의 식품 항목의 시각적 정보를 잃어 버릴 수 있기 때문입니다. 또한, 다른 음식은 서로 매우 유사한 것처럼 보일 수 있으며, 동일한 음식은 여러 이미지2에서실질적으로 다른 것으로 나타날 수 있습니다. 또한, 인식 정확도는 이미지 품질, 식품 품목이 다른 항목에 의해 방해되는지 여부, 이미지를 촬영한 거리 등과 같은 더 많은 요인에 따라 달라집니다. 음료 항목을 인식하는 것은 이미지에서 사용할 수있는 제한된 양의 시각적 정보인 자체 적인 도전 세트를 제공합니다. 이 정보는 음료 색상, 음료 용기 색상 및 구조일 수 있으며, 최적의 이미지 조건하에서 음료 밀도2.

이미지에서 식품을 성공적으로 인식하려면 각 식음료 클래스의 특징을 배울 필요가 있습니다. 이는 전통적으로색상,텍스처, 크기 등과 같은 특정 항목 특징 또는 이러한 기능의 조합에 따라 인식을 수행하는 수동 정의된 피쳐 추출기3,4,5,6을 사용하여 수행되었습니다. 이러한 기능 추출기의 예로는 여러 커널 학습4,쌍별 로컬 기능5 및 기능 가방 모델6이있습니다. 음식 이미지의 복잡성으로 인해 이러한 접근 방식은 대부분 10 %에서 40 %3,4,5사이의 낮은 분류정확도를달성했습니다. 그 이유는 수동 접근 방식이 충분히 정확할 만큼 견고하지 않기 때문입니다. 식품 품목은 외관이 크게 다를 수 있으므로 이러한 모든 분산을 수동으로 포괄하는 것은 불가능합니다. 식품 클래스 수가5개감소하거나 서로 다른 이미지 특징이결합되어이 문제에 대한 보다 복잡한 솔루션이 필요하다는 것을 나타내는 수동 정의된 피쳐 추출기로 분류 정확도가 높을 수 있습니다.

딥 러닝이 식품 이미지 인식 문제에 매우 효과적인 것으로 입증된 이유입니다. 딥 러닝 또는 심층 신경망은 생물학적 두뇌에서 영감을 받았으며, 여러 처리 층으로 구성된 계산 모델이 입력 이미지7,8세트에 대한 교육을 통해 자동으로 기능을 학습할 수 있게 한다. 이 때문에 딥 러닝은 컴퓨터 비전과 그 이후 의 음식 이미지 인식으로 다양한 연구 분야7에서예술상태를 실질적으로 향상시켰으며, 그 중 하나가 된다2.

특히, 깊은 컨볼루션 신경망(DCNN)은 식품 이미지 인식에 가장 인기가 있으며, 이러한 네트워크는 개별 뉴런이 시야9의중복 영역에 반응하여 시각적 입력에 대한 이해를 얻으려고 시도하는 동물의 시각 시스템에서 영감을 얻습니다. 컨볼루션 신경망은 입력 이미지를 가져와 각 네트워크 계층에서 일련의 작업을 수행하며, 가장 일반적인 작업은 컨볼루션, 완전히 연결된 계층 및 풀링 레이어입니다. 컨볼루션 레이어에는 입력 데이터의 특정 기능에 응답하는 학습 가능한 필터가 포함되어 있는 반면, 완전히 연결된 레이어는 다른 레이어의 출력 데이터를 작성하여 더 높은 수준의 지식을 얻습니다. 레이어 풀링의 목표는 입력 데이터2를다운 샘플링하는 것입니다. 이 문서에서 딥 러닝 아키텍처라고 불리는 기존 심층 신경망 정의10,11을취하거나 새로운 딥 러닝아키텍처12,13을정의하고 식품 이미지 데이터 집합에서 이들 중 하나를 교육하는 등 인기있는 딥 러닝 모델을 사용하는 방법에는 두 가지 방법이 있습니다. 기존의 딥 러닝 아키텍처를 사용할 때 다른 문제에 대해 잘 수행된 아키텍처를 선택하고 원하는 문제에 대해 미세 조정할 수 있으므로 시간을 절약하고 검증된 아키텍처를 선택하도록 하는 두 가지 방법에 대한 강점과 약점이 있습니다. 반면에 새로운 딥 러닝 아키텍처를 정의하는 것은 시간이 더 많이 소요되지만 문제의 세부 사항을 고려하여 이론적으로 해당 문제에 대해 더 잘 수행하도록 특별히 만들어진 아키텍처를 개발할 수 있습니다.

이 문서에서는 두 가지 방법을 모두 제시합니다. 식품 이미지 인식 문제를 위해, 우리는 NutriNet라는 새로운 DCNN 아키텍처를 개발2,이는 잘 알려진 알렉스넷 아키텍처의 수정입니다14. AlexNet에 비해 두 가지 주요 차이점이 있습니다: NutriNet은 512x512 픽셀 이미지를 입력으로 허용하며(AlexNet의 경우 256x256 픽셀 이미지와 는 달리), NutriNet은 신경망 의 시작 부분에 추가 컨볼루션 레이어를 가지고 있습니다. 이러한 두 가지 변경 사항은 인식 데이터 집합 이미지에서 가능한 한 많은 정보를 추출하기 위해 도입되었습니다. 고해상도 이미지를 갖는 것은 이미지에 더 많은 정보가 존재하고 더 많은 복잡한 레이어를 갖는 것은 이미지에서 추가 지식을 추출 할 수 있다는 것을 의미합니다. AlexNet의 약 6천만 개의 매개 변수에 비해 NutriNet에는 약 3,300만 개의 매개 변수가 적습니다. 이는 추가 컨볼루션 계층2로인한 첫 번째 완전 연결된 레이어의 치수 차이 때문입니다. 그림 1에는 NutriNet 아키텍처의 다이어그램이 포함되어 있습니다. NutriNet 모델을 훈련하는 데 사용 된 음식 이미지는 인터넷에서 수집되었습니다 - 절차는 프로토콜 텍스트에 설명되어 있습니다.

식품 이미지 세분화 문제의 경우, 우리는 두 가지 다른 기존 아키텍처를 사용했습니다: 완전히 컨볼루션 네트워크(FCN)15 및 깊은 잔류 네트워크(ResNet)16,둘 다 각 식품 이미지 세분화 솔루션을 개발하는 데 사용할 때 이미지 세분화를 위한 기술의 상태를 나타냈습니다. FCN-32s, FCN-16s 및 FCN-8s15: 롱 등에서 도입 된 여러 FCN 변형이 있습니다. FCN-32s는 FCN의 최종 레이어의 예측을 기반으로 픽셀 맵을 출력하는 반면 FCN-16s 변형은 이러한 예측을 이전 레이어별 예측과 결합합니다. FCN-8s는 또 다른 층의 예측을 고려하여 최고의 곡물로 예측을 할 수 있으므로 식품 이미지 인식에 적합합니다. 우리가 사용한 FCN-8s는 파스칼 비주얼 오브젝트 클래스(PASCAL VOC) 데이터세트(17)에서 사전 교육을 받았으며, 실제 음식과 시각적으로 닮았기 때문에 픽셀 수준에서 실제 음식의 부음 이미지가 부족하여 식품 복제본(이후부터 '가짜 음식')이미지에 대해 훈련및 테스트했습니다. 가짜 음식은 다른 행동 연구에서 사용되며 이미지는 모든 연구 참가자의 모든 요리에 대해 촬영됩니다. 이러한 이미지의 음식 내용이 알려져 있기 때문에 이미지 데이터 집합을 딥 러닝 모델 교육에 유용하게 만듭니다. 데이터 집합 처리 단계는 프로토콜 텍스트에 설명되어 있습니다.

ResNet 기반 솔루션은 식품 인식 챌린지(FRC)19의범위에서 개발되었다. 그것은 하이브리드 작업 캐스케이드 (HTC)20 ResNet-10116 백본을 사용하여 사용합니다. 이것은 다른 피쳐 추출기 또는 백본을 사용할 수 있는 이미지 세분화 문제에 대한 최첨단 접근 방식입니다. 우리는 다른 백본 네트워크, 특히 ResNet-5016과같은 다른 ResNet 변형을 고려했지만 ResNet-101은 깊이와 입력 이미지를 충분히 복잡한 방식으로 나타낼 수있는 능력으로 인해 가장 적합했습니다. HTC ResNet-101 모델을 학습하는 데 사용되는 데이터 집합은 증강 이미지가 추가된 FRC 데이터 집합이었습니다. 이러한 확대는 프로토콜 텍스트에 표시됩니다.

이 문서는 딥 러닝 아키텍처 및 데이터 확대 단계가 식품 이미지 인식 및 세분화 문제에 대해 잘 수행되는 정보와 식이 평가에 사용하기 위해 식품 이미지 인식을 자동화하려는 영양 연구자뿐만 아니라 어떤 정보를 찾고 자하는 기계 학습 전문가를위한 자원으로 설계되었습니다. 아래 단락에서는 식품 이미지 인식 분야의 딥 러닝 솔루션 및 데이터 집합이 표시됩니다. 프로토콜 텍스트에서, 우리는 자동화 된 식이 평가에 사용할 수있는 깊은 신경망 모델을 훈련하기 위해 세 가지 접근 방식의 각각을 사용하는 방법을 자세히 설명합니다. 또한 각 프로토콜 섹션에는 교육 및 테스트에 사용되는 식품 이미지 데이터 집합을 획득하고 처리하는 방법에 대한 설명이 포함되어 있습니다.

DCNN은 일반적으로 식품 이미지 인식 및 세분화를 위한 다른 방법보다 훨씬 더 나은 결과를 얻었으며, 이 때문에 이 분야의 최근 연구의 대부분은 이러한 네트워크를 기반으로 합니다. 가와노 등은 DCN을 사용하여 수동 접근법(21)을 보완하고 UEC-FOOD100 데이터 세트22에서72.26%의 분류 정확도를 달성했습니다. Christodoulidis 등은 자체 획득 데이터 집합23에서84.90 %의 높은 정확도를 달성하기 위해 독점적으로 사용했습니다. 탄노 외 개발 DeepFoodCam - DCNN 을 사용하는 음식 이미지 인식을위한 스마트 폰 응용 프로그램24. Liu 등은 DCNN25를사용하여 사물 인터넷 기반 식이 평가를 수행하는 시스템을 제시했습니다. Martinel 외.는 식품이미지(26)의 세부 사항을 악용하고 Food-101 데이터 세트 27에서 90.27%의 정확도를 보고하는 DCNN 기반 접근 방식을도입했다. Zhou et al. 식품 도메인28에서딥 러닝 솔루션의 검토를 저술.

최근에는 모바일애플리케이션(29)에서식품 이미지 인식을 위한 네트워크를 제안했다. 이 방법은 더 큰 '교사' 네트워크에서 학습하는 더 작은 '학생' 네트워크를 사용합니다. 이를 통해 UEC-FOOD25630에서 84%, Food-101 데이터 세트27에서91.2%의 정확도를 달성할 수 있었습니다. Hafiz 등은 DCN을 사용하여 음료 전용 이미지 인식 솔루션을 개발하고 98.51 %31의매우 높은 정확도를 보고했습니다. 시모다 등은 픽셀방향주석(32)의사용 없이 식품 이미지에서 플레이트 영역을 검출하는 새로운 방법을 설명했다. Ciocca 등은 11개 주에서 20개 식품 클래스(고체, 슬라이스, 크리미한 페이스트 등)의 식품 품목을 포함하는 새로운 데이터 세트를 도입하고 식품 등급33외에도 식품 상태를 인식할 수 있는 교육 인식 모델에 대한 접근 방식을 제시했다. Knez 등은 모바일 기기34에대한 식품 이미지 인식 솔루션을 평가했다. 마지막으로 Furtado 등은 인간 시각 시스템이 DCN의 성능과 어떻게 비교되는지에 대한 연구를 수행했으며, 인간의 인식이 여전히 80% 대 74.5%35의정확도로 DCN을 능가한다는 것을 발견했습니다. 저자는 소수의 식품 클래스를 통해 DCNN이 잘 수행되지만 수백 개의 클래스가있는 데이터 세트에서 인간의 인식 정확도가35더 높으며 문제의 복잡성을 강조한다고 지적했습니다.

최첨단 결과에도 불구하고 딥 러닝은 큰 단점을 가지고 있습니다 - 모델을 훈련시키기 위해서는 큰 입력 데이터 집합이 필요합니다. 식품 이미지 인식의 경우 대규모 식품 이미지 데이터 집합이 필요하며 이 데이터 집합은 가능한 한 다양한 실제 시나리오를 포괄해야 합니다. 실제로 이것은 각 개별 식음료 품목에 대해 많은 이미지 컬렉션이 필요하며 가능한 한 많은 다른 항목이 데이터 집합에 있어야 한다는 것을 의미합니다. 데이터 집합에 특정 항목에 대한 이미지가 충분하지 않으면 해당 항목을 성공적으로 인식할 수 없습니다. 반면에 데이터 집합에 의해 소수의 항목만 적용되는 경우 솔루션은 범위가 제한되며 소수의 다른 음식과 음료만 인식할 수 있습니다.

과거에는 여러 데이터 집합을 사용할 수 있었습니다. 피츠버그 패스트푸드 이미지 데이터셋(PFID)3은 식품 이미지 인식 분야에서 더 많은 연구를 장려하기 위해 도입되었습니다. 전기통신식품100(UEC-FOOD100)22및 전기통신식품256(UEC-FOOD256)30개 데이터세트에는 일본 요리가 포함되어 있으며, UEC-FOOD256 데이터 세트의 경우 일부 국제 요리로 확장되었습니다. Food-101 데이터 셋에는 웹 사이트27에서획득한 인기 요리가 포함되어 있습니다. Food-5036 및 비디오 검색 그룹 Food 172(VireoFood-172)37 데이터 세트는 중국 기반의 식품 이미지 컬렉션입니다. 밀라노-Bicocca 대학 2016 (UNIMIB2016) 데이터 세트는 이탈리아 식당에서 음식 트레이의 이미지로 구성되어있습니다 38. Recipe1M은 요리 레시피와 음식 이미지39의대규모 데이터 집합입니다. Food-475 데이터 세트40은 이전에 게시된 4개의 식품 이미지 데이터 집합27,30,36,37을 하나로 수집합니다. 베이징 기술 및 비즈니스 대학 식품 60 (BTBUFood-60)은 식품 검출을 위한 이미지의 데이터집합입니다(41). 최근 ISIA Food-500 데이터 세트42개의 기타 식품 이미지를 사용할 수 있게 되었습니다. 공개적으로 이용 가능한 다른 식품 이미지 데이터 세트에 비해 500개의 식품 클래스로 나뉘어진 많은 수의 이미지가 포함되어 있으며, 멀티미디어 식품 인식솔루션(42)의개발을 추진하기 위한 것이다.

Protocol

1. NutriNet을 통한 음식 이미지 인식

  1. 음식 이미지 데이터 세트 획득
    1. 식품 이미지 인식 모델의 출력이 될 다양한 음식과 음료 목록을 수집합니다. 강력한 식품 이미지 인식 모델의 교육을 허용하므로 인기있는 음식과 음료의 다양한 목록이 선호됩니다.
    2. 텍스트 파일(예: 'txt' 또는 'csv')에 식음료 목록을 저장합니다.
      참고: 이 문서의 작성자에서 사용하는 텍스트 파일은 보충 파일('food_items.txt')에서 찾을 수 있으며 520개의 슬로베니아 음식 항목 목록을 포함합니다.
    3. Google 사용자 지정 검색 API44를 사용하여 목록에서 각 음식 항목의 이미지를 다운로드하고 각 음식 항목에 대한 별도의 폴더에 저장하는 Python43 스크립트를 작성하거나 다운로드합니다.
      참고: 이 문서의 작성자에서 사용하는 파이썬 스크립트는 추가 파일('download_images.py')에서 찾을 수 있습니다. 이 스크립트를 사용하는 경우 개발자 키(변수 '개발자KeyKey', Python 스크립트 코드의 8줄) 및 사용자 지정 검색 엔진 ID(파이썬 스크립트 코드의 변수 'cx', 라인 28)를 사용 중인 Google 계정과 관련된 값으로 교체해야 합니다.
    4. 1.1.3 단계(예: '파이썬 download_images.py')에서 파이썬 스크립트를 실행합니다.
  2. (선택 사항) 음식 이미지 데이터 세트 청소
    1. 1.1.1 단계의 출력 목록과 달리 두 개의 출력(음식, 비식품)만 사용하는 것을 제외하고는 섹션 1.4와 동일한 방식으로 식품 이미지 감지 모델을 학습합니다.
      참고: 이 문서의 작성자는 레시피 웹 사이트와 ImageNet 데이터 집합45에서 결합된 이미지를 사용하여 식품 이미지 감지 모델을 학습했습니다. 여기에 초점은 식품 이미지 인식에 초점을 맞추고 이것은 인식 데이터 세트를 청소하기위한 선택적 단계이기 때문에, 자세한 내용은 생략된다. 대신, 이 접근 방식에 대한 자세한 내용은 Mezgec 외2에서찾을 수 있습니다.
    2. 1.1.4단계의 결과인 식품 이미지 데이터 집합에서 1.2.1 단계에서 검출 모델을 실행합니다.
    3. 1.2.1 단계에서 감지 모델에 의해 비식품으로 태그된 모든 이미지를 삭제합니다.
    4. 식품 이미지 데이터 집합을 다른 잘못 또는 저품질 이미지및 이미지 중복여부를 수동으로 확인합니다.
    5. 1.2.4 단계에서 발견된 이미지를 삭제합니다.
  3. 식품 이미지 데이터 세트 보강
    1. CLoDSA 라이브러리46(포함된 파이썬 스크립트의 19~21줄)을 사용하여 90°로 회전하여 식품 이미지 데이터 집합에서 각 이미지의 새 버전을 만듭니다.
      참고: 이 문서의 작성자에서 사용하는 모든 CLoDSA 명령을 포함하는 파이썬 스크립트는 추가 파일('nutrinet_augmentation.py')에 포함된 파일에서 찾을 수 있습니다. 이 스크립트를 사용하는 경우 입력 경로(변수 'INPUT_PATH', 파이썬 스크립트 코드의 줄 8) 및 출력 경로(변수 'OUTPUT_PATH', Python 스크립트 코드의 줄 11)는 원하는 폴더에 대한 경로로 대체해야 합니다.
    2. CLoDSA 라이브러리(포함된 파이썬 스크립트의 19~21줄)를 사용하여 180° 회전하여 식품 이미지 데이터 집합에서 각 이미지의 새 버전을 만듭니다.
    3. CLoDSA 라이브러리(포함된 파이썬 스크립트의 19~21줄)를 사용하여 270°로 회전하여 식품 이미지 데이터 집합에서 각 이미지의 새 버전을 만듭니다.
    4. CLoDSA 라이브러리(포함된 파이썬 스크립트의 23선 및 24줄)를 사용하여 가로로 뒤집어 서 식품 이미지 데이터 집합에서 각 이미지의 새 버전을 만듭니다.
    5. CLoDSA 라이브러리(포함된 파이썬 스크립트의 26호선 및 27줄)를 사용하여 임의의 색상 노이즈를 추가하여 식품 이미지 데이터 집합에서 각 이미지의 새 버전을 만듭니다.
    6. CLoDSA 라이브러리(포함된 파이썬 스크립트의 29호선 및 30줄)를 사용하여 25% 확대하여 식품 이미지 데이터 집합에서 각 이미지의 새 버전을 만듭니다.
    7. 이미지 1.3.1-1.3.6 단계에서 원본 이미지(포함된 파이썬 스크립트의 16호선 및 17줄)에서 새로운 식품 이미지 데이터 집합(총 7가지 변형)으로 이미지를 저장합니다. 이는 포함된 Python 스크립트의 32줄에서 명령을 실행하여 수행됩니다.
  4. 음식 이미지 인식 수행
    1. 1.3.7 단계에서 엔비디아 DIGITS환경(47)으로식품 이미지 데이터 집합을 가져와 데이터 집합을 NVIDIA DIGITS 사용자 인터페이스의 교육, 유효성 검사 및 테스트 하위 집합으로 나눕니다.
    2. NutriNet 아키텍처2의 정의 텍스트를 복사하여 NVIDIA DIGITS에 사용자 지정 네트워크로 붙여 넣습니다.
      참고: NutriNet 아키텍처 정의 텍스트는 추가 파일('nutrinet.prototxt')에서 찾을 수 있습니다.
    3. (선택 사항) NVIDIA DIGITS 사용자 인터페이스에서 교육 하이퍼파라미터를 정의합니다.
      참고: 하이퍼매개변수는 시작하기 전에 교육 프로세스를 정의하는 데 사용되는 매개 변수입니다. 이 문서의 저자가 사용하는 하이퍼 파라미터는 보충 파일('nutrinet_hyperparameters.prototxt')에 포함된 파일에서 찾을 수 있습니다. 최적의 하이퍼매개변수를 찾기 위해 각 데이터 집합에 실험이 필요하지만 파일에는 NVIDIA DIGITS 사용자 인터페이스로 복사할 수 있는 하이퍼파라미터 구성이 포함되어 있습니다. 또한 엔비디아 DIGITS는 기본값으로 사용할 수 있는 기본 값으로 하이퍼파라미터를 채웁니다. 따라서 이 단계는 선택 사항입니다.
    4. NutriNet 모델의 교육을 실행합니다.
    5. 교육이 완료되면 성능이 가장 우수한 NutriNet 모델 반복을 수행합니다. 그런 다음 이 모델은 이 방법의 성능을 테스트하는 데 사용됩니다.
      참고: 가장 성능이 우수한 모델 반복을 결정하는 방법에는 여러 가지가 있습니다. 이 작업을 수행하는 간단한 방법은 다음과 같습니다. 엔비디아 DIGITS는 각 교육 시대에 대한 정확도 측정그래프를 출력합니다. 식품 이미지 데이터 집합의 유효성 검사 하위 집합에 대해 가장 낮은 손실 값을 달성한 시기를 확인합니다- 모델 반복이 가장 성능이 좋은 것으로 간주될 수 있습니다. 최상의 모델 반복을 결정하는 선택적 단계는 학습 하위 집합의 손실 값이 획기적인 시대로 변경되는 방식을 관찰하고 유효성 검사 하위 집합의 손실 값이 동일하게 유지되거나 지속적으로 상승하는 동안 지속적으로 떨어지기 시작하는 경우, 모델이 이미지 학습에 과도하게 장착되기 시작했을 때 신호할 수 있으므로 교육 손실 값이 감소하기 전에 시대를 취합니다.

2. FCN을 가진 식품 이미지 세분화

  1. 가짜 식품 이미지 데이터 세트 획득
    1. 가짜 음식 이미지의 데이터 집합을 가져옵니다. 가짜 음식 이미지는 식품 복제본을 사용하여 행동 연구를 수행하는 연구원에 의해 수집됩니다.
      참고 : 이 문서의 저자는 실험실 환경에서 수집 된 가짜 음식의 이미지를 받았다18.
    2. 픽셀 레벨의 모든 음식 이미지에 수동으로 인가 - 이미지의 각 픽셀에는 어떤 식품 클래스에 속하는지에 대한 정보가 포함되어야 합니다. 이 단계의 결과는 각 픽셀이 음식 클래스 중 하나를 나타내는 식품 이미지 데이터 집합의 각 이미지에 대한 하나의 음표 이미지입니다.
      참고 : 이 문서의 저자는 자바 스크립트 세그먼트 별노터48을사용 - 이를 달성하기 위해 많은 도구가 있습니다 .
  2. 가짜 식품 이미지 데이터 세트 보강
    1. 섹션 1.3과 동일한 단계를 수행하지만 음식 이미지 데이터 집합의 교육 하위 집합의 이미지에서만 수행합니다.
      참고: 1.3.5 단계를 제외하고 모든 데이터 확대 단계는 해당 음권 이미지에서도 수행해야 합니다. 섹션 1.3의 스크립트를 사용하는 경우 입력 경로(변수 'INPUT_PATH', Python43 스크립트 코드의 8줄) 및 출력 경로(파이썬 스크립트 코드의 변수 'OUTPUT_PATH', 선 11)를 원하는 폴더에 대한 경로로 교체해야 합니다. 또한 문제(변수 '문제', 파이썬 스크립트 코드의 6줄)를 'instance_segmentation'와 'ANNOTATION_MODE'로 설정하고 출력 모드('ANNOTATION_MODE', 파이썬 스크립트 코드의 7호선)와 출력 모드('OUTPUT_MODE', 파이썬 스크립트 코드의 라인 10)를 '코코'로 설정합니다.
  3. 가짜 식품 이미지 세분화 수행
    1. 1.4.2 단계를 제외하고 1.4절과 동일한 단계를 수행합니다. 그 단계 대신 2.3.2 및 2.3.3 단계를 수행하십시오.
      참고: 하이퍼매개변수는 시작하기 전에 교육 프로세스를 정의하는 데 사용되는 매개 변수입니다. 옵션 단계 1.4.3에 대한이 문서의 저자가 사용하는 교육 하이퍼 파라미터는 보충 파일 ('fcn-8s_hyperparameters.prototxt')에 포함 된 파일에서 찾을 수 있습니다. 최적의 하이퍼파라미터 집합을 찾기 위해 각 데이터 집합에 실험이 필요하지만 파일에는 NVIDIA DIGITS47 사용자 인터페이스로 복사할 수 있는 하이퍼파라미터 구성이 포함되어 있습니다. 또한 엔비디아 DIGITS는 기본값으로 사용할 수 있는 기본 값으로 하이퍼파라미터를 채웁니다.
    2. FCN-8s 아키텍처15의 정의 텍스트를 사용자 지정 네트워크로 NVIDIA DIGITS 환경에 복사하여 붙여넣습니다.
      참고: FCN-8s 아키텍처 정의 텍스트는 GitHub49에서공개적으로 사용할 수 있습니다.
    3. 미리 학습된 FCN-8s 모델 가중치로 이동경로를 NVIDIA DIGITS 사용자 인터페이스에 입력합니다.
      참고: 이러한 모델 가중치는 PASCAL VOC 데이터 집합17에서 미리 학습되었으며 인터넷49에서찾을 수 있습니다.

3. HTC ResNet을 가진 식품 이미지 세분화

  1. 음식 이미지 데이터 세트 획득
    1. FRC 웹 사이트19에서음식 이미지 데이터 집합을 다운로드하십시오.
  2. 식품 이미지 데이터 세트 보강
    1. 1.3.1-1.3.4 단계를 수행합니다.
      참고: 이 문서의 작성자에서 사용하는 모든 CLoDSA46 명령을 포함하는 Python43 스크립트는 보충 파일('frc_augmentation.py')에 포함된 파일에서 찾을 수 있습니다. 이 스크립트를 사용하는 경우 입력 경로(변수 'INPUT_PATH', 파이썬 스크립트 코드의 줄 8) 및 출력 경로(변수 'OUTPUT_PATH', Python 스크립트 코드의 줄 11)는 원하는 폴더에 대한 경로로 대체해야 합니다.
    2. CLoDSA 라이브러리(포함된 파이썬 스크립트의 26호선 및 27줄)를 사용하여 가우시안 블러를 추가하여 식품 이미지 데이터 집합에서 각 이미지의 새 버전을 만듭니다.
    3. CLoDSA 라이브러리(포함된 파이썬 스크립트의 29호선 및 30줄)를 사용하여 선명하게 하여 식품 이미지 데이터 집합에서 각 이미지의 새 버전을 만듭니다.
    4. CLoDSA 라이브러리(포함된 파이썬 스크립트의 32선 및 33줄)를 사용하여 감마 보정을 적용하여 식품 이미지 데이터 집합에서 각 이미지의 새 버전을 만듭니다.
    5. 3.2.1-3.2.4 단계의 이미지와 원본 이미지(포함된 파이썬 스크립트의 16호선 및 17줄)에서 새로운 식품 이미지 데이터 집합(총 8가지 변형)으로 이미지를 저장합니다. 이는 포함된 Python 스크립트의 35줄에서 명령을 실행하여 수행됩니다.
    6. 이미지 3.2.2-3.2.4 단계에서 원본 이미지(포함된 파이썬 스크립트의 16호선 및 17줄)에서 새로운 식품 이미지 데이터 집합(총 4가지 변형)으로 이미지를 저장합니다. 이는 포함된 파이썬 스크립트의 19~24줄을 삭제하고 명령이 35줄에서 실행하여 수행됩니다.
  3. 식품 이미지 세분화 수행
    1. 기존 HTC20 ResNet-101아키텍처를 수정16 MMDetection 라이브러리에서 정의50 섹션에서 섹션 '모델 설정' 및 '데이터 집합 설정' 단계3.1.1, 3.2.5 및 3.2.6 단계에서 음식 이미지 데이터 집합을 허용 합니다.
    2. (선택 사항) HTC ResNet-101 아키텍처 정의를 3.3.1 단계에서 수정하여 교육 하이퍼매개변수를 정의합니다: 섹션 '데이터 집합 설정'의 배치 크기, 섹션 '최적화'의 해결사 유형 및 학습 속도, 섹션 '학습 정책'의 학습 정책 및 아키텍처 정의 파일의 '런타임 설정' 섹션의 교육 시대 수를 정의합니다.
      참고: 수정된 HTC ResNet-101 아키텍처 정의 파일은 추가 파일('htc_resnet-101.py'에서 찾을 수 있습니다. 하이퍼파라미터는 시작하기 전에 교육 프로세스를 정의하는 데 사용되는 매개 변수입니다. 최적의 하이퍼파라미터 집합을 찾기 위해 각 데이터 집합에 실험이 필요하지만 파일에는 수정 없이 사용할 수 있는 하이퍼파라미터 구성이 이미 포함되어 있습니다. 따라서 이 단계는 선택 사항입니다.
    3. MMDetection 라이브러리를 사용하여 3.1.1 단계에서 음식 이미지 데이터 집합에 HTC ResNet-101 모델의 교육을 실행합니다(예: '파이썬 mmdetection/도구/train.py htc_resnet-101.py').
    4. 3.3.3 단계의 교육이 완료된 후, 가장 성능이 좋은 HTC ResNet-101 모델 반복을 수행하고 3.2.5 단계에서 식품 이미지 데이터 세트에 대한 다음 단계의 교육을 실행하여 미세 조정합니다.
      참고: 가장 성능이 우수한 모델 반복을 결정하는 방법에는 여러 가지가 있습니다. 이 작업을 수행하는 간단한 방법은 다음과 같습니다. MMDetection 라이브러리는 명령줄 인터페이스의 각 교육 시대에 대한 정확도 측정값을 출력합니다. 식품 이미지 데이터 집합의 유효성 검사 하위 집합에 대해 가장 낮은 손실 값을 달성한 시기를 확인합니다- 모델 반복이 가장 성능이 좋은 것으로 간주될 수 있습니다. 최상의 모델 반복을 결정하는 선택적 단계는 학습 하위 집합의 손실 값이 획기적인 시대로 변경되는 방식을 관찰하고 유효성 검사 하위 집합의 손실 값이 동일하게 유지되거나 지속적으로 상승하는 동안 지속적으로 떨어지기 시작하는 경우, 모델이 이미지 학습에 과도하게 장착되기 시작했을 때 신호할 수 있으므로 교육 손실 값이 감소하기 전에 시대를 취합니다.
    5. 3.3.4 단계에서 의 교육이 완료된 후, 가장 성과가 좋은 HTC ResNet-101 모델 반복을 수행하고 3.2.6 단계에서 식품 이미지 데이터 집합에 대한 다음 단계의 교육을 실행하여 미세 조정하십시오.
      참고: 3.3.4 단계의 참고 를 참조하십시오.
    6. 3.3.5 단계의 교육이 완료된 후, 가장 성과가 좋은 HTC ResNet-101 모델 반복을 수행하고 3.2.5 단계에서 식품 이미지 데이터 세트에 대한 다음 단계의 교육을 다시 실행하여 미세 조정합니다.
      참고: 3.3.4 단계의 참고 를 참조하십시오.
    7. 3.3.6 단계의 교육이 완료되면 성능이 가장 우수한 HTC ResNet-101 모델 반복을 수행합니다. 그런 다음 이 모델은 이 방법의 성능을 테스트하는 데 사용됩니다.
      참고: 3.3.4 단계의 참고 를 참조하십시오. 단계 3.3.3-3.3.7이 문서의 저자에 의해 정의 된 목적을 위해 최상의 결과를 산출. 각 데이터 집합에 대한 실험이 필요하며 최적의 교육 및 데이터 확대 단계를 찾아야 합니다.

Representative Results

NutriNet은 당시의 세 가지 인기있는 딥 러닝 아키텍처에 대해 테스트되었습니다: AlexNet14,GoogLeNet51 및 ResNet16. 또한 모든 아키텍처에 대해 다중 교육 매개 변수를 테스트하여 최적의 값2를정의했습니다. 그 중손실 함수가 최소화되는 방법을 결정하는 솔버 유형의 선택이 있습니다. 이 기능은 분류 정확도보다 훈련 중 최적화에 더 적합하기 때문에 신경망 훈련을 위한 기본 품질 측정값입니다. 우리는 세 가지 솔버를 테스트: 스토샤스틱 그라데이션 하강 (SGD)52,네스테로프의 가속 그라데이션 (NAG)53 및 적응 그라데이션 알고리즘 (AdaGrad)54. 두 번째 매개 변수는 처리 크기로 처리되는 이미지 수를 동시에 정의합니다. 딥 러닝 아키텍처의 깊이는 더 깊은 아키텍처가 GPU 메모리에 더 많은 공간을 필요로 하기 때문에 이 매개 변수의 가치를 결정했습니다. 세 번째 매개 변수는 학습 속도이며, 이는 학습 중에 신경망 매개 변수가 변경되는 속도를 정의합니다. 이 매개 변수는 동시 처리된 이미지의 수가 수렴 속도를 지시하기 때문에 일괄 처리 크기와 한일 설정되었습니다. AlexNet 모델은 256개의 이미지와 기본 학습률 0.02의 배치 크기를 사용하여 학습되었습니다. NutriNet은 128 개의 이미지의 배치 크기와 0.01의 비율을 사용했습니다. GoogLeNet 64 이미지와 0.005의 속도; 및 ResNet 16 이미지와 0.00125의 속도. 모든 아키텍처에 대해 학습 률 정책(스텝다운), 스텝 크기(30%)의 세 가지 매개 변수가 수정되었습니다. 감마 (0.1). 이러한 매개 변수는 모든 시대에 학습 속도가 어떻게 변화하고 있는지 공동으로 설명합니다. 이 방법의 뒤에 아이디어는 학습 비율이 점차적으로 최적의 손실 값에 도착 모델을 미세 조정하기 위해 낮아지고 있다는 것입니다. 마지막으로, 모든 딥 러닝 아키텍처 2에 대해 교육 기간의 수도 150으로고정되었습니다.

NutriNet이 달성한 모든 매개 변수 중 가장 좋은 결과는 인식 데이터 집합에서 86.72 %의 분류 정확도였으며 AlexNet의 최상의 결과보다 약 2 % 높았으며 GoogLeNet의 최상의 결과보다 약간 높았습니다. 전반적으로 가장 우수한 아키텍처는 ResNet(약 1%)이었지만, ResNet의 교육 시간은 NutriNet(약 5배)에 비해 상당히 높으며, 이는 모델이 지속적으로 정확도와 인식 가능한 식품 의 수를 개선하기 위해 재교육을 받는 경우 중요합니다. NutriNet, AlexNet 및 GoogLeNet은 AdaGrad 솔버를 사용하여 최상의 결과를 달성한 반면 ResNet의 최고의 모델은 NAG 솔버를 사용했습니다. NutriNet은 또한 공개적으로 사용할 수있는 UNIMIB2016 식품 이미지 데이터 세트38에테스트되었다. 이 데이터 집합에는 73가지 식품의 3,616개의 이미지가 포함되어 있습니다. NutriNet은 이 데이터 집합에서 86.39%의 인식 정확도를 달성하여 85.80%였던 데이터 세트 작성자의 기준 인식 결과를 약간 능가했습니다. 또한 NutriNet은 115가지 식음료 품목의 실제 이미지 200개에 대한 작은 데이터 집합에서 테스트되었으며, NutriNet은 55%의 최고 정확도를 달성했습니다.

FCN-8s 가짜 식품 이미지 세분화 모델을 교육하기 위해 Adam55를 솔버 유형으로 사용했습니다. 기본 학습 률은 0.0001로 매우 낮게 설정되었습니다. 숫자가 적다는 이유는 한 번에 하나의 이미지만 처리할 수 있다는 사실이며 이는 픽셀 수준 분류 프로세스의 결과입니다. 이 접근 방식에 대한 GPU 메모리 요구 사항은 이미지 수준 분류보다 훨씬 큽습니다. 따라서 매개 변수가 너무 빨리 변경되지 않고 최적의 값으로 수렴되지 않도록 학습 속도를 낮게 설정해야 했습니다. 학습 속도 정책, 단계 크기 및 감마는 이러한 매개 변수가 가장 정확한 모델을 생성함에 따라 학습 속도 정책, 단계 크기 및 감마가 각각 34% 및 0.1로 설정된 동안 교육 시대는 100으로 설정되었습니다.

FCN-8s 모델의 정확도 측정은 기존의 딥 러닝 네트워크의 분류 정확도와 유사한 픽셀 정확도측정(15)을사용하여 수행되었으며, 가장 큰 차이점은 정확도가 이미지 레벨대신 픽셀 수준에서 계산된다는 점입니다.

Equation 1

PA가 픽셀 정확도 측정인 경우 nij는 클래스 jti = Σj nij에 속하는 것으로 예상되는 클래스의 픽셀수입니다. 즉, 픽셀 정확도 측정값은 정확하게 예측된 픽셀을 총 픽셀 수로 나누어 계산됩니다. 훈련된 FCN-8s 모델의 최종 정확도는 92.18%였습니다. 그림 2는 해당 접지-진실 및 모델 예측 레이블과 함께 가짜 식품 이미지 데이터 집합(각 교육, 유효성 검사 및 테스트 하위 집합에서 하나)의 세 가지 예제 이미지를 보여 주어 있습니다.

식품 이미지 세분화를 위한 HTC20 ResNet-101 모델을 훈련하는 매개 변수는 다음과 같이 설정되었습니다: 사용된 솔버 유형은 다른 솔버 유형을 능가하기 때문에 SGD였습니다. 기본 학습 속도는 0.00125로 설정되었으며 배치 크기는 2개의 이미지로 설정되었습니다. 교육 기간수는 교육 단계당 40으로 설정되었으며, 증강 된 이미지가없는 원래 FRC 데이터 집합에서 먼저 8x 증강 및 4x 증강 FRC 데이터 집합에서 가장 성능이 뛰어난 모델을 취하고 다음 교육 단계에서 미세 조정할 때마다 여러 번 수행되었습니다. 교육 단계에 대한 자세한 내용은 프로토콜 텍스트의 섹션 3.3에서 찾을 수 있습니다. 마지막으로, 스텝다운 학습 정책이 사용되었으며, 학습 률이 감소할 때고정된 시대(첫 번째 교육 단계의 경우 28및 35세)가 사용되었습니다. 중요한 점은 이 교육 단계 순서가 FRC 의 범위에서 테스트에서 최상의 결과를 생성했지만 다른 데이터 집합을 사용하면 최적의 결과를 생성하기 위해 다른 시퀀스가 필요할 수 있다는 것입니다.

식품 이미지 세분화를 위한 이 ResNet 기반 솔루션은 다음 정밀측정(19)을사용하여 평가하였다.

Equation 2

P가 정밀한 경우 TP는 식품 이미지 세분화 모델에 의한 진정한 긍정 예측 수이며, FP는 거짓 긍정 예측의 수이며 IoU는 이 방정식으로 계산되는 유니온을 통해 교차합니다.

Equation 3

중첩 영역이 지면 진실과 겹치는 모델별 예측 수를 나타내고, 유니온 영역은 픽셀 수준과 각 개별 식품 클래스모두에서 지상 진실과 함께 모델별 총 예측 수를 나타냅니다. 리콜은 보조 측정값으로 사용되며 다음수식(19)을사용하여 유사한 방식으로 계산됩니다.

Equation 4

여기서 R은 리콜되고 FN은 식품 이미지 세분화 모델의 거짓 음수 예측 수입니다. 정밀도 및 리콜 조치는 지상 진실의 모든 클래스에서 평균됩니다. 이러한 대책을 통해 모델의 평균 정밀도는 59.2%, 평균 리콜82.1%를 달성하여 식품 인식 챌린지192라운드에서2위를 차지했습니다. 이 결과는 1위보다 4.2%, 평균 정밀도 측정측면에서 3위보다 5.3% 앞섰다. 표 1에는 대회 참가자 4명에 대한 결과가 포함되어 있습니다.

Figure 1
그림 1: NutriNet 심층 신경망 아키텍처의 다이어그램. 이 수치는 Mezgec 외2에게시되었습니다. 이 그림의 더 큰 버전을 보려면 여기를 클릭하십시오.

Figure 2
그림 2: 가짜 식품 이미지 데이터 집합의 이미지입니다. 원본 이미지(왼쪽), 수동으로 레이블이 지정된 지상 진실 레이블(가운데) 및 FCN-8s 모델(오른쪽)의 예측입니다. 이 수치는 Mezgec 외1에게시되었습니다. 이 그림의 더 큰 버전을 보려면 여기를 클릭하십시오.

팀 이름 배치 평균 정밀도 평균 리콜
rsfete 1 63.4% 88.6%
simon_mezgec 2 59.2% 82.1%
아림부스 3 53.9% 73.5%
잠재 4 48.7% 71.1%

표 1: 식품 인식 챌린지 2라운드에서 상위 4위 평균 정밀도는 보조 측정값으로 기본 성능 측정 및 평균 회수로 수행됩니다. 결과는 공식 경쟁 순위표19에서가져온다.

추가 파일. 이 파일을 다운로드하려면 여기를 클릭하십시오.

Discussion

최근 몇 년 동안, 심층 신경망은 식품 이미지10,11,12,21, 23,25,26, 29,31,33을인식하기 위한 적합한 솔루션으로서 여러 번 검증되었다. 이 문서에 제시된 우리의 작품은 이1,2를더욱 증명하는 역할을 합니다. 단일 출력 식품 이미지 인식 접근 방식은 간단하며 식음료 항목이 하나만 있는 이미지가 예상되는 간단한 응용 분야에 사용할 수 있습니다2.

식품 이미지 세분화 접근 방식은 식품 항목 의 수에 대한 제한없이 일반적으로 식품 이미지를 인식하는 데 특히 적합한 것으로 보인다1. 이미지의 각 개별 픽셀을 분류하여 작동하므로 이미지의 여러 가지 식품을 인식할 뿐만 아니라 식품 항목의 위치와 그 규모가 얼마나 큰지 지정할 수 있습니다. 후자는 특히 참조 개체 또는 고정 거리 카메라와 함께 사용되는 경우 식품 중량 추정을 수행하는 데 사용할 수 있습니다.

식품 이미지 데이터세트3,22,27, 30,36,37,38,39,40,41,42의가용성에 관한 몇 가지 작업이 수행되었으며, 특히 전 세계 여러 지역의 식품 이미지 데이터 집합을 집계할 때 더 많은 작업이 수행되기를 희망합니다. 현재 자동 식품 이미지 인식 솔루션의 정확도는 아직 인간 수준의정확도(35)에도달하지 못했으며, 이는 크기와 품질이 부족한 식품 이미지 데이터 세트의 사용으로 인해 상당 부분 발생할 수 있습니다.

미래에 우리의 목표는 실제 이미지에 대한 개발 된 절차를 더 평가하는 것입니다. 일반적으로 이 필드의 데이터 집합에는 제어된 환경에서 촬영한 이미지 나 인식에 수동으로 최적화된 이미지가 포함되어 있는 경우가 많습니다. 그렇기 때문에 개인이 인식하고 싶은 다양한 식음료 품목을 포괄하기 위해 크고 다양한 실제 식품 이미지 데이터 집합을 수집하는 것이 중요합니다. 이를 향한 첫 번째 단계는 실제 음식 이미지19의데이터 세트를 포함하는 식품 인식 챌린지에 의해 제공되었지만, 전 세계의 음식 이미지에 대한 이러한 접근 방식을 검증하고 영양사들과 협력하여 추가 작업을 수행해야 합니다.

Disclosures

저자는 공개 할 것이 없습니다.

Acknowledgments

저자는 가짜 음식 이미지 데이터 세트를 제공 한 호주 뉴 캐슬 대학의 타마라 부처에게 감사드립니다. 이 작품은 유럽 연합의 호라이즌 2020 연구 및 혁신 프로그램 (보조금 번호 863059 - FNS-클라우드, 769661 - SAAM)에 의해 지원되었다; 및 슬로베니아 연구 기관 (보조금 번호 P2-0098). 유럽 연합 (EU)과 슬로베니아 연구 기관은이 문서의 디자인, 분석 또는 쓰기에 아무런 역할이 없었다.

Materials

Name Company Catalog Number Comments
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 Google 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

DOWNLOAD MATERIALS LIST

References

  1. Mezgec, S., Eftimov, T., Bucher, T., Koroušić Seljak, B. Mixed Deep Learning and Natural Language Processing Method for Fake-Food Image Recognition and Standardization to Help Automated Dietary Assessment. Public Health Nutrition. 22 (7), 1193-1202 (2019).
  2. Mezgec, S., Koroušić Seljak, B. NutriNet: A Deep Learning Food and Drink Image Recognition System for Dietary Assessment. Nutrients. 9 (7), 657 (2017).
  3. Chen, M., et al. PFID: Pittsburgh Fast-Food Image Dataset. Proceedings of the ICIP 2009. , 289-292 (2009).
  4. Joutou, T., Yanai, K. A Food Image Recognition System with Multiple Kernel Learning. Proceedings of the ICIP 2009. , 285-288 (2009).
  5. Yang, S., Chen, M., Pomerlau, D., Sukthankar, R. Food Recognition using Statistics of Pairwise Local Features. Proceedings of the CVPR 2010. , 2249-2256 (2010).
  6. Anthimopoulos, M. M., Gianola, L., Scarnato, L., Diem, P., Mougiakakou, S. G. A Food Recognition System for Diabetic Patients Based on an Optimized Bag-of-Features Model. IEEE Journal of Biomedical and Health Informatics. 18 (4), 1261-1271 (2014).
  7. LeCun, Y., Bengio, Y., Hinton, G. Deep Learning. Nature. 521, 436-444 (2015).
  8. Deng, L., Yu, D. Deep Learning: Methods and Applications. Foundations and Trends in Signal Processing. 7 (3-4), 197 (2014).
  9. Hubel, D. H., Wiesel, T. N. Receptive Fields, Binocular Interaction and Functional Architecture in the Cat's Visual Cortex. The Journal of Physiology. 160 (1), 106-154 (1962).
  10. Singla, A., Yuan, L., Ebrahimi, T. Food/Non-Food Image Classification and Food Categorization using Pre-Trained GoogLeNet Model. Proceedings of the MADiMa'16. , 3-11 (2016).
  11. Yanai, K., Kawano, Y. Food Image Recognition using Deep Convolutional Network with Pre-Training and Fine-Tuning. Proceedings of the ICMEW 2015. , 1-6 (2015).
  12. Liu, C., et al. DeepFood: Deep Learning-Based Food Image Recognition for Computer-Aided Dietary Assessment. Proceedings of the ICOST 2016. , 37-48 (2016).
  13. De Sousa Ribeiro, F., et al. An End-to-End Deep Neural Architecture for Optical Character Verification and Recognition in Retail Food Packaging. Proceedings of the ICIP 2018. , 2376-2380 (2018).
  14. Krizhevsky, A., Sutskever, I., Hinton, G. ImageNet Classification with Deep Convolutional Neural Networks. Proceedings of the NIPS'12. , 1097-1105 (2012).
  15. Long, J., Shelhamer, E., Darrell, T. Fully Convolutional Networks for Semantic Segmentation. Proceedings of the CVPR 2015. , 3431-3440 (2015).
  16. He, K., Zhang, X., Ren, S., Sun, J. Deep Residual Learning for Image Recognition. Proceedings of the CVPR 2016. , 770-778 (2016).
  17. PASCAL VOC Project. PASCAL Visual Object Classes. , Available from: http://host.robots.ox.ac.uk/pascal/VOC (2020).
  18. Bucher, T., vander Horst, K., Siegrist, M. Fruit for Dessert. How People Compose Healthier Meals. Appetite. 60 (1), 74-80 (2013).
  19. Food Recognition Challenge. AICrowd. , Available from: https://www.aicrowd.com/challenges/food-recognition-challenge (2020).
  20. Chen, K., et al. Hybrid Task Cascade for Instance Segmentation. Proceedings of the CVPR 2019. , 4974-4983 (2019).
  21. Kawano, Y., Yanai, K. Food Image Recognition with Deep Convolutional Features. Proceedings of the UbiComp 2014. , 589-593 (2014).
  22. Matsuda, Y., Hoashi, H., Yanai, K. Recognition of Multiple-Food Images by Detecting Candidate Regions. Proceedings of the ICME 2012. , 25-30 (2012).
  23. Christodoulidis, S., Anthimopoulos, M. M., Mougiakakou, S. G. Food Recognition for Dietary Assessment using Deep Convolutional Neural Networks. Proceedings of the ICIAP 2015. , 458-465 (2015).
  24. Tanno, R., Okamoto, K., Yanai, K. DeepFoodCam: A DCNN-Based Real-Time Mobile Food Recognition System. Proceedings of the MADiMa'16. , 89-89 (2016).
  25. Liu, C., et al. A New Deep Learning-Based Food Recognition System for Dietary Assessment on An Edge Computing Service Infrastructure. IEEE Transactions on Services Computing. 11 (2), 249-261 (2017).
  26. Martinel, N., Foresti, G. L., Micheloni, C. Wide-Slice Residual Networks for Food Recognition. Proceedings of the IEEE WACV 2018. , 567-576 (2018).
  27. Bossard, L., Guillaumin, M., Van Gool, L. Food-101-Mining Discriminative Components with Random Forests. Proceedings of the ECCV'14. , 446-461 (2014).
  28. Zhou, L., Zhang, C., Liu, F., Qiu, Z., He, Y. Application of Deep Learning in Food: A Review. Comprehensive Reviews in Food Science and Food Safety. 18, 1793-1811 (2019).
  29. Zhao, H., Yap, K. -H., Kot, A. C., Duan, L. JDNet: A Joint-Learning Distilled Network for Mobile Visual Food Recognition. IEEE Journal of Selected Topics in Signal Processing. 14 (4), 665-675 (2020).
  30. Kawano, Y., Yanai, K. Automatic Expansion of a Food Image Dataset Leveraging Existing Categories with Domain Adaptation. Proceedings of the ECCV'14. , 3-17 (2014).
  31. Hafiz, R., Haque, M. R., Rakshit, A., Uddin, M. S. Image-Based Soft Drink Type Classification and Dietary Assessment System using Deep Convolutional Neural Network with Transfer Learning. Journal of King Saud University - Computer and Information Sciences. , (2020).
  32. Shimoda, W., Yanai, K. Weakly-Supervised Plate and Food Region Segmentation. Proceedings of the ICME 2020. , 1-6 (2020).
  33. Ciocca, G., Micali, G., Napoletano, P. State Recognition of Food Images using Deep Features. IEEE Access. 8, 32003-32017 (2020).
  34. Knez, S., Šajn, L. Food Object Recognition using a Mobile Device: Evaluation of Currently Implemented Systems. Trends in Food Science & Technology. 99, 460-471 (2020).
  35. Furtado, P., Caldeira, M., Martins, P. Human Visual System vs Convolution Neural Networks in Food Recognition Task: An Empirical Comparison. Computer Vision and Image Understanding. 191, 102878 (2020).
  36. Chen, M. -Y., et al. Automatic Chinese Food Identification and Quantity Estimation. SA'12 Technical Briefs. , 1-4 (2012).
  37. Chen, J., Ngo, C. -W. Deep-Based Ingredient Recognition for Cooking Recipe Retrieval. Proceedings of the MM'16. , 32-41 (2016).
  38. Ciocca, G., Napoletano, P., Schettini, R. Food Recognition: A New Dataset, Experiments, and Results. IEEE Journal of Biomedical and Health Informatics. 21 (3), 588-598 (2017).
  39. Salvador, A., et al. Learning Cross-Modal Embeddings for Cooking Recipes and Food Images. Proceedings of the IEEE CVPR 2017. , 3020-3028 (2017).
  40. Ciocca, G., Napoletano, P., Schettini, R. CNN-Based Features for Retrieval and Classification of Food Images. Computer Vision and Image Understanding. 176-177, 70-77 (2018).
  41. Cai, Q., Li, J., Li, H., Weng, Y. BTBUFood-60: Dataset for Object Detection in Food Field. Proceedings of the IEEE BigComp 2019. , 1-4 (2019).
  42. Min, W., et al. ISIA Food-500: A Dataset for Large-Scale Food Recognition via Stacked Global-Local Attention Network. Proceedings of the MM'20. , 393-401 (2020).
  43. Python Software Foundation. Python. , Available from: https://www.python.org (2020).
  44. Google Custom Search API. Google. , Available from: https://developers.google.com/resources/api-libraries/documentation/customsearch/v1/python/latest/customsearch_v1.cse.html (2020).
  45. Stanford Vision Lab. ImageNet. , Available from: http://www.image-net.org (2020).
  46. Heras, J. CLoDSA. , Available from: https://github.com/joheras/CLoDSA (2020).
  47. NVIDIA DIGITS. NVIDIA. , Available from: https://developer.nvidia.com/digits (2020).
  48. Yamaguchi, K. JavaScript Segment Annotator. , Available from: https://github.com/kyamagu/js-segment-annotator (2020).
  49. Shelhamer, E. Fully Convolutional Networks for Semantic Segmentation. , Available from: https://github.com/shelhamer/fcn.berkeleyvision.org (2020).
  50. Multimedia Laboratory, CUHK. MMDetection. , Available from: https://github.com/open-mmlab/mmdetection (2020).
  51. Szegedy, C., et al. Going Deeper with Convolutions. Proceedings of the CVPR 2015. , 1-9 (2015).
  52. Bottou, L. Large-Scale Machine Learning with Stochastic Gradient Descent. Proceedings of the COMPSTAT'2010. , 177-186 (2010).
  53. Nesterov, Y. A Method of Solving a Convex Programming Problem with Convergence Rate O(1/k2). Doklady Akademii Nauk SSSR. 27, 372-376 (1983).
  54. Duchi, J., Hazan, E., Singer, Y. Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. Journal of Machine Learning Research. 12, 2121-2159 (2011).
  55. Kingma, D. P., Ba, J. Adam: A Method for Stochastic Optimization. arXiv Preprint. , (2017).

Tags

공학 문제 169 식품 이미지 인식 음식 이미지 세분화 깊은 신경망 딥 러닝 컨볼루션 신경망 식이 평가
이미지 기반 식이 평가를 위한 심층 신경망
Play Video
PDF DOI DOWNLOAD MATERIALS LIST

Cite this Article

Mezgec, S., KoroušićMore

Mezgec, S., Koroušić Seljak, B. Deep Neural Networks for Image-Based Dietary Assessment. J. Vis. Exp. (169), e61906, doi:10.3791/61906 (2021).

Less
Copy Citation Download Citation Reprints and Permissions
View Video

Get cutting-edge science videos from JoVE sent straight to your inbox every month.

Waiting X
Simple Hit Counter