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

Regarding not able count correctly #285

Closed
2 tasks done
thalapandi opened this issue Jun 13, 2024 · 1 comment
Closed
2 tasks done

Regarding not able count correctly #285

thalapandi opened this issue Jun 13, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@thalapandi
Copy link

Search before asking

  • I have searched the Roboflow Notebooks issues and found no similar bug report.

Notebook name

how-to-track-and-count-vehicles-with-yolov8.ipynb

when camera is straight then we are able to count correctly but when camera is in side angle then we could not count accurately so what we have to change in that code with where if we change the code then the issue will be resolved and how to overcome this issue in future and how to modify this code for people counting in and out accurately for all video with different combination of camera angle,help me to resolve the probelm

and i have provided the output image in below link so check the output once
Screenshot (38)

Bug

This is not but just not get count correctly

Environment

Google colab,python 3.10.0

Minimal Reproducible Example

dict maping class_id to class_name

CLASS_NAMES_DICT = model.model.names

class_ids of interest - person

CLASS_ID = [0]

from tqdm.notebook import tqdm
import numpy as np
from google.colab.patches import cv2_imshow
import cv2
import os
if not os.path.exists("output_frame"):
os.mkdir("output_frame")

create BYTETracker instance

byte_tracker = BYTETracker(BYTETrackerArgs())

create VideoInfo instance

video_info = VideoInfo.from_video_path(SOURCE_VIDEO_PATH)

create frame generator

generator = get_video_frames_generator(SOURCE_VIDEO_PATH)

create LineCounter instance

line_counter = LineCounter(start=LINE_START, end=LINE_END)

create instance of BoxAnnotator and LineCounterAnnotator

box_annotator = BoxAnnotator(color=ColorPalette(), thickness=4, text_thickness=4, text_scale=2)
line_annotator = LineCounterAnnotator(thickness=4, text_thickness=4, text_scale=2)

open target video file

with VideoSink(TARGET_VIDEO_PATH, video_info) as sink:
# loop over video frames
frame_count = 1
for frame in tqdm(generator, total=video_info.total_frames):
# cv2.imwrite(f"/content/input_frame/output_{frame_count}.png",frame)
print("original frame shape:",frame.shape)
# model prediction on single frame and conversion to supervision Detections
results = model(frame)
detections = Detections(
xyxy=results[0].boxes.xyxy.cpu().numpy(),
confidence=results[0].boxes.conf.cpu().numpy(),
class_id=results[0].boxes.cls.cpu().numpy().astype(int)
)
# filtering out detections with unwanted classes
mask = np.array([class_id in CLASS_ID for class_id in detections.class_id], dtype=bool)
detections.filter(mask=mask, inplace=True)
# tracking detections
tracks = byte_tracker.update(
output_results=detections2boxes(detections=detections),
img_info=frame.shape,
img_size=frame.shape
)
tracker_id = match_detections_with_tracks(detections=detections, tracks=tracks)
detections.tracker_id = np.array(tracker_id)
# filtering out detections without trackers
mask = np.array([tracker_id is not None for tracker_id in detections.tracker_id], dtype=bool)
detections.filter(mask=mask, inplace=True)
# format custom labels
labels = [
f"#{tracker_id} {CLASS_NAMES_DICT[class_id]} {confidence:0.2f}"
for , confidence, class_id, tracker_id
in detections
]
# updating line counter
line_counter.update(detections=detections)
# annotate and display frame
frame = box_annotator.annotate(frame=frame, detections=detections, labels=labels)
line_annotator.annotate(frame=frame, line_counter=line_counter)
print("output frame.shape",frame.shape)
frame_count = frame_count+1
cv2.imwrite(f"/content/output_frame/counting
{frame_count}.png",frame)
frame_count = frame_count+1
# cv2_imshow(frame)
sink.write_frame(frame)

Additional

no

Are you willing to submit a PR?

  • Yes I'd like to help by submitting a PR!
@thalapandi thalapandi added the bug Something isn't working label Jun 13, 2024
@thalapandi
Copy link
Author

Kindly provide any solution for getting better accuracy in people in and out counting

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant