Я новичок в обнаружении объектов, мы написали скрипт для определения пола и возраста человека с помощью библиотеки deepface, а затем добавили трекеры с помощью библиотеки сортировки.
Код хорошо работает на процессоре и Google Collabs, но когда я запускаю его на графическом процессоре (RTX 3050), возникает эта ошибка:
Кадр обработки ошибки: {{function_node _wrapped__AddV2_device/job:localhost/replica:0/task:0/device:GPU:0}} не удалось выделить память [Op:AddV2]
Я попытался установить для экспериментального.set_memory_growth значение True, но все равно возникла та же ошибка. Диспетчер задач показал, что графический процессор не используется на 100 %, и, как ни странно, всякий раз, когда возникает ошибка, использование графического процессора падает до 0 %.
Может ли мой графический процессор не запускать обнаружение объектов эта величина? Есть ли какие-либо оптимизации, которые я должен использовать?
Исходный код:
Я новичок в обнаружении объектов, мы написали скрипт для определения пола и возраста человека с помощью библиотеки deepface, а затем добавили трекеры с помощью библиотеки сортировки. Код хорошо работает на процессоре и Google Collabs, но когда я запускаю его на графическом процессоре (RTX 3050), возникает эта ошибка:
Кадр обработки ошибки: {{function_node _wrapped__AddV2_device/job:localhost/replica:0/task:0/device:GPU:0}} не удалось выделить память [Op:AddV2]
Я попытался установить для экспериментального.set_memory_growth значение True, но все равно возникла та же ошибка. Диспетчер задач показал, что графический процессор не используется на 100 %, и, как ни странно, всякий раз, когда возникает ошибка, использование графического процессора падает до 0 %. Может ли мой графический процессор не запускать обнаружение объектов эта величина? Есть ли какие-либо оптимизации, которые я должен использовать? Исходный код: [code]results = DeepFace.analyze(resized_frame, actions=['gender', 'age'], enforce_detection=True, detector_backend='retinaface')
# Process each detected face detections = [] for result in results: # Extract bounding box and convert to integers x = int(result['region']['x']) y = int(result['region']['y']) w = int(result['region']['w']) h = int(result['region']['h']) # confidence = float(result.get('face_confidence', 0.5)) # Default to 0.5 if missing
# Add detection for SORT tracker if is_within_roi(x, y, w, h): confidence = float(result.get('face_confidence', 0.5)) detections.append([x, y, x + w, y + h, confidence])
# Ensure detections array is not empty if detections: # Update tracker with valid detections tracked_objects = tracker.update(np.array(detections)) else: tracked_objects = []
# Iterate through tracked objects for track in tracked_objects: track_id = int(track[4]) # Unique ID assigned by tracker x1, y1, x2, y2 = map(int, track[:4])
# Match tracker object with DeepFace result (basic IOU/position check) for result in results: rx, ry, rw, rh = map(int, [result['region']['x'], result['region']['y'], result['region']['w'], result['region']['h']]) if abs(x1 - rx) < 20 and abs(y1 - ry) < 20: # Adjust threshold if necessary # Retrieve gender confidence scores male_confidence = result['gender']['Man'] female_confidence = result['gender']['Woman']
# Retrieve age from DeepFace result age = int(result.get('age', -1)) # Default to -1 if age is missing age_range = get_age_range(age) gender = "Male" if male_confidence > 99.8 else "Female" if female_confidence > 60 else "Unknown"
if track_id not in tracking_data: tracking_data[track_id] = { "Ages": [], "Genders": set(), "Entry Time": formatted_time, "Exit Time": None } tracking_data[track_id]["Ages"].append(age) tracking_data[track_id]["Genders"].add(gender)