В своём проекте машинного зрения использую модель
Segment Anything (далее
SAM), с задачей справляется отлично. Но заметил что если в скрипт импортировать библиотеку
ultralytics (она необходима для предварительного анализа изображения в помощью
YOLOV8) то время работы SAM по поиску сегментов увеличивается в двое, причем достаточно написать
import ultralytics, без запуска работы yolov8 и производительность падает. Замеры производились неоднократно, поведение стабильное.
Пробовал воспроизвести это в
colab.google.com такого эффекта там не наблюдается -
https://colab.research.google.com/drive/1QbDLUj5CU....
Помогите разобраться в чем проблема и как можно избавится от такого поведения?
"""
sam_vit_b_01ec64.pth скачивается по ссылке
===============
https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth
Полезные ссылки
===============
SAM - https://github.com/facebookresearch/segment-anything
ultralytics - https://github.com/ultralytics/ultralytics
"""
import time
import cv2
import numpy as np
from segment_anything import sam_model_registry, SamAutomaticMaskGenerator
import ultralytics # <---- включение этой строки роняет производительность
img = np.float32(cv2.imread('2023.12.10 (14_28_54)ishod.jpg'))
sam_checkpoint = "sam_vit_b_01ec64.pth"
model_type = "vit_b"
device = "cpu"
sam = sam_model_registry[model_type](checkpoint=sam_checkpoint)
sam.to(device=device)
mask_generator = SamAutomaticMaskGenerator(
sam,
points_per_batch = 8,
points_per_side = 8,
pred_iou_thresh = 0.2,
stability_score_thresh = 0.7
)
time_begin = time.time()
masks = mask_generator.generate(img)
print(time.time() - time_begin, 'sec')
print('Count MASKS', len(masks))
Для запуска этого кода необходимо установить
segment-anything и
ultralytics:
pip install git+https://github.com/facebookresearch/segment-anything.git
pip install ultralytics
Вот пример замеров времени из консоли импорт включен:
13.004094123840332 sec
Count MASKS 83
Импорт отключен:
4.986778020858765 sec
Count MASKS 83