@FILMANS

Ошибка программы на пайтон, как исправить?

Здравстуйте!

Проблема с использованием нейросети (искусственного интеллекта).

Создал свою модель нейронки на yolov8 (pyTorch, ultralytics)

Обучил ее распознавать некоторые названия цветков. Искусственный интеллект умеет распознавать такие названия цветков:
ромашка, одуванчик, розы, подсолнухи, тюльпаны
Анг. версия:
daisy, dandelion, roses, sunflowers, tulips

Протестил в консоле через команды yolo, нейронка прошла тест, все цветы распознала правильно.

Далее я написал небольшую программу, чтобы подключить в нее свою модель нейронки, которую я ранее обучил. чтобы написал картинку в коде, которую нужно через интеллект просканировать и чтобы он вывел в терминале текст, какой цветок по его мнению изображен на картинке.
И тут проблемка... Ошибка TypeError: 'dict' object is not callable вылезла...

Код программы:
import numpy as np
import torch
import cv2

model = torch.load("best.pt", map_location=torch.device("cpu"))

image_path = "ggg.jpg"

image = cv2.imread(image_path)

if image is not None:
    image = image.astype(np.float32)

    image = torch.from_numpy(image)

    predictions = model(image)

    class_scores = predictions[0]

    class_indices = predictions[1].argmax(axis=1)

    class_names = ["daisy", "dandelion", "roses", "sunflowers", "tulips"]

    print(class_names[class_indices[0]])
else:
    print("Image not found")


Полный код ошибки:
predictions = model(image)
                  ^^^^^^^^^^^^
TypeError: 'dict' object is not callable


Как исправить? Подскажите плиз.
  • Вопрос задан
  • 202 просмотра
Пригласить эксперта
Ответы на вопрос 1
Maksim_64
@Maksim_64
Data Analyst
У тебя model это словарь, да и все, а ты ожидаешь модель. Разбирайся с torch api, откуда ты этот пример взял. Возможно там есть какой-нибудь ключ 'model'. То есть, как то так
model = torch.load("best.pt", map_location=torch.device("cpu"))['model']

Возможно, класс модели нужно импортировать откуда то, и передать какому-нибудь методу объекта модели вот этот словарь.
Ты импортируешь предтренированные веса и думаешь что импортируешь модель. Тебе приходит словарь. Вот даже, пример нашел там модель создается, а это просто словарь с весами.

torch я не пользуюсь, его api не знаю, могу ошибаться,но predictions = model(image) вот это выглядит странно, даже если бы model был бы не словарь, а модель. Потому что у модели по идее должен быть метод predict.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы