601 lectures
601 lectures

Comment nous avons transformé l'iPhone en un microscope de laboratoire avec AI et BLE

par Amin Benarieb22m2025/07/09
Read on Terminal Reader

Trop long; Pour lire

Une application iOS pour un microscope robotique avec reconnaissance des cellules sanguines basée sur l'IA. L'application utilise un flux vidéo de l'œil du microscope, des réseaux neuronaux, l'interaction matérielle, le mouvement des diapositives contrôlé par Bluetooth, et tout cela fonctionne directement sur l'iPhone.
featured image - Comment nous avons transformé l'iPhone en un microscope de laboratoire avec AI et BLE
Amin Benarieb HackerNoon profile picture
0-item

Introduction

Dans cet article, je veux partager mon expérience dans le développement d’une application iOS pour un microscope robotique avec reconnaissance des cellules sanguines basée sur l’IA – comment il a été construit, les défis auxquels nous avons dû faire face, les pièges auxquels nous avons rencontré et comment l’iPhone peut être utilisé comme outil de laboratoire.

Ce n'est pas encore une autre application à faire avec l'authentification ou une application pour appliquer des filtres aux selfies - l'accent est ici mis sur un flux vidéo de l'œil du microscope, les réseaux neuronaux, l'interaction matérielle, le mouvement des diapositives contrôlé par Bluetooth, et tout cela fonctionnant directement sur l'iPhone.

A Few Words About the Product

Même avec les analyseurs d'hématologie modernes, jusqu'à 15% des échantillons nécessitent toujours un examen manuel sous un microscope - en particulier lorsque des anomalies sont trouvées dans le sang.Les systèmes de microscopie automatisés existent, mais ils coûtent autant qu'une aile d'avion, ce qui explique pourquoi la plupart des laboratoires continuent d'examiner les taches de sang manuellement.Nous le faisons différemment: notre solution transforme un microscope de laboratoire standard en un scanner numérique avec alimentation automatique des diapositives et capture d'images - simple, abordable et efficace.@Anthony3Et l’équipe enCélia.fr.

Our CEO (Ansar) is presenting the product at the exhibition

Le kit se connecte à un microscope de laboratoire standard, le transformant en scanner numérique.

  • iPhone – contrôle système, analyse cellulaire
  • Adaptateur de lentille – connexion du smartphone à l’œil du microscope
  • Étape robotique – permet le mouvement des diapositives, le contrôle de la mise au point et le changement entre les échantillons

Du côté du logiciel, le système se compose de :

  • Une application mobile sur l’iPhone
  • Un contrôleur sur scène
  • Portail Web / Cloud

System components interaction Diagram

L’application mobile remplit les tâches suivantes :

  • traite le flux d'image de la caméra, détecte, classe et compte les cellules
  • les envoie au serveur Web avec d'autres artefacts d'analyse
  • contrôle le mouvement de l'étape robotique, effectuant la numérisation de la frottis selon un algorithme prédéfini
  • et est également responsable de la configuration et de l'initiation de l'analyse, des ajustements des paramètres de l'appareil photo, de la visualisation d'un bref rapport d'analyse et d'autres tâches connexes

Le portail web est destiné à la visualisation des résultats, à la confirmation médicale de l'analyse et à l'exportation de rapports.VidéoDécouvrez comment tout cela fonctionne ensemble :

Microscope with iPhone and motorized stage below


Web portal with details of the conducted analysis

A Bit of Context About Hematological Diagnostics

L'analyse primaire que nous effectuons est la microscopie du sang. Il s'agit d'un composant du Compte sanguin complet (CBC), l'un des tests médicaux les plus courants et fondamentaux.source) :

Example of CBC report

Lors de l'exécution d'une CBC, des échantillons de sang sont traités par l'intermédiaire d'un analyseur d'hématologie.Si l'appareil indique un écart par rapport à la norme, l'échantillon est soumis à un examen microscopique.

Ce processus ressemble à ce qui suit :

  • un technicien de laboratoire place une goutte de sang sur une glisse de verre,
  • la tache à l'aide de la méthode Romanowsky (ou d'autres alternatives similaires)1 , la fixe,
  • et examine visuellement la teinture préparée sous le microscope.

Preparation of a blood smear

C’est précisément à ce stade que l’on peut :

  • détecter des morphologies cellulaires anormales (telles que les neutrophiles immatures, les lymphocytes atypiques, les cellules explosives),
  • évaluer la maturité, la taille, la granularité, les inclusions et d’autres paramètres,
  • et parfois même faire un diagnostic préliminaire avant d'obtenir des données PCR2 ou ELISA3.

But manual analysis is painful:

  • C’est très subjectif,
  • En fonction de l’expérience du technicien,
  • Les humains sont sujets à la fatigue et aux erreurs,
  • Et ça n'échelle pas bien.

Les systèmes de microscopie automatisés sont excellents, mais ils sont coûteux (à partir de 60 000 $ et plus), c’est pourquoi plus de 90% des laboratoires comptent encore sur la méthode manuelle!

Nous nous sommes fixés l'objectif de créer un kit d'automatisation du microscope abordable (dans plusieurs centaines de milliers de roubles) qui pourrait être largement déployé dans les laboratoires.

[1] - Un échantillon de sang sur le diaphragme est traité avec une tache spéciale développée par Dmitry Leonidovich Romanowsky (1861-1921). Cette tache rend différents composants des cellules sanguines plus visibles sous le microscope, car ils sont tachés de différentes couleurs

[2] - PCR (Polymerase Chain Reaction) permet de détecter même de très petites quantités de matériel génétique, tels que les virus ou les bactéries, ce qui est crucial pour le diagnostic des maladies infectieuses.

[3] - ELISA (Enzyme-Linked Immunosorbent Assay) est utilisé quand il est important de détecter la présence de protéines spécifiques

A physician examines a blood smear under the microscope via the iPhone.

What the iPhone Is Capable Of

Lorsque nous parlons de « l’intelligence artificielle sur un smartphone », la plupart des gens s’imaginent des choses comme des filtres de caméra, des autocomplets de texte ou des chatbots.Mais les iPhones modernes sont des mini-ordinateurs avec des modules neuronaux dédiés capables d’exécuter des tâches sérieuses – dans notre cas, une analyse en temps réel des cellules sanguines.

  • Unité de traitement graphique (GPU). Utilisé pour les opérations d'image: pré-traitement, filtration, correction. Par exemple: évaluation de l'obscurité, correction des couleurs, suppression des artefacts et autres tâches spécifiques liées à l'analyse graphique et d'image.
  • Unité de traitement neuronal (NPU / Neural Engine). Apple a intégré le moteur neuronal dans ses appareils à partir de la puce A11 (iPhone 8 / X), et à partir de l'A12 (iPhone XR et plus récent), il est déjà possible d'effectuer plus de 5 trillions d'opérations par seconde sur le NPU (TOPS). Au moment de l'écriture, les derniers puces A17 Pro et A18 / A18 Pro sont capables de 35 TOPS. Ceci est utilisé pour l'inférence de modèles pour la détection cellulaire et la classification, l'évaluation de fond de l'échantillon, et des tâches similaires, libérant la CPU / GPU.
  • Responsable de la logique globale, du contrôle, du traitement de la configuration, de la sérialisation/désérialisation, du travail avec les API et le système de fichiers – essentiellement tout ce qui ne relève pas des deux composants précédents.

Nous allons discuter de cela en utilisant l’iPhone XR (A12 Bionic, 2018) comme une sorte de base, même si c’est déjà un appareil plus ancien.

  • un flux vidéo de 50 fps à partir de la caméra du microscope,
  • effectuer simultanément l’inférence CoreML (~ 15 ms par cadre),
  • enregistrer simultanément les données sur le disque et les synchroniser avec le cloud,
  • maintenir la température dans des limites acceptables (si le défilement et la priorisation des tâches sont soigneusement configurés).

Néanmoins, l’appareil pourrait se réchauffer de manière notable et commencer à ralentir.Par exemple, lors de l’analyse des taches de paludisme, où il est nécessaire de traiter plus de 100 cellules dans un seul cadre, le gouttelage thermique commencerait dès la deuxième ou la troisième tache – la fréquence de la CPU baisserait et des retards d’interface et des ralentissements apparaîtraient.En outre, le contact étroit de l’adaptateur avec le panneau arrière de l’appareil empêche la dissipation de chaleur.

Thermal image of the iPhone during operation

La capture d'écran ci-dessous montre une analyse différente, pas le paludisme - mais ce qui est important ici, c'est combien de détections sont déclenchées par cadre.

Numerous cell detections per frame

En général, sur iOS, il est possible de surveiller l'état thermique du système viaProcessInfo.processInfo.thermalState RésultatsDans notre environnement de production, nous n'avons jamais atteint le niveau Critical, mais le niveau Serious se produit régulièrement sous une charge très élevée.Pour les mesures de performance, nous avons utilisé Xcode Profiler, qui vous permet de mesurer la CPU, la GPU et la charge de mémoire, ainsi que l'état thermique:

Performance Debugging via Xcode Profiler

Voici un tableau des valeurs thermalState avec des explications de la documentation:

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

Nominalement

Aucune action corrective n’est nécessaire.

équitable

La température est légèrement élevée.Les applications peuvent initier de manière proactive des mesures d'économie d'énergie.

L’analyse de la photo est interrompue.

sérieux

Les applications devraient réduire l'utilisation de la CPU, de la GPU et des opérations I/O.

ARKit et FaceTime réduisent le taux de cadrage (FPS). la restauration de sauvegarde iCloud est arrêtée.

critique

Les applications devraient réduire l'utilisation de la CPU, de la GPU et de l'I/O et cesser d'utiliser les périphériques (par exemple, la caméra).

ARKit et FaceTime réduisent considérablement le taux de cadrage (FPS).

Une analyse thermique et de puissance complète mérite un article distinct - comme je l'ai mentionné au début, je ne veux pas aller trop loin ici.Sources publiquement disponiblesOn peut à peu près supposer que leSeriousL’état correspond à 80–90 °C au niveau du chip et à environ ~40 °C à la surface.

L’iPhone fonctionne avec tous lesBluetooth à faible puissancepour d'autres appareils, il existe un flux séparé, où l'appareil doitMFI(Made for iPhone) certification, fonctionner via le iAP2 (Apple Accessory Protocol), etc. En bref – ce n’est pas notre cas.

Il est utile ici de rappeler les rôles et la structure de base du protocole :

  • Habituellement, le périphérique envoie des données ou attend une connexion (exemples: une montre, un thermomètre, un moniteur de fréquence cardiaque).
  • Central — un appareil qui se connecte à la périphérie. Il déclenche la connexion, envoie des commandes et reçoit des données.
  • GATT (Generic Attribute Profile) — la structure à travers laquelle les dispositifs BLE échangent des données.
  • Services et caractéristiques – les données dans une connexion BLE sont structurées en services (groupes logiques) et en caractéristiques (paramètres spécifiques). par exemple, un tracker de conditionnement physique peut avoir un service de fréquence cardiaque, qui comprend une caractéristique de mesure de fréquence cardiaque (fréquence cardiaque actuelle).

Dans notre cas, l’iPhone contrôle la scène via son module BLE intégré, qui est reconnu comme un périphérique avec un service GATT personnalisé et exécute deux tâches :

  • envoyer des commandes de mouvement au contrôleur pour les axes XY et le contrôle de mise au point le long de l'axe Z
  • recevoir des données du responsable du traitement (status, position)

En ce qui concerne la charge thermique, la connexion BLE ne devrait pas contribuer de manière notable.Selon les données de Silicon Labs dans leurdocument sur la consommation d'électricité BLE, transmettre des commandes ou recevoir un état à une fréquence de 20 Hz (un intervalle de 50 ms):

  • La consommation de puissance typique de l'iPhone XR est d'environ 50-100 mW. Une augmentation de moins de 1 mW est presque négligeable, en particulier par rapport au traitement du réseau neuronal, à l'utilisation de la GPU et à l'affichage.
  • La chaîne de radio est active seulement environ 2% du temps, dormant le reste du temps.

Nous allons approfondir les détails du travail de l’application avec le module et le contrôleur BLE dans la section « Travailler avec le stade motorisé ».

