산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 임베디드

조기 실명을 감지하고 예방하기 위한 알고리즘 교육 방법

인터넷 연결 없이도 당뇨병성 망막병증의 여러 단계를 정확하게 감지할 수 있는 휴대용 의료 기기는 전 세계적으로 망막병증으로 인한 실명 사례의 수를 크게 줄일 수 있습니다. 임베디드 머신 러닝을 통해 배터리 구동 의료 기기에서 직접 실행되고 감지 또는 진단을 수행할 수 있는 알고리즘을 개발하는 것이 이제 가능합니다. 이 기사에서는 Edge Impulse의 소프트웨어 플랫폼을 사용하여 이 기능을 제공하는 알고리즘을 빠르게 훈련시키는 데 필요한 단계를 안내합니다.

당뇨병성 망막증은 눈 뒤쪽에 위치한 조직의 혈관에 손상이 발생하는 상태입니다. 당뇨병이 있고 혈당이 제대로 관리되지 않는 개인에게서 발생할 수 있습니다. 극단적인 만성의 경우 당뇨망막병증은 실명으로 이어질 수 있습니다.

당뇨병이 있는 미국인 5명 중 2명 이상이 당뇨병성 망막병증을 앓고 있습니다. 따라서 생활 방식이나 의료 개입을 수행할 수 있는 초기에 잡는 것이 중요합니다. 시력 관리에 대한 접근이 제한된 전 세계 시골 지역의 경우 망막병증의 단계는 사례가 심각해지기 전에 조기에 발견하기가 훨씬 더 어렵습니다. 당뇨병성 망막병증 감지를 목표로 사용하여 공개적으로 사용 가능한 의료 데이터를 가져오고 Edge Impulse에서 에지 장치에서 직접 추론을 실행할 수 있는 기계 학습 모델을 훈련하려고 했습니다. 이 알고리즘은 이상적으로는 망막 카메라로 촬영한 눈의 이미지 사이에서 당뇨병성 망막병증의 중증도를 평가할 수 있습니다. 이 프로젝트에 사용한 데이터세트는 여기에서 찾을 수 있습니다.

이 알고리즘의 경우 클래스를 5개의 서로 다른 데이터 세트로 나누었습니다.

<울>
  • 당뇨성 망막병증 없음(DR 없음)
  • 경증 DR
  • 보통 DR
  • 심각한 DR
  • 증식성 DR
  • 공개적으로 사용 가능한 많은 데이터 세트와 마찬가지로 일부 데이터 정리 및 레이블 지정을 수행해야 했습니다.

    환자 ID를 보호하기 위해 데이터 세트의 각 이미지에 id_code와 0-5의 진단이 제공되었습니다. 0은 DR 없음의 가장 낮은 심각도, 5는 최악의 DR 또는 증식성 DR입니다.

    Edge Impulse로 데이터를 수집하기 위해 일부 이미지 분할이 발생해야 했습니다. 데이터 분할 방식의 단순한 특성을 감안할 때 Excel에서 이미지 id_code를 읽고 연결된 이미지를 가져와 해당 폴더에 저장하는 VBA 스크립트를 작성하기로 결정했습니다. 이 파일을 이동하는 스크립트는 여기에 링크되어 있습니다. 더 나은 Python 또는 기타 스크립팅 언어 기술을 가진 사람들을 위해 이 작업을 수행할 수 있는 방법이 훨씬 더 간단할 수 있습니다.

    Edge Impulse에는 클라우드 데이터 버킷 통합 또는 장치에서 데이터 수집과 같은 다른 데이터 수집 기능이 있지만 여기서는 데이터 업로드를 활용했습니다. 데이터 업로드 옵션을 사용하여 5개의 다른 클래스에 5개의 업로드 시리즈를 가져올 수 있었습니다. 각 업로드는 데이터에 5개의 클래스 중 하나로 레이블을 지정하고 각 폴더에 포함된 관련 이미지를 업로드하는 것으로 구성되었습니다.

    Edge Impulse에는 80/20 분할로 데이터를 훈련 또는 테스트 데이터로 자동 분할하는 옵션이 있습니다. 그러나 테스트 데이터 세트에 다양한 클래스에 걸쳐 약 500개의 이미지를 수동으로 추가했습니다.

    다음으로 내 모델을 설정하고 이 모델에 대한 신호 처리 블록과 신경망 블록을 선택할 차례였습니다. 이 모델의 경우 5개의 서로 다른 클래스를 구별하기 위해 이미지 블록을 전이 학습 블록에 입력했습니다.

    여기서부터 신경망을 훈련시키러 갔습니다. 신경망의 설정을 가지고 놀면서 내가 얻은 최고의 정확도는 약 74%였습니다. 나쁘지는 않지만 일부 엣지 케이스에 관해서는 모델이 멈췄습니다. 예를 들어, 중증 DR은 때때로 경증 DR로 분류되었습니다. 아래 스크린샷에서 볼 수 있듯이 DR이 진행됨에 따라 모델이 매우 정확하지 않았습니다.

    이를 통해 이와 같은 프로젝트의 실제 응용 프로그램과 이러한 수준의 정확도가 수용 가능한지 여부에 대해 생각하게 되었습니다. 이상적으로는 일종의 휴대용 망막 이미징 카메라(낮은 무선 연결 환경에서)가 장치 자체에서 이와 같은 알고리즘을 실행할 수 있습니다. 사진이 촬영되고 처리되고 결과가 출력되면 그 시점에서 시력 검사를 시행하는 사람은 결과에 따라 추가 의료 지원이나 중재를 요청해야 한다고 환자에게 말할 수 있습니다.

    이 응용 프로그램의 경우 환자가 예방 치료를 시작할 수 있도록 모든 단계에서 DR을 파악하는 것이 더 중요합니다. 더 심각한 경우에는 즉각적인 의료 도움을 받을 수 있습니다. 이 사용 사례를 감안할 때 모델은 실제로 잠재적인 응용 프로그램에 비교적 잘 제공됩니다.

    제 머리로는 모델을 몇 가지 변경하거나 개선하여 DR의 심각도 진단 측면에서 결과 출력을 더 정확하게 만들 수 있습니다.

    <울>
  • 데이터는 많을수록 좋습니다. 그러나 이 제한된 데이터 세트를 감안할 때 추가 데이터 수집이 필요할 것입니다.
  • 한 가지 아이디어는 경증(중등도) 등급과 증식성(심각한) 등급을 만들어 등급을 결합하는 것입니다. 경증 및 중등도 DR의 특정 사례 사이의 유사성을 고려할 때 이것이 알고리즘을 더 잘 분류하는 데 도움이 될 수 있는지 궁금합니다. 이제 모두 동일한 그룹에 속하게 됩니다.
  • 신경망(NN) 내의 레이어 수와 드롭아웃을 가지고 놀아보세요.

    배포 관점에서 이 훈련된 모델은 메모리 면에서 더 큰 공간을 차지했으며, 예상되는 306kB의 플래시와 236kB의 RAM을 차지했습니다. 추론을 실행하도록 선택한 장치에 따라 80MHz의 Cortex-M4 또는 216MHz의 Cortex-M7에서 벤치마킹할 때 추론 결과가 다시 제공되는 데 필요한 시간은 0.8초에서 6초 사이였습니다. 그러나 이 최종 제품이 이미지를 찍어야 한다는 점을 감안할 때 Cortex-M7의 처리 능력 또는 그 이상이 필요할 것으로 예상합니다.

    요약하면, 오픈 소스 데이터 세트를 사용하여 다양한 형태의 당뇨병성 망막증(DR)을 감지하기 위해 비교적 잘 작동하는 기계 학습 모델을 훈련할 수 있었습니다. 최종 목표는 이와 같은 모델을 임베디드 마이크로컨트롤러 또는 Linux 장치에 직접 배포하고 아래와 같은 의료 장치가 에지에서 추론을 실행하도록 하는 것입니다. 이것은 무선 연결 없이 농촌 지역에서 사용할 수 있는 의료 기술을 제공하여 의료 서비스에 대한 접근성이 낮은 인구에게 테스트를 제공함으로써 의료 서비스에 대한 새로운 가능성을 열어줍니다.

    의료 기기에 임베디드 머신 러닝(ML) 배포를 위한 좋은 기회가 실제로 있습니다. 추가 개선 가능성을 포함하여 이 프로젝트에 대한 자세한 내용은 여기에서 확인할 수 있습니다.


    임베디드

    1. 티타늄은 어떻게 인간에 의해 발견되고 사용되었습니까?
    2. 클라우드와 클라우드가 IT 세계를 변화시키는 방식
    3. 4가지 사이버 공격 유형 및 예방 방법
    4. 일반적인 중장비 및 장비 문제를 예방하는 방법
    5. 용접 다공성이란 무엇이며 어떻게 방지합니까?
    6. 녹슬기란 무엇이며 녹을 방지하는 방법은 무엇입니까? 전체 가이드
    7. 기계 고장의 주요 원인 및 예방 방법
    8. 상호 운용성이란 무엇이며 어떻게 우리 회사에서 이를 달성할 수 있습니까?
    9. Machine Guarding 함정 및 예방 방법
    10. 누출 감지 및 수정 방법