备份一些py文件

This commit is contained in:
zqc
2025-12-20 18:07:49 +08:00
parent de5ac3ef22
commit 713ad3f3e4
17 changed files with 21 additions and 20 deletions

200
backup/cuda_t2.py Normal file
View File

@@ -0,0 +1,200 @@
# final_gpu_test.py
import torch
import onnxruntime as ort
import insightface
import cv2
import numpy as np
import time
import os
from typing import List, Dict
def comprehensive_gpu_test():
"""全面的GPU测试"""
print("=" * 60)
print("最终GPU加速测试")
print("=" * 60)
# 1. 环境验证
print("1. 环境验证:")
print(f"✅ PyTorch: {torch.__version__}")
print(f"✅ PyTorch CUDA: {torch.cuda.is_available()}")
print(f"✅ GPU设备: {torch.cuda.get_device_name(0)}")
print(f"✅ ONNX Runtime GPU支持: {'CUDAExecutionProvider' in ort.get_available_providers()}")
print(f"✅ OpenCV: {cv2.__version__}")
print(f"✅ InsightFace: {insightface.__version__}")
# 2. 创建测试数据
print("\n2. 创建测试数据...")
os.makedirs("test_data", exist_ok=True)
# 创建目标人脸
target_face = np.random.randint(0, 255, (400, 400, 3), dtype=np.uint8)
cv2.rectangle(target_face, (150, 150), (250, 250), (255, 255, 255), -1) # 简单的人脸模拟
cv2.imwrite("test_data/target_face.jpg", target_face)
# 创建测试图像(多个人脸)
test_image = np.random.randint(0, 255, (800, 600, 3), dtype=np.uint8)
# 添加多个人脸区域
cv2.rectangle(test_image, (100, 100), (200, 200), (255, 255, 255), -1)
cv2.rectangle(test_image, (300, 150), (400, 250), (255, 255, 255), -1)
cv2.rectangle(test_image, (500, 200), (600, 300), (255, 255, 255), -1)
cv2.imwrite("test_data/multi_face_test.jpg", test_image)
print("✅ 测试数据创建完成")
# 3. GPU加速的人脸识别系统
print("\n3. 初始化GPU人脸识别系统...")
class FastGPUFaceRecognition:
def __init__(self):
self.app = insightface.app.FaceAnalysis(name='buffalo_l')
self.app.prepare(
ctx_id=0, # GPU 0
det_thresh=0.3, # 检测阈值
det_size=(640, 640)
)
self.target_embedding = None
print("✅ GPU人脸识别系统初始化完成")
def set_target_face(self, image_path: str):
"""设置目标人脸"""
img = cv2.imread(image_path)
faces = self.app.get(img)
if faces:
self.target_embedding = faces[0].embedding
print(f"✅ 目标人脸特征提取完成")
return True
return False
def process_image(self, image_path: str, output_path: str):
"""处理图像并返回结果"""
start_time = time.time()
img = cv2.imread(image_path)
if img is None:
return None
# GPU推理
faces = self.app.get(img)
results = []
for i, face in enumerate(faces):
similarity = 0.0
if self.target_embedding is not None:
# 计算相似度
emb1 = face.embedding / np.linalg.norm(face.embedding)
emb2 = self.target_embedding / np.linalg.norm(self.target_embedding)
similarity = float(np.dot(emb1, emb2))
results.append({
'face_index': i,
'bbox': face.bbox.astype(int).tolist(),
'similarity': similarity,
'det_score': face.det_score
})
# 绘制结果
bbox = face.bbox.astype(int)
color = (0, 255, 0) if similarity > 0.6 else (0, 0, 255)
cv2.rectangle(img, (bbox[0], bbox[1]), (bbox[2], bbox[3]), color, 2)
cv2.putText(img, f"{similarity:.3f}", (bbox[0], bbox[1] - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)
# 保存结果
cv2.imwrite(output_path, img)
processing_time = (time.time() - start_time) * 1000
return {
'faces_detected': len(faces),
'processing_time_ms': processing_time,
'results': results
}
# 初始化系统
system = FastGPUFaceRecognition()
# 4. 性能测试
print("\n4. 性能测试:")
# 设置目标人脸
if system.set_target_face("test_data/target_face.jpg"):
# 处理测试图像
result = system.process_image("test_data/multi_face_test.jpg", "test_data/gpu_result.jpg")
if result:
print(f"✅ 处理完成:")
print(f" 检测到人脸数: {result['faces_detected']}")
print(f" 处理时间: {result['processing_time_ms']:.1f}ms")
for face in result['results']:
status = "匹配" if face['similarity'] > 0.6 else "不匹配"
print(f" 人脸 {face['face_index'] + 1}: 相似度 {face['similarity']:.3f} ({status})")
# 5. 批量性能测试
print("\n5. 批量性能测试:")
# 创建多个测试图像
test_images = []
for i in range(5):
test_img = np.random.randint(0, 255, (600, 800, 3), dtype=np.uint8)
cv2.rectangle(test_img, (100, 100), (200, 200), (255, 255, 255), -1)
img_path = f"test_data/batch_test_{i}.jpg"
cv2.imwrite(img_path, test_img)
test_images.append(img_path)
total_time = 0
total_faces = 0
for i, img_path in enumerate(test_images):
result = system.process_image(img_path, f"test_data/batch_result_{i}.jpg")
if result:
total_time += result['processing_time_ms']
total_faces += result['faces_detected']
print(f" 图像 {i + 1}: {result['processing_time_ms']:.1f}ms, {result['faces_detected']}张人脸")
if len(test_images) > 0:
avg_time = total_time / len(test_images)
print(f" 平均处理时间: {avg_time:.1f}ms/张")
print(f" 总检测人脸: {total_faces}")
# 6. 与CPU性能对比可选
print("\n6. GPU vs CPU 性能对比:")
try:
# GPU测试
gpu_times = []
test_img = cv2.imread("test_data/multi_face_test.jpg")
for _ in range(10):
start = time.time()
faces = system.app.get(test_img)
gpu_times.append((time.time() - start) * 1000)
# CPU测试创建新的CPU实例
cpu_app = insightface.app.FaceAnalysis(name='buffalo_l')
cpu_app.prepare(ctx_id=-1) # CPU
cpu_times = []
for _ in range(10):
start = time.time()
faces = cpu_app.get(test_img)
cpu_times.append((time.time() - start) * 1000)
avg_gpu = np.mean(gpu_times)
avg_cpu = np.mean(cpu_times)
print(f" GPU平均推理时间: {avg_gpu:.1f}ms")
print(f" CPU平均推理时间: {avg_cpu:.1f}ms")
print(f" GPU加速比: {avg_cpu / avg_gpu:.1f}x")
except Exception as e:
print(f" 性能对比测试跳过: {e}")
print("\n" + "=" * 60)
print("🎉 GPU加速测试完成")
print("✅ 现在您的人脸识别系统正在使用GPU加速")
print("📁 结果图像保存在 test_data/ 目录中")
print("=" * 60)
if __name__ == "__main__":
comprehensive_gpu_test()