Nous utilisons la caméra arrière primaire (à large angle): nous capturons la vidéo H.264 à une résolution de 1280×720 et à une vitesse de bits d’environ 40 Mbps.

  • Plus le taux de bits est élevé, plus de données par unité de temps → plus la qualité de l’image est élevée. 40 Mbps est assez élevé pour une résolution de 1280×720 (HD).
  • H.264 est une norme internationale d’encodage vidéo, également connue sous le nom AVC – Advanced Video Coding ou MPEG-4 Part 10.Il élimine les données redondantes (compression inter-frame et intra-frame), réduisant la vitesse de bits et, par conséquent, la taille du fichier. (Par ailleurs, nous avons également eu la tâche d’enregistrer la vidéo de l’ensemble de l’analyse à des fins de débogage et de validation.)

Ainsi, ce que nous finissons par faire n’est pas seulement un client d’interface mobile, mais un périphérique de bord complet – c’est-à-dire un périphérique qui traite les données localement, sans connexion constante à un serveur.

Application mobile

Maintenant que nous avons couvert la partie matérielle, regardons comment tout cela fonctionne au niveau de l'application.

  • À l'entrée, l'application reçoit un flux de cadres de la caméra - le champ de vision du microscope se déplaçant à travers le frottis.
  • At the output, the application must:
    • 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)

Overall frame processing flow in the application

Comme le montre le diagramme ci-dessus, tout tourne autour du cadre de l'appareil photo - la détection, la navigation à travers la diapositive et la détermination des objets qui doivent être envoyés dans le cloud dépendent de cela.

1) Preprocess the framesCela inclut la correction de la distorsion, la suppression des artefacts, l'évaluation du niveau de brouillard et la correction de la lumière et de la couleur.

Par exemple, chaque laboratoire ou microscope a des conditions d'éclairage spécifiques, ce qui peut provoquer un dysfonctionnement du réseau neuronal.Ici, il est nécessaire d'effectuer une normalisation de l'équilibre des blancs - en dirigant le champ de vision vers une zone vide et en initiant l'ajustement de l'équilibre des blancs de la caméra.

Image before and after calibration

Nous avons également eu un bug où les cellules ont été envoyées au portail sans calibration des couleurs.Cela est arrivé parce que la détection a été lancée en parallèle avant que les paramètres de la caméra aient été appliqués.

Image from the portal showing a cell frame without calibration

2) Detect, classify,etcountLes cellules sans duplicates

Par exemple, sur la photo ci-dessous, certains dupliques sont marqués en rouge dans l'une des analyses plus anciennes:

Image from the portal showing duplicate cells

3) Control the microscopede sorte qu’il se déplace correctement à travers la diapositive, des transitions d’une diapositive à une autre, et, surtout, se concentre précisément sur la diapositive, détectant quand elle dépasse les limites de la diapositive ou atterrit sur des zones vides.

4) Uploaddes lots de cellules vers le cloud (snapshots, métadonnées) sans bloquer le traitement de l’analyse suivante.

5) RepeatCe processus n fois, car les analyses sont effectuées en lots.

6)Et réalisez tout cela sans surchauffer le téléphone.

L’application a évolué dans la mode de démarrage typique : une preuve de concept a été rapidement mise ensemble, puis raffinée en un MVP (Minimum Viable Product) adapté au pilotage dans les laboratoires et au pitch aux investisseurs.En conséquence, l’architecture de l’application est devenue hybride : certains écrans sont mis en œuvre à l’aide d’écrans MVP (Model-View-Presenter) basés sur UIKit, tandis que de nouvelles fonctionnalités et interfaces sont écrites en Swift avec MVVM (Model-View-ViewModel).

Nous utilisons une couche de service pour isoler la logique commerciale :CameraService, àBluetoothController, àAnalysisServiceEn ce qui concerne la réactivité et les chaînes asynchrones avec les abonnements d’événements, nous avons eu une « voie évolutionnaire » : nous avons d’abord adopté RxSwift, puis commencé à passer à Combine, et avec l’avènement de l’async/await, une partie des chaînes s’y est déplacée. Le résultat était une sorte de « Frankenstein », mais nous avons plus tard isolé ces composants en modules séparés afin qu’à l’avenir, nous puissions simplement échanger un composant pour une nouvelle pile de technologie.

Screenshot of debugging via NSLogger with images of cells

Un article entier pourrait être écrit sur les tests: de la moquerie des parties individuelles de l'analyse et de la détermination rapide des états souhaités viaProcessInfo(Par ailleurs, j’ai unPetite note techniquesur ce sujet), à simuler les étapes individuelles de l'analyse et à en couvrir l'ensemble avec des tests d'intégration et d'unité.

Mais revenons au traitement des cadres et jetons un coup d’œil à un diagramme architectural légèrement plus détaillé que celui ci-dessus:

  • Analyse Controller - le centre de prise de décision: reçoit les cadres et lance le traitement dans le pipeline de cadre.
  • Service de caméra - reçoit le flux de cadre brut de l'appareil photo, le transforme et le transmet en avant.
  • Microscope Controller - contrôle le contrôleur du microscope.
  • Frame Pipeline — a chain consisting of several stages:
    • Preprocessing — correction, filtering
    • Detection — object/cell detection
    • Counting — counting unique objects
    • Postprocessing — final filtering and preparation for visualization
  • UI - responsable de l'affichage des résultats à l'utilisateur en temps réel (bounding boxes, statistiques, alertes).
  • Uploader — synchronizes analysis artifacts (snapshots, cells, config) with the backend.

En ce qui concerne le gestionnaire de dépendance : nous avons initialement utilisé CocoaPods (qui est entrémode de maintenance et le développement actif arrêtéÀ partir de 2024), mais plus tard a introduit SPM (Swift Package Manager). Certains services (Computer Vision, Bluetooth, utilitaires) ont été déplacés dans les modules SPM. Il y a aussi eu des tentatives de séparer le code ObjC/C++ en xcframeworks individuels, mais il n'y avait pas assez de temps pour trier tout cela, donc nous avons laissé ce code dans le projet principal. ObjC était nécessaire comme un enveloppe autour de C++ afin qu'il puisse être appelé à partir de Swift. Cela a entraîné des classes ObjC++: leurs interfaces sont purement ObjC, permettant à Swift d'interagir avec eux, tandis que leurs implémentations mélangent le code ObjC et C++. Cela était avantSwift prend en charge les appels directs vers C++.

Je devrais mentionner que je suis loin d'être un gourou dans les algorithmes C++ et Computer Vision, mais mes responsabilités incluaient l'obtention d'une compréhension de base et la portation d'algorithmes et d'heuristiques à partir de Python, qui était l'endroit où la plupart de notre R&D a été menée.

Tasks

Suppression de la distorsion

L'un des adaptateurs a montré un artefact de distorsion optique dans l'image. En conséquence, une cellule qui devrait apparaître ronde ressemblerait allongée ou déformée, en particulier vers les bords du cadre.Le cv d’OpenCV : undistort()Pour restaurer la géométrie du cadre :

  1. We calibrate the camera — capturing images of a chessboard/grid with known geometry.

  2. OpenCV computes:

    1. the camera matrix K (projection parameters)
    2. distortion coefficients D = [k1, k2, p1, p2, k3, …]
  3. We apply cv::undistort() or cv::initUndistortRectifyMap() + remap():

    1. this computes where each point “should have landed” in reality
    2. the image is “straightened” back to correct geometry

Examples of optical distortion

Plus tard, l'adaptateur a été remplacé - cette étape a été supprimée.

Determining Position on the Slide

Determining Position on the Slide

Pour compter les cellules avec précision, il est essentiel de connaître leurs coordonnées aussi précisément que possible.VidéoIci, vous pouvez voir ce qui se passe lorsque la détermination du changement est incorrecte.

Initially, we tried calculating the relative shift between two frames and summing up the absolute shift. We tested several approaches:

  • la méthode classique d'enregistrement d'images via la corrélation de phase basée sur le Fast Fourier Transform. Nous avons mis en œuvre ceci dans OpenCV et nous avons même utilisé Apple Accelerate.
  • méthodes basées sur des points clés locaux avec descripteurs : SURF, SIFT, ORB, et autres.
  • Flux optique
  • Application intégrée d'Apple VisionTranslationalImageRegistrationRequest

D’une part, nous avions quelques hypothèses :

  • no scaling or rotations were present
  • Optique : un frottis propre et non flou, sans espaces vides

Malgré cela, il y avait toujours des problèmes en raison de changements d'éclairage, de mise au point, d'erreurs accumulées, de changements brusques, de bruit ou d'objets dans l'image.

Cela a entraîné une table de comparaison comme celle ci-dessous:

Voici votre traduction précise du tableau et du texte fournis:

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)

Détection de changement global très rapide, facile à mettre en œuvre

Accumule des erreurs, pas robuste pour les changements brusques

Requiert des images de la même taille, adaptées aux changements « purs »

Very high

Utilisé comme méthode principale

SIFT

Haute précision, échelle / rotation invariante

Lent, autrefois non libre

Excellent pour des scènes variées avec des textures et des transformations complexes

lentement

Option expérimentale

SURF

Plus rapide que SIFT, également invariant d'échelle/rotation

Propriétaire, pas toujours disponible

Un peu mieux adapté pour le temps réel mais toujours « lourd »

médium

Option expérimentale, notamment depuis que sous brevet

ORB

Rapide, libre, rotation invariante

Sensible à l'éclairage, pas résistant aux changements d'échelle

Fonctionne assez bien pour le stitching d'image

haute

Avant de nous déplacer vers le cloud, nous avions des versions utilisant ce

Optical Flow (Lucas-Kanade)

Suit le mouvement des points entre les cadres, bon pour la vidéo

Ne gère pas les transformations mondiales, sensible à l'éclairage

Meilleur en vidéos ou séquences avec un mouvement minimal

médium

Nous avons expérimenté avec cela pour la numérisation (sticking) des images

Optical Flow (Farneback)

Carte de mouvement dense, applicable à l'ensemble de l'image

Lent, sensible au bruit

Bon pour analyser les mouvements locaux dans un cadre

lentement

Nous avons expérimenté avec cela pour la numérisation (sticking) des images

Apple Vision (VNTranslationalImageRegistrationRequest)

API très pratique, rapide, optimisée pour le matériel

Dans notre cas, la précision était pauvre

Parfait pour les cas d'utilisation simples sur iOS/macOS

très haut

Nous avons essayé et nous l'avons abandonné

Pour chaque option, nous avons essayé de trouver la configuration optimale en termes de précision et de performance pour comparer contre un changement de référence: nous avons varié les résolutions d'image, les paramètres d'algorithme et les différents paramètres d'optique de la caméra et du microscope.

Shift experiments

Et voici à quoi ressemblait le processus de débogage pour la détection des points clés, que nous avions l’intention d’utiliser plus tard pour calculer le changement.

Excerpt from a Jupyter notebook with keypoint debugging for shift detection

En conséquence, une fois que la phase robotique a été introduite dans notre système, nous avons commencé à utiliser les coordonnées de son contrôleur, que nous avons ensuite raffiné en utilisant l'heuristique CV.

Cellule à compter

Essentiellement, la tâche du comptage des cellules est un cas spécifique de suivi des objets et de déduplication : « pour identifier ce qu’est la cellule, éviter de la compter deux fois, éviter le surcompte et ne pas manquer les cellules nécessaires – tout cela en fractions de seconde, en temps réel via la caméra et en fonctionnement sur le matériel du téléphone. »

  1. Détection d'objets. Nous utilisons des réseaux neuronaux pour détecter des objets dans le cadre (Bounding Box, BB). Chaque BB a son propre score de confiance (confiance du réseau) et classe cellulaire.

BBoxes of detected cells

Pour lutter contre le bruit de fond et les faux positifs, nous appliquons un filtrage rapide :

  • Par exemple, ici à gauche, un éclairage rouge marque un érythrocyte – mais le réseau neuronal l’a initialement classé comme un leucocyte.
  • Cependant, les filtres de couleur sont entrés en jeu par la suite, et il a été filtré.

A red highlight marks an erythrocyte discarded by the filters.

Un éclairage rouge marque un érythrocyte rejeté par les filtres.

  • 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

    A cell that failed the geometric filtering.

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

Metrics for comparing two BBoxes

En général, il est nécessaire de maintenir le suivi des objets entre les cadres, surtout si nous reconsidérons les zones précédemment scannées du frottis.

numérisation

L’une des tâches consistait à numériser le scan, en créant essentiellement un scanner d’histologie basé sur un logiciel.La photo ci-dessous montre à quoi il ressemble: les flèches indiquent le mouvement utilisé pour construire le scan, où nous capturons les cadres et les piquons en une seule grande image.

Movement of the field of view across the smear

Mouvement du champ de vision à travers le frottis

Ici encore, la détermination de la position précise était essentielle, suivie d’une couture parfaite.

Il convient de noter que, au début, nous n’avions pas de scène motorisée et nous nous appuyions sur la navigation manuelle. Imaginez essayer d’assembler une mosaïque à partir de centaines de fragments.

Voici à quoi ressemblaient les premières expériences: sauts de champs de vue, coutures, différences d'éclairage, espaces vides.

On the left — a map with uneven brightness and exposure, where “seams” are visible at the frame junctions. On the right — unevenly stitched tissue images with gaps.

À gauche - une carte avec une luminosité et une exposition inégales, où les "fissures" sont visibles aux jonctions du cadre.

Ou, par exemple, un utilisateur scanne le frottis, se déplaçant rapidement à travers celui-ci – certaines zones finissent par être floues (Motion Blur).Nous avons essayé de rejeter de tels cadres s’ils ne remplissaient pas le seuil de flou acceptable ou si le changement ne pouvait pas être calculé pour eux.

Blurred frames overlaid on the scan during abrupt movement

Des cadres floués surmontés sur le scan lors d'un mouvement abrupt

Nous avons progressé progressivement vers l’approche suivante :

A more properly stitched scan image

Il y a eu de nombreuses itérations: couture sur l'appareil, en utilisant différentes méthodes, à différentes résolutions de cadres et configurations de caméra. Nous sommes finalement arrivés à la solution où la numérisation est assemblée dans le cloud, et l'appareil mobile envoie des cadres avec un équilibre et une exposition calibrées.

Voici un exemple de la façon dont nous avons mesuré la vitesse de traitement des composants de traitement de cadre individuels en fonction de la configuration: les paramètres de l'appareil photo, les algorithmes sélectionnés et leurs paramètres. (il y a ici un peu de mélange avec le russe, mais j'espère que l'idée globale est claire)

Table of performance experiments

Travailler avec la phase motorisée

Maintenant — les détails sur la connexion entre l'iPhone et la scène motorisée: comment nous communiquons via BLE, quelles commandes nous envoyons, et comment nous avons configuré l'autofocus.Le dispositif mobile se connecte via Bluetooth au contrôleur sur la scène et se déplace le long des coordonnées XYZ. Plus précisément, c'est la scène elle-même qui se déplace, mais du point de vue de l'image vue à travers la lentille objective par le dispositif mobile, il semble que le mouvement se produit à travers la diapositive.

Notre scène est également personnalisée – non pas parce que nous « voulons tout faire nous-mêmes », mais parce que les solutions commerciales commencent à 10 000 $, et ce n’est pas une blague. Nous avons embauché un bureau de conception et construit notre propre version pour environ 800 $. Cela s’est avéré nettement moins cher parce que l’un des ingénieurs a remarqué à temps que la construction d’une scène de microscope motorisé ressemble suspectement à une imprimante 3D. La même cinématique XYZ, les mêmes moteurs à étapes, les mêmes rails. En conséquence, nous utilisons des composants produits en masse et peu coûteux, mais adaptés à nos exigences spécifiques. Structurellement, la scène se compose de trois parties: la plate-forme X

Components of the motorized microscope stage

Composants de la phase du microscope motorisé

Pour le mouvement manuel des étapes, nous utilisons un joystick virtuel (affichant des boutons de mouvement à l'utilisateur sur l'écran) - il est utilisé dans les scénarios d'étalonnage et de configuration du système. Cependant, lors de l'analyse, le contrôle est toujours automatisé.

Communication Protocol

Protocole de communication

En tant qu’interface Bluetooth, nous utilisons leLe HC-08Le module BLE fonctionne par défaut en mode terminal texte, ce qui signifie que les demandes et les réponses passent simplement en arrière et en avant. Pour les tâches de configuration et de système (changement de nom, vitesse de communication), des commandes AT sont utilisées.

Le contrôleur lui-même exécute le firmware basé sur GRBL, en utilisantLe code GLes principaux scénarios sont ici :

  • initialisation de la connexion (le téléphone doit détecter que la phase est connectée)
  • scanner la diapositive (mettre la scène le long de tous les axes)
  • Arrêt / réinitialisation du scan
  • Gérer les situations exceptionnelles : atteindre le commutateur limite, interrompre le mouvement, surcharge de buffer de commande.

General schematic of the robotic microscope

GRBL a son propre ensemble de commandes qui commencent par le$Un symbole par exemple :

  • $H - homing ou calibration et recherche du zéro matériel via les commutateurs limites. Habituellement effectué au démarrage initial et plus tard si une erreur accumulée importante se produit pendant le mouvement.
  • $J=<command> — Jogging mode, which simulates joystick control. The command itself should describe relative movement along all axes. An example of such a command: $J=G21G91Y1F10
    • G21 — units in millimeters
    • G91 — relative positioning
    • Y1 — movement along the Y-axis by 1 millimeter
    • F10 — movement speed.
  • ? — Recherche d’état GRBL. Retourne une chaîne avec les paramètres clés de la machine. Exemple de réponse: <Alarm̧MPos:0.000,0.000,0.000 ÁthaFS:0,0 ÁthaPn:XYZ ÁthaWCO:-5.300,0.000,-2.062>

Nous sommes intéressés par les deux premiers paramètres :

  • Il peut être « Idle », « Running » ou « Alarm ».
  • MPos - la position actuelle de la scène.

Bref, GRBL est un firmware open-source du monde CNC, parfaitement adapté pour contrôler des systèmes à trois axes (XY+Z) via des commandes G-code simples.Nous avons choisi le module BLE le plus simple possible – le HC-08 – pour éviter de traiter avec MFi et iAP.Il était crucial pour nous que l’iPhone puisse envoyer des commandes de manière fiable et recevoir des mises à jour de statut avec une latence minimale, sans augmenter considérablement le coût du kit.

Tâches

Autofocus

Plus tôt, j'ai mentionné la mise au point. Ce processus est effectué périodiquement pendant la numérisation de la mise au point car l'échantillon est appliqué de manière inégale, ce qui est particulièrement perceptible lors d'augmentations élevées. Il est nécessaire de surveiller le niveau de brouillard et d'ajuster la mise au point dans le temps.

Le graphique ci-dessous montre la relation entre le niveau de mise au point et le temps.Nous commençons par une image floue, déplaçant progressivement la scène vers la position de mise au point optimale.

Le scanner

Il convient de noter ici que la numérisation peut être effectuée à différentes magnifications: de 5x à 40x. À des niveaux de zoom inférieurs, il est plus facile de naviguer et de détecter les limites du frottis, tandis qu’à des magnifications plus élevées, les détails cellulaires deviennent visibles.

Pyramidal structure of the virtual slide

Dans notre cas, nous travaillons à deux niveaux :

  1. 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:

    Histological tissue image at 4x magnification

  2. 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:

    1. the image is in focus
    2. the controller is in an idle state, i.e., not moving

Smear scanning process

Pour que l’utilisateur n’ait pas à changer d’objectif à chaque fois, nous effectuons la détection des limites et la numérisation sur toutes les diapositives du lot en même temps, tout en téléchargant le lot précédent dans le cloud en parallèle.

Conclusion

Ce projet a démontré que même un smartphone de 2018 peut gérer des tâches qui nécessitaient auparavant des ordinateurs de bureau, des serveurs et des microscopes automatisés coûteux. Bien sûr, il reste encore beaucoup de choses derrière les coulisses: de la collecte des ensembles de données à la finition des paramètres d'exposition. Si vous êtes intéressé, je serai heureux de couvrir cela séparément. Sentez-vous libre de poser des questions, de partager vos propres expériences, et peut-être ensemble, nous créerons un suivi ou nous plongerons plus profondément dans des aspects spécifiques.

On va se connecter !

Ansar

  • E-mail : ansaril3g@gmail.com
  • Étiquette : Ansar Zhalyal
  • Télégramme : @celly_ai

Amine

  • E-mail : amin.benarieb@gmail.com
  • Étiquette : Amin Benarieb
  • Télégramme : @aminbenarieb


Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks