> 기술 주변기기 > 일체 포함 > SMA 코일로 구동되는 자벌레 위장 진단 로봇

SMA 코일로 구동되는 자벌레 위장 진단 로봇

WBOY
풀어 주다: 2023-04-11 17:31:03
앞으로
1222명이 탐색했습니다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

​오픈 소스에 대해 자세히 알아보려면 다음을 방문하세요.​

​51CTO 오픈 소스 기본 소프트웨어 커뮤니티​

​https://ost.51cto.com​

프로젝트 요약

우리나라에서는 위장병 발병률이 높은데, "열에 아홉은 위장에 문제가 있다"는 말이 있습니다. 우리나라의 위암, 대장암은 다른 암종에 비해 정밀한 치료가 뒤떨어져 있으며, 이는 검출 방법의 정확성과 불가분의 관계입니다. 또한 일반적인 진단 방법에는 관련 위험이 있습니다. CT는 환자의 신체에 방사선 위험이 강하고, B-초음파는 위 내시경 진단의 정확도가 낮고, 점막 손상 및 출혈과 같은 위험이 있습니다. , 위장 천공 및 성대 손상. 우리나라의 현재 암 조기검진율은 낮은데, 내시경 진단 보급률을 높일 여지가 크다. 과학기술 수준의 영향을 받아 최근 전 세계적으로 최소침습 수술기술의 보급 및 대중화로 인해 최소침습 의료기기의 발전이 촉진되고 있으며, 최소침습 의료기기 중 가장 대표적인 것이 내시경이다. 생체검사 및 치료 기능을 구현합니다. 그러나 삽입형 내시경은 의료 수술 시에도 몇 가지 단점이 있습니다. 수술은 환자에게 통증을 유발할 뿐만 아니라 렌즈 시야에 특정 감지 사각지대도 발생합니다. 따라서 마이크로 바이오닉 로봇은 장 질환의 최소 침습적 진단 및 검사를 위한 효율적이고 편리한 옵션을 제공하며 내시경 기술 분야의 최신 연구 핫스팟이 되었습니다.

저희 솔루션은 정자의 나선형 운동 방식을 이용하여 마이크로 로봇을 환자의 항문에 주입하고 로봇의 마이크로 드라이브를 원격으로 제어하여 장 내에서 이동시켜 고정점 진단을 수행하는 것입니다. 이동 중에는 SMA 코일을 구동 장치로 사용하여 마이크로 로봇이 앞뒤로 움직이도록 제어하고 자벌레 근육의 움직임 메커니즘을 모방하여 지속적인 보행을 구현합니다. 제어 측면에서, 모니터링된 전류 및 온도의 종합 데이터에 따라 적절한 피드백 신호를 갖춘 서보 제어를 사용하여 SMA 코일의 온도를 적시에 조정하고 전류 간헐 시간에 저항을 변경합니다. 발생이 기록됩니다. 무선 에너지 전송 시스템은 교류 자기장을 자극할 수 있는 인체 복부 부위의 송신기와 교류 자기장을 유도하고 로봇에 DC 작동 전압을 제공하는 마이크로 로봇 내부에 통합된 수신기로 구성됩니다. 소형 감지 조명은 장의 상태를 조명하도록 설계되었으며, 동시에 무선으로 제어되는 소형 카메라가 장착되어 장의 폴립의 이미지를 분할하는 이미지 분할 기술이 사용됩니다. , 데이터는 딥러닝 모델을 이용한 예측을 위해 배포 플랫폼으로 전송됩니다. 프로그램의 서버는 데이터 전처리 후 이미지 분할을 수행하고 데이터 및 딥러닝 모델과 상호 작용하여 전문 의사의 진단을 위한 예측 결과를 얻습니다.

키워드: 딥러닝, 장 검출, SMA 코일, 병변 식별

1. 프로젝트 배경

1. 배경 개요

위장 질환은 일반적인 염증성 위장 질환(급성 및 만성 위염, 급성 및 만성 충수염 등)을 의미합니다. ), 소화성궤양, 위암, 식도암, 대장암, 과민성대장증후군 등

위장 질환 발병률은 해마다 증가하고 있습니다. WHO 통계에 따르면 위 질환 발병률은 80%에 달합니다. '중국의학저널(중국의학저널 영문판)'은 2022년 중국에서 진단되는 주요 5대 암은 폐암, 대장암, 위암, 간암, 유방암이 될 것이며 대장암이 2위를 차지할 것이라고 지적했다. , 590,000 건의 새로운 사례가 발생했습니다. 보고서는 또한 중국에서 대장암이 암 사망 원인 중 5위를 차지한다고 지적했습니다.

중국은 위장병 인구기반이 크고, 위암, 대장암 시장도 크며, 중국 위장병 시장은 앞으로도 계속 성장할 것으로 예상됩니다. 우리나라의 위암, 대장암은 다른 암종에 비해 정밀한 치료가 뒤떨어져 있으며, 이는 검출 방법의 정확성과 불가분의 관계입니다.

대장암의 병기는 환자의 병변 크기, 침윤 정도, 림프절 전이 여부, 원격 장기 전이 여부에 따라 결정됩니다. 일반적으로 2cm 이내의 병변은 초기 단계이고, 2cm~5cm 사이의 병변은 초기 단계입니다. 중기, 5cm 이상의 병변이 진행기이다. 대장암은 수술 후 재발 및 전이 가능성이 있으므로 수술 후 일반적으로 4~6주기의 항암화학요법이 필요합니다.

위암의 임상적 병기결정은 일반적으로 국제 TNM 병기결정 표준을 사용하여 수행됩니다. 이 기준에 따르면 위암은 일반적으로 1기, 2기, 3기, 4기의 4단계로 구분되며, 각 단계는 위암의 크기와 침윤 정도에 따라 A, B의 2단계로 나눌 수 있습니다. 장애. 종양이 고유판이나 점막하층을 침범하면 림프절 전이나 원격 장기 전이가 발생하지 않습니다. A단계에 속합니다. 1~6개의 국소 림프절 전이가 동반된 경우에는 IB기에 속하며, 종양이 점막 고유판이나 장막하층을 침범한 경우에도 IB기 및 장막에 속하지만 침범하지는 않습니다. 인접 장기에 종양이 있으면 III기 종양이고, 원격 장기 전이가 동반되면 IV기 위암입니다.

대부분의 환자들은 위장 불편 및 관련 증상에 대해 충분한 주의를 기울이지 않고, 약을 복용하면 증상이 완화될 것이라고 생각하여 위장 검사를 계속 미루고, 증상이 재발하거나 합병증이 발생할 때까지 기다려야 하는 경우가 많습니다. 장암이나 위암은 발견 당시 이미 중기, 후기 단계에 있는 경우가 대부분이다. 위장관 검사에는 일반적으로 CT, B초음파, 대장내시경, 위내시경 등이 사용됩니다. 그러나 이러한 일반적인 검사 방법에는 몇 가지 위험이 있습니다. 위장 내시경 검사는 특정 해를 끼치며 점막 손상 및 출혈, 위장 천공, 성대 손상 등의 위험이 있습니다. 따라서 위험이 없고 정확도가 높은 감지 장치는 위장 질환을 감지하는 데 가장 적합한 솔루션입니다.

2. 시장수요

2020년 세계보건기구 통계에 따르면 전 세계 위질환 환자는 5억 명 중 중국이 1억2천만 명을 차지합니다. 80%에 달하며, 연평균 17.43%씩 성장하고 있어 2022년 중국 위질환 환자 수는 1억 6천만 명에 달할 것으로 추산된다. 현재 우리나라의 위암 발병률은 악성종양 중 2위, 사망률은 3위입니다. 2022년에는 위암 신규 환자가 48만명에 달하고, 위암으로 인한 신규 사망자도 최대 37만명에 이를 전망이다. 19~35세 위질환 환자는 30세에 비해 2배로 늘었다.

장암 발병률은 위암, 식도암에 이어 두 번째입니다. 대장암 발병률은 지난 30년간 크게 증가해 악성종양 사망 원인 4위에 올랐고, 중하부 직장암의 비율도 50% 이상으로 높다. 현재 우리나라에서 대장 및 직장종양이나 외상, 궤양성대장염, 크론병 등의 원인으로 장루수술을 받은 환자의 총수는 100만 명을 넘어섰고, 매년 10만 명씩 증가하는 추세다. .

인구 고령화가 가속화되고, 환자 수가 적어지고, 만성질환 유병률이 해마다 증가하는 국가 상황에서 우리나라는 재활의료가 필요한 사람이 엄청나게 많고, 시장이 거대하며, 미래 재활 시장 잠재력이 무한합니다. 2014년부터 2020년까지 우리나라 OTC 위장약 시장 규모는 해마다 증가하는 추세를 보였다. 그 중 2019년 우리나라 위장약 시장 규모는 225억2200만 위안에 달해 전년 대비 6.3% 증가했다. 2020년 우리나라 위장약 시장 규모는 전년 대비 6.5% 증가한 약 239억 9천만 위안에 이를 전망이다. 2022년 우리나라 위장약 시장 규모는 272억1000만 위안에 이를 것으로 추산된다. 정책지원 측면에서는 2016년 3월 국민보건가족계획위원회가 9개 부처와 협력하여 '일부 신규 의료재활사업을 기초의료보장 지급 범위에 포함시키는 것에 관한 고시'를 공동으로 발표하였다. 당초 지급 범위에 포함되었던 의료재활사업에 대해 '재활종합평가' 등 신규 20개 재활항목이 의료보험 지급범위에 포함된다. 이것이 재활로봇과 관련된 유일한 정책이다. 향후 의료보험에서는 종합적인 재활평가를 통해 재활로봇의 활용을 지원할 수도 있다.

3. 의료적 필요

전 세계적으로 매년 천만 명 이상의 환자가 위장 질환으로 사망하며, 중국 인구의 최대 1/5이 위장 질환으로 고통 받고 있으며 이는 세계 1위입니다. 조사에 따르면 도시인의 높은 생활압박, 업무스트레스, 잦은 초과근무, 장시간 앉아 있는 시간, 과도한 사교, 비과학적인 식습관, 불규칙한 노동 및 휴식 등의 요인으로 인해 우리나라의 3대 주요 질병이 꼽히고 있다. 지방간, B형 간염 및 기타 간 질환, 경추, 요추 및 뼈 증식증이 있습니다. 위장관 및 소화기 질환은 베이징, 상하이, 광저우, 선전에서 가장 흔한 질병이 되었습니다.

현재 우리나라의 암 조기 검진율은 낮고, 내시경 진단 보급률은 개선의 여지가 큽니다. 이 프로젝트는 주로 환자의 내시경 검사에 따른 통증과 점막 손상, 출혈, 위장관 문제를 해결합니다. 천공, 삽입 내시경 중 대장을 쉽게 손상시키는 마취제. 긴장 감소 등의 위험이 있습니다.

삽입 내시경 수술 시에는 내시경이 장만곡을 통과하도록 하거나 의심스러운 병변을 전체적으로 관찰하기 위해 밀고 당기고 비틀는 수술이 필요합니다. 이는 환자에게 고통을 줄 뿐만 아니라 많은 것을 가져옵니다. 합병증: 장 마모 또는 천공, 심폐 사고 등. 기존의 내시경 검사는 환자에게 통증과 합병증을 유발할 수 있습니다. 이러한 요구에 부응하여 우리는 검사 과정을 개선하여 비침습적이고 통증 없는 검사가 가능한 마이크로 로봇을 설계했습니다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

2. 팀 소개

1. 팀 개요

FHC 재활팀은 정저우 경공업대학교 기계전기공학부 Mecol Studio와 Zhengzhou Sally Technology Co., Ltd.에 소속되어 있습니다. FHC 재활팀은 새로운 과학기술 성과를 실용화하여 삶의 질을 향상시키고, 사회문제를 해결하며, 사회에 이익이 되도록 노력하고 있습니다. 더 많은 위장질환 환자들이 보다 정확한 원인 진단을 받을 수 있도록, 믿을 수 있고 실용적인 제품을 지속적으로 출시하고 적용 과정에서 지속적으로 개선해 나가고 있습니다. 우리는 기술, 경험 및 고품질 서비스를 활용하여 고객에게 만족스러운 제품을 제공하고 지속적으로 고객 요구를 충족하며 제품 품질을 지속적으로 개선하고 좋은 비즈니스 및 사회적 가치를 창출합니다.

FHC 재활팀은 정저우 경공업대학교 기계전기공학부 메켈 스튜디오를 기반으로 설립되었습니다. 전체 팀은 프로젝트 관리자 1명과 부 프로젝트 관리자 2명으로 구성된 핵심 그룹에 의해 직접 관리되며, 또한 인사, 마케팅, 재무, 기술, 품질 관리, 장비 등의 부서장도 있습니다. 핵심 팀과 협력하여 전체 팀을 관리합니다. 팀 규모가 커지고 고객 수가 늘어나면서 점차 기업형 조직 구조가 형성될 예정이다. 창업팀 구성원은 각자의 임무를 수행하고 프로젝트의 모든 측면에 참여합니다. 동시에 관련 분야(마케팅, 광고 등 포함)에 경험이 있는 교사와 비즈니스 컨설턴트가 팀 운영을 지도합니다.

2. 팀 핵심 구성원 소개

(1) 멘토 및 의사 자문팀

강사:

칭화대학교 공학박사 Chen Lumin. 그는 청두 과학 기술 대학교에서 기계 공학 학사 학위를, 난징 항공 우주 연구소에서 수리 역학 석사 학위를 받았습니다. 그는 2004년 칭화 대학교를 졸업하고 현재 정저우 경공업 대학교에서 교수로 재직하고 있습니다. 기계전기공학연구소 소장. 최근 몇 년 동안 그가 수행한 주요 프로젝트는 다음과 같습니다. 노인 및 장애인을 위한 건강 의학 연구 - 국가 핵심 R&D 계획 프로젝트 - 노인 및 장애인을 위한 의료 서비스 및 원격 건강 감지에 대한 중요 표준에 대한 연구 하위 주제, 결합 슬라이딩 공작 기계용 적응형 로터리 가이드 부싱 메커니즘의 역학 과학 및 안정성 연구, 허난성 과학 기술 개발 협력 프로젝트, 고해상도 프로젝션 리소그래피 기계 하위 시스템 정적 역학 분석 및 매개변수 시뮬레이션 플랫폼, 국가 "863" 프로젝트 하위 프로젝트, 두 번째 담당자 등

Li Yihao 박사, 부교수, 기계 공학의 학문적 중추, 허난성의 핵심 학문, 전국 10,000명의 뛰어난 혁신 및 기업가 정신 멘토 중 한 명. 2001년 충칭대학교에서 기계 설계 및 자동화를 전공하고 공학 학사 학위를 취득했으며, 2004년에 충칭대학교에서 기계 설계 및 자동화를 전공하고 화중 과학기술대학교에서 공학 석사 학위를 취득했습니다. 2013년 기계전자공학을 전공하고 공학 학사 학위를 취득했습니다.

의사 컨설턴트:

Guo Lei는 허난 노동자 병원 재활과에서 주치의로 일하고 있습니다. 프로젝트의 임상시험에 대한 지침 및 효과 판단을 제공하고, 재활 평가 시스템에 대한 문제 입증 및 재활 보고 지표에 대한 지침을 제공합니다.

현재 허난성 근로자 병원 재활과에서 주치의로 근무하며 오랫동안 최전선 재활 업무에 종사해 왔습니다. 다년간의 임상재활 경험을 보유하고 있습니다.

안내 단위:

Zhengzhou Sali Technology Co., Ltd.

사회의 실제 기업과 협력하면 대학생들이 상아탑에서 벗어나 사회 무대로 자신의 사업을 시작할 수 있습니다. 우리는 우리의 아이디어와 기술 제품을 기업 및 사회와 진정으로 통합하여 상호 지원 상황을 형성할 수 있습니다. 산업, 학계, 연구를 거쳐 궁극적으로는 인류의 이익을 향해 나아갑니다.

(2) 팀의 핵심 구성원

우리 팀은 현재 서로 다른 전공을 가진 10명의 구성원으로 구성되어 있으며, 동일한 관심사로 뭉쳤으며, 폭넓은 지식과 탁월한 능력을 바탕으로 전문가 간 협력을 이룰 수 있습니다. 전문적인 학습 결과. 이 프로젝트를 완료해야 하는 이유는 다음과 같습니다.

팀 구성원:

Hao Tian, ​​​​지능형 제조 공학을 전공하고 팀 관리에 능숙하며 작업 조직 및 조정, 팀 관리 책임 및 프로젝트의 좋은 발전을 추구합니다. .

기계 설계, 제조 및 자동화를 전공한 Fan Jiayi는 프로젝트의 각 주요 모듈의 진행 방향과 프로젝트 인력의 전반적인 배치 및 조정을 담당하고 전반적인 진행 상황을 검사 및 감독합니다.

기계 설계, 제조 및 자동화를 전공한 Xu Fuquan은 프로젝트 소프트웨어 메커니즘의 시뮬레이션 및 최적화와 메커니즘의 모션 장면 시뮬레이션을 담당합니다.

지능 제조 공학을 전공한 Zhang Jingwei는 프로젝트 집적 회로 개발을 담당하고 있으며, 제품 기능 개선을 위해 오랫동안 회로 시뮬레이션, 회로 하드웨어 개발 등에 참여해 왔습니다.

소프트웨어 공학을 전공한 Chen Yi는 병변 진단 시스템의 소프트웨어 플랫폼 개발을 담당하고 있습니다. 그는 오랫동안 이미지 인식, 딥 러닝 및 기타 작업에 종사해 왔으며 풍부한 소프트웨어 개발 경험을 갖고 있습니다. 제품 기능.

자동차 공학을 전공하는 Wang Chen은 마이크로 로봇의 구조 설계 및 최적화를 담당하고 있으며 다양한 3차원 설계 소프트웨어 및 유한 요소 시뮬레이션 소프트웨어에 능숙합니다.

소프트웨어 공학을 전공한 Zhao Haitao는 무선 통신 제어 시스템을 담당하고 있으며 인간-컴퓨터 상호 작용 기술 및 센서 응용 기술에 능숙합니다.

물류 관리를 전공하는 Niu Xuewei는 마이크로 로봇 소프트웨어 준비 및 SMA 실험을 담당하고 있으며 이론 지식 실천에 능숙합니다.

자동화를 전공하는 Wang Shengfeng은 마이크로 로봇의 PWM 파동의 PID 제어를 담당하고 있으며 회로 설계 및 시뮬레이션에 능숙합니다.

Wang Yuesong, 소프트웨어 공학 전공, 복잡한 병변 식별 및 재활 평가를 위한 프런트 엔드 디자인, Hongmeng 인터페이스 개발에 능숙합니다.

3. 응용 시나리오

이 프로젝트는 위장병 환자 또는 잠재적 환자의 감지 및 검사에 사용할 수 있는 위장병 환자를 위한 비침습적 SMA 코일 구동 마이크로 로봇 진단 시스템을 연구합니다. 대상 고객은 다음과 같습니다.

  1. 45세 이상 남녀노소 누구나 위장내시경 검사를 받아야 합니다. 양성 소견(궤양, 폴립 등)이 있는 경우 치료 후 정기적으로 검토해야 합니다.
  2. 식도암, 위암, 장암 등의 가족력이 있는 경우 초진연령을 40세, 심지어 35세까지 앞당길 수 있습니다.
  3. 흡연, 음주, 불규칙한 식습관, 과식, 생선과 고기의 과식, 절인 음식과 바비큐를 좋아하는 것, 높은 업무 압박, 자주 밤을 새는 등 나쁜 생활습관이 있는 것.
  4. 위부 불쾌감, 상복부 통증, 하복부 통증, 위산 역류, 트림, 복부팽만감 등 소화기 불편함을 느끼시는 분.
  5. 장 불편감은 하복부 통증, 하루에 여러 번 배변하는 대신 하루에 한 번 배변하는 등 배변 습관 및 특성의 변화 또는 변비, 묽은 변, 혈변, 점액 같은 혈변 등으로 나타날 수 있습니다.

전염병 기간 동안 사람들은 집에서 격리된 생활을 할 수 밖에 없으며 의료 자원이 부족하고 충분한 인력을 제공할 수 없습니다. 환자들은 자신의 위장 상태에 대해 적시에 피드백을 받을 수 없으며, 특히 농촌 지역의 환자들은 효과적인 재활 치료를 받기가 어렵습니다. 그러나 이 프로젝트에서는 위장 감지 및 식별 시스템을 사용하여 재활 의사가 언제 어디서나 원격으로 검사 및 진단을 수행할 수 있습니다. 환자의 회복 상태를 모니터링하고 의학적 조언과 회복 옵션을 제공합니다. 이 제품은 자체 설계한 위장관 검사용 마이크로 로봇을 사용해 기존 위장관 내시경에 비해 통증이 없고, 합병증이 없으며, 조작이 간편하고 정확도가 높은 것이 특징이다. 이 프로젝트에서 연구된 제품을 사용하여 환자는 집에서 진단 검사를 수행할 수 있으므로 위장 질환의 조기 발견 및 치료가 가속화됩니다.

4. 제품 기능

1. SMA 드라이버

SMA 드라이버의 유연한 굽힘을 제어하는 ​​과정입니다. SMA 액츄에이터의 정량적 변형을 제어하는 ​​목적을 달성하려면 적절한 제어 흐름을 선택해야 합니다. 적절한 제어 전압은 SMA 와이어 굽힘을 정확하게 제어할 수 있으며 SMA 드라이버 구조의 서비스 수명을 연장하는 데 도움이 됩니다. 전압이 높을수록 드라이버의 빠른 응답에는 도움이 되지만 메모리 합금 와이어의 온도가 너무 빨리 상승하여 제어 정확도에 영향을 미치고 드라이버의 구조적 손상을 초래할 수 있습니다. 우리 팀은 학생 전원 공급 장치를 사용하여 직경 0.7mm 및 직경 10cm의 SMA 와이어를 가열하는 116개의 구동 전압 실험을 수행했습니다. 실험 결과 구동 전압이 3.2~3.4V일 때 응답 속도가 가장 빠른 것으로 나타났습니다. SMA 와이어의 수명 손실이 가장 낮고 변형 효과가 가장 분명합니다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

상변화 온도의 임계점에 대한 데이터를 얻기 위해 적외선 온도계를 사용하여 측정했는데, 전압이 3.2V에 도달했을 때 SMA 코일의 측정 온도가 76.6°C에 도달하는 것을 확인했습니다. 이 온도는 상변화 조건에 도달했습니다. 수축률은 이미지 인식 방식을 이용하여 측정하였으며, 흰색 배경 평면에 SMA 코일을 수평으로 배치하여 30cm 높이에서 수평으로 촬영하여 이미지를 처리하였습니다. 회색조와 픽셀 길이가 측정되며 오류는 미크론 수준 내에서 제어될 수 있습니다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

SMA 코일로 구동되는 자벌레 위장 진단 로봇

SMA 코일은 로봇의 전진 및 후진 움직임을 제어하는 ​​구동 장치로 사용되며, 자벌레 근섬유의 배열 및 운동 메커니즘을 모방하여 지속적인 보행을 구현합니다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

2. 딥러닝 기반 병변 식별 시스템

이 시스템은 영상 분할 기술을 사용하여 장용종의 영상을 분할하고, 데이터를 딥러닝 모델 예측 프로그램을 사용하는 서버에 전송하여 분석합니다. 서버에서 전처리 과정을 거쳐 영상 분할을 거쳐 딥러닝 모델과 상호작용을 거쳐 예측 결과를 얻어 전문의의 진단을 받습니다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

로봇 머리에 장착된 카메라로 촬영한 이미지 데이터는 자체 WIFI 핫스팟을 통해 실시간으로 호스트 컴퓨터 휴대폰으로 전송될 수 있습니다. 또한 모델을 배포하는 모바일 APP이 있으며 신뢰 수준을 비교하여 최적의 결과를 얻을 수 있으며 오른쪽은 실제 훈련 과정에서 생성된 정확도와 손실 값을 확인할 수 있습니다. 최고 87.2%에 도달했고, 손실률은 매우 낮음으로 떨어졌습니다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

SMA 코일로 구동되는 자벌레 위장 진단 로봇

3. HarmonyOS 기반 인간-컴퓨터 상호작용 인터페이스

HarmonyOS 시스템은 만물인터넷을 위한 전체 시나리오 분산 운영 체제입니다. 우리는 설계된 인간-컴퓨터에 병변 식별 시스템 식별 프로세스를 적용했습니다. HarmonyOS 기반 상호 작용 페이지에서는 실시간 장관 영상을 캡처하고 영상 분할 기술을 사용해 장 폴립 영상을 분할한 후 딥러닝 모델 예측 프로그램을 배포하는 서버로 데이터를 전송합니다. 전처리, 이미지 분할을 수행하고 데이터를 딥러닝 모델과 결합하여 전문 의사의 진단을 위한 예측 결과를 얻습니다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

SMA 코일로 구동되는 자벌레 위장 진단 로봇

4. 사물 인터넷 시스템 구현

(이 장에서는 주로 인식 계층 기술, 전송 계층 기술, 제어 계층 기술, 소프트웨어 개발 기술을 포함한 기능을 구현하는 데 사용되는 사물 인터넷 기술 아키텍처에 대해 설명합니다. 클라우드 애플리케이션, 데이터 마이닝 및 시각화 애플리케이션 등)

(1) 인식 계층

인식 계층에서는 모터 구동 회로를 MCU의 I/O 포트에 연결하여 모터 시작 및 중지 제어를 실현할 수 있습니다. 카메라 구동 회로를 I/O 포트에 연결된 MCU에 연결하여 카메라 시작 및 중지 제어를 실현할 수 있습니다. 모터의 작동 전류는 모터의 동작 상태를 반영합니다. 전류 감지 모듈은 모터 전류를 실시간으로 감지하도록 설계되었습니다. 감지 데이터는 MCU의 AD 포트에서 읽어 모터의 작동 상태를 결정합니다. 모터 구동 메커니즘을 효과적으로 제어할 수 있습니다. 로봇의 작동 상태를 실시간으로 모니터링하려면 감지 데이터를 호스트 컴퓨터의 인간-기계 인터페이스 디스플레이로 전송해야 합니다.

(2) 전송 계층

의사는 호스트 컴퓨터의 인간-기계 인터페이스를 통해 제어 명령을 보냅니다. 호스트 컴퓨터에서 제어 명령이 생성된 후 RS232 직렬 버스를 통해 명령/데이터 트랜시버로 전송됩니다. . 명령/데이터 트랜시버의 MCU는 RX/TX 직렬 포트 통신 인터페이스를 통해 직렬 포트 회로에 연결되어 호스트 컴퓨터에서 보낸 명령 코드를 수신합니다. 명령/데이터 트랜시버의 MCU도 통신 회로에 연결됩니다. SPI 통신 인터페이스를 통해 무선 전송을 위해 통신 회로에 명령 코드를 보냅니다.

통신 제어보드에 통합된 통신 회로는 명령 코드를 무선으로 수신하고 SPI 통신 인터페이스를 통해 통신 제어보드의 MCU에 명령 코드를 보냅니다. 명령 내용에 카메라 시작 명령이 포함되어 있으면 카메라의 MCU는 구성이 올바른 후 SCCB 제어 버스를 통해 이미지 획득 모듈의 이미지 센서의 작동 상태 및 이미지 매개변수를 구성하기 시작하고 이미지 획득 모듈이 작동하기 시작합니다. 아날로그 영상 신호를 독립적으로 직접 출력합니다. 송신 회로는 무선 전송을 수행합니다. 체외 이미지 수신기는 이미지 신호를 수신한 후 비디오 라인을 통해 이미지를 호스트 컴퓨터의 이미지 수집 카드로 전송합니다. 이미지 수집 카드는 이미지 형식을 변환하고 압축한 다음 이를 호스트 컴퓨터에 저장하고 표시합니다. 인간-기계 인터페이스에서.

(3) 제어 계층

통신 제어 보드는 전압 안정화 회로, MCU 메인 제어 회로, 통신 회로, 구동(모터 구동 + 카메라 구동) 회로, 전류 감지 회로의 5개 모듈로 구성됩니다.

MCU 메인 제어 회로는 USART 직렬 통신 인터페이스와 SPI 직렬 주변 장치 인터페이스가 있는 PIC16F690(마이크로칩)을 사용합니다. 통신 회로는 Si4455(Silicon Labs) 칩과 다수의 주변 유도성 및 용량성 구성 요소, 30MHz 수동 수정 발진기를 기반으로 구현됩니다. 통신 제어 보드에 위치한 통신 회로는 명령/데이터 송수신기에서 전송된 명령 코드를 수신해야 하며, 감지된 로봇 작동 데이터도 명령/데이터 송수신기로 전송해야 합니다. 구동 회로는 H-브리지 AT5550 두 부분을 사용하여 모션 메커니즘 모터와 카메라를 구동하고 카메라를 시작 및 중지하며 전력 소비 절감 목표를 달성합니다. 전류 감지 회로는 칩 MAX4173(Maxim)을 기반으로 구현되었으며 모터 전류를 실시간으로 감지하여 모터의 작동 상태를 파악하고 효과적인 제어를 수행하는 데 사용됩니다.

(4) 소프트웨어 및 개발 환경

호스트 컴퓨터의 인간-컴퓨터 상호 작용 인터페이스는 PyQt5로 작성되었습니다. 감지 계층, 전송 계층 및 제어 계층 프로그램은 Arduino 프레임워크를 사용하여 작성됩니다.

우리는 Arduino MEGA를 사용하여 제어 법칙(PID 컨트롤러 등)을 구현하여 PWM 파동의 듀티 사이클을 조정함으로써 회로의 구동 전류를 조정하여 SMA의 "가열-냉각-가열" 프로세스를 제어하고 SMA 코일의 "이완" 달성 - "수축-이완"의 동적 왕복 운동. 그런 다음 마이크로 SMA 액추에이터가 움직이도록 제어되어 로봇을 구동하여 리드미컬한 움직임을 달성합니다.

(5) 클라우드 애플리케이션

우리는 호스트 컴퓨터에서 PyQt5 기반 인터페이스를 개발했는데, 이는 카메라에서 수집한 장 이미지와 모터 전류 작동 값을 동시에 실시간으로 표시하는 데 사용됩니다. , 제어 버튼을 클릭하여 로봇 동작을 효과적으로 제어할 수도 있습니다.

또한 의사가 장내 로봇을 제어하고 휴대폰으로 장 영상을 볼 수 있는 HarmonyOS 기반의 인간-컴퓨터 상호 작용 인터페이스 개발을 준비 중입니다.

훈련 세트 코드는 다음과 같습니다.

<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">optim</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">as</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">optim</span>`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nn</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">as</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nn</span>`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nn</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">parallel</span>`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">utils</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">utils</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">distributed</span>`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torchvision</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">as</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span>`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">from</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">dataset</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">dataset</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">SeedlingData</span>`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">from</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">autograd</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Variable</span>`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">pretrainedmodels</span>`<br>`<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"># 设置全局参数`</span><br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">modellr</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">1e-4</span>`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">BATCH_SIZE</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">16</span>`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">EPOCHS</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">20</span>`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">DEVICE</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">device</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'cuda'</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">if</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cuda</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">is_available</span>() <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">else</span> <span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'cpu'</span>)`<br>`<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"># 数据预处理`</span><br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transform</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Compose</span>([`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Resize</span>((<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">224</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">224</span>)),`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">ToTensor</span>(),`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Normalize</span>([<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>], [<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>])`<br>`])`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transform_test</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Compose</span>([`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Resize</span>((<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">224</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">224</span>)),`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">ToTensor</span>(),`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Normalize</span>([<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>], [<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>])`<br>`])`<br>`<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"># 读取数据`</span><br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">dataset_train</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">SeedlingData</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'data/train'</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transform</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">True</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">dataset_test</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">SeedlingData</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"data/train"</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transforms</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">transform_test</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">False</span>)`<br>`<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"># 导入数据`</span><br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train_loader</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">utils</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">DataLoader</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">dataset_train</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">batch_size</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">BATCH_SIZE</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">shuffle</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">True</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">test_loader</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">utils</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">DataLoader</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">dataset_test</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">batch_size</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">BATCH_SIZE</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">shuffle</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">False</span>)`<br>`<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"># 实例化模型并且移动到GPU`</span><br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">criterion</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nn</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">CrossEntropyLoss</span>()`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model_ft</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">pretrainedmodels</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">__dict__</span>[<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'se_resnet50'</span>](<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">num_classes</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">1000</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">pretrained</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'imagenet'</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model_ft</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">fc</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">classifier</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nn</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Sequential</span>(`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nn</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Linear</span>(<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">2048</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">512</span>),`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nn</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">LeakyReLU</span>(<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">True</span>),`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nn</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Dropout</span>(<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.5</span>),`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nn</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Linear</span>(<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">512</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">12</span>),`<br>`)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model_ft</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">to</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">DEVICE</span>)`<br>`<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"># 选择简单暴力的Adam优化器,学习率调低`</span><br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">optimizer</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">optim</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">AdamW</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model_ft</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">parameters</span>(), <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">lr</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">modellr</span>)`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">def</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">adjust_learning_rate</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">optimizer</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">epoch</span>):`<br>`<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"""Sets the learning rate to the initial LR decayed by 10 every 30 epochs"""</span>`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">modellrnew</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">modellr</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">*</span> (<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0.1</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">*</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">*</span> (<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">epoch</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">/</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">/</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">50</span>))`<br>`<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"lr:"</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">modellrnew</span>)`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">for</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param_group</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">in</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">optimizer</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param_groups</span>:`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param_group</span>[<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'lr'</span>] <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">modellrnew</span>`<br>`<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"># 定义训练过程`</span><br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">def</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">device</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train_loader</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">optimizer</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">epoch</span>):`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train</span>()`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sum_loss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0</span>`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">total_num</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">len</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train_loader</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">dataset</span>)`<br>`<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">total_num</span>, <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">len</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train_loader</span>))`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">for</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">batch_idx</span>, (<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">target</span>) <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">in</span> <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">enumerate</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train_loader</span>):`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">target</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Variable</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>).<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">to</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">device</span>), <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Variable</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">target</span>).<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">to</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">device</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">output</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">loss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">criterion</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">output</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">target</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">optimizer</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">zero_grad</span>()`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">loss</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">backward</span>()`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">optimizer</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">step</span>()`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print_loss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">loss</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">item</span>()`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sum_loss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">+=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print_loss</span>`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">if</span> (<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">batch_idx</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">+</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">1</span>) <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">%</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">10</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">==</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0</span>:`<br>`<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">format</span>(`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">epoch</span>, (<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">batch_idx</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">+</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">1</span>) <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">*</span> <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">len</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>), <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">len</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train_loader</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">dataset</span>),`<br>`<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">100</span>. <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">*</span> (<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">batch_idx</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">+</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">1</span>) <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">/</span> <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">len</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train_loader</span>), <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">loss</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">item</span>()))`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">ave_loss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sum_loss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">/</span> <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">len</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train_loader</span>)`<br>`<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'epoch:{},loss:{}'</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">format</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">epoch</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">ave_loss</span>))`<br>`<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"># 验证过程`</span><br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">def</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">val</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">device</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">test_loader</span>):`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">eval</span>()`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">test_loss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0</span>`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">correct</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0</span>`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">total_num</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">len</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">test_loader</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">dataset</span>)`<br>`<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">total_num</span>, <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">len</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">test_loader</span>))`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">with</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">no_grad</span>():`<br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">for</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">target</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">in</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">test_loader</span>:`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">target</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Variable</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>).<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">to</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">device</span>), <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Variable</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">target</span>).<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">to</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">device</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">output</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">loss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">criterion</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">output</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">target</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">_</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">pred</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">max</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">output</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">1</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">correct</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">+=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sum</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">pred</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">==</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">target</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print_loss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">loss</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">item</span>()`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">test_loss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">+=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print_loss</span>`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">correct</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">correct</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">item</span>()`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">acc</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">correct</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">/</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">total_num</span>`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">avgloss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">test_loss</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">/</span> <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">len</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">test_loader</span>)`<br>`<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'\nVal set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">format</span>(`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">avgloss</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">correct</span>, <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">len</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">test_loader</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">dataset</span>), <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">100</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">*</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">acc</span>))`<br>`<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"># 训练`</span><br>`<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">for</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">epoch</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">in</span> <span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">range</span>(<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">1</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">EPOCHS</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">+</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">1</span>):`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">adjust_learning_rate</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">optimizer</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">epoch</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model_ft</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">DEVICE</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">train_loader</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">optimizer</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">epoch</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">val</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model_ft</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">DEVICE</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">test_loader</span>)`<br>`<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">torch</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">save</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model_ft</span>, <span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'model.pth'</span>)
로그인 후 복사

5. 프로젝트 혁신 포인트

1. 업무 혁신

이 프로젝트는 위장관 계층 검사 시스템, 병변 식별 및 위치 파악을 기반으로 한 진단 시스템, 조기 검사 및 진단을 수행하는 자벌레 모양의 마이크로 로봇의 세 가지 모듈을 통합합니다. 위장 질환 환자의 암이나 종양을 치료하고 위장 질환에 대한 재활 프로그램을 제공합니다.

소형화된 SMA 코일 드라이버

이 프로젝트는 SMA(형상기억합금) 소재를 소형화된 드라이버의 구동 코어로 사용합니다. 드라이버는 주로 SMA 코일, 폴리염화비닐 보드(PVC 보드) 및 실리콘(PDMS) 래핑 레이어의 고정형 구성의 세 부분으로 구성됩니다.

SMA 드라이버의 유연한 굽힘을 제어하는 ​​과정 중입니다. 우리 팀은 116개의 구동 전압 실험을 수행하여 다음을 입증했습니다. 구동 전압이 3.2~3.4V일 때 SMA 와이어의 수명 손실이 가장 낮을 때 응답 속도가 가장 빠르고 변형 효과가 가장 분명합니다.

Bionic 인치웜 보행 시뮬레이션 설계

로봇의 전체 설계는 인치웜의 이중 앵커 크롤링 동작을 시뮬레이션하며, 이는 로봇 양쪽 끝의 고정 휠 트레인에 의해 고정되고 SMA에 의해 구동 및 수축됩니다. 코일. 자벌레의 기어가는 동작을 시뮬레이션함으로써 앞으로 기어갈 때 몸통의 움직임에 대한 역학 시뮬레이션 소프트웨어 Recurdyn에서 보행 분석이 확립되었습니다.

병변 식별 및 위치 파악 기술을 기반으로 한 위장관 진단 및 검사 시스템

본 팀은 영상 분할 기술을 사용하여 장 폴립의 영상을 분할하고, 해당 데이터를 딥러닝 모델 예측 프로그램을 배포하는 서버로 전송하고, 데이터를 전처리합니다. 서버에서 데이터를 처리한 후 이미지 분할을 거쳐 딥러닝 모델과 상호작용하여 예측 결과를 얻어 전문의의 진단을 받습니다. 픽셀 수준 분류 정확도는 87.25%에 달합니다. 동시에 의사가 환자의 증상을 실시간으로 모니터링하고 비정상적인 위장 부위를 볼 수 있는 인간-컴퓨터 상호 작용 페이지가 만들어졌습니다.

2. 혁신 포인트

(1) 소형화된 SMA 코일 드라이버

이 프로젝트는 로봇의 크기를 최소화하기 위해 처음부터 소형화, 비침습적, 제어 가능한 검사 장비의 연구 개발에 전념해 왔습니다. , 소형화된 액츄에이터의 구동핵심 역할을 하는 SMA(형상기억합금) 소재를 채용하였습니다.

SMA(Shape Memory Alloy)는 감지와 구동을 통합한 스마트 소재로 다양한 온도와 응력에 따라 다양한 모양과 크기를 가지며, 직경이 작고, 에너지 밀도가 높으며, 출력력이 크고, 전달이 필요 없으며 직접적입니다. 간단하고 컴팩트한 구동 및 구조의 장점을 가지고 있습니다.

거시적으로 SMA에는 형상 기억 효과와 초탄성이라는 두 가지 특성이 있습니다. 형상 기억 효과는 SMA를 고온으로 설정한 후 저온으로 냉각하여 Loading 및 Unloading 후 잔류 변형이 있음을 의미합니다. 이때 가열하면 SMA의 잔류 변형이 사라지고 원래 상태로 돌아갈 수 있습니다. 고온에서의 모양. 초탄성 효과는 SMA를 오스테나이트 상태로 로딩함으로써 SMA가 탄성 변형 후 비탄성 변형을 겪은 후 언로드되고 SMA가 로딩 전의 형상으로 자발적으로 돌아올 수 있음을 의미합니다. 본 제품의 구동 원리는 제어 법칙(PID 제어기 등)이 PWM 파동의 듀티 사이클을 조정하여 회로의 구동 전류를 조정하여 SMA의 "가열-냉각-가열" 과정을 제어하는 ​​것이며, SMA 코일의 "이완-이완" "수축-이완"의 동적 왕복 운동을 실현합니다.

우리가 설계한 소형 SMA 코일 드라이버는 주로 모양으로 구성된 SMA 코일, 폴리염화비닐 보드(PVC 보드) 및 실리콘(PDMS) 래핑 층의 세 부분으로 구성됩니다. PVC 보드는 어느 정도 탄성을 갖고 있어 SMA의 냉각 과정에서 드라이버가 원래 상태로 돌아갈 수 있습니다. PDMS는 SMA 코일과 PVC 보드를 감싸 구조물 역할을 한다. PDMS는 부드러울 뿐만 아니라 방수 기능도 갖추고 있기 때문에 이 드라이버로 만든 소프트 로봇은 위장의 액체 환경에서 안전하게 작업을 수행할 수 있다. 위내시경, B-초음파 등 위장관 검사 방법과 비교해 이 드라이브로 설계된 마이크로로봇은 환자에게 해를 끼치지 않으며 인체도 이를 거부하지 않는다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

(2) 생체공학 자벌레 보행 시뮬레이션 설계

자벌레의 단면 디스플레이를 연구한 결과, 자벌레의 몸은 체조직, 체강관 및 종근섬유로 구성되어 있음을 발견했습니다. 그중 자벌레는 원형 배열로 배열된 여러 개의 종방향 근육 섬유를 가지고 있습니다. 자벌레가 복잡한 다중 각도 방향을 탐색할 때 여러 종방향 근육 섬유가 서로 다른 견인력을 제공합니다. 따라서 로봇의 전체 설계를 위해 SMA 필라멘트를 사용하여 견인력을 제공하는 세로 근육 섬유 역할을 합니다.

자벌레의 크롤링 동작을 분석한 결과, 앞으로 기어갈 때 몸통의 움직임을 시뮬레이션 분석 소프트웨어에서 설정하여 앞으로 기어갈 때 자벌레가 몸을 "자형" 모양으로 수축시키는 경우가 많은 것으로 나타났습니다. 'Ω' 형태는 몸 양쪽 끝의 다리가 지면에 단단히 붙어 있으며, 허리와 복부를 수축, 신장시켜 앞으로 움직이거나 자세를 바꾼다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

자벌레가 앞으로 나아갈 수 있는 원리는 다리와 지면 사이의 마찰의 이방성입니다. 장과 위의 내부 물리적 환경을 고려하여 장을 원통형 튜브로 단순화할 수 있으며, 인치웜의 이중 앵커 크롤링 동작은 로봇 양쪽 끝의 고정 기어 트레인과 구동용 SMA 코일로 구현될 수 있습니다. 축소. 제어 측면에서는 Arduino MEGA 2560 제어 보드를 사용하여 DC 효과 필드 MOS 튜브를 연결하여 전류 크기를 제어함으로써 PWM 파동을 제어합니다. SMA 와이어의 높은 저항으로 인해 특정 전류를 적용하면 위상 변화가 발생하여 SMA 와이어가 줄어들 수 있습니다. PWM의 듀티 사이클을 제어하여 SMA의 수축과 이완을 제어하고 앵커 유닛을 고정함으로써 자벌레의 움직임을 시뮬레이션하여 구동할 수 있습니다. 로봇 양단에 세균집집캐빈과 마이크로 탐조등, 카메라를 추가하여 제품의 다기능성을 더욱 높였습니다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

보행 분석 측면에서는 recurdyn 다물체 동역학 소프트웨어를 사용하여 운전자 운동학 및 동역학을 분석하고 마이크로 로봇의 이동 속도 및 보행을 시뮬레이션하고 이를 물리적 실험과 결합합니다.

SMA 코일로 구동되는 자벌레 위장 진단 로봇

(3) 병변 식별 및 위치 파악 기술을 기반으로 한 위장관 진단 및 검사 시스템

의료 영상에서 특별한 의미가 있는 부분을 별도로 분할합니다. 의료 분야에서 의사는 주로 의료 영상 이미지와 주관적 판단에 의존하여 질병을 진단합니다. 의료 영상 분할은 의료 3차원 재구성 및 정량적 분석의 핵심 단계이기도 하며 병변 영역의 정량화, 선택을 위한 중요한 기술적 전제 조건이기도 합니다. 치료 방법 및 방사선 치료의 세분화 결과의 정확성은 후속 치료 효과에 직접적인 영향을 미칩니다. 우리 팀은 이미지 분할 기술을 사용하여 장 폴립의 이미지를 분할하고, 딥러닝 모델 예측 프로그램을 배포하는 서버로 데이터를 전송하고, 서버에서 데이터를 전처리한 후 이미지 분할을 수행하고, 데이터를 딥러닝 모델과 비교합니다. 전문 의사의 진단을 위한 예측 결과를 상호작용하고 얻을 수 있습니다.

우리는 Long 등이 제안한 완전 컨볼루션 네트워크 프레임워크를 사용하여 이미지 분할 분야를 훈련하고, 기존 CNN 모델의 완전 연결 계층을 컨볼루션 계층으로 대체합니다. 층. 인코딩 부분은 고차원 특징을 추출하는 과정으로, 디코딩 부분은 업샘플링을 위해 디콘볼루션(deconvolution)을 사용하여 분할 결과 이미지의 크기가 입력 이미지의 크기와 동일해지며, 픽셀 수준의 정확도로 분류됩니다. 최대 87.25%.

​오픈 소스에 대해 자세히 알아보려면 다음을 방문하세요.​

​51CTO 오픈 소스 기본 소프트웨어 커뮤니티​

​https://ost.51cto.com​​ .

위 내용은 SMA 코일로 구동되는 자벌레 위장 진단 로봇의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