Hyrje Në këtë artikull, dua të ndaj përvojën time duke zhvilluar një aplikacion iOS për një mikroskop robotik me njohjen e qelizave të gjakut të bazuara në AI – si është ndërtuar, sfidat që kemi pasur për t’u përballur, kurthet që kemi hasur dhe si iPhone mund të përdoret si një mjet laboratorik. Kjo nuk është një tjetër app me listë të detyrave me autentifikim ose një aplikacion për aplikimin e filtrave në selfies - fokusi këtu është në një rrjedhë video nga syret e mikroskopit, rrjetet neurale, ndërveprimi i hardware-it, lëvizja e diapazoneve të kontrolluara nga Bluetooth, dhe të gjitha këto që drejtohen direkt në iPhone. A Few Words About the Product Edhe me analizuesit modernë të hematologjisë, deri në 15% e mostrave ende kërkojnë shqyrtim manual nën një mikroskop – veçanërisht kur gjenden anomali në gjak.Sistemet e mikroskopisë automatike ekzistojnë, por ato kushtojnë aq sa një krah aeroplanësh, prandaj shumica e laboratorëve vazhdojnë të shqyrtojnë manovrat e gjakut manualisht.Ne po e bëjmë këtë ndryshe: zgjidhja jonë shndërron një mikroskop standard laboratorik në një skaner dixhital me ushqim automatik të slide-it dhe kapjen e imazheve – të thjeshtë, të përballueshme dhe efikase. Dhe ekipi në . Shkëndija3 qelqi.al Kit lidhet me një mikroskop standard laboratorik, duke e transformuar atë në një skaner dixhital. komponentët e saj hardware përfshijnë: iPhone – kontroll i sistemit, analizë celulare Adaptori i lenteve – lidhja e smartfonit me syrin e mikroskopit Faza robotike - mundëson lëvizjen e rrëshqitjes, kontrollin e fokusit dhe kalimin midis mostrave Nga ana e softuerit, sistemi përbëhet nga: Një aplikacion celular në iPhone Një kontrollues në skenë Faqja e internetit / Cloud Aplikacioni celular kryen detyrat e mëposhtme: përpunon rrjedhën e imazhit nga kamera, zbulon, klasifikon dhe numëron qelizat i dërgon ato në serverin e internetit së bashku me artefakte të tjera analitike kontrollon lëvizjen e fazës robotike, duke kryer skanimin e lubrifikimit sipas një algoritmi të paracaktuar dhe është gjithashtu përgjegjës për konfigurimin dhe fillimin e analizave, rregullimet e parametrave të kamerës, shikimin e një raporti të shkurtër të analizave dhe detyra të tjera të lidhura Portali i internetit është i destinuar për të parë rezultatet, konfirmimin e mjekut të analizës dhe eksportin e raportit. Për të treguar se si punojnë të gjitha së bashku: Video të A Bit of Context About Hematological Diagnostics Ky test është një nga testet mjekësore më të zakonshme dhe themelore.Shumë njerëz e kanë kaluar atë dhe kanë parë tableta të ngjashme në rezultatet e tyre ( ) në : Burimi Kur kryen një CBC, mostrat e gjakut përpunohen përmes një analizuesi hematologjik. Nëse pajisja tregon një devijim nga norma, mostra i nënshtrohet ekzaminimit mikroskopik. Ky proces duket si më poshtë: një teknik laborator vendos një pikë gjaku në një slide xhami, duke përdorur metodën Romanowsky (ose alternativa të ngjashme<)1, e korrigjon atë, dhe shqyrton vajin e përgatitur nën mikroskop vizualisht. Pikërisht në këtë fazë mund të: zbulimin e morfologjive anormale të qelizave (të tilla si neutrofile të papjekura, limfocite atipike, qeliza shpërthyese), vlerësimin e pjekurisë, madhësisë, granularitetit, përfshirjeve dhe parametrave të tjerë, dhe nganjëherë edhe të bëjë një diagnozë paraprake para marrjes së të dhënave PCR2 ose ELISA3. But manual analysis is painful: Është shumë subjektive, varet nga përvoja e teknikut, Njerëzit janë të prirur për lodhje dhe gabime, Dhe nuk shkallëzohet mirë. Sistemet e mikroskopisë automatike janë të shkëlqyera, por ato janë të shtrenjta (nga $ 60,000 dhe më lart), kjo është arsyeja pse më shumë se 90% e laboratorëve ende mbështeten në metodën manuale! Ne e kemi vendosur vetes objektivin e krijimit të një kit të përballueshëm të automatizimit të mikroskopit (në disa qindra mijë rubla) që mund të vendoset gjerësisht në laborator. [1] - Një mostër e gjakut në slide trajtohet me një njollë të veçantë të zhvilluar nga Dmitry Leonidovich Romanowsky (1861-1921).Kjo njollë bën komponente të ndryshme të qelizave të gjakut më të dukshme nën mikroskop, pasi ato janë të ngjyrosura në ngjyra të ndryshme [2] - PCR (Polymerase Chain Reaction) bën të mundur zbulimin e edhe sasive shumë të vogla të materialit gjenetik, të tilla si viruse ose baktere, e cila është vendimtare për diagnozën e sëmundjeve infektive. [3] - ELISA (Enzyme-Linked Immunosorbent Assay) përdoret kur është e rëndësishme për të zbuluar praninë e proteinave specifike What the iPhone Is Capable Of Kur flasim për “inteligjencën artificiale në një smartphone”, shumica e njerëzve imagjinojnë gjëra të tilla si filtrat e kamerës, autokompletat e tekstit ose chatbots.Por iPhones moderne janë mini-kompjuterë me module neurale të dedikuara të afta për të kryer detyra serioze – në rastin tonë, analiza e qelizave të gjakut në kohë reale. Graphics Processing Unit (GPU). Përdoret për operacionet e imazhit: para-procesimi, filtrimi, korrigjimi. Për shembull: vlerësimi i errësirës, korrigjimi i ngjyrave, heqja e artefakteve dhe detyra të tjera specifike që lidhen me grafikën dhe analizën e imazhit. Neural Processing Unit (NPU / Neural Engine). Apple ka qenë integrimin Neural Engine në pajisjet e saj duke filluar me chip A11 (iPhone 8 / X), dhe nga A12 (iPhone XR dhe më të reja), është tashmë e mundur për të kryer mbi 5 trilion operacione në sekondë në NPU (TOPS). Në kohën e shkrimit, të fundit A17 Pro dhe A18 / A18 Pro chips janë në gjendje të 35 TOPS. Kjo përdoret për inferencën e modeleve për zbulimin dhe klasifikimin e qelizave, vlerësimin e sfondit të mostrës, dhe detyra të ngjashme, lirimin e CPU / GPU. Përgjegjës për logjikën e përgjithshme, kontrollin, përpunimin e konfigurimit, serializimin / deserializimin, punën me API dhe sistemin e skedarëve - në thelb gjithçka që nuk bie nën dy komponentët e mëparshëm. Ne do ta diskutojmë këtë duke përdorur iPhone XR (A12 Bionic, 2018) si një lloj bazë, edhe pse është tashmë një pajisje e vjetër. përpunoni një rrymë video 50fps nga kamera e mikroskopit, kryerjen e inferencës CoreML në të njëjtën kohë (~ 15ms për kornizë), ruajtjen e të dhënave në disk dhe sinkronizimin me re, Mbani temperaturën brenda kufijve të pranueshëm (nëse thithja dhe prioritetimi i detyrave janë konfiguruar me kujdes). Megjithatë, pajisja mund të nxehet dukshëm dhe të fillojë të ngadalësohet. për shembull, gjatë analizës së zbardhjeve të malarisë, ku është e nevojshme të përpunohen mbi 100 qeliza në një kornizë të vetme, zbardhja termike do të fillonte sa më parë që zbardhja e dytë ose e tretë - frekuenca e CPU do të bjerë, dhe vonesat e ndërfaqes dhe ngadalësimet do të shfaqeshin. Skenari më poshtë tregon një analizë të ndryshme, jo malari - por ajo që është e rëndësishme këtu është se sa zbulime janë shkaktuar për kornizë. Në përgjithësi, në iOS, është e mundur të monitoroni gjendjen termike të sistemit përmes Në mjedisin tonë të prodhimit, ne kurrë nuk kemi arritur nivelin Kritike, por niveli Serious ndodh rregullisht nën ngarkesë shumë të lartë.Për matjet e performancës, ne kemi përdorur Xcode Profiler, e cila ju lejon të matni CPU, GPU, dhe ngarkesën e kujtesës, si dhe gjendjen termike: ProcessInfo.processInfo.thermalState Të dhënat Dhe këtu është një tabelë e vlerave thermalState me shpjegime nga dokumentacioni: Thermal State Recommendations System Actions Nominal No corrective action required. — Fair Temperature is slightly elevated. Applications may proactively begin power-saving measures. Photo analysis is paused. Serious System performance is reduced. Applications should decrease usage of the CPU, GPU, and I/O operations. ARKit and FaceTime lower the frame rate (FPS). iCloud backup restoration is paused. Critical Applications should reduce CPU, GPU, and I/O usage and stop using peripheral devices (e.g., the camera). ARKit and FaceTime significantly lower the frame rate (FPS). Nominalë Asnjë veprim korrigjues i nevojshëm. — Drejtësi Aplikacionet mund të fillojnë proaktivisht masat e kursimit të energjisë. Analiza e fotografisë është e ndërprerë. seriozë Aplikimet duhet të zvogëlojnë përdorimin e CPU, GPU, dhe I / O operacionet. ARKit dhe FaceTime ulin normën e kornizës (FPS). riparimi i backup iCloud është i pezulluar. Kritikë Aplikacionet duhet të zvogëlojnë përdorimin e CPU, GPU dhe I/O dhe të ndalojnë përdorimin e pajisjeve periferike (p.sh. kamera). ARKit dhe FaceTime zvogëlojnë ndjeshëm normën e kornizës (FPS). Një analizë e plotë termike dhe e energjisë meriton një artikull të veçantë - siç thashë në fillim, nuk dua të shkoj shumë thellë këtu. Në fakt, mund të supozohet se gjendja korrespondon me 80–90 ° C në nivelin e chip dhe rreth ~40 ° C në sipërfaqe. Burime të disponueshme publikisht Serious iPhone punon me të gjithë Për pajisjet e tjera, ekziston një rrjedhë e veçantë, ku pajisja duhet të ketë një (Made for iPhone) certifikimi, të veprojë nëpërmjet iAP2 (Apple Accessory Protocol), etj Shkurtimisht - kjo nuk është rasti ynë. Bluetooth me energji të ulët Mfi Është e dobishme këtu për të kujtuar rolet themelore dhe strukturën e protokollit: Zakonisht, periferi dërgon të dhëna ose pret një lidhje (për shembull: një orë, termometër, monitor i ritmit të zemrës). Central — një pajisje që lidhet me periferike. Ajo fillon lidhjen, dërgon komandat, dhe merr të dhëna. GATT (Generic Attribute Profile) — struktura përmes së cilës pajisjet BLE shkëmbejnë të dhëna. GATT përcakton se cilat "fusha" janë në dispozicion, çfarë mund të lexohet, shkruhet ose nënshkruhet për njoftime. Shërbimet dhe Karakteristikat – të dhënat brenda një lidhjeje BLE janë të strukturuara në shërbime (grupe logjike) dhe karakteristika (parametra të veçanta). për shembull, një gjurmues i stërvitjes mund të ketë një shërbim të Frekuencës së Zemrës, i cili përfshin një karakteristikë të Matjes së Frekuencës së Zemrës (frekuencë aktuale e zemrës). Në rastin tonë, iPhone kontrollon fazën përmes modulit të tij të integruar BLE, i cili njihet si një Peripheral me një shërbim të përshtatur GATT dhe kryen dy detyra: dërgimin e komandave të lëvizjes në kontrollues për boshat XY dhe kontrollin e fokusit përgjatë boshtit Z marrjen e të dhënave nga kontrolluesi (status, pozitë) Duke folur për ngarkesën termike, lidhja BLE nuk duhet të kontribuojë dukshëm. , duke transmetuar komandat ose duke marrë statusin me një frekuencë prej 20 Hz (një interval prej 50 ms): Dokument për konsumin e energjisë BLE Konsumi tipik i energjisë në iPhone XR është rreth 50-100 mW. Një shtim më pak se 1 mW është pothuajse i parëndësishëm, veçanërisht në krahasim me përpunimin e rrjetit nervor, përdorimin e GPU-ve dhe ekranin. Kanali radio është aktiv vetëm për rreth 2% të kohës, duke fjetur pjesën tjetër të kohës. Ne do të zhytemi më thellë në detajet e punës së aplikacionit me modulin BLE dhe kontrollorin në seksionin "Punimi me Skenën e Motorizuar". Tani, disa fjalë për kamerën.Ne përdorim kamerën primare (të pasme me kënd të gjerë): ne kapim video H.264 me një rezolucion prej 1280×720 dhe një bitrate prej rreth 40 Mbps. Sa më i lartë të jetë bitrate, aq më shumë të dhëna për njësi kohe → aq më e lartë është cilësia e imazhit. 40 Mbps është mjaft e lartë për një rezolucion prej 1280×720 (HD). H.264 është një standard ndërkombëtar i kodimit të videove, i njohur gjithashtu si AVC - Advanced Video Coding ose MPEG-4 Pjesa 10.Ky eliminon të dhënat e tepërta (të dyja ndër-frame dhe kompresion brenda-frame), duke zvogëluar shkallën e bit dhe, si pasojë, madhësinë e skedarit. Kështu, ajo që ne përfundojmë me nuk është thjesht një klient i UI-së mobile, por një pajisje e plotë krahu - që do të thotë një pajisje që përpunon të dhënat në vend, pa një lidhje të vazhdueshme me një server. Aplikacionet mobile Tani që kemi mbuluar pjesën hardware, le të shohim se si funksionon e gjithë kjo në nivelin e aplikacionit. Në hyrje, aplikacioni merr një rrjedhë të kornizave nga kamera - fusha e shikimit e mikroskopit që lëviz nëpër shtresë. At the , the application must: output detect leukocytes (and other cells depending on the analysis) display detected objects with bounding boxes (BBoxes) perform cell counting send data in the background to the backend (images of cells, the scan, individual frames) Siç tregohet në diagramin e mësipërm, gjithçka rrotullohet rreth kornizës së kamerës – zbulimi, navigimi nëpër diapazon, dhe përcaktimi se cilat artefakte duhet të dërgohen në re, të gjitha varen nga ajo. Kjo përfshin korrigjimin e shtrembërimit, heqjen e artefakteve, vlerësimin e nivelit të zbehtë, dhe korrigjimin e dritës dhe ngjyrës. 1) Preprocess the frames Për shembull, çdo laborator ose mikroskop ka kushte specifike të ndriçimit, të cilat mund të shkaktojnë mosfunksionim të rrjetit nervor.Këtu, është e nevojshme të kryhet normalizimi i bilancit të bardhë – duke drejtuar fushën e shikimit në një zonë të zbrazët dhe duke nisur rregullimin e bilancit të bardhë të kamerës. Ne gjithashtu patëm një gabim ku qelizat u dërguan në portal pa kalibrimin e ngjyrave.Kjo ndodhi sepse zbulimi u nis në paralel para se të aplikoheshin cilësimet e kamerës. dhe Qelizat pa kopje 2) Detect, classify, count Për shembull, në fotografinë më poshtë, disa kopje janë shënuar me të kuqe në një nga analizat më të vjetra: kështu që ajo lëviz në mënyrë korrekte në të gjithë diapazonin, kalimet nga një diapazon në tjetrin, dhe, më e rëndësishmja, fokusohet saktësisht në diapazon, duke zbuluar kur ajo shkon përtej kufijve të diapazonit ose ulet në zona bosh. 3) Control the microscope bateri të qelizave në re (snapshots, metadata) pa bllokuar përpunimin e analizës së ardhshme. 4) Upload Ky proces n herë, si analizat janë kryer në grupe. 5) Repeat Dhe të bëjë të gjitha këto pa mbinxehjen e telefonit. 6) Aplikacioni u zhvillua në mënyrën tipike të fillimit: një proof-of-concept u hodh shpejt së bashku, pastaj rafinuar në një MVP (Minimum Viable Product) i përshtatshëm për pilotimin në laborator dhe pitching për investitorët.Si rezultat, arkitektura e aplikacionit përfundoi të jetë hibrid: disa ekrane janë zbatuar duke përdorur UIKit-bazuar MVP (Model-View-Presenter) ekranet, ndërsa karakteristika të reja dhe ndërfaqe janë shkruar në Swift me MVVM (Model-View-ViewModel). Ne përdorim një shtresë shërbimi për të izoluar logjikën e biznesit: të të Të gjitha varësitë injektohen ose nëpërmjet ndërtuesve ose nëpërmjet kontejnerëve DI. Në aspektin e reaktivitetit dhe zinxhirëve asinkronë me abonimet e ngjarjeve, kemi pasur një “rrugë evolucionare”: fillimisht kemi miratuar RxSwift, pastaj filluam tranzicionin në Combine, dhe me ardhjen e async/await, një pjesë e zinxhirëve u zhvendos atje. Rezultati ishte një lloj “Frankenstein”, por më vonë i kemi izoluar këto komponentë në module të ndara në mënyrë që në të ardhmen, ne thjesht mund të shkëmbejmë një komponent për një grumbull të ri teknologjie. I gjithë aplikacioni është ndërthurur me regjistrimin e detajuar, dhe për rastet komplekse (sidomos ato që lidhen me përpunimin CameraService BluetoothController AnalysisService Një artikull i tërë mund të shkruhet për testimin: nga tallja e pjesëve individuale të analizës dhe vendosja e shpejtë e shteteve të dëshiruara përmes (Për shembull, unë kam një në këtë temë), për të simuluar hapat individuale të analizës dhe për të mbuluar të gjithë atë me integrimin dhe testet e njësive. ProcessInfo Shënim i vogël teknik Por le të kthehemi në përpunimin e kornizës dhe të shohim një diagram arkitektonik pak më të detajuar se ai më lart: Analysis Controller - qendra e vendimmarrjes: merr korniza dhe nis përpunimin në Pipeline Frame. — receives the raw frame stream from the camera, transforms it, and passes it onward. Camera Service Kontrolluesi i mikroskopit - kontrollon kontrollorin e mikroskopit. — a chain consisting of several stages: Frame Pipeline — correction, filtering Preprocessing — object/cell detection Detection — counting unique objects Counting — final filtering and preparation for visualization Postprocessing UI - përgjegjës për shfaqjen e rezultateve për përdoruesin në kohë reale (kuti kufitare, statistika, alarme). Uploader - sinkronizon artefaktet e analizës (snapshots, qelizat, config) me backend. Sa i përket menaxherit të varësisë: fillimisht kemi përdorur CocoaPods (që hyri në nga 2024), por më vonë prezantoi SPM (Swift Package Manager). Disa shërbime (Computer Vision, Bluetooth, utilities) u zhvendosën në modulet SPM. Ka pasur gjithashtu përpjekje për të ndarë kodin ObjC / C++ në xcframeworks individuale, por nuk kishte kohë të mjaftueshme për të rregulluar të gjitha, kështu që ne e lëmë atë kod në projektin kryesor. ObjC ishte i nevojshëm si një mbështjellës rreth C++ në mënyrë që të mund të thirret nga Swift. Kjo rezultoi në klasa ObjC++: ndërfaqet e tyre janë thjesht ObjC, duke lejuar Swift të ndërveprojë me ta, ndërsa zbatimet e tyre përzihen kodin ObjC dhe C++. Kjo ishte para . Modaliteti i mirëmbajtjes dhe zhvillimi aktiv i ndaluar Swift mbështet thirrjet e drejtpërdrejta në C++ Unë duhet të përmend se unë jam larg nga të jetë një guru në C ++ dhe Computer Vision algoritmeve, por përgjegjësitë e mia përfshijnë fituar një kuptim bazë dhe porting algoritmeve dhe heuristikë nga Python, e cila ishte ku shumica e R & D tonë u krye. Detyrat Eliminimi i shtrembërimit Një nga adaptorët tregoi një artefakt të shtrembërimit optik në imazh. Si rezultat, një qelizë që duhet të shfaqet e rrumbullakët do të dukej e zgjatur ose e shtrembër, veçanërisht drejt skajeve të kornizës. për të rivendosur gjeometrinë e kornizës: Fjalë kyçe OpenCV CV::undistort() We calibrate the camera — capturing images of a chessboard/grid with known geometry. OpenCV computes: the camera matrix K (projection parameters) distortion coefficients D = [k1, k2, p1, p2, k3, …] We apply cv::undistort() or cv::initUndistortRectifyMap() + remap(): this computes where each point “should have landed” in reality the image is “straightened” back to correct geometry Më vonë, adaptori u zëvendësua - ky hap u hoq. Determining Position on the Slide Përcaktimi i pozicionit në slide Për të numëruar me saktësi qelizat, është thelbësore të njihni koordinatat e tyre sa më saktë të jetë e mundur. Këtu, ju mund të shihni se çfarë ndodh kur vendimi i ndryshimit është i gabuar. video Fillimisht, ne u përpoqëm të llogarisim zhvendosjen relative midis dy kornizave dhe të përmbledhim zhvendosjen absolute. Metoda klasike e regjistrimit të imazheve përmes korrelimit fazor bazuar në Fast Fourier Transform.Ne e zbatuam këtë në OpenCV dhe madje e përdorim Apple Accelerate. metodat e bazuara në pikat kyçe lokale me përshkrues: SURF, SIFT, ORB, dhe të tjerët. Fluksi optik Përmbajtja e integruar e Apple VisionTranslationalImageRegistrationRequest Nga njëra anë, ne kishim disa supozime: Asnjë shkallëzim apo rrotullime nuk ishin të pranishme Optikisht: një njollë e pastër, e paprekur, pa zona të zbrazëta Pavarësisht kësaj, ka pasur ende probleme për shkak të ndryshimeve në ndriçim, fokus, gabime të akumuluara, ndryshime të papritura, zhurmë ose artefakte në imazh. Kjo rezultoi në një tabelë krahasimi si ajo më poshtë: Këtu është përkthimi juaj i saktë i tabelës dhe tekstit të dhënë: Method Advantages Disadvantages Usage Notes Speed Comment FFT + cross-correlation (OpenCV, Accelerate) Very fast, global shift detection, simple to implement Accumulates error, not robust to abrupt shifts Requires images of identical size, suitable for “pure” shifts Very high Used as the primary method SIFT High accuracy, scale/rotation invariant Slow, used to be non-free Excellent for diverse scenes with texture and complex transformations Slow Experimental option SURF Faster than SIFT, also scale/rotation invariant Proprietary, not always available Slightly better suited for real-time but still “heavy” Medium Experimental option, especially since under patent ORB Fast, free, rotation invariant Sensitive to lighting, not robust to scale changes Works fairly well for image stitching High Before we moved stitching to the cloud, we had versions using this Optical Flow (Lucas-Kanade) Tracks movement of points between frames, good for video Doesn’t handle global transformations, sensitive to lighting Best in videos or sequences with minimal movement Medium We experimented with this for digitization (stitching) of images Optical Flow (Farneback) Dense motion map, applicable to the whole image Slow, sensitive to noise Good for analyzing local motions within a frame Slow We experimented with this for digitization (stitching) of images Apple Vision (VNTranslationalImageRegistrationRequest) Very convenient API, fast, hardware-optimized In our case, accuracy was poor Perfect for simple use cases on iOS/macOS Very high We tried it and abandoned it FFT + cross-correlation (OpenCV, Accelerate) Shumë i shpejtë, zbulimi global i ndryshimeve, i lehtë për t'u zbatuar Akumulon gabime, jo të qëndrueshme për ndryshime të papritura Kërkon imazhe me madhësi identike, të përshtatshme për ndryshimet "të pastra" Shumë i lartë Përdoret si metodë kryesore SIFT Saktësi e lartë, shkallë / rrotullim invariant Slow, used to be non-free I shkëlqyer për skena të ndryshme me teksturë dhe transformime komplekse ngadalë Opsionet eksperimentale SURF Më i shpejtë se SIFT, gjithashtu shkallë / rotation invariant Pronari, jo gjithmonë në dispozicion Pak më mirë i përshtatshëm për kohë reale, por ende “i rëndë” Medium Opsioni eksperimental, sidomos pasi nën patentë ORB I shpejtë, i lirë, rotacioni i pandryshueshëm I ndjeshëm ndaj ndriçimit, jo i fuqishëm ndaj ndryshimeve në shkallë Punon mjaft mirë për stitching imazh lartë Para se të zhvendoseshim në re, kishim versione që përdorin këtë Optical Flow (Lucas-Kanade) Tracks lëvizjen e pikave në mes të kornizave, e mirë për video Nuk merret me transformime globale, të ndjeshme ndaj ndriçimit Më i mirë në video ose sekuencë me lëvizje minimale Medium Ne eksperimentuam me këtë për digitalizimin e imazheve Optical Flow (Farneback) Harta e lëvizjes së dendur, e zbatueshme për të gjithë imazhin Ngadalë, i ndjeshëm ndaj zhurmës I mirë për të analizuar lëvizjet lokale brenda një kornize ngadalë Ne eksperimentuam me këtë për digitalizimin e imazheve Apple Vision (VNTranslationalImageRegistrationRequest) API shumë i përshtatshëm, i shpejtë, i optimizuar për hardware Në rastin tonë, saktësia ishte e dobët Ideale për raste të thjeshta të përdorimit në iOS/macOS Shumë i lartë Ne e provuam dhe e braktisëm Për secilën opsion, ne u përpoqëm të gjejmë konfigurimin optimal në aspektin e saktësisë dhe performancës për krahasim me një ndryshim referencë: ne ndryshuam rezolucionet e imazhit, parametrat e algoritmit dhe cilësimet e ndryshme të optikës së kamerës dhe mikroskopit. Dhe këtu është se si dukej procesi i debugging për zbulimin e pikave kyçe, të cilat ne më vonë synonim të përdorim për të llogaritur ndryshimin. Si rezultat, sapo faza robotike u fut në sistemin tonë, filluam të përdorim koordinatat nga kontrolluesi i saj, të cilat pastaj e përmirësuam duke përdorur heuristikën CV. Numërimi i qelizave Në thelb, detyra e numërimit të qelizave është një rast specifik i gjurmimit të objektit dhe deduplikimit: "për të identifikuar se çfarë është qeliza, për të shmangur numërimin e saj dy herë, për të shmangur numërimin e tepërt dhe për të mos humbur qelizat e nevojshme - të gjitha në fraksione të sekondës, në kohë reale përmes kamerës dhe duke punuar në pajisjen e telefonit." Ne përdorim rrjetet nervore për të zbuluar objekte në kornizë (Bounding Box, BB). Çdo BB ka vlerësimin e vet të besimit (besimin e rrjetit) dhe klasën e qelizave. Për të luftuar zhurmën e sfondit dhe pozitivët e rremë, ne aplikojmë filtrimin e shpejtë: Për shembull, këtu në të majtë, një theks i kuq shënon një eritrocite – por rrjeti nervor fillimisht e klasifikonte atë si një leukocite. Megjithatë, filtrat e ngjyrave erdhën në lojë më vonë, dhe ajo u filtrua jashtë. Një shenjë e kuqe shënon një eritrocite të hedhur nga filtrat. geometric: we discard objects whose sizes fall outside typical cell dimensions. we also discard cells that partially extend beyond the frame edges — those are of no interest to us Counting unique objects. Some BBs may be counted more than once for the same cell, so it’s important to detect such cases and count them only once. At one point, we were inspired by a guide from MTurk that describes two options: Option 1: Compare the distances between BB centers — if a new BB is too close to one already recorded, it’s likely “the same” cell. Option 2: Calculate IoU (intersection over union, Jaccard Index) — the metric for overlap between rectangles. If a new BB overlaps significantly with an existing one, we count it only once. Në përgjithësi, është e nevojshme të mbahet gjurmimi i objektit midis kornizave, veçanërisht nëse rishikojmë zonat e skanuara më parë të vjollcës. Digitalizimi Një nga detyrat ishte digitalizimi i skanimit, në thelb krijimi i një skaneri histologjik të bazuar në softuer për zbutjen. Fotoja më poshtë tregon se si duket: shigjetat tregojnë lëvizjen e përdorur për të ndërtuar skanimin, ku kapim kornizat dhe i lidhim ato në një imazh të madh. Lëvizja e fushës së shikimit nëpër shtresë Këtu përsëri, përcaktimi i saktë i pozicionit ishte kritikisht i rëndësishëm, i ndjekur nga shtrëngimi i pandërprerë. Vlen të përmendet se fillimisht ne nuk kishim një fazë të motorizuar dhe u mbështetëm në navigimin manual. Imagjinoni duke u përpjekur të mbledhni një mozaik nga qindra fragmente. Ja si dukeshin eksperimentet e para: fushat e shikimit të kërcejnë, sheshet, dallimet në ndriçim, hapësirat e zbrazëta. Në të majtë - një hartë me ndriçim të pabarabartë dhe ekspozimin, ku "sheshet" janë të dukshme në lidhjet e kornizës. Ose, për shembull, një përdorues skan shqyrtimin, duke lëvizur shpejt mbi të - disa zona përfundojnë të zbehur (Motion Blur). Ne u përpoqëm të hedhim kornizat e tilla nëse ato nuk përmbushin pragun e pranueshëm të zbehtë ose nëse ndryshimi nuk mund të llogaritet për ta. Korniza të paqarta të mbuluara në skanimin gjatë lëvizjes së papritur Gradualisht, ne kemi përparuar në drejtim të qasjes së mëposhtme: Ka pasur shumë iterime: shtrëngimi në pajisje, duke përdorur metoda të ndryshme, në rezolucione të ndryshme të kornizës dhe konfigurime të kamerës.Ne përfundimisht arritëm në zgjidhjen ku skanimi është i mbledhur në re, dhe pajisja mobile dërgon korniza me balancimin e bardhë të kalibruar dhe ekspozimin. Below is an example of how we measured the processing speed of individual frame-processing components depending on the configuration: camera settings, selected algorithms, and their parameters. (there’s some mixing with Russian here, but I hope the overall idea is clear) Duke punuar me fazën e motorizuar Tani – detajet për lidhjen midis iPhone-it dhe fazës motorike: si komunikojmë nëpërmjet BLE-së, çfarë komandash dërgojmë, dhe si konfiguruam autofokusin. Pajisja celulare lidhet nëpërmjet Bluetooth me kontrollorin në skenë dhe lëviz përgjatë koordinatave XYZ. Më saktësisht, është vetë faza që lëviz, por nga perspektiva e imazhit të parë nëpërmjet lenteve të lenteve nga pajisja celulare, duket se lëvizja ndodh në të gjithë diapozitivën. Faza jonë është gjithashtu e ndërtuar në mënyrë të përshtatshme – jo sepse ne “dëshirojmë të bëjmë gjithçka vetë”, por sepse zgjidhjet komerciale fillojnë me 10 000 dollarë, dhe kjo nuk është shaka. Ne punësuam një zyrë projektimi dhe ndërtuam versionin tonë për rreth 800 dollarë. Ajo doli të jetë shumë më e lirë, sepse një nga inxhinierët vuri re në kohë se ndërtimi i një mikroskopi të motorizuar i ngjan në mënyrë të dyshimtë një printeri 3D. Kinematika e njëjtë XYZ, motorët e njëjtë stepper, hekurat e njëjta. Si rezultat, ne jemi duke përdorur komponentë të prodhuar në masë dhe të lirë, por të përshtatur për kërkesat tona specifike. Strukturalisht, faza përbëhet nga tre pjesë: platforma X Komponentët e fazës së mikroskopit motorizuar Për lëvizjen manuale të fazës, ne përdorim një joystick virtual (duke treguar butonat e lëvizjes tek përdoruesi në ekran) – përdoret në skenarët e kalibrimit dhe konfigurimit të sistemit. megjithatë, gjatë analizës, kontrolli është gjithmonë i automatizuar. Communication Protocol Protokolli i komunikimit Si një ndërfaqe Bluetooth, ne përdorim Moduli BLE funksionon si default në modalitetin e terminalit të tekstit, që do të thotë se kërkesat dhe përgjigjet thjesht kalojnë prapa dhe prapa.Për detyrat e konfigurimit dhe sistemit (ndryshimi i emrit, shpejtësia e komunikimit), përdoren komandat AT. KQZ08 Kontrolli vetë punon firmware bazuar në GRBL, duke përdorur Skenarët kryesorë këtu janë: Kodi G fillimin e lidhjes (telefoni duhet të zbulojë se faza është e lidhur) Skanimi i diapozitivit (ndryshimi i skenës përgjatë të gjitha akseve) Ndalimi / rifillimi i skanimit Menaxhimi i situatave të jashtëzakonshme: arritja e ndërprerjes së kufijve, ndërprerja e lëvizjes, mbivendosja e bufferit të komandës. GRBL ka grupin e vet të komandave që fillojnë me Simbolet për shembull: $ $H - homing ose kalibrimi dhe kërkimi i zero hardware nëpërmjet limit switches. zakonisht kryer në nisjen fillestare dhe më vonë sipas nevojës nëse ndodh një gabim i konsiderueshëm i akumuluar gjatë lëvizjes. — Jogging mode, which simulates joystick control. The command itself should describe relative movement along all axes. An example of such a command: $J=<command> $J=G21G91Y1F10 — units in millimeters G21 — relative positioning G91 — movement along the Y-axis by 1 millimeter Y1 — movement speed. F10 ? — Kërkesa e statusit GRBL. Dërgon një varg me parametrat kryesorë të makinës. Përgjigje e shembullit: <Alarm̧MPos:0.000,0.000,0.000 FhFS:0,0 FhPn:XYZ FhWCO:-5.300,0.000,-2.062> Ne jemi të interesuar në dy parametrat e parë: Mund të jetë “Idle”, “Running”, ose “Alarm”. MPos - pozicioni aktual i fazës. Unë nuk do të shkoj shumë thellë në GRBL dhe protokollet e kontrollit të fazës – kjo është material për një artikull të veçantë. Me pak fjalë: GRBL është një firmware me burim të hapur nga bota e CNC, e përshtatshme për të kontrolluar sistemet me tre akse (XY+Z) nëpërmjet komandave të thjeshta G-code. Ne zgjodhëm modulin më të thjeshtë të mundshëm BLE – HC-08 – për të shmangur trajtimin me MFi dhe iAP. Ishte vendimtare për ne që iPhone të mund të dërgonte në mënyrë të besueshme komandat dhe të merrte përditësime të statusit me latency minimale, pa rritur ndjeshëm koston e kit. Detyrat Autofokusi Më parë, kam përmendur fokusimin. ky proces kryhet periodikisht gjatë skanimit të lubrifikimit, sepse mostra aplikohet në mënyrë të pabarabartë, e cila është veçanërisht e dukshme në zgjerime të larta. Është e nevojshme të monitorohet niveli i mjegullimit dhe të rregullohet fokusi në kohë. Grafiku më poshtë tregon marrëdhënien midis nivelit të fokusit dhe kohës.Ne fillojmë me një imazh të zbehtë, duke lëvizur gradualisht skenën në pozicionin optimal të fokusit. Skanim Vlen të theksohet këtu se digitalizimi mund të kryhet në madhësime të ndryshme: nga 5x në 40x. Në nivelet më të ulëta të zoom-it, është më e lehtë për të lundruar dhe për të zbuluar kufijtë e lubrifikimit, ndërsa në madhësime më të larta, detajet celulare bëhen të dukshme. Në rastin tonë, ne punojmë me dy nivele: Boundary detection at 4x magnification. The algorithm scans the entire slide, determines the smear area, and generates a boundary map for the next stage. The output is something like a heat map. For example, from the low-magnification image on the left, we obtain a matrix that we then use to plan the steps for navigating at higher magnification: Scanning the smear at 20x magnification (or another level). The algorithm scans and saves images for subsequent assembly into a single map. Scanning proceeds line by line, within the boundaries of the smear. A photo is captured for stitching when: the image is in focus the controller is in an idle state, i.e., not moving Në mënyrë që përdoruesi të mos ketë nevojë të ndërrojë objektivet çdo herë, ne kryejmë zbulimin e kufijve dhe skanimin në të gjitha diapozitat në batch në të njëjtën kohë, ndërsa ngarkimi i batch-it të mëparshëm në cloud në paralel. Konkludimi Ky projekt tregoi se edhe një smartphone nga viti 2018 mund të merret me detyra që më parë kërkonin desktop, serverë dhe mikroskopë të shtrenjtë automatikë. Natyrisht, ka ende shumë mbetur prapa skenave: nga mbledhja e grupeve të të dhënave në përshtatjen e përsosur të ekspozimit. Nëse jeni të interesuar, unë do të isha i lumtur ta mbuloj atë veçmas. Ndihuni të lirë të bëni pyetje, të ndani përvojën tuaj dhe ndoshta së bashku do të krijojmë një ndjekje ose të zhytemi më thellë në aspekte specifike. Faleminderit për leximin! Le të lidhemi! Ansarë E-mail: qershori3g@gmail.com Etiketë: Ansar Zhalyal Fjalë kyçe @celly_ai Aminë Email: amin.benarieb@gmail.com Fjalë kyçe: Amin Benarieb Fjalë kyçe: @aminbenarieb