ホームページ  >  記事  >  テクノロジー周辺機器  >  SMAコイル駆動シャクトリムシ消化管診断ロボット

SMAコイル駆動シャクトリムシ消化管診断ロボット

WBOY
WBOY転載
2023-04-11 17:31:031189ブラウズ

SMAコイル駆動シャクトリムシ消化管診断ロボット

オープンソースの詳細については、

51CTO オープンソース基本ソフトウェア コミュニティ をご覧ください。

https://ost.51cto.com

プロジェクト概要

我が国では、消化管病気の発生率は高く、「10人に9人は胃の病気を患っている」とも言われています。他の種類のがんと比較して、我が国における胃がんと結腸直腸がんの正確な治療は遅れており、これは検出方法の正確さと切り離すことができません。さらに、一般的な診断方法にも関連するリスクがあります: CT は患者の身体に強い放射線障害をもたらします。B 超音波は胃疾患の診断精度が低いです。胃内視鏡検査は患者に一定の害を及ぼす可能性があり、粘膜損傷や出血などのリスクがあります。 、胃腸穿孔、声帯損傷など。私の国の現在の早期がん検診受診率は低く、内視鏡診断の普及率を高める余地は大いにあります。近年、科学技術の進歩の影響もあり、世界各地で低侵襲手術技術の推進と普及により、低侵襲医療機器の開発が進んでいます。生検および治療機能を実装します。しかし、挿入型内視鏡は医療手術において患者に苦痛を与えるだけでなく、多くの合併症を引き起こしたり、レンズの視野に検出の死角が生じたりするなどの欠点もあります。したがって、マイクロバイオニックロボットは、腸疾患の低侵襲診断と検査のための効率的かつ便利なオプションを提供し、内視鏡技術の分野における最新の研究のホットスポットとなっています。

私たちの解決策は、精子の螺旋運動法を利用してマイクロロボットを患者の肛門に注入し、ロボットのマイクロドライブを遠隔制御して腸内を移動させ、定点診断を達成することです。動作中は、SMA コイルを駆動ユニットとして使用してマイクロロボットの前後移動を制御し、シャクトリムシの筋肉の運動メカニズムを模倣することで連続的な歩行を実現します。制御面では、電流と温度を総合的に監視し、適切なフィードバック信号によるサーボ制御により、SMAコイルの温度をタイムリーに調整し、電流断続時間に応じて抵抗値を変化させ、入力電流を調整します。発生したことが記録されます。無線エネルギー伝送システムには、人体の腹部にある交流磁場を励起できる送信機と、マイクロロボット内に組み込まれた受信機が含まれており、交流磁場を誘導してロボットにDC動作電圧を供給します。小型検出ライトは腸の状態を照らすために両端に設計されており、同時にワイヤレス制御の小型カメラが装備されており、腸のリアルタイム画像をキャプチャします画像分割技術を使用して腸ポリープの画像を分割します、データは深層学習モデルを使用した予測のために展開プラットフォームに送信され、プログラムのサーバーはデータの前処理後に画像セグメンテーションを実行し、データと深層学習モデルを操作して、専門の医師による診断のための予測結果を取得します。

キーワード: ディープラーニング、腸検出、SMA コイル、病変識別

1. プロジェクトの背景

1. 背景の概要

消化管疾患とは、以下の疾患を指します。一般的な炎症性消化器疾患(急性・慢性胃炎、急性・慢性虫垂炎など)、消化性潰瘍、胃がん、食道がん、大腸がん、過敏性腸症候群など。

胃腸疾患の発生率は年々増加しており、WHOの統計によると胃腸疾患の発生率は80%にも上ります。 『チャイニーズ・メディカル・ジャーナル』(中国医学ジャーナルの英語版)は、2022年に中国で診断される主ながんの種類は肺がん、結腸直腸がん、胃がん、肝臓がん、乳がんの5種類となり、結腸直腸がんが2位になると指摘した。 、新規感染者数は59万人でした。報告書はまた、結腸直腸がんが中国のがんによる死亡原因の第5位にランクされていることも指摘した。

私の国には消化器疾患の人口基盤が多く、胃がんと結腸直腸がんの市場も大きく、中国の消化器疾患市場は今後も成長し続けるでしょう。他の種類のがんに比べて、我が国における胃がんと結腸直腸がんの正確な治療は遅れており、これは検出方法の正確さと切り離すことができません。

大腸がんの病期分類は、患者の病変の大きさ、浸潤の程度、リンパ節転移や遠隔臓器転移の有無によって決まりますが、一般に2cm以内の病変は早期、2cm以内の病変は早期とみなされます。 2cmから5cmまでが初期、中期、5cm以上になると後期となります。大腸がんは術後に再発・転移する可能性があるため、一般的に術後は4~6サイクルの化学療法が必要であり、患者の術後の病態や免疫組織化学的検査に基づいて化学療法計画を立てる必要があります。

胃がんの臨床病期分類では、通常、国際的な TNM 病期分類基準が使用されます。この基準によれば、胃がんは通常、ステージ I、ステージ II、ステージ III、ステージ IV の 4 つのステージに分類され、各ステージは胃の大きさと浸潤に基づいて、A と B の 2 つのサブステージに分類されます。病変。腫瘍が固有層または粘膜下層に浸潤している場合、リンパ節転移や遠隔臓器転移はありません。フェーズAに属します。 1~6個の所属リンパ節転移を伴う場合はIB期に属し、腫瘍が粘膜固有層や漿膜下に浸潤している場合もIB期に属し、漿膜には浸潤しない隣接臓器の場合はステージ III の腫瘍、遠隔臓器への転移を伴う場合はステージ IV の胃がんとなります。

ほとんどの患者は、胃腸の不快感や関連症状に十分な注意を払っていません。薬を服用すれば症状が緩和されると考えています。症状が再発するか合併症が発生するまで、胃腸検査を受ける前に胃腸検査を延期することがよくあります。腸がんや胃がんの患者さんの多くは、発見された時点ですでに中期・後期に入っています。消化器検査にはCT、B超音波検査、大腸内視鏡検査、胃内視鏡検査が一般的ですが、CTは放射線の危険性が強い、B超音波は胃疾患の診断精度が低い、胃カメラは検査精度が悪い、などのリスクがあります。胃腸内視鏡検査には一定の害があり、粘膜損傷や出血、消化管穿孔、声帯損傷などのリスクがあります。したがって、リスクのない高精度の検出装置は、消化器疾患を検出するための最良のソリューションです。

2. 市場の需要

世界保健機関の 2020 年の統計によると、世界には 5 億人の胃疾患患者がおり、そのうち 1 億 2,000 万人が中国にいます。人口に占める胃疾患の割合は80%にも達し、年率17.43%で増加しており、中国の胃疾患患者数は2022年には1億6,000万人に達すると予想されています。現在、我が国における胃がんの発生率は悪性腫瘍全体の中で第2位、死亡率は第3位となっています。 2022年の胃がん新規罹患数は48万人、胃がんによる新規死亡者数は37万人に達すると予測されており、近年、胃疾患は低年齢化傾向にあり、 19~35歳の胃疾患患者の数は30年前と比べて2倍になっています。

腸がんの発生率は胃がんと食道がんに次いで2番目です。結腸直腸がんの発生率は過去 30 年間で大幅に増加し、悪性腫瘍による死亡原因の第 4 位となっており、中・低位の直腸がんの割合は 50% 以上にもなっています。現在、わが国における結腸・直腸の腫瘍や外傷、潰瘍性大腸炎、クローン病などによる腸瘻造設患者の総数は100万人を超え、現在も年間10万人のペースで増え続けています。 。

我が国は、高齢化の加速、患者の若年化、慢性疾患の有病率の年々増加という国情のもと、リハビリテーション医療を必要とする膨大な数の人々、巨大な市場、そして無限の未来を抱えています。リハビリ市場の可能性。 2014年から2020年にかけて、我が国のOTC胃腸薬市場規模は年々増加傾向を示しています。その中で、我が国の胃腸薬市場規模は2019年に225億2,200万元に達し、前年比6.3%増加した。 2020年の我が国の胃腸薬市場規模は約239億9,000万元となり、前年比6.5%増加する見込みです。我が国の胃腸薬市場規模は2022年に272億1,000万元に達すると推定されています。政策支援の面では、2016年3月に国家保健・家族計画委員会が5部門と連名で「一部の新たな医療リハビリテーション事業を基本医療保障の支給範囲に組み込むことに関する通知」を発表した。従来から支給対象となっていた医療リハビリテーション事業に加え、「リハビリテーション総合評価」など新たに20項目のリハビリテーション項目が医療保険の支給対象となる。これはリハビリテーションロボットに関連する唯一の政策であり、将来的には医療保険が包括的なリハビリテーション評価を行ってリハビリテーションロボットの使用をサポートする可能性があります。

3. 医療ニーズ

毎年、世界中で 1,000 万人以上の患者が胃腸疾患で死亡しており、中国人口の最大 1/5 が胃腸疾患に苦しんでおり、世界第 1 位となっています。同調査によると、都市住民の高い生活プレッシャー、仕事のストレス、頻繁な残業、長時間の座りっぱなし、過度の社交、非科学的な食生活、不規則な労働と休息などの要因により、都市部の三大疾病のトップに位置することがわかった。胃腸や消化器系の病気、脂肪肝、B型肝炎などの肝臓疾患、頸椎、腰椎、骨過形成などが挙げられます。胃腸および消化器系の病気は、北京、上海、広州、深センで最も一般的な病気となっています。

現在我が国の早期がん検診受診率は低く、内視鏡診断の普及率には改善の余地が大きくあります。このプロジェクトは主に患者の内視鏡検査の苦痛と粘膜損傷、出血の問題を解決するものです。 、胃腸穿孔、挿入内視鏡検査による麻酔など、結腸緊張やその他のリスクは薬剤で簡単に軽減できます。

内視鏡挿入手術では、腸管の曲がりを通過させたり、疑わしい病変を全方位観察するために、押す、引く、ひねるなどの操作が必要となり、患者様に苦痛を与えるだけでなく、しかし、腸の擦り傷や穿孔、心肺事故など、多くの合併症も引き起こします。従来の内視鏡検査は患者さんに痛みや合併症を引き起こす可能性がありましたが、当社では検査プロセスを改善するマイクロロボットを開発し、非侵襲で痛みのない検査を実現しました。

SMAコイル駆動シャクトリムシ消化管診断ロボット

2. チーム紹介

1. チーム概要

FHC リハビリテーション チームは、鄭州軽工業大学機械電気工学部の Mecol Studio と鄭州サリーに所属しています。株式会社テクノロジーFHC リハビリテーション チームは、生活を促進し、社会問題を解決し、社会に利益をもたらすために、新しい科学技術の成果を実用化するよう努めています。私たちは、より多くの消化器疾患の患者様がより正確な原因診断を受けられるよう、信頼性の高い実用的な製品を発売し、申請プロセスにおいて継続的に改良を続けていきます。私たちは、技術と経験、そして高品質なサービスを駆使して、お客様にご満足いただける製品を提供し、常にお客様のニーズに応え、製品の品質を向上させ続け、優れた事業価値と社会価値を創造します。

FHC リハビリテーション チームは、鄭州軽工業大学機械電気工学部のメケル スタジオを拠点として設立されました。チーム全体は、プロジェクト マネージャー 1 名と副プロジェクト マネージャー 2 名からなるコア グループによって直接管理されており、人事、マーケティング、財務、技術、品質管理、設備などの部門の責任者がいます。コアチームと協力してチーム全体を管理します。チームの規模が大きくなり、顧客の数が増えるにつれて、徐々にエンタープライズ型の組織構造が形成されます。起業家精神チームのメンバーはそれぞれの職務を遂行し、プロジェクトのあらゆる側面に参加します。同時に、チームの運営を指導するために、関連分野(マーケティング、広告などを含む)の経験を持つ教師やビジネスコンサルタントもいます。

2. チームの中心メンバーの紹介

(1) メンターおよび医師顧問チーム

講師:

Chen Lumin, PhD in Engineering清華大学出身。彼は成都科学技術大学で機械工学の学士号を取得し、南京航空航天学院で数理力学の修士号を取得し、2004 年に清華大学を卒業し、現在は鄭州軽工業大学で教授および研究員として働いています。機械電気工学研究所の所長。近年、彼が取り組んだ主なプロジェクトは次のとおりです: 高齢者および障害者のための健康医学研究 - 国家重点研究開発プロジェクト - 医療サービスおよび高齢者および障害者のための遠隔健康検出のための重要な標準研究サブトピック縦断工作機械の適応回転ガイドブッシュ機構の結合力 科学と安定性の研究、河南省科学技術開発協力プロジェクト、高解像度投影リソグラフィーマシンサブシステム静的動力学解析およびパラメータシミュレーションプラットフォーム、国家「863」プロジェクトサブシステムプロジェクト、第二担当者など

Li Yihao 博士、准教授は、河南省の主要分野である機械工学の学術的バックボーンであり、全国に 10,000 人いる優れたイノベーションと起業家精神の指導者の 1 人です。 2001 年に重慶大学を卒業、機械設計とオートメーションを専攻し、工学の学士号を取得、2004 年に重慶大学を卒業し、機械設計とオートメーションを専攻し、工学の修士号を取得、華中科技大学を卒業2013年に機械・電子工学を専攻し、工学学士号を取得し、博士号を取得しました。

医師コンサルタント:

Guo Lei は、河南省労働者病院のリハビリテーション部門で主治医として働いています。プロジェクトの臨床試験の指導と効果判定、リハビリテーション評価システムの問題点実証とリハビリテーション報告指標の指導を行う。

現在、河南省労働者病院リハビリテーション科に主治医として勤務し、長くリハビリテーションの第一線で従事してきました。長年にわたる臨床リハビリテーションの経験を持つ。

ガイドユニット:

鄭州サリテクノロジー有限公司

社会の現実の企業と連携することで、私たち大学生が象牙の塔から起業して社会の舞台に上がり、自分たちのアイデアや技術製品を企業や社会と真に融合させ、一つの状況を形成することができます。産学研究の相互扶助がついに実用化され、人類に恩恵をもたらすのです。

(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. 腸の不快感は、下腹部痛、排便習慣や排便特性の変化(1 日に複数回の排便が 1 日に 1 回になるなど)、または便秘、軟便、血便、粘液状の血便として現れることがあります。等

流行中は自宅で隔離するしかなく、医療資源も不足し、十分な人材も提供できません。患者、特に地方の患者は消化器の状態についてタイムリーにフィードバックを得ることができず、効果的なリハビリテーション治療を受けることが困難であるが、本プロジェクトでは、消化器検出・識別システムを活用することで、いつでもどこでもスクリーニングと診断を行うことができる。患者の回復を監視し、医学的アドバイスと回復の選択肢を提供します。本製品は自社設計の消化器検査用マイクロロボットを使用しており、従来の消化器内視鏡検査に比べ、痛みや合併症がなく、操作が簡単で精度が高いのが特徴です。このプロジェクトで研究された製品を使用すると、患者は自宅で診断検査を行うことができ、消化器疾患の早期発見と治療が促進されます。

4. 製品機能

1. SMAドライバー

SMAドライバーのしなやかなしなりをコントロール中。 SMA アクチュエータの定量的な変形を制御するという目的を達成するには、適切な制御フローを選択する必要があります。適切な制御電圧により、SMA ワイヤの曲げを正確に制御でき、SMA ドライバ構造の耐用年数を延ばすことができます。電圧が高いとドライバーの高速応答に有利ですが、形状記憶合金ワイヤーの温度が急激に上昇し、制御精度に影響を与え、ドライバーの構造的損傷を引き起こす可能性があります。私たちのチームは116回の駆動電圧実験を実施し、直径0.7mmと直径10cmのSMAワイヤーを学生用電源で加熱し、駆動電圧が3.2~3.4Vのときの応答速度が最も速くなることがわかりました。 SMA ワイヤの寿命損失が最も低い場合、変形効果が最も顕著になります。

SMAコイル駆動シャクトリムシ消化管診断ロボット

相変化温度の臨界点データを取得するために、赤外線温度計を使用して測定し、電圧が 3.2V に達したとき、SMA コイルの測定温度は以下に達しました。 76.6 ℃、この温度が相変化条件に達していることが確認できます。画像認識法により収縮率を測定 透明なアクリル板を用いてSMAコイルを白色背景面に水平に配置 高精細カメラを用いて高さ30cmで水平撮影 画像をグレースケール処理ピクセルの長さを測定し、誤差をミクロンレベルで制御できます。

SMAコイル駆動シャクトリムシ消化管診断ロボット

SMAコイル駆動シャクトリムシ消化管診断ロボット

# SMA コイルはロボットの前後運動を制御する駆動ユニットとして使用され、ロボットの動きを模倣して連続的な歩行を実現します。シャクトリムシの筋線維の配置と運動の仕組み。

SMAコイル駆動シャクトリムシ消化管診断ロボット

2. 深層学習に基づく病変識別システム

このシステムは、画像セグメンテーション技術を使用して腸ポリープの画像をセグメント化し、データを送信して展開します。深層学習モデル予測プログラムのサーバーを使用して、サーバー上でデータが前処理された後、画像が分割され、データが深層学習モデルと相互作用して、専門の医師による診断のために予測結果が得られます。

SMAコイル駆動シャクトリムシ消化管診断ロボット

#ロボットヘッドのカメラでキャプチャされた画像データは、独自の WIFI ホットスポットを介してホスト コンピュータの携帯電話にリアルタイムで送信できます。さらに、モデルをデプロイするモバイル APP があり、信頼レベルを比較することで最適な結果を得ることができます。右側は、実際のトレーニング プロセス中に生成された精度と損失値です。精度が向上していることがわかります。は 87.2% に達し、損失は非常に低くなりました。

SMAコイル駆動シャクトリムシ消化管診断ロボット

SMAコイル駆動シャクトリムシ消化管診断ロボット

3. HarmonyOS に基づくヒューマン コンピュータ インタラクション インターフェイス

HarmonyOS システムは、フルシナリオの分散オペレーティング システムです。 Internet of Everything: 病変認識システムの識別プロセスを HarmonyOS に基づいて設計された人間とコンピューターの対話ページに組み込み、腸のリアルタイム画像をキャプチャし、画像セグメンテーション技術を使用して腸ポリープの画像をセグメント化し、データを転送します。プログラムのサーバーは、データの前処理後に画像セグメンテーションを実行し、データとディープラーニング モデルを操作して、専門の医師による診断のための予測結果を取得します。

SMAコイル駆動シャクトリムシ消化管診断ロボット

SMAコイル駆動シャクトリムシ消化管診断ロボット

4. モノのインターネット システムの実装

(この章では主に、モノのインターネット テクノロジ アーキテクチャについて説明します。認識層技術、伝送層技術、制御層技術、ソフトウェア開発技術、クラウドアプリケーション、データマイニングおよび可視化アプリケーションなどを含む)

(1) 認識層

モーター駆動回路を MCU の I/O ポートに接続することでモーターの起動と停止の制御を実現でき、カメラ駆動回路を MCU の I/O ポートに接続することでカメラの起動と停止を実現できます。コントロールが実現できます。モーターの動作電流はモーターの動作状態を反映します 電流検出モジュールはモーター電流をリアルタイムで検出するように設計されています 検出データは MCU の AD ポートから読み込まれ、モーターの動作状態を判断しますモーター駆動機構の効果的な制御を実現します。ロボットの動作状況をリアルタイムに監視するには、検出データをホストコンピュータのマンマシンインターフェースディスプレイに送信する必要があります。

(2)伝送層

医師はホストコンピュータのマンマシンインターフェースを介して制御命令を送信し、ホストコンピュータで制御命令が生成された後、コマンドに送信されます。 RS232 シリアル バス経由の /data トランシーバー。コマンド/データ トランシーバーの MCU は、RX/TX シリアル ポート通信インターフェイスを介してシリアル ポート回路に接続され、ホスト コンピューターから送信された命令コードを受信します。コマンド/データ トランシーバーの MCU も通信回路に接続されます。 SPI 通信インターフェイスを介して命令コードを通信回路に送信し、無線送信します。

通信制御ボードに内蔵された通信回路は、命令コードを無線で受信し、SPI通信インターフェースを介して通信制御ボードのMCUに命令コードを送信します。指示内容にカメラ開始コマンドが含まれている場合、カメラの MCU は、SCCB 制御バスを介して画像取得モジュール内のイメージ センサーの動作ステータスと画像パラメータの設定を開始し、設定が正しくなった後、画像取得モジュールが動作を開始します。アナログ映像信号を独立して直接出力し、送信回路により無線伝送を行います。生体外画像受信機は画像信号を受信した後、ビデオラインを介してホストコンピュータの画像取得カードに画像を送信し、画像取得カードは画像フォーマットを変換および圧縮し、ホストコンピュータに保存して表示します。ヒューマンマシンインターフェース上で。

(3) 制御層

通信制御基板は、電圧安定化回路、MCU主制御回路、通信回路、ドライブ(モーター駆動・カメラ駆動)回路、電流検出の5つのモジュールで構成されています。回路を構成します。

MCU の主制御回路には、USART シリアル通信インターフェイスと SPI シリアル ペリフェラル インターフェイスを備えた PIC16F690 (Microchip) が使用されています。通信回路は、チップ Si4455 (Silicon Labs)、多数の周辺誘導性および容量性コンポーネント、および 30MHz パッシブ水晶発振器に基づいて実装されています。通信制御基板上の通信回路は、コマンド・データ送受信機から送信されるコマンドコードを受信するとともに、検出したロボット動作データをコマンド・データ送受信機に送信する必要があります。駆動回路は 2 つの H ブリッジ AT5550 を使用して、モーション機構モーターとカメラを駆動し、カメラを起動および停止し、消費電力を節約するという目標を達成します。電流検出回路はチップMAX4173 (Maxim)に基づいて実装されており、モータ電流をリアルタイムで検出してモータの動作状態を判断し、効果的な制御を実行するために使用されます。

(4) ソフトウェアと開発環境

ホスト コンピュータの人間とコンピュータの対話インターフェイスは PyQt5 で書かれています。センシング層、送信層、および制御層のプログラムは、Arduino フレームワークを使用して作成されます。

Arduino MEGA を使用して、PWM 波のデューティ サイクルを調整するための制御則 (PID コントローラーなど) を実装します。これにより、回路の駆動電流を調整して、回路の「加熱-冷却-加熱」プロセスを制御します。 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. 業務のイノベーション

このプロジェクトは、消化管の階層的検査システム、病変の特定と位置特定に基づく診断システム、マイクロロボットの 3 つのモジュールは、消化器疾患患者の癌や腫瘍の早期スクリーニングと診断を実施し、消化器疾患のリハビリテーション プログラムを提供するために使用されます。

小型SMAコイルドライバー

このプロジェクトでは、小型ドライバーの駆動コアとしてSMA(形状記憶合金)素材を使用しています。ドライバーは主に、SMA コイル、ポリ塩化ビニル ボード (PVC ボード)、およびシリコン (PDMS) ラッピング層のステレオタイプ構成の 3 つの部分で構成されます。

SMAドライバーのしなやかなしなりをコントロール中。私たちのチームは116回の駆動電圧実験を実施し、駆動電圧が3.2〜3.4Vのとき、応答速度が最も速く、SMAワイヤの寿命損失が最も低いときに変形効果が最も明らかであることを証明しました。

バイオニックシャクトリムシ歩行シミュレーション設計

ロボットの全体的な設計では、シャクトリムシの両端のアンカーホイールトレインによって固定されたダブルアンカーの這う動作がシミュレートされます。ロボットであり、SMA コイルによって駆動されます。シャクトリムシの匍匐運動をシミュレーションし、匍匐前進時の体幹の動きをダイナミクスシミュレーションソフトRecurdyn上で解析した。

病変識別および位置特定技術に基づく消化器診断および検査システム

このチームは、画像セグメンテーション技術を使用して腸ポリープの画像をセグメント化し、深層学習モデル予測プログラムを展開するサーバーにデータを送信します。 、サーバー上のデータを前処理してから画像セグメンテーションを実行し、データを深層学習モデルと対話させて、専門の医師による診断のための予測結果を取得します。ピクセルレベルの分類精度は 87.25% と高いです。同時に、人間とコンピューターの対話ページが作成され、医師が患者の症状をリアルタイムで監視し、異常な胃腸領域を確認できるようになりました。

2. イノベーションのポイント

(1) 小型化SMAコイルドライバー

本プロジェクトは、世界各国から小型化、非侵襲性、制御性の高い検査装置の開発に取り組んできました。ロボットのサイズを最小限に抑えるため、小型アクチュエーターの駆動コアにはSMA(形状記憶合金)素材を使用しています。

SMA (形状記憶合金) は、センシングと駆動を統合したスマート素材であり、温度や応力が異なると形状やサイズが変化し、直径が小さく、エネルギー密度が高く、出力が大きく、トランスミッション、ダイレクトドライブ、シンプルでコンパクトな構造などの利点があります。

SMA は巨視的に見ると、形状記憶効果と超弾性という 2 つの特徴を持っています。形状記憶効果とは、SMA を高温で成形した後、低温に冷却して荷重と除荷を行うと、除荷後に残留ひずみが生じますが、このとき加熱することで SMA の残留ひずみが消失し、元の状態に戻ることを意味します。高温時の形状。超弾性効果とは、オーステナイト状態の SMA に負荷をかけることにより、SMA が弾性変形後に非弾性変形を受け、その後除荷され、SMA が負荷前の形状に自発的に戻ることができることを意味します。この製品の駆動原理は、制御則 (PID コントローラーなど) が PWM 波のデューティ サイクルを調整し、それによって回路の駆動電流を調整して SMA の「加熱-冷却-加熱」プロセスを制御することです。 SMAコイルの「弛緩-弛緩」、「収縮期-拡張期」のダイナミックな往復運動を実現します。

私たちが設計した小型 SMA コイル ドライバーは、主に 3 つの部分で構成されています。SMA コイルの定型構成、ポリ塩化ビニル ボード (PVC ボード)、およびシリコン (PDMS) ラッピング層です。 PVC ボードにはある程度の弾性があり、SMA の冷却プロセス中にドライバーが元の状態に戻ることができます。 PDMSはSMAコイルとPVCボードを巻き付けて構造体として機能させ、柔らかいだけでなく防水性も備えているため、このドライバーから作られたソフトロボットは胃の液体環境でも安全に人と対話し、作業を行うことができます。胃内視鏡検査やB-超音波検査などの消化器検査方法と比較して、この駆動装置を使用して設計されたマイクロロボットは患者に害を及ぼすことはなく、人体がそれを拒絶することもありません。

SMAコイル駆動シャクトリムシ消化管診断ロボット

(2) バイオニックシャクトリムシ歩行シミュレーション設計

シャクトリムシの断面表示を研究することで、シャクトリムシの体が体組織、体腔管、縦筋線維で構成されていることがわかりました。このうち尺取虫は、複数の縦筋線維が円形に配列されています。シャクトリムシが複雑な複数の角度の方向を探索するとき、そのいくつかの縦方向の筋線維が異なる牽引力を提供します。したがって、ロボットの全体的な設計では、SMA フィラメントを縦方向の筋線維として機能させ、牽引力を提供します。

シャクトリムシの匍匐運動を解析することで、前方に匍匐するときの体幹の動きをシミュレーション解析ソフト上に構築し、匍匐歩行を解析したところ、尺取虫は前方に匍匐運動をするときによく移動することが分かりました。体をΩの形に縮め、体の両端の脚を地面にしっかりとくっつけ、腰や腹部の伸縮によって前進したり姿勢を変えたりする。

SMAコイル駆動シャクトリムシ消化管診断ロボット

シャクトリムシが前に進むことができる理由は、脚と地面の間の摩擦の異方性です。腸や胃の内部の物理環境を考慮して、腸を円筒状の管に単純化することができ、尺取虫のダブルアンカーの這う動きは、ロボットの両端にあるアンカーギア列と駆動用のSMAコイルによって具現化できます。収縮。制御に関しては、Arduino MEGA 2560 制御基板を使用し、DC 効果界 MOS 管を接続して電流の大きさを制御することで PWM 波を制御します。 SMA ワイヤの抵抗が高いため、特定の電流を印加すると相変化が起こり、SMA ワイヤが収縮する可能性があります。 PWMのデューティサイクルを制御してSMAの収縮と弛緩を制御し、アンカーユニットを固定することでシャクトリムシの動きを模擬して駆動することができます。ロボットの両端に細菌コロニー収集キャビン、マイクロサーチライト、カメラを追加することで、製品はより多機能になります。

SMAコイル駆動シャクトリムシ消化管診断ロボット

歩行分析の観点では、recurdyn マルチボディ ダイナミクス ソフトウェアを使用してドライバーの運動学とダイナミクスを分析し、マイクロ ロボットの移動速度と歩行をシミュレートします。物理実験と一致します。

SMAコイル駆動シャクトリムシ消化管診断ロボット

(3) 病変識別・位置特定技術を基盤とした消化器診断・検査システム

医用画像の中で特別な意味を持つ部分を切り出します。医療分野では、医師は主に医療フィルム画像と主観的な判断に頼って病気を診断します.医療画像のセグメンテーションは、医療の3次元再構成と定量分析の重要なステップです.また、病変領域の定量化、選択のための重要な技術的前提条件でもありますセグメンテーション結果の精度は、その後の治療効果に直接影響します。私たちのチームは、画像セグメンテーション技術を使用して腸ポリープの画像をセグメント化し、そのデータを深層学習モデル予測プログラムを展開するサーバーに送信し、サーバー上でデータを前処理してから画像セグメンテーションを実行し、データを深層学習モデルと比較します。インタラクションを行い、専門の医師による診断のための予測結果を取得します。

Long らによって提案された完全畳み込みネットワーク フレームワークを使用して画像セグメンテーションの分野をトレーニングし、古典的な CNN モデルの全結合層を畳み込み層に置き換えます。層とプーリング層。エンコード部は高次元の特徴を抽出する処理であり、デコード部はデコンボリューションを利用してアップサンプリングすることで、セグメンテーション結果の画像サイズが入力画像のサイズと同じになるように、100μm以下の精度でピクセルレベルの分類を実現します。最大87.25%。

オープンソースの詳細については、

51CTO オープンソース基本ソフトウェア コミュニティ # # をご覧ください。

# https://ost.51cto.com

以上がSMAコイル駆動シャクトリムシ消化管診断ロボットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。