Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixed detect target image not showing #255

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion modules/detect_target/detect_target_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@ def create_detect_target(
local_logger: logger.Logger,
) -> tuple[bool, base_detect_target.BaseDetectTarget | None]:
"""
Construct detect target class at runtime.
Factory function to create a detection target object.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a detect target object.


Return:
Success, detect target object.
"""
match detect_target_option:
case DetectTargetOption.ML_ULTRALYTICS:
Expand Down
22 changes: 18 additions & 4 deletions modules/detect_target/detect_target_ultralytics.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import time

import cv2
import torch
import ultralytics

from . import base_detect_target
Expand All @@ -18,6 +19,8 @@ class DetectTargetUltralyticsConfig:
Configuration for DetectTargetUltralytics.
"""

CPU_DEVICE = "cpu"

def __init__(
self,
device: "str | int",
Expand Down Expand Up @@ -55,13 +58,19 @@ def __init__(
show_annotations: Display annotated images.
save_name: filename prefix for logging detections and annotated images.
"""
self.__local_logger = local_logger
self.__device = config.device
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add empty line above this line.

self.__enable_half_precision = not self.__device == "cpu"
if (
self.__device != DetectTargetUltralyticsConfig.CPU_DEVICE
and not torch.cuda.is_available()
):
self.__local_logger.warning("CUDA not available. Falling back to CPU.")
self.__device = DetectTargetUltralyticsConfig.CPU_DEVICE
self.__enable_half_precision = self.__device != DetectTargetUltralyticsConfig.CPU_DEVICE
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add empty line above this line.

self.__model = ultralytics.YOLO(config.model_path)
if config.override_full:
self.__enable_half_precision = False
Comment on lines 71 to 72
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move this closer to the enable half precision declaration.

self.__counter = 0
self.__local_logger = local_logger
self.__show_annotations = show_annotations
self.__filename_prefix = ""
if save_name != "":
Expand Down Expand Up @@ -127,11 +136,16 @@ def run(
filename = self.__filename_prefix + str(self.__counter)

# Annotated image
cv2.imwrite(filename + ".png", image_annotated) # type: ignore
cv2.imwrite(filename + ".png", image_annotated)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Save the image using the logger.


self.__counter += 1

if self.__show_annotations:
cv2.imshow("Annotated", image_annotated) # type: ignore
if image_annotated is not None:
# Display the annotated image in a named window
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove comment.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this line.

cv2.imshow("Annotated", image_annotated)
cv2.waitKey(1) # Short delay to process GUI events
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay to leave comment.

else:
self.__local_logger.warning("Annotated image is invalid.")

return True, detections
Loading