Я просматривал MMDet_InstanceSeg_Tutorial.ipynb и обнаружил много ошибок при реализации его на графическом процессоре.
- Сначала у меня возникли проблемы с версией, даже если вы установили необходимые библиотеки, такие как mmdetection, mmcv и mmengine, и если вы не установили правильную версию, она не будет работать. Версии, которые сработали для меня:
версия факела: 1.9.0+cu111
mmdetection: 3.0.0
mmcv: 2.0.0rc4
mmдвижок: 0.8.4
2. Я получал сообщение Ошибка импорта: невозможно импортировать имя «build_dataset» из «mmdet.datasets», когда я продолжал выполнять приведенный ниже фрагмент кода.
from mmdet.datasets import build_dataset from mmdet.models import build_detector from mmengine.runner import Runner # build the runner from config runner = Runner.from_cfg(cfg)
После поиска решений здесь и там кажется, что build_dataset и build_detector присутствовали в предыдущих версиях, но теперь в более новых версиях они были удалены. Хорошо, так какое решение? Если вы увидите в более поздних кодах, что мы не используем эти два модуля, поэтому мы можем просто пропустить их, закомментировав, или просто удалить эти две строки.
# from mmdet.datasets import build_dataset # from mmdet.models import build_detector from mmengine.runner import Runner # build the runner from config runner = Runner.from_cfg(cfg)
3. После вывода модели я обнаружил еще одну проблему: ValueError: требуется хотя бы один массив для объединения во время выполнения
# start training runner.train()
Эту проблему можно решить, изменив строки ниже.
from mmengine.runner import set_random_seed # Modify dataset classes and color cfg.metainfo = { 'CLASSES': ('balloon', ), 'PALETTE': [ (220, 20, 60), ] }
to
from mmengine.runner import set_random_seed # Modify dataset classes and color cfg.metainfo = { 'classes': ('balloon', ), 'palette': [ (220, 20, 60), ] }
просто измените регистр «КЛАССЫ» и «ПАЛИТРА» с верхнего регистра на нижний, и это должно работать.
Спасибо.
Использованная литература: