임베디드
인터넷 연결 없이도 당뇨병성 망막병증의 여러 단계를 정확하게 감지할 수 있는 휴대용 의료 기기는 전 세계적으로 망막병증으로 인한 실명 사례의 수를 크게 줄일 수 있습니다. 임베디드 머신 러닝을 통해 배터리 구동 의료 기기에서 직접 실행되고 감지 또는 진단을 수행할 수 있는 알고리즘을 개발하는 것이 이제 가능합니다. 이 기사에서는 Edge Impulse의 소프트웨어 플랫폼을 사용하여 이 기능을 제공하는 알고리즘을 빠르게 훈련시키는 데 필요한 단계를 안내합니다.
당뇨병성 망막증은 눈 뒤쪽에 위치한 조직의 혈관에 손상이 발생하는 상태입니다. 당뇨병이 있고 혈당이 제대로 관리되지 않는 개인에게서 발생할 수 있습니다. 극단적인 만성의 경우 당뇨망막병증은 실명으로 이어질 수 있습니다.
당뇨병이 있는 미국인 5명 중 2명 이상이 당뇨병성 망막병증을 앓고 있습니다. 따라서 생활 방식이나 의료 개입을 수행할 수 있는 초기에 잡는 것이 중요합니다. 시력 관리에 대한 접근이 제한된 전 세계 시골 지역의 경우 망막병증의 단계는 사례가 심각해지기 전에 조기에 발견하기가 훨씬 더 어렵습니다. 당뇨병성 망막병증 감지를 목표로 사용하여 공개적으로 사용 가능한 의료 데이터를 가져오고 Edge Impulse에서 에지 장치에서 직접 추론을 실행할 수 있는 기계 학습 모델을 훈련하려고 했습니다. 이 알고리즘은 이상적으로는 망막 카메라로 촬영한 눈의 이미지 사이에서 당뇨병성 망막병증의 중증도를 평가할 수 있습니다. 이 프로젝트에 사용한 데이터세트는 여기에서 찾을 수 있습니다.
그림>이 알고리즘의 경우 클래스를 5개의 서로 다른 데이터 세트로 나누었습니다.
<울>공개적으로 사용 가능한 많은 데이터 세트와 마찬가지로 일부 데이터 정리 및 레이블 지정을 수행해야 했습니다.
환자 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의 심각도 진단 측면에서 결과 출력을 더 정확하게 만들 수 있습니다.
<울>신경망(NN) 내의 레이어 수와 드롭아웃을 가지고 놀아보세요.
그림>배포 관점에서 이 훈련된 모델은 메모리 면에서 더 큰 공간을 차지했으며, 예상되는 306kB의 플래시와 236kB의 RAM을 차지했습니다. 추론을 실행하도록 선택한 장치에 따라 80MHz의 Cortex-M4 또는 216MHz의 Cortex-M7에서 벤치마킹할 때 추론 결과가 다시 제공되는 데 필요한 시간은 0.8초에서 6초 사이였습니다. 그러나 이 최종 제품이 이미지를 찍어야 한다는 점을 감안할 때 Cortex-M7의 처리 능력 또는 그 이상이 필요할 것으로 예상합니다.
요약하면, 오픈 소스 데이터 세트를 사용하여 다양한 형태의 당뇨병성 망막증(DR)을 감지하기 위해 비교적 잘 작동하는 기계 학습 모델을 훈련할 수 있었습니다. 최종 목표는 이와 같은 모델을 임베디드 마이크로컨트롤러 또는 Linux 장치에 직접 배포하고 아래와 같은 의료 장치가 에지에서 추론을 실행하도록 하는 것입니다. 이것은 무선 연결 없이 농촌 지역에서 사용할 수 있는 의료 기술을 제공하여 의료 서비스에 대한 접근성이 낮은 인구에게 테스트를 제공함으로써 의료 서비스에 대한 새로운 가능성을 열어줍니다.
그림>의료 기기에 임베디드 머신 러닝(ML) 배포를 위한 좋은 기회가 실제로 있습니다. 추가 개선 가능성을 포함하여 이 프로젝트에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
임베디드
3D 프린팅은 정밀하고 정밀하며 복잡한 디자인의 제품을 만드는 데 적합한 적층 제조 공정입니다. 그러나 많은 사용자, 특히 초보자는 여러 가지 결함을 경험하는 것이 일반적입니다. 일반적인 3D 프린팅 결함 중 하나는 3D 프린팅 뒤틀림입니다. 3D 인쇄 뒤틀림은 여러 가지 이유로 발생하여 많은 사람들에게 3D 인쇄를 불편하게 만듭니다. 결과적으로 이 기사에서는 3D 인쇄 뒤틀림, 그 원인, 가능한 수정 사항 및 3D 인쇄 뒤틀림을 방지하는 방법에 대해 설명합니다. 3D 프린팅 변형의 개념 뒤틀림은 부품이 의도한 모양에서 왜곡되는
용접 다공성이란 무엇입니까? Weld porosity는 용융된 용접 웅덩이에 갇힌 질소, 산소 및 수소 가스의 흡수 및 응고 중 방출로 인해 발생하는 용접 결함으로, 표면 또는 비드 내부에 포켓 또는 기공이 발생합니다. 다공성은 용접 표면이나 용접 비드 내부에 발생할 수 있습니다. 용접 풀에서 질소와 산소의 흡수는 일반적으로 열악한 가스 차폐로 인한 것입니다. 다공성은 무작위일 수 있습니다:무작위로, 고르지 않은 거리로 배향됩니다. 또한 모든 측면에서 1인치 간격으로 분리될 수 있습니다. 다공성은 응고될 때 용접 풀에서 방출