import torch  # Importing torch to avoid "RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED" error

from opendr.perception.object_detection_2d.centernet.centernet_learner import CenterNetDetectorLearner
from opendr.perception.object_detection_2d.detr.detr_learner import DetrLearner
from opendr.perception.object_detection_2d.gem.gem_learner import GemLearner
from opendr.perception.object_detection_2d.retinaface.retinaface_learner import RetinaFaceLearner
from opendr.perception.object_detection_2d.ssd.ssd_learner import SingleShotDetectorLearner
from opendr.perception.object_detection_2d.yolov3.yolov3_learner import YOLOv3DetectorLearner
from opendr.perception.object_detection_2d.yolov5.yolov5_learner import YOLOv5DetectorLearner
from opendr.perception.object_detection_2d.nanodet.nanodet_learner import NanodetLearner

from opendr.perception.object_detection_2d.datasets.wider_person import WiderPersonDataset
from opendr.perception.object_detection_2d.datasets.wider_face import WiderFaceDataset
from opendr.perception.object_detection_2d.datasets import transforms

from opendr.perception.object_detection_2d.utils.vis_utils import draw_bounding_boxes

from opendr.perception.object_detection_2d.nms.cluster_nms.cluster_nms import ClusterNMS
from opendr.perception.object_detection_2d.nms.fast_nms.fast_nms import FastNMS
from opendr.perception.object_detection_2d.nms.soft_nms.soft_nms import SoftNMS
from opendr.perception.object_detection_2d.nms.seq2seq_nms.seq2seq_nms_learner import Seq2SeqNMSLearner
from opendr.perception.object_detection_2d.nms.fseq2_nms.fseq2_nms_learner import FSeq2NMSLearner

torch.__version__  # NOQA Dummy usage of torch to avoid imported but not used pyflakes error
__all__ = ['CenterNetDetectorLearner', 'DetrLearner', 'GemLearner', 'RetinaFaceLearner', 'SingleShotDetectorLearner',
           'YOLOv3DetectorLearner', 'NanodetLearner', 'WiderPersonDataset', 'WiderFaceDataset', 'transforms',
           'draw_bounding_boxes', 'ClusterNMS', 'FastNMS', 'SoftNMS', 'Seq2SeqNMSLearner', 'FSeq2NMSLearner',
           'YOLOv5DetectorLearner']
