Feature Maps
Eine Feature-Map ist das Raster der Antworten, die ein Filter über ein Bild hinweg erzeugt. Sie zeigt, wo dessen Muster auftritt. Behandelt Berechnung, Formen und Visualisierung.
Eine Merkmalskarte ist die Ausgabe eines Filters in einer Schicht eines Faltungsneuronalen Netzwerks (CNN): ein zweidimensionales Raster aus Zahlen, das erfasst, wie stark das Muster des Filters an jeder Position der Eingabe vorkommt. Eine Faltungsschicht mit 64 Filtern erzeugt 64 Merkmalskarten, die zu einem Tensor der Form Kanäle × Höhe × Breite gestapelt werden. Dieser Tensor wird zur Eingabe der nächsten Schicht. Merkmalskarten früher Schichten heben Kanten, Farben und Texturen hervor. Karten tieferer Schichten reagieren auf Objektteile und ganze Objekte. Aktivierungskarte ist ein Synonym. Der gesamte gestapelte Tensor einer Schicht wird häufig ebenfalls als deren Merkmalskarte bezeichnet.
So wird eine Merkmalskarte berechnet#
Ein Filter, auch Kernel genannt, ist ein kleines Raster aus erlernten Modellgewichten, typischerweise 3×3 für jeden Eingabekanal. Die Faltung verschiebt ihn über die Eingabe. An jeder Position werden die überlappenden Werte elementweise multipliziert und addiert. Hinzu kommt ein Bias, sodass eine einzelne Ausgabenzahl entsteht. Hohe Ausgabewerte kennzeichnen Stellen, an denen die Eingabe dem Filtermuster entspricht. Die Höhe und Breite der Ausgabe ergeben sich aus Eingabegröße, Kernelgröße k, Padding p und Stride s gemäß floor((input + 2p - k) / s) + 1. Ein Kernel der Größe 3×3 mit Padding 1 behält daher bei Stride 1 die ursprüngliche Größe bei und halbiert sie bei Stride 2.
Der folgende Ausschnitt wendet einen Kernel für vertikale Kanten auf ein kleines Bild an, das links dunkel und rechts hell ist.
import torch
import torch.nn.functional as F
# Ein Graustufenbild mit 8x8 Pixeln: Die linke Hälfte ist dunkel, die rechte hell, sodass eine vertikale Kante entsteht
image = torch.zeros(1, 1, 8, 8)
image[..., 4:] = 1.0
# Ein 3x3-Sobel-Kernel, der auf vertikale Kanten reagiert
kernel = torch.tensor([[-1.0, 0.0, 1.0], [-2.0, 0.0, 2.0], [-1.0, 0.0, 1.0]]).view(1, 1, 3, 3)
# Den Kernel über das Bild schieben, um eine Merkmalskarte zu erzeugen
feature_map = F.conv2d(image, kernel)
print(feature_map.shape)
print(feature_map[0, 0, 0])Das Skript gibt torch.Size([1, 1, 6, 6]) und tensor([0., 0., 4., 4., 0., 0.]) aus. Ohne Padding ergibt das 8×8-Bild eine 6×6-Karte (8 − 3 + 1 = 6). Die Karte ist nur in den beiden Spalten ungleich null, in denen der Kernel die Kante überlappt. Trainierte CNNs lernen viele Filter der ersten Schicht, die sich wie dieser Sobel-Kernel verhalten, sowie auf Farben und Texturen abgestimmte Filter.
Merkmalskarten im Netzwerkverlauf#
Wenn Daten ein CNN durchlaufen, werden Merkmalskarten meist in Höhe und Breite kleiner, während die Anzahl der Kanäle zunimmt. Jeder Schritt der Verkleinerung halbiert die Auflösung, und jede Position in einer tieferen Karte fasst ein größeres rezeptives Feld des Originalbilds zusammen. Detektoren behalten Karten aus mehreren Tiefen bei, da der Zielkonflikt in beide Richtungen wirkt: Eine Karte mit Stride 8 eines 640×640-Bilds ist ein 80×80-Raster, das fein genug ist, um kleine Objekte zu lokalisieren. Eine Karte mit Stride 32 ist ein 20×20-Raster, dessen Zellen jeweils genug vom Bild erfassen, um große Objekte zu erkennen. Ein Feature Pyramid Network (FPN) kombiniert Karten aus diesen Tiefen, sodass jede Skala sowohl eine präzise Position als auch eine übergeordnete Bedeutung erhält. Das Backbone, das diese Karten erzeugt, ist die wichtigste Stufe der Merkmalsextraktion eines Modells.
Merkmalskarten und verwandte Begriffe#
- Filter: Der Filter enthält die erlernten Gewichte. Die Merkmalskarte entsteht, wenn er auf eine Eingabe angewendet wird. Ein Filter erzeugt pro Bild eine Merkmalskarte.
- Aktivierungsfunktion: Eine Funktion wie ReLU, die nach der Faltung elementweise auf eine Merkmalskarte angewendet wird. Die Karte liegt sowohl davor als auch danach vor, mit Voraktivierungs- und Nachaktivierungswerten.
- Embeddings: Ein Embedding ist in der Regel ein eindimensionaler Vektor, der durch Pooling oder Abflachen einer Merkmalskarte entsteht. Er bewahrt den Bildinhalt, verliert aber die räumliche Position. Embeddings ermöglichen Ähnlichkeitssuche und Clustering. Räumliche Merkmalskarten dienen Aufgaben, bei denen die Position wichtig ist, etwa der semantischen Segmentierung.
- Salienzkarte: Eine Salienzkarte ist eine einzelne Heatmap, die eine Vorhersage erklärt und oft aus Merkmalskarten und ihren Gradienten berechnet wird.
Merkmalskarten untersuchen und visualisieren#
Einzelne Kanäle als Graustufenbilder darzustellen, zeigt, auf welche Reize jeder Filter anspricht. Karten der ersten Schicht sehen wie kantenfilterte Kopien des Fotos aus, tiefe Karten wie grobe Flecken über Objektteilen. In PyTorch erfasst ein mit register_forward_hook registrierter Forward-Hook die Merkmalskarten jeder Schicht während der Inferenz. Tiefe Schichten haben Hunderte von Kanälen, daher fassen Werkzeuge für erklärbare KI sie gewöhnlich zu einer Heatmap zusammen. Grad-CAM gewichtet jeden Kanal einer späten Merkmalskarte mit dem mittleren Gradienten eines Klassenwerts und summiert die Kanäle. Dadurch werden die Bildbereiche hervorgehoben, die eine Vorhersage beeinflusst haben. Beim Nano-Modell YOLO26 erreicht ein Bild mit 640×640 Pixeln den Detektionskopf als drei Merkmalskarten mit den Abmessungen 64×80×80, 128×40×40 und 256×20×20. Vorhersagen mit visualize=True speichert eine _cam.jpg-LayerCAM-Überlagerung, die jede Position dieser Karten anhand ihres positiven Gradienten für jede vorhergesagte Klasse gewichtet.










