Add YOLO11 TensorRT quantization benchmark scripts
- Engine build scripts (FP16/INT8) - Benchmark validation scripts - Result parsing and analysis tools - COCO dataset configuration
This commit is contained in:
69
generate_coco_labels.py
Normal file
69
generate_coco_labels.py
Normal file
@@ -0,0 +1,69 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
from pycocotools.coco import COCO
|
||||
|
||||
def generate_coco_labels(annotations_file, images_dir, labels_dir):
|
||||
"""从COCO JSON标注生成YOLO格式标签"""
|
||||
annotations_file = Path(annotations_file)
|
||||
images_dir = Path(images_dir)
|
||||
labels_dir = Path(labels_dir)
|
||||
|
||||
labels_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
print(f"Loading annotations from {annotations_file}...")
|
||||
coco = COCO(str(annotations_file))
|
||||
|
||||
img_ids = sorted(coco.getImgIds())
|
||||
|
||||
total_boxes = 0
|
||||
|
||||
for img_id in img_ids:
|
||||
img_info = coco.loadImgs(img_id)[0]
|
||||
img_name = img_info['file_name']
|
||||
img_path = images_dir / img_name
|
||||
|
||||
if not img_path.exists():
|
||||
continue
|
||||
|
||||
ann_ids = coco.getAnnIds(imgIds=img_id)
|
||||
anns = coco.loadAnns(ann_ids)
|
||||
|
||||
label_path = labels_dir / (img_path.stem + '.txt')
|
||||
|
||||
with open(label_path, 'w') as f:
|
||||
for ann in anns:
|
||||
if ann['category_id'] == 0:
|
||||
continue
|
||||
|
||||
cat_id = ann['category_id']
|
||||
bbox = ann['bbox']
|
||||
x, y, w, h = bbox
|
||||
|
||||
x_center = x + w / 2
|
||||
y_center = y + h / 2
|
||||
|
||||
img_w = img_info['width']
|
||||
img_h = img_info['height']
|
||||
|
||||
x_center /= img_w
|
||||
y_center /= img_h
|
||||
w /= img_w
|
||||
h /= img_h
|
||||
|
||||
f.write(f"{cat_id} {x_center:.6f} {y_center:.6f} {w:.6f} {h:.6f}\n")
|
||||
total_boxes += 1
|
||||
|
||||
print(f"Generated {total_boxes} bounding boxes in {labels_dir}")
|
||||
print(f"Labels saved to: {labels_dir}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
base_dir = Path(r"C:\Users\16337\PycharmProjects\Security\datasets\coco")
|
||||
|
||||
generate_coco_labels(
|
||||
annotations_file=base_dir / "annotations" / "instances_val2017.json",
|
||||
images_dir=base_dir / "images" / "val2017",
|
||||
labels_dir=base_dir / "labels" / "val2017"
|
||||
)
|
||||
|
||||
print("\nNow run validation with batch=1:")
|
||||
print('yolo val model=yolo11n_int8_b1_8.engine data=coco.yaml imgsz=640 rect=False batch=1')
|
||||
Reference in New Issue
Block a user