Кадр обработки ошибки: не удалось выделить память [Op:AddV2] — обнаружение объекта DeepfacePython

Программы на Python
Ответить
Anonymous
 Кадр обработки ошибки: не удалось выделить память [Op:AddV2] — обнаружение объекта Deepface

Сообщение Anonymous »

Я новичок в обнаружении объектов, мы написали скрипт для определения пола и возраста человека с помощью библиотеки 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 %.
Может ли мой графический процессор не запускать обнаружение объектов эта величина? Есть ли какие-либо оптимизации, которые я должен использовать?
Исходный код:

Код: Выделить всё

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)

if is_within_roi(x1, y1, x2 - x1, y2 - y1):
tracking_data[track_id]["Exit Time"] = formatted_time

if gender != "Unknown":
label = f"{gender}, Age: {age_range}"
color = (0, 255, 0)
draw_label(resized_frame, x1, y1, x2 - x1, y2 - y1, label, color)

if gender == "Male":
global_male_count.add(track_id)
male_ages.append(age)
elif gender == "Female":
global_female_count.add(track_id)
female_ages.append(age)

# Draw the label on the frame
draw_label(resized_frame, x1, y1, x2 - x1, y2 - y1, label, color)
Спасибо, любая информация будет очень полезна

Подробнее здесь: https://stackoverflow.com/questions/793 ... e-object-d
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»