Edocti
Fortgeschrittene technische Ausbildung für den modernen Softwareingenieur

Deep Learning at the Edge - Teil 2: Semantic Segmentation auf Drive PX2 & Jetson TX2

Geschrieben von Paul Ianas | Embedded AI & Automotive Expert bei Edocti

In Teil 1 dieser Serie haben wir das mathematische Fundament der Fixed-Point (FXP)-Arithmetik gelegt. Wir untersuchten das Qn.q-Format, den Dynamic Range und die Gründe, warum eine Reduzierung der Bit-Breite (Bit-Width) für das Deployment von AI in Embedded-Umgebungen unerlässlich ist.

Nun ist es an der Zeit, die Lücke zwischen Theorie und Automotive-Produktion zu schließen. In diesem Artikel behandeln wir die MAC (Multiply-Accumulate)-Operation – das Herzstück Convolutional Neural Networks (CNNs) – und demonstrieren, wie wir Fixed-Point (speziell INT8 und FP16) auf ein modifiziertes AlexNet zur semantischen Bildsegmentierung angewendet haben.

Wir werden uns den Deployment-Prozess und die realen Performance-Gewinne auf der NVIDIA Drive PX2 und dem Jetson TX2 genauer ansehen.

Die MAC-Operation: Warum Precision auf Kosten der Geschwindigkeit geht

In jedem CNN wird die überwiegende Mehrheit der Rechenzeit für Millionen von MAC (Multiply-Accumulate)-Operationen während der Convolution-Phasen aufgewendet. Eine MAC-Operation berechnet im Wesentlichen das Skalarprodukt (Dot Product) aus Weights und Input-Activations:

Accumulator = Accumulator + (Weight * Activation)

Wird dies im Standard FP32 (32-Bit Floating Point) ausgeführt, benötigt die Hardware komplexe Logik, um das Alignment der Mantisse, die Addition der Exponenten und die Normalisierung durchzuführen. Wie wir in Teil 1 bewiesen haben, nutzt der Prozessor bei der Konvertierung dieser Zahlen in ein 8-Bit- oder 16-Bit-Fixed-Point-Format (INT8 / FP16) ausschließlich einfache Integer-Arithmetik.

NVIDIAs Pascal-Architektur (sowohl auf dem TX2 als auch auf der Drive PX2 vorhanden) beschleunigt diese Operationen massiv. Die dedizierten GPUs auf der Drive PX2 nutzen spezialisierte dp4a-Instruktionen, wodurch vier 8-Bit-Integer-MAC-Operationen in einem einzigen Taktzyklus ausgeführt und in einem 32-Bit-Integer akkumuliert werden können. Das steigert die Operations Per Second (OPS) enorm, während die benötigte Speicherbandbreite (Memory Bandwidth) zum Laden der Weights massiv reduziert wird.

Die Herausforderung: Semantic Segmentation mit FCN-AlexNet

Für das autonome Fahren (Autonomous Driving) reicht Objekterkennung (Bounding Boxes) oft nicht aus. Wir benötigen Semantic Segmentation – also die Klassifizierung jedes einzelnen Pixels im Kamera-Stream in Kategorien wie Straße, Fußgänger, Fahrzeug oder Gehweg.

Wir verwendeten ein modifiziertes Fully Convolutional Network basierend auf AlexNet (FCN-AlexNet). Während das Standard-AlexNet mit dichten, Fully-Connected Layern zur Klassifikation endet, ersetzt ein FCN diese durch 1x1 Convolutions und Upsampling-Layer (Deconvolution), um eine dichte pixelweise Klassifikationskarte (Classification Map) auszugeben.

Dieses rechenintensive Netzwerk (Pixel-Heavy) mit 30+ FPS in FP32 auf Embedded-Geräten auszuführen, stellt eine massive thermische und rechnerische Herausforderung dar. Hier kommt Post-Training Quantization (PTQ) mit NVIDIA TensorRT ins Spiel.

Von FP32 zu INT8: Der Kalibrierungsprozess

Um die Frage aus Teil 1 zu beantworten: „Sollten Sie von Beginn an in FXP trainieren oder in FP32 trainieren und erst beim Deployment transformieren?“

Obwohl Quantization-Aware Training (QAT) immer beliebter wird, ist der robusteste Industrie-Standard für diese Architekturen die Post-Training Quantization. Wir trainieren das Netzwerk ganz normal in FP32 (mit Frameworks wie TensorFlow oder PyTorch), frieren die Weights ein (Freeze) und nutzen TensorRT, um das Modell kurz vor dem Deployment in INT8 zu konvertieren.

Man kann jedoch FP32 nicht einfach auf INT8 trunkieren. Der Floating-Point Dynamic Range muss auf den sehr begrenzten 8-Bit-Bereich [-128, 127] gemappt werden. Mappt man einfach den absoluten Maximalwert auf 127, stauchen Outlier alle wichtigen Daten in nur wenige Bits zusammen, was die Accuracy vollständig zerstört.

TensorRT Entropy Calibration

TensorRT löst dies mithilfe eines Entropy Calibrators (basierend auf der Kullback-Leibler-Divergenz). Man übergibt dem Calibrator einen repräsentativen Batch des Datasets (z. B. 500 Bilder von typischen Fahrsituationen). TensorRT analysiert die Verteilung der Activations in jedem Layer und berechnet den optimalen Skalierungsfaktor (Scaling Factor), der den Informationsverlust minimiert.

Hier ist ein konzeptionelles C++ Snippet, das zeigt, wie der TensorRT Builder für die INT8-Kalibrierung auf einer Drive PX2 konfiguriert wird:

// 1. Create the builder and network
IBuilder* builder = createInferBuilder(gLogger);
INetworkDefinition* network = builder->createNetwork();

// 2. Enable INT8 mode
builder->setInt8Mode(true);

// 3. Provide the custom Entropy Calibrator (Inherited from IInt8EntropyCalibrator)
Int8EntropyCalibrator* calibrator = new Int8EntropyCalibrator(calibrationBatchStream, "calibration_table.cache");
builder->setInt8Calibrator(calibrator);

// 4. Build the highly-optimized execution engine
ICudaEngine* engine = builder->buildCudaEngine(*network);

Performance-Gewinne: Drive PX2 und Jetson TX2

Sobald die INT8-Kalibrierungstabelle generiert war, haben wir die optimierte FCN-AlexNet Engine deployed. Der Jetson TX2 (Parker SoC) glänzt vor allem bei FP16 (Half-Precision) und bietet nativ den doppelten Throughput (Durchsatz) im Vergleich zu FP32. Die Drive PX2 AutoCruise (mit ihren diskreten Pascal GPUs) nutzt hingegen die volle INT8 Optimierung.

Hier sind die normalisierten Performance-Metriken, die wir während unserer Autonomous Driving Tests (Verarbeitung von 1280x720 Kamera-Frames) gemessen haben:

Plattform Precision Memory Footprint (Weights) Inference Latency (ms) FPS (ca.) Accuracy Drop (mIoU)
Jetson TX2 FP32 ~240 MB ~85 ms 11 FPS Baseline
Jetson TX2 FP16 ~120 MB ~45 ms 22 FPS < 0.1%
Drive PX2 (dGPU) FP32 ~240 MB ~40 ms 25 FPS Baseline
Drive PX2 (dGPU) INT8 ~60 MB ~12 ms 80+ FPS ~0.8% - 1.2%

Beobachtungen und Einschränkungen

  • Latency & Memory: Der Wechsel zu INT8 reduzierte die Modellgröße exakt um das Vierfache (von 32 auf 8 Bit pro Weight), was Flaschenhälse im Memory-Bus drastisch minimierte. Die Latenz verbesserte sich auf der Drive PX2 um mehr als das Dreifache.
  • Accuracy: Der Verlust beim Mean Intersection over Union (mIoU) war vernachlässigbar (ca. 1 %). Bei der visuellen Überprüfung von Edge-Cases stellten wir jedoch eine leichte Verschlechterung bei sehr weit entfernten, kleinen Objekten (z. B. Fußgängern weit hinten auf der Straße) fest. Dies geschieht, weil INT8 nicht über den erforderlichen Dynamic Range verfügt, um winzige Activation-Unterschiede tief im Netzwerk aufzulösen.
  • Das Calibration Set: Die Qualität des INT8-Modells ist stark vom Kalibrierungs-Datensatz abhängig. Wenn Ihr Calibration Set keine Nachtfahrten enthält, ist der Dynamic Range des Netzwerks bei Dunkelheit falsch ausgerichtet, was zu unvorhersehbaren Segmentation-Ergebnissen führt.

Fazit

Fixed-Point-Arithmetik ist kein rein theoretisches Konzept; es ist der absolute Standard für den Einsatz produktionsreifer KI in der Automobilindustrie. Durch die Kombination von TensorRT mit Hardware wie der Drive PX2 oder dem Jetson TX2 können wir langsame, schwere FP32-Modelle in blitzschnelle INT8-Engines verwandeln, ohne die für das Autonomous Driving erforderliche Sicherheit und Accuracy zu beeinträchtigen.

In den kommenden Newslettern werden wir uns dem Thema Systems Engineering widmen – genauer gesagt der hochpräzisen Synchronisation von Clocks mittels (g)PTP über Ethernet, einer absolut kritischen Komponente für Sensor Fusion.

Bereit, Deep Learning at the Edge zu meistern?

Wenn diese Optimierungstechniken für Sie wertvoll waren, gehen Sie den nächsten Schritt in Ihrer Karriere. Lernen Sie, wie Sie hochleistungsfähige Computer Vision Modelle direkt auf Embedded-Hardware entwerfen, trainieren und deployen.

Entdecken Sie den Deep Learning & Computer Vision Kurs

Über Edocti R&D

Dieser Newsletter ist Teil einer technischen Serie von Edocti . Wir teilen praxisnahe Erkenntnisse, die wir direkt aus unseren Engineering-Projekten gewonnen haben. Unser Hauptfokus liegt auf Industrial Autonomous Driving, Robotics und Industrial IoT. Wir sind spezialisiert auf RTOS (QNX, Integrity, OSEK), Linux Internals, Deep Learning und Computer Vision Architekturen für Tier-1 Zulieferer.