Heim >Technologie-Peripheriegeräte >KI >Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

WBOY
WBOYnach vorne
2023-04-11 17:31:031215Durchsuche

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

​Um mehr über Open Source zu erfahren, besuchen Sie bitte:​

​51CTO Open Source Basic Software Community​

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

Projektzusammenfassung

In meinem Land ist die Häufigkeit von Magen-Darm-Erkrankungen hoch und es gibt ein Sprichwort, dass „neun von zehn Menschen Magenprobleme haben“. Im Vergleich zu anderen Krebsarten hinkt die präzise Behandlung von Magenkrebs und Darmkrebs in meinem Land hinterher, was untrennbar mit der Genauigkeit der Erkennungsmethoden verbunden ist. Darüber hinaus bergen gängige Diagnosemethoden auch Risiken: Die CT birgt eine große Strahlengefahr für den Körper des Patienten; B-Ultraschall weist bei der Diagnose von Magenerkrankungen eine geringe Genauigkeit auf, und es bestehen Risiken wie Schleimhautschäden und Blutungen , Magen-Darm-Perforation und Stimmbandschädigung. Die derzeitige Krebsfrüherkennungsrate in meinem Land ist niedrig, und es besteht großes Potenzial für eine Erhöhung der Durchdringungsrate der endoskopischen Diagnose. Beeinflusst vom Stand der Wissenschaft und Technologie hat die weltweite Förderung und Popularisierung der minimalinvasiven chirurgischen Technologie in den letzten Jahren die Entwicklung minimalinvasiver medizinischer Geräte vorangetrieben. Endoskope sind die repräsentativsten minimalinvasiven medizinischen Geräte, und auch einführbare Endoskope können dies tun Biopsie- und Behandlungsfunktionen implementieren. Allerdings haben einführbare Endoskope bei medizinischen Operationen auch gewisse Nachteile. Die Operation verursacht für den Patienten auch viele Komplikationen. Es gibt auch bestimmte blinde Flecken im Sichtfeld der Linse. Mikrobionische Roboter stellen daher eine effiziente und komfortable Möglichkeit zur minimalinvasiven Diagnose und Untersuchung von Darmerkrankungen dar und haben sich zum neuesten Forschungsschwerpunkt auf dem Gebiet der endoskopischen Technologie entwickelt.

Unsere Lösung besteht darin, den Mikroroboter mithilfe der Spiralbewegungsmethode von Spermien in den Anus des Patienten zu injizieren und den Mikroantrieb des Roboters fernzusteuern, um ihn im Darm zu bewegen, um eine Festpunktdiagnose zu erreichen. Während der Bewegung wird die SMA-Spule als Antriebseinheit verwendet, um den Mikroroboter so zu steuern, dass er sich vorwärts und rückwärts bewegt, wodurch ein kontinuierlicher Gang erreicht wird, indem der Bewegungsmechanismus des Inchworm-Muskels nachgeahmt wird. In Bezug auf die Steuerung wird eine Servosteuerung mit entsprechenden Rückkopplungssignalen verwendet, um den eingehenden Strom entsprechend den überwachten umfassenden Daten von Strom und Temperatur anzupassen, die Temperatur der SMA-Spule zeitnah anzupassen und die Widerstandsänderung bei der Stromunterbrechung aufzuzeichnen auftritt. Das drahtlose Energieübertragungssystem umfasst einen Sender im Bauchbereich des menschlichen Körpers, der ein magnetisches Wechselfeld anregen kann, und einen im Mikroroboter integrierten Empfänger, der das magnetische Wechselfeld induziert und den Roboter mit Gleichstrom-Betriebsspannung versorgt. An beiden Enden sind Miniatur-Detektionsleuchten konzipiert, um den Zustand des Darms zu beleuchten. Gleichzeitig sind sie mit drahtlos gesteuerten Miniaturkameras ausgestattet, um Echtzeitbilder des Darms zu erfassen , und die Daten werden zur Vorhersage mithilfe von Deep-Learning-Modellen an die Bereitstellungsplattform übertragen. Der Server des Programms führt nach der Datenvorverarbeitung eine Bildsegmentierung durch, interagiert mit den Daten und dem Deep-Learning-Modell und erhält Vorhersageergebnisse für die Diagnose durch professionelle Ärzte.

Stichwörter: Deep Learning, Darmerkennung, SMA-Spule, Läsionsidentifizierung

1. Projekthintergrund

1. Hintergrundüberblick

Gastrointestinale Erkrankungen beziehen sich auf allgemeine entzündliche Magen-Darm-Erkrankungen (akute und chronische Gastritis, akute und chronische Blinddarmentzündung usw.). ), Magengeschwür, Magenkrebs, Speiseröhrenkrebs, Darmkrebs und Reizdarmsyndrom usw.

Die Häufigkeit von Magen-Darm-Erkrankungen nimmt laut WHO-Statistiken bis zu 80 % zu. Das „Chinese Medical Journal“ (englische Version des Chinese Medical Journal) wies darauf hin, dass die fünf wichtigsten Krebsarten, die im Jahr 2022 in China diagnostiziert werden, Lungenkrebs, Darmkrebs, Magenkrebs, Leberkrebs und Brustkrebs sein werden, wobei Darmkrebs an zweiter Stelle steht. , es gab 590.000 neue Fälle. Der Bericht wies auch darauf hin, dass Darmkrebs an fünfter Stelle der krebsbedingten Todesursachen in China steht.

China hat eine große Bevölkerungsbasis mit Magen-Darm-Erkrankungen, und der Markt für Magenkrebs und Darmkrebs ist groß, und der chinesische Markt für Magen-Darm-Erkrankungen wird auch in Zukunft weiter wachsen. Im Vergleich zu anderen Krebsarten hinkt die präzise Behandlung von Magenkrebs und Darmkrebs in meinem Land hinterher, was untrennbar mit der Genauigkeit der Erkennungsmethoden verbunden ist.

Das Stadium von Darmkrebs hängt von der Größe der Läsionen des Patienten, dem Ausmaß der Invasion und dem Vorhandensein von Lymphknotenmetastasen und entfernten Organmetastasen ab. Im Allgemeinen handelt es sich bei Läsionen innerhalb von 2 cm um ein Frühstadium, bei Läsionen zwischen 2 cm und 5 cm befinden sich im mittleren Stadium, und Läsionen, die größer als 5 cm sind, gelten als fortgeschrittenes Stadium. Bei Darmkrebs besteht die Möglichkeit eines Wiederauftretens und einer Metastasierung nach einer Operation. Daher sind nach der Operation im Allgemeinen 4 bis 6 Zyklen Chemotherapie erforderlich. Der Chemotherapieplan muss auf der Grundlage der postoperativen Pathologie und Immunhistochemie des Patienten erstellt werden.

Die klinische Stadieneinteilung von Magenkrebs erfolgt in der Regel anhand der internationalen TNM-Stufeneinstufungsstandards. Nach diesem Standard wird Magenkrebs normalerweise in vier Stadien eingeteilt: Stadium I, Stadium II, Stadium III und Stadium IV. Jedes Stadium kann je nach Größe und Infiltration in zwei Unterstadien, A und B, unterteilt werden Läsion. Wenn der Tumor in die Lamina propria oder die Submukosa eindringt, kommt es weder zu einer Lymphknotenmetastasierung noch zu einer Metastasierung entfernter Organe. Es gehört zur Phase A. Wenn es von 1-6 regionalen Lymphknotenmetastasen begleitet wird, gehört es zum Stadium IB. Wenn der Tumor in die Lamina propria der Schleimhaut oder die Subserosa eindringt, gehört er ebenfalls zur Kategorie des Stadiums IB und der Serosa Bei benachbarten Organen handelt es sich um einen Tumor im Stadium III. Wenn er von entfernten Organmetastasen begleitet wird, handelt es sich um einen Magenkrebs im Stadium IV.

Die meisten Patienten achten nicht ausreichend auf Magen-Darm-Beschwerden und die damit verbundenen Symptome. Sie denken, dass die Einnahme von Medikamenten die Symptome lindert. Sie verschieben häufig Magen-Darm-Untersuchungen und müssen warten, bis die Erkrankung erneut auftritt oder Komplikationen auftreten Sie müssen sich einer Magen-Darm-Untersuchung unterziehen. Darmkrebs und Magenkrebs befinden sich zum Zeitpunkt der Entdeckung bereits im mittleren und späten Stadium. Für die Magen-Darm-Untersuchung werden im Allgemeinen CT, B-Ultraschall, Koloskopie und Gastroskopie verwendet. Diese gängigen Untersuchungsmethoden bergen jedoch einige Risiken: Die CT birgt eine große Strahlengefahr für den Körper des Patienten; Die Gastroenteroskopie verursacht bestimmte Schäden und es bestehen Risiken wie Schleimhautschäden und Blutungen, Magen-Darm-Perforationen, Stimmbandschäden usw. Daher ist ein risikofreies, hochpräzises Erkennungsgerät die beste Lösung zur Erkennung von Magen-Darm-Erkrankungen.

2. Marktnachfrage

Laut Statistiken der Weltgesundheitsorganisation gibt es im Jahr 2020 weltweit 500 Millionen Patienten mit Magenerkrankungen, davon 120 Millionen Schätzungen zufolge wird die Zahl der Patienten mit Magenerkrankungen in China im Jahr 2022 160 Millionen erreichen. Die Inzidenzrate von Magenkrebs liegt in meinem Land derzeit an zweiter Stelle unter allen bösartigen Tumoren und die Sterblichkeitsrate an dritter Stelle. Im Jahr 2022 wird die Zahl der neuen Fälle von Magenkrebs bis zu 480.000 betragen, und die Zahl der neuen Todesfälle aufgrund von Magenkrebs wird bis zu 370.000 betragen Die Zahl der Patienten mit Magenerkrankungen im Alter von 19 bis 35 Jahren hat sich im Vergleich zu 30 Jahren verdoppelt.

Die Inzidenz von Darmkrebs ist nach Magen- und Speiseröhrenkrebs die zweithäufigste. Die Inzidenzrate von Darmkrebs hat in den letzten 30 Jahren erheblich zugenommen und ist mittlerweile die vierthäufigste Todesursache bei bösartigen Tumoren. Der Anteil von mittlerem und niedrigem Mastdarmkrebs liegt sogar bei über 50 %. Derzeit beträgt die Gesamtzahl der Patienten mit Enterostomie in meinem Land aufgrund von Dickdarm- und Mastdarmtumoren oder -traumata, Colitis ulcerosa, Morbus Crohn und anderen Gründen mehr als 1 Million, und die Zahl der Fälle steigt immer noch mit einer Rate von 100.000 pro Jahr .

Unter den landesweiten Bedingungen einer beschleunigten Bevölkerungsalterung, jüngerer Patienten und einer von Jahr zu Jahr zunehmenden Prävalenz chronischer Krankheiten gibt es in meinem Land eine große Anzahl von Menschen, die medizinische Rehabilitationsversorgung benötigen, einen riesigen Markt und ein unbegrenztes zukünftiges Marktpotenzial für Rehabilitation. Von 2014 bis 2020 ist die Größe des Marktes für rezeptfreie Magen-Darm-Medikamente in meinem Land von Jahr zu Jahr gewachsen. Unter ihnen erreichte der Markt für Magen-Darm-Medikamente in meinem Land im Jahr 2019 eine Größe von 22,522 Milliarden Yuan, was einem Anstieg von 6,3 % gegenüber dem Vorjahr entspricht. Im Jahr 2020 wird der Markt für Magen-Darm-Medikamente in meinem Land etwa 23,99 Milliarden Yuan betragen, was einem Anstieg von 6,5 % gegenüber dem Vorjahr entspricht. Es wird geschätzt, dass der Markt für Magen-Darm-Medikamente in meinem Land im Jahr 2022 27,21 Milliarden Yuan erreichen wird. Im Hinblick auf die politische Unterstützung hat die Nationale Kommission für Gesundheit und Familienplanung im März 2016 gemeinsam mit fünf Abteilungen die „Mitteilung zur Einbeziehung einiger neuer medizinischer Rehabilitationsprojekte in den Zahlungsbereich der medizinischen Grundversorgung“ herausgegeben Medizinische Rehabilitationsprojekte, die ursprünglich im Zahlungsumfang enthalten waren, werden 20 neue Rehabilitationsposten wie „Umfassende Rehabilitationsbewertung“ in den Zahlungsumfang der Krankenversicherung einbezogen. Dies ist die einzige Police, die sich auf Rehabilitationsroboter bezieht. In Zukunft kann die Krankenversicherung den Einsatz von Rehabilitationsrobotern mit umfassenden Rehabilitationsuntersuchungen unterstützen.

3. Medizinischer Bedarf

Jährlich sterben weltweit mehr als 10 Millionen Patienten an Magen-Darm-Erkrankungen. Bis zu 1/5 der chinesischen Bevölkerung leiden an Magen-Darm-Erkrankungen. Laut der Umfrage sind aufgrund von Faktoren wie hohem Lebensdruck der Stadtbürger, Arbeitsstress, häufigen Überstunden, langem Sitzen, übermäßigem Geselligkeit, unwissenschaftlicher Ernährung, unregelmäßiger Arbeit und Ruhe usw. die drei häufigsten Krankheiten in der Stadt Stadt sind Erkrankungen des Magen-Darm-Trakts und des Verdauungssystems, Fettleber, Hepatitis B und andere Lebererkrankungen, Halswirbelsäule, Lendenwirbelsäule und Knochenhyperplasie. Erkrankungen des Magen-Darm-Trakts und des Verdauungssystems sind in Peking, Shanghai, Guangzhou und Shenzhen zur häufigsten Erkrankung geworden.

Chinas aktuelle Krebsfrüherkennungsrate ist niedrig, und es gibt enormen Raum für Verbesserungen bei der Durchdringungsrate der endoskopischen Diagnose. Dieses Projekt löst hauptsächlich die Schmerzen der endoskopischen Untersuchung für Patienten und die Probleme von Schleimhautschäden, Blutungen, Magen-Darm-Perforationen usw Anästhetika, die den Dickdarm bei der Insertionsendoskopie leicht schädigen können. Risiken wie Spannungsreduzierung.

Während der Insertionsendoskopie sind Druck-, Zug- und Drehvorgänge erforderlich, um das Durchdringen des Endoskops durch die Darmkrümmung zu ermöglichen oder eine umfassende Beobachtung verdächtiger Läsionen zu ermöglichen. Dies verursacht nicht nur Schmerzen beim Patienten, sondern bringt auch viele mit sich Komplikationen wie: Darmabschürfung oder sogar Perforation, Herz-Lungen-Unfall usw. Herkömmliche endoskopische Untersuchungen können für Patienten Schmerzen und Komplikationen verursachen. Als Reaktion auf diese Nachfrage haben wir einen Mikroroboter entwickelt, um den Untersuchungsprozess zu verbessern und eine nicht-invasive und schmerzfreie Untersuchung zu ermöglichen.

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

2. Teamvorstellung

1. Teamübersicht

Das FHC-Rehabilitationsteam ist dem Mecol Studio der School of Mechanical and Electrical Engineering der Zhengzhou University of Light Industry und Zhengzhou Sally Technology Co., Ltd. angeschlossen. Das FHC-Rehabilitationsteam ist bestrebt, neue wissenschaftliche und technologische Errungenschaften in die Praxis umzusetzen, um das Leben zu erleichtern, soziale Probleme zu lösen und der Gesellschaft zu helfen. Wir bringen weiterhin zuverlässige und praktische Produkte auf den Markt und verbessern sie während des Anwendungsprozesses kontinuierlich, damit mehr Patienten mit Magen-Darm-Erkrankungen eine genauere Diagnose der Ursache erhalten können. Wir nutzen unsere Technologie, Erfahrung und hochwertigen Dienstleistungen, um Kunden zufriedenstellende Produkte anzubieten, Kundenbedürfnisse kontinuierlich zu erfüllen, die Produktqualität weiter zu verbessern und einen guten geschäftlichen und sozialen Wert zu schaffen.

Das FHC-Rehabilitationsteam wurde auf Basis des Mekel Studio der School of Mechanical and Electrical Engineering der Zhengzhou University of Light Industry gegründet. Das gesamte Team wird direkt von einer Kerngruppe geleitet, die sich aus einem Projektmanager und zwei stellvertretenden Projektmanagern zusammensetzt. Dazu gehören auch Abteilungsleiter wie Personal, Marketing, Finanzen, Technologie, Qualitätskontrolle und Ausrüstung Arbeiten Sie mit dem Kernteam zusammen, um das gesamte Team zu verwalten. Mit zunehmender Teamgröße und steigender Kundenzahl wird nach und nach eine unternehmensähnliche Organisationsstruktur gebildet. Die Mitglieder des Entrepreneurship-Teams erfüllen ihre jeweiligen Aufgaben und werden an allen Aspekten des Projekts beteiligt sein. Gleichzeitig verfügen wir auch über Lehrer und Unternehmensberater mit Erfahrung in verwandten Bereichen (einschließlich Marketing, Werbung usw.), die die Arbeit des Teams leiten.

2. Vorstellung der Kernmitglieder des Teams

(1) Mentor und ärztliches Beratungsteam

Dozent:

Chen Lumin, PhD in Ingenieurwesen von der Tsinghua-Universität. Er erhielt einen Bachelor-Abschluss in Maschinenbau von der Chengdu University of Science and Technology und einen Master-Abschluss in Mathematischer Mechanik vom Nanjing Institute of Aeronautics and Astronautics. Er schloss 2004 sein Studium an der Tsinghua University ab und arbeitet derzeit als Professor und Professor an der Zhengzhou University of Light Industry Direktor des Instituts für Maschinenbau und Elektrotechnik. In den letzten Jahren hat er hauptsächlich Projekte durchgeführt: Gesundheitsmedizinische Forschung für ältere Menschen und behinderte Bevölkerungsgruppen – Nationales Schlüsselprojekt für Forschung und Entwicklung – Forschungsunterthemen zu wichtigen Standards für Gesundheitsdienste und Fernerkennung von Gesundheitsdaten für ältere und behinderte Bevölkerungsgruppen, Kopplungsleistung von der Adaptive Rotary Guide Bushing-Mechanismus von Gleitwerkzeugmaschinen Wissenschafts- und Stabilitätsforschung, Forschungs- und Entwicklungskooperationsprojekt der Provinz Henan für Wissenschaft und Technologie, hochauflösendes Projektionslithographiemaschinen-Subsystem, Plattform für statische Dynamikanalyse und Parametersimulation, nationales Unterprojekt „863“, zweite Person verantwortlich usw.

Li Yihao, Ph.D., außerordentlicher Professor, akademisches Rückgrat des Maschinenbaus, einer Schlüsseldisziplin in der Provinz Henan, und einer der 10.000 herausragenden Mentoren für Innovation und Unternehmertum im ganzen Land. Abschluss an der Universität Chongqing im Jahr 2001 mit einem Bachelor-Abschluss in Maschinenbau und Automatisierung; Abschluss an der Universität Chongqing mit einem Master-Abschluss in Maschinenbau im Jahr 2004; Abschluss in Ingenieurwissenschaften an der Huazhong-Universität im Jahr 2013 mit Schwerpunkt Maschinenbau und Elektrotechnik, mit einem Bachelor-Abschluss in Ingenieurwissenschaften (Ph.D.).

Arztberater:

Guo Lei arbeitet als behandelnder Arzt in der Rehabilitationsabteilung des Henan Workers Hospital. Bereitstellung von Leitlinien und Wirkungsbeurteilungen für die klinischen Studien des Projekts sowie Anleitung zur Problemdemonstration und Rehabilitationsberichtsindikatoren für das Rehabilitationsbewertungssystem.

Derzeit arbeite ich als behandelnder Arzt in der Rehabilitationsabteilung des Henan Provincial Workers Hospital und bin seit langem in der Rehabilitationsarbeit an vorderster Front tätig. Verfügt über langjährige Erfahrung in der klinischen Rehabilitation.

Führungseinheit:

Zhengzhou Sali Technology Co., Ltd.

Die Zusammenarbeit mit echten Unternehmen in der Gesellschaft kann es unseren College-Studenten ermöglichen, ihre eigenen Unternehmen aus dem Elfenbeinturm heraus auf die gesellschaftliche Bühne zu bringen. Wir können unsere Ideen und Technologieprodukte wirklich in Unternehmen und Gesellschaft integrieren und so eine Situation der gegenseitigen Unterstützung schaffen Industrie, Wissenschaft und Forschung, und letztlich in Richtung praktischer Vorteile für den Menschen.

(2) Kernmitglieder des Teams

Unser Team besteht derzeit aus zehn Mitgliedern mit jeweils unterschiedlichen Fachrichtungen. Wir haben uns aufgrund der gleichen Interessen zusammengeschlossen und können eine berufsübergreifende Zusammenarbeit mit breitem Wissensspektrum und exzellenter Qualität erreichen professionelle Lernergebnisse. Wir haben die folgenden Gründe, dieses Projekt abzuschließen:

Teammitglieder:

Hao Tian, ​​​​mit Schwerpunkt intelligente Fertigungstechnik, gut im Teammanagement, in der Organisation und Koordinierung der Arbeit, verantwortlich für das Teammanagement und strebt eine gute Entwicklung des Projekts an .

Fan Jiayi mit Schwerpunkt mechanisches Design, Fertigung und Automatisierung ist für die Fortschrittsrichtung jedes Hauptmoduls des Projekts sowie für die Gesamtzuweisung und -anpassung des Projektpersonals verantwortlich und prüft und überwacht den Gesamtfortschritt.

Xu Fuquan, mit Schwerpunkt mechanisches Design, Fertigung und Automatisierung, ist für die Simulation und Optimierung des Softwaremechanismus des Projekts und die Simulation der Bewegungsszenen des Mechanismus verantwortlich.

Zhang Jingwei, der sich auf intelligente Fertigungstechnik spezialisiert hat, ist für die Entwicklung integrierter Schaltkreise verantwortlich. Er beschäftigt sich seit langem mit der Schaltungssimulation, der Entwicklung von Schaltkreishardware usw. zur Verbesserung der Produktfunktionen.

Chen Yi, mit Schwerpunkt Software-Engineering, ist für die Entwicklung von Softwareplattformen im Läsionsdiagnosesystem verantwortlich. Er beschäftigt sich seit langem mit Bilderkennung, Deep Learning und anderen Arbeiten. Er verfügt über umfangreiche Erfahrung in der Softwareentwicklung Produktfunktionen.

Wang Chen, mit Schwerpunkt Fahrzeugtechnik, ist für den Strukturentwurf und die Optimierung von Mikrorobotern verantwortlich und beherrscht verschiedene dreidimensionale Designsoftware und Finite-Elemente-Simulationssoftware.

Zhao Haitao, mit Schwerpunkt Software-Engineering, ist für drahtlose Kommunikationssteuerungssysteme verantwortlich und verfügt über gute Kenntnisse in der Mensch-Computer-Interaktionstechnologie und der Sensoranwendungstechnologie.

Niu

Wang Shengfeng, Hauptfach Automatisierung, ist für die PID-Steuerung der PWM-Welle von Mikrorobotern verantwortlich und ist gut im Schaltkreisdesign und in der Simulation.

Wang Yuesong, Hauptfach Softwaretechnik, Front-End-Design für die Identifizierung komplexer Läsionen und Rehabilitationsbewertung, gut in der Entwicklung von Hongmeng-Schnittstellen.

3. Anwendungsszenarien

Dieses Projekt untersucht ein nicht-invasives SMA-Spulen-Mikroroboter-Diagnosesystem für gastroenterologische Patienten, das zur Erkennung und Untersuchung von gastroenterologischen Patienten oder potenziellen Patienten eingesetzt werden kann. Zu den Zielkunden gehören folgende Gruppen:

  1. Jeder, unabhängig vom Geschlecht, über 45 Jahre, sollte sich einer Magen-Darm-Endoskopie unterziehen. Bei positiven Befunden (Geschwüre, Polypen etc.) sollten diese nach der Behandlung regelmäßig überprüft werden.
  2. Menschen mit einer familiären Vorgeschichte von Speiseröhrenkrebs, Magenkrebs und Darmkrebs können das Alter der Erstuntersuchung auf 40 oder sogar 35 Jahre erhöhen.
  3. Schlechte Lebensgewohnheiten haben, darunter Rauchen, Trinken, unregelmäßiges Essen, übermäßiges Essen, zu viel Fisch und Fleisch, Vorliebe für eingelegtes Essen und Grillen, hoher Arbeitsdruck und oft langes Aufbleiben usw.
  4. Menschen, die unter Verdauungsbeschwerden wie Magenbeschwerden, Oberbauchschmerzen, Unterbauchschmerzen, saurem Reflux, Aufstoßen, Völlegefühl usw. leiden.
  5. Darmbeschwerden können sich in Schmerzen im Unterleib, Veränderungen der Stuhlgewohnheiten und -eigenschaften, wie z. B. Stuhlgang einmal täglich statt mehrmals täglich, oder Verstopfung, weicher Stuhlgang, blutiger Stuhlgang, schleimartiger blutiger Stuhlgang usw. äußern.

Während der Epidemie können die Menschen nur zu Hause isoliert bleiben, die medizinischen Ressourcen sind knapp und es können nicht genügend Arbeitskräfte bereitgestellt werden. Patienten können keine rechtzeitige Rückmeldung über ihre Magen-Darm-Beschwerden erhalten, insbesondere Patienten in ländlichen Gebieten, für die es schwierig ist, eine wirksame Rehabilitationsbehandlung zu erhalten. Dieses Projekt nutzt jedoch ein Magen-Darm-Erkennungs- und Identifizierungssystem, um Rehabilitationsärzten jederzeit und überall eine Ferndiagnose zu ermöglichen Überwachen Sie den Genesungsstatus des Patienten und bieten Sie medizinische Beratung und Genesungsoptionen an. Dieses Produkt verwendet einen selbst entwickelten Mikroroboter für Magen-Darm-Tests und zeichnet sich im Vergleich zur herkömmlichen Magen-Darm-Endoskopie durch Schmerzlosigkeit, keine Komplikationen, einfache Bedienung und hohe Genauigkeit aus. Mit den in diesem Projekt untersuchten Produkten können Patienten diagnostische Untersuchungen zu Hause durchführen und so die Früherkennung und Behandlung von Magen-Darm-Erkrankungen beschleunigen.

4. Produktfunktionen

1. Bei der Steuerung der flexiblen Biegung des SMA-Treibers. Um den Zweck der Steuerung der quantitativen Verformung des SMA-Aktuators zu erreichen, sollte ein geeigneter Steuerfluss ausgewählt werden. Eine geeignete Steuerspannung kann eine genaue Steuerung der SMA-Drahtbiegung erreichen und dazu beitragen, die Lebensdauer der SMA-Treiberstruktur zu verlängern. Eine höhere Spannung wirkt sich positiv auf die schnelle Reaktion des Treibers aus, führt jedoch dazu, dass die Temperatur des Memory-Legierungsdrahts zu schnell ansteigt, was die Steuerungsgenauigkeit beeinträchtigt und möglicherweise strukturelle Schäden am Treiber verursacht. Unser Team führte 116 Experimente mit der Antriebsspannung durch. Der SMA-Draht mit einem Durchmesser von 0,7 mm und einem Durchmesser von 10 cm wurde von einem Studentennetzteil erhitzt. Das Experiment zeigte, dass die Reaktionsgeschwindigkeit am schnellsten ist Wenn der Lebensdauerverlust des SMA-Drahtes am geringsten ist, ist der Verformungseffekt am offensichtlichsten.

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den GastrointestinaltraktUm Daten zum kritischen Punkt der Phasenwechseltemperatur zu erhalten, haben wir zur Messung ein Infrarot-Thermometer verwendet. Als die Spannung 3,2 V erreichte, erreichte die gemessene Temperatur der SMA-Spule 76,6 °C Diese Temperatur erreichte den Phasenübergangszustand. Die Schrumpfungsrate wird mithilfe der Bilderkennungsmethode gemessen. Eine transparente Acrylplatte wird verwendet, um die SMA-Spule horizontal auf einer weißen Hintergrundebene zu platzieren. Das Bild wird in einer Höhe von 30 cm aufgenommen Die Graustufen und die Länge des Pixels können im Mikrometerbereich gemessen werden.

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den GastrointestinaltraktDie SMA-Spule wird als Antriebseinheit verwendet, um die Vorwärts- und Rückwärtsbewegung des Roboters zu steuern und einen kontinuierlichen Gang zu erreichen, indem sie die Anordnung und den Bewegungsmechanismus der Muskelfasern von Inchworm nachahmt.

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt2. System zur Identifizierung von Läsionen basierend auf Deep Learning

Dieses System nutzt Bildsegmentierungstechnologie, um Bilder von Darmpolypen zu segmentieren, überträgt die Daten und stellt sie an einen Server bereit, der Deep-Learning-Modellvorhersageprogramme verwendet, und analysiert die Daten Auf dem Server wird eine Vorverarbeitung durchgeführt, gefolgt von einer Bildsegmentierung, und die Daten werden mit dem Deep-Learning-Modell interagiert, um Vorhersageergebnisse für die Diagnose durch professionelle Ärzte zu erhalten.

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den GastrointestinaltraktDie von der Kamera am Roboterkopf erfassten Bilddaten können über einen eigenen WLAN-Hotspot in Echtzeit an das Mobiltelefon des Host-Computers übertragen werden. Darüber hinaus verfügen wir über eine mobile APP, die das Modell bereitstellt, und wir können die optimalen Ergebnisse erzielen, indem wir die Genauigkeit und den Verlustwert vergleichen, die während unseres tatsächlichen Trainingsprozesses generiert wurden erreichte einen Höchstwert von 87,2 % und der Verlust ist auf einen sehr niedrigen Wert gesunken.

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

3. Mensch-Computer-Interaktionsschnittstelle basierend auf HarmonyOS

Das HarmonyOS-System ist ein umfassendes verteiltes Betriebssystem für das Internet of Everything. Wir integrieren den Identifizierungsprozess des Läsionserkennungssystems in den entwickelten Mensch-Computer Interaktion basierend auf HarmonyOS Auf der Seite werden Echtzeitbilder des Darmtrakts erfasst, Bildsegmentierungstechnologie wird verwendet, um Bilder von Darmpolypen zu segmentieren, und die Daten werden an einen Server übertragen, der ein Deep-Learning-Modellvorhersageprogramm nach Daten bereitstellt Vorverarbeitung, Bildsegmentierung werden durchgeführt und die Daten werden mit dem Deep-Learning-Modell kombiniert und Vorhersageergebnisse für die Diagnose durch professionelle Ärzte erhalten. 4. Implementierung des Internet-of-Things-Systems

Cloud-Anwendungen, Data-Mining- und Visualisierungsanwendungen usw.)Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

(1) Wahrnehmungsschicht

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den GastrointestinaltraktIn der Wahrnehmungsschicht können wir die Motorstart- und -stoppsteuerung realisieren, indem wir die Motorantriebsschaltung mit dem E/A-Port der MCU verbinden; Durch den Anschluss der Kameraantriebsschaltung an die MCU, die an den I/O-Port angeschlossen ist, kann die Start- und Stoppsteuerung der Kamera realisiert werden. Der Betriebsstrom des Motors spiegelt den Bewegungsstatus des Motors wider. Das Stromerkennungsmodul ist so konzipiert, dass es den Motorstrom in Echtzeit erkennt. Die Erkennungsdaten werden vom AD-Port der MCU eingelesen, um den Arbeitsstatus des Motors zu ermitteln und eine effektive Steuerung des Motorantriebsmechanismus zu erreichen. Um den Betriebsstatus des Roboters in Echtzeit zu überwachen, ist es notwendig, die Erkennungsdaten an die Mensch-Maschine-Schnittstellenanzeige des Hostcomputers zu übertragen.

(2) Übertragungsschicht

Der Arzt sendet Steueranweisungen über die Mensch-Maschine-Schnittstelle des Host-Computers. Nachdem die Steueranweisungen vom Host-Computer generiert wurden, werden sie über den seriellen RS232-Bus an den Befehls-/Daten-Transceiver gesendet . Die MCU des Befehls-/Daten-Transceivers ist über die serielle RX/TX-Schnittstelle mit der Kommunikationsschnittstelle verbunden, um den vom Host-Computer gesendeten Befehlscode zu empfangen. Die MCU des Befehls-/Daten-Transceivers ist ebenfalls mit der Kommunikationsschaltung verbunden Über die SPI-Kommunikationsschnittstelle wird der Befehlscode zur drahtlosen Übertragung an die Kommunikationsschaltung gesendet.

Die in der Kommunikationssteuerplatine integrierte Kommunikationsschaltung empfängt drahtlos den Befehlscode und sendet den Befehlscode über die SPI-Kommunikationsschnittstelle an die MCU der Kommunikationssteuerplatine. Wenn der Anweisungsinhalt einen Kamerastartbefehl enthält, beginnt die MCU der Kamera, den Arbeitsstatus und die Bildparameter des Bildsensors im Bilderfassungsmodul über den SCCB-Steuerbus zu konfigurieren. Sobald die Konfiguration korrekt ist, beginnt das Bilderfassungsmodul zu arbeiten gibt analoge Bildsignale unabhängig und direkt an die Sendeschaltung aus. Die drahtlose Übertragung erfolgt. Nachdem der In-vitro-Bildempfänger das Bildsignal empfangen hat, sendet er das Bild über die Videoleitung an die Bilderfassungskarte des Host-Computers. Die Bilderfassungskarte konvertiert und komprimiert das Bildformat, speichert es dann im Host-Computer und zeigt es an auf der Mensch-Maschine-Schnittstelle.

(3) Steuerschicht

Die Kommunikationssteuerplatine besteht aus fünf Modulen: Spannungsstabilisierungsschaltung, MCU-Hauptsteuerschaltung, Kommunikationsschaltung, Antriebsschaltung (Motorantrieb + Kameraantrieb) und Stromerkennungsschaltung.

Der MCU-Hauptsteuerkreis verwendet einen PIC16F690 (Microchip), der über eine serielle USART-Kommunikationsschnittstelle und eine serielle SPI-Peripherieschnittstelle verfügt. Die Kommunikationsschaltung basiert auf dem Chip Si4455 (Silicon Labs) und einer Reihe peripherer induktiver und kapazitiver Komponenten sowie einem passiven 30-MHz-Quarzoszillator. Die Kommunikationsschaltung auf der Kommunikationssteuerplatine muss den vom Befehls-/Daten-Transceiver gesendeten Befehlscode empfangen und außerdem die erkannten Roboterbetriebsdaten an den Befehls-/Daten-Transceiver senden. Die Antriebsschaltung verwendet zwei Teile der H-Brücke AT5550, um den Motor und die Kamera des Bewegungsmechanismus anzutreiben, die Kamera zu starten und zu stoppen und das Ziel der Energieeinsparung zu erreichen. Die Stromerkennungsschaltung basiert auf dem Chip MAX4173 (Maxim) und dient zur Erkennung des Motorstroms in Echtzeit, um den Arbeitsstatus des Motors zu bestimmen und eine effektive Steuerung durchzuführen.

(4) Software- und Entwicklungsumgebung

Die Mensch-Computer-Interaktionsschnittstelle des Host-Computers ist in PyQt5 geschrieben. Die Programme für die Sensorschicht, die Übertragungsschicht und die Steuerschicht werden mit dem Arduino-Framework geschrieben.

Wir verwenden Arduino MEGA, um das Steuergesetz (PID-Regler usw.) zu implementieren, um das Tastverhältnis der PWM-Welle anzupassen und dadurch den Antriebsstrom der Schaltung anzupassen, um den „Heiz-Kühl-Heiz“-Prozess des SMA zu steuern Erreichen Sie die „Entspannung“ der SMA-Spule – dynamische Hin- und Herbewegung der „Kontraktion-Entspannung“. Anschließend wird der Mikro-SMA-Aktuator so gesteuert, dass er sich bewegt und den Roboter so antreibt, dass er eine rhythmische Bewegung ausführt.

(5) Cloud-Anwendung

Wir haben eine auf PyQt5 basierende Schnittstelle auf dem Host-Computer entwickelt, über die die von der Kamera erfassten Darmbilder und die aktuellen Betriebswerte des Motors in Echtzeit angezeigt werden Sie können auch auf die Steuerschaltflächen klicken und Betriebsparameter eingeben, um Roboterbewegungen effektiv zu steuern.

Darüber hinaus bereiten wir die Entwicklung einer Mensch-Computer-Interaktionsschnittstelle auf Basis von HarmonyOS vor, die es Ärzten ermöglichen wird, den Darmroboter zu steuern und Darmbilder auf ihren Mobiltelefonen anzuzeigen

Der Code des Trainingssatzes lautet wie folgt:

<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. Projektinnovationspunkt

1. Arbeitsinnovation

Dieses Projekt integriert drei Module: ein gastrointestinales hierarchisches Inspektionssystem, ein Diagnosesystem, das auf der Identifizierung und Positionierung von Läsionen basiert, und einen Zollwurm-ähnlichen Mikroroboter zur Durchführung von Früherkennung und Diagnose Krebs oder Tumoren bei Patienten mit Magen-Darm-Erkrankungen und bietet Rehabilitationsprogramme für Magen-Darm-Erkrankungen an.

Miniaturisierter SMA-Spulentreiber

Dieses Projekt verwendet SMA-Material (Formgedächtnislegierung) als Antriebskern des miniaturisierten Treibers. Der Treiber besteht hauptsächlich aus drei Teilen: einer stereotypen Konfiguration aus SMA-Spule, Polyvinylchlorid-Platte (PVC-Platte) und Silikon-Ummantelungsschicht (PDMS).

Bei der Steuerung der flexiblen Biegung des SMA-Treibers. Unser Team hat 116 Experimente mit der Antriebsspannung durchgeführt und bewiesen, dass bei einer Antriebsspannung von 3,2 bis 3,4 V die Reaktionsgeschwindigkeit am schnellsten und der Verformungseffekt am deutlichsten ist, wenn der Lebensdauerverlust des SMA-Drahts am geringsten ist.

Bionischer Inchworm-Gangsimulationsentwurf

Für das Gesamtdesign des Roboters wird die Doppelanker-Kriechbewegung des Inchworms simuliert, die durch die Ankerrädersätze an beiden Enden des Roboters fixiert und vom SMA angetrieben und zusammengezogen wird Spule. Durch die Simulation der Kriechbewegung des Raupenwurms wurde seine Ganganalyse mit der Dynamiksimulationssoftware Recurdyn für die Bewegung seines Rumpfes beim Vorwärtskriechen erstellt.

Gastrointestinales Diagnose- und Untersuchungssystem basierend auf der Technologie zur Identifizierung und Positionierung von Läsionen

Dieses Team verwendet Bildsegmentierungstechnologie, um Bilder von Darmpolypen zu segmentieren, überträgt die Daten an einen Server, der ein Deep-Learning-Modellvorhersageprogramm einsetzt, und verarbeitet die Daten vor Die Daten werden auf dem Server verarbeitet und anschließend mit dem Deep-Learning-Modell interagiert, um Vorhersageergebnisse für die Diagnose durch professionelle Ärzte zu erhalten. Die Klassifizierungsgenauigkeit auf Pixelebene beträgt bis zu 87,25 %. Gleichzeitig wurde eine Mensch-Computer-Interaktionsseite erstellt, die es Ärzten ermöglicht, die Symptome der Patienten in Echtzeit zu überwachen und abnormale Magen-Darm-Bereiche anzuzeigen.

2. Innovationspunkte

(1) Miniaturisierter SMA-Spulentreiber

Dieses Projekt hat sich von Anfang an der Forschung und Entwicklung miniaturisierter, nicht-invasiver, steuerbarer Inspektionsgeräte verschrieben, um die Größe des Roboters zu minimieren Als Antriebskern des miniaturisierten Aktuators haben wir SMA-Material (Formgedächtnislegierung) verwendet.

SMA (Formgedächtnislegierung) ist ein intelligentes Material, das Sensorik und Antrieb integriert und bei unterschiedlichen Temperaturen und Belastungen unterschiedliche Formen und Größen aufweist. Es verfügt über einen kleinen Durchmesser, eine hohe Energiedichte, eine große Ausgangskraft, erfordert keine Übertragung und ist direkt Es bietet die Vorteile eines einfachen und kompakten Antriebs und Aufbaus.

Makroskopisch weist SMA zwei Eigenschaften auf, nämlich Formgedächtniseffekt und Superelastizität. Der Formgedächtniseffekt bedeutet, dass die SMA, nachdem sie auf eine hohe Temperatur eingestellt wurde, auf eine niedrige Temperatur abgekühlt und nach dem Entladen belastet wird. Zu diesem Zeitpunkt kann das Erhitzen dazu führen, dass die Restspannung der SMA verschwindet und zurückkehrt die Form bei hoher Temperatur. Der superelastische Effekt bedeutet, dass durch die Belastung der SMA im Austenitzustand die SMA nach der elastischen Verformung eine inelastische Verformung erfährt und dann entlastet wird und die SMA spontan in die Form vor der Belastung zurückkehren kann. Das Antriebsprinzip dieses Produkts besteht darin, dass das Steuergesetz (PID-Regler usw.) den Arbeitszyklus der PWM-Welle anpasst und dadurch den Antriebsstrom der Schaltung anpasst, um den „Heiz-Kühl-Heiz“-Prozess des SMA zu steuern. und realisieren Sie die „Entspannung-Entspannung“ der SMA-Spule. Die dynamische Hin- und Herbewegung der „Kontraktion-Entspannung“.

Der von uns entwickelte miniaturisierte SMA-Spulentreiber besteht hauptsächlich aus drei Teilen: einer stereotypen Konfiguration aus SMA-Spule, Polyvinylchlorid-Platte (PVC-Platte) und Silikon-Ummantelungsschicht (PDMS). Die PVC-Platte verfügt über eine gewisse Elastizität, die es dem Treiber ermöglicht, während des Abkühlvorgangs der SMA in seinen ursprünglichen Zustand zurückzukehren. PDMS umhüllt SMA-Spulen und PVC-Platten, um als Struktur zu fungieren. Da PDMS nicht nur weich, sondern auch wasserdicht ist, kann der aus diesem Treiber hergestellte weiche Roboter sicher mit Menschen interagieren und Aufgaben in der flüssigen Umgebung des Magens ausführen. Im Vergleich zu Magen-Darm-Testmethoden wie Magenspiegelung und B-Ultraschall wird der mit diesem Antrieb entwickelte Mikroroboter dem Patienten keinen Schaden zufügen und der menschliche Körper wird ihn nicht abstoßen.

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

(2) Design der bionischen Gangsimulation des Raupenwurms

Durch die Untersuchung der Querschnittsdarstellung des Raupenwurms haben wir herausgefunden, dass sein Körper aus Körpergewebe, Körperhöhlenröhren und Längsmuskelfasern besteht. Unter ihnen hat der Inchworm mehrere längs verlaufende Muskelfasern, die kreisförmig angeordnet sind. Wenn der Inchworm komplexe Richtungen mit mehreren Winkeln erkundet, sorgen seine verschiedenen Längsmuskelfasern für unterschiedliche Zugkräfte. Daher verwenden wir für das Gesamtdesign des Roboters SMA-Filamente, die als Längsmuskelfasern für die Traktion fungieren.

Durch die Analyse der Krabbelbewegung des Raupenwurms wurde die Bewegung seines Rumpfes beim Vorwärtskriechen mit der Simulationsanalysesoftware ermittelt, um seinen Krabbelgang zu analysieren. Es wurde festgestellt, dass der Raupenwurm beim Vorwärtskriechen seinen Körper häufig zu einer „Kontraktion“ zusammenzog. Bei der „Ω“-Form sind die Beine an beiden Enden seines Körpers fest mit dem Boden verbunden und er bewegt sich vorwärts oder ändert seine Haltung, indem er seine Taille und seinen Bauch zusammenzieht und streckt.

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

Das Prinzip, dass sich der Inchworm vorwärts bewegen kann, ist die Anisotropie der Reibung zwischen den Beinen und dem Boden. Unter Berücksichtigung der inneren physikalischen Umgebung des Darms und des Magens kann der Darm vereinfacht in eine zylindrische Röhre umgewandelt werden. Die Doppelanker-Kriechbewegung des Inchworms kann durch die Ankergetriebe an beiden Enden des Roboters und die SMA-Spulen zum Antrieb realisiert werden Kontraktion. Zur Steuerung verwenden wir die Arduino MEGA 2560-Steuerplatine zur Steuerung der PWM-Welle, indem wir die DC-Effektfeld-MOS-Röhre anschließen, um die Größe des Stroms zu steuern. Aufgrund des hohen Widerstands des SMA-Drahts kann durch Anlegen eines bestimmten Stroms eine Phasenänderung und somit eine Schrumpfung des SMA-Drahts erreicht werden. Durch die Steuerung des Arbeitszyklus des PWM zur Steuerung der Kontraktion und Entspannung der SMA und durch die Fixierung der Ankereinheit kann die Bewegung eines Inchworms für den Antrieb simuliert werden. Durch das Hinzufügen von Kabinen zum Sammeln von Bakterienkolonien, Mikrosuchscheinwerfern und Kameras an beiden Enden des Roboters wird das Produkt multifunktionaler.

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

Im Bereich der Ganganalyse wird die Mehrkörperdynamiksoftware recurdyn eingesetzt, um die Kinematik und Dynamik des Fahrers zu analysieren, die Bewegungsgeschwindigkeit und den Gang des Mikroroboters zu simulieren und mit physikalischen Experimenten zu kombinieren.

Von einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt

(3) Gastrointestinales Diagnose- und Untersuchungssystem basierend auf der Technologie zur Identifizierung und Positionierung von Läsionen.

Segmentieren Sie die Teile mit besonderer Bedeutung im medizinischen Bild separat. Im medizinischen Bereich verlassen sich Ärzte bei der Diagnose von Krankheiten hauptsächlich auf medizinische Filmbilder und subjektive Beurteilungen. Sie sind ein wichtiger Schritt bei der medizinischen dreidimensionalen Rekonstruktion und quantitativen Analyse von Behandlungsmethoden und Strahlentherapie Die Genauigkeit der Segmentierungsergebnisse wirkt sich direkt auf die nachfolgenden Behandlungseffekte aus. Unser Team verwendet Bildsegmentierungstechnologie, um Bilder von Darmpolypen zu segmentieren, überträgt die Daten an einen Server, der ein Vorhersageprogramm für Deep-Learning-Modelle einsetzt, verarbeitet die Daten auf dem Server vor, führt dann eine Bildsegmentierung durch und vergleicht die Daten mit dem Deep-Learning-Modell. Interagieren Sie und erhalten Sie Vorhersageergebnisse für die Diagnose durch professionelle Ärzte.

Wir verwenden das von Long et al. vorgeschlagene vollständig Faltungsnetzwerk-Framework, um den Bereich der Bildsegmentierung zu trainieren und die vollständig verbundene Schicht im klassischen CNN-Modell durch eine Faltungsschicht zu ersetzen Schicht. Der Codierungsteil ist der Prozess der Extraktion hochdimensionaler Merkmale. Der Decodierungsteil verwendet Dekonvolution zum Upsampling, sodass die Größe des Segmentierungsergebnisbilds mit der Größe des Eingabebilds übereinstimmt und eine Klassifizierung auf Pixelebene mit einer Genauigkeit von erreicht wird bis zu 87,25 %.

​Um mehr über Open Source zu erfahren, besuchen Sie bitte:​

​51CTO Open Source Basic Software Community​

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

Das obige ist der detaillierte Inhalt vonVon einer SMA-Spule angetriebener Inchworm-Diagnoseroboter für den Gastrointestinaltrakt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen