0

我正在使用 ImageAI 和 ResNet50 模型从照片中检测和提取人物图片。这一切都很好,但我不知道如何禁用检测框被绘制。显然,当多个人在同一个镜头中时,来自一个人的检测框会流血到提取的其他人的图像上。

有谁知道该怎么做?我环顾四周,只能找到另一个具有相同问题的问题,出于某种原因,答案是在谈论 OpenCV 而不是 imageai。

我的代码:

from pathlib import Path

import cv2
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.applications.resnet50 import ResNet50

from imageai.Detection import ObjectDetection

physical_devices = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(physical_devices[0], True)

detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath('resnet50_coco_best_v2.1.0.h5')
detector.loadModel()
person = detector.CustomObjects(person=True)

source_folder = Path(r'd:/pics')
files = [f for f in source_folder.glob('*.jpg')]
output_folder = Path('c:/python/datasets/raw/extracted_images')

for idx, i in enumerate(files):
    print(f'Extracting images from: {i.name}')
    image = i 
    output_path = output_folder.joinpath(f'{idx}.jpg')
    detected_image, detections = detector.detectCustomObjectsFromImage(input_image=str(image),
                                                                       output_image_path=str(output_path),
                                                                       minimum_percentage_probability=20,
                                                                       input_type='file',
                                                                       output_type='file',
                                                                       display_percentage_probability=False,
                                                                       extract_detected_objects=True,
                                                                       custom_objects=person)

编辑: 我找到了一种解决问题的方法 - 通过转到detectObjetcFromImage()函数源并注释掉这一点:

# image_copy = draw_boxes(image_copy, 
#                 box_points,
#                 display_box,
#                 label, 
#                 percentage_probability, 
#                 self.__box_color)

有没有一种侵入性较小的方法来处理这个问题?

4

0 回答 0