Verständnis von Yolov11 Tensor Ouput Form für die NachbearbeitungPython

Python-Programme
Anonymous
 Verständnis von Yolov11 Tensor Ouput Form für die Nachbearbeitung

Post by Anonymous »

Ich habe versucht, das Yolov11 -Modell in TensorFlow zu exportieren. Es heißt: < /p>

Code: Select all

'yolo11n.pt' with input shape (1, 3, 640, 640) BCHW and output shape(s) (1, 84, 8400) (5.4 MB)
< /code>
Jetzt habe ich diese Modellzusammenfassung in Keras 3: < /p>
Model: "functional_1"

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓
┃ Layer (type)                         ┃ Output Shape                ┃         Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
│ input_layer_4 (InputLayer)           │ (None, 640, 640, 3)         │               0 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ tfsm_layer_8 (TFSMLayer)             │ (1, 84, 8400)               │               0 │
└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘
Total params: 0 (0.00 B)
Trainable params: 0 (0.00 B)
Non-trainable params: 0 (0.00 B)
< /code>
Es ist klar für die Eingangsform, jedoch nicht für die Ausgangsform. Nach diesem: < /p>

Die Ausgangsformen für YOLOV8N- und YOLOV8N-SEG-Modelle repräsentieren verschiedene Komponenten. Für yolov8n umfasst die Form (1, 84, 8400) 80 Klassen und 4 Begrenzungsbox -Parameter. Für yolov8n-seg enthält der erste Ausgang (1, 116, 8400) 80 Klassen, 4 Parameter und 32 Maskenkoeffizienten, während der zweite Ausgang (1, 32, 160, 160) die Prototyp-Masken darstellt.  < Br /> < /blockquote>
Ich habe versucht, die Verarbeitung aus Chatgpt -Quellcode zu schließen und manuell zu posten: < /p>
# output: (84, 8400) | image: (640, 640, 3)

# Extract bounding box coordinates (first 4 values)
boxes = output[:4, :].T  # Shape: (8400, 4)

# Extract confidence scores (5th value)
confidences = output[4, :]  # Shape: (8400,)

# Convert (center x, center y, width, height) → (x1, y1, x2, y2)
boxes[:, 0] -= boxes[:, 2] / 2  # x1 = x_center - width/2
boxes[:, 1] -= boxes[:, 3] / 2  # y1 = y_center - height/2
boxes[:, 2] += boxes[:, 0]  # x2 = x1 + width
boxes[:, 3] += boxes[:, 1]  # y2 = y1 + height

# Filter by confidence threshold (adjust for debugging)
threshold = 0.1
indices = np.where(confidences > threshold)[0]

filtered_boxes = boxes[indices]
filtered_confidences = confidences[indices]

# Draw raw bounding boxes
for i in range(len(filtered_boxes)):
x1, y1, x2, y2 = map(int, filtered_boxes[i])

# Ensure coordinates are within image bounds
x1, y1 = max(0, x1), max(0, y1)
x2, y2 = min(image.shape[1], x2), min(image.shape[0], y2)

# Draw bounding box
cv2.rectangle(image, (x1, y1), (x2, y2), (255, 0, 0), 2)  # Red box

# Display confidence score (for debugging)
cv2.putText(image, f"{filtered_confidences[i]:.2f}", (x1, y1 - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)

# Show the image
plt.figure(figsize=(10, 6))
plt.imshow(image)
plt.axis("off")
plt.show()
Und hier ist die Ausgabe:
< /p>
Ich bin mir nicht sicher, ob meine Implementierung meiner Post -Verarbeitung korrekt ist, da ich keine Ahnung habe>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post