Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jk_edge_code_api_integration
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sikhin.vc
jk_edge_code_api_integration
Commits
ac0b8a6d
You need to sign in or sign up before continuing.
Commit
ac0b8a6d
authored
May 04, 2023
by
Sikhin VC
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added engine file
parent
17e20dbe
Pipeline
#69000
canceled with stage
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
103 deletions
+16
-103
scripts/cement_counter.py
scripts/cement_counter.py
+16
-103
No files found.
scripts/cement_counter.py
View file @
ac0b8a6d
...
@@ -74,7 +74,6 @@ class CementBagCounter(ModelWrapper):
...
@@ -74,7 +74,6 @@ class CementBagCounter(ModelWrapper):
:param x: payload
:param x: payload
:return: payload
:return: payload
"""
"""
logger
.
info
(
"Pushing frame"
)
self
.
rtp
.
publish
(
x
)
# video stream
self
.
rtp
.
publish
(
x
)
# video stream
logger
.
info
(
"Pushed frame"
)
logger
.
info
(
"Pushed frame"
)
return
x
return
x
...
@@ -108,18 +107,18 @@ class CementBagCounter(ModelWrapper):
...
@@ -108,18 +107,18 @@ class CementBagCounter(ModelWrapper):
z_box
=
bboxs
z_box
=
bboxs
x_box
=
[]
x_box
=
[]
logger
.
info
(
"Using Kalman Tracker to Track Objects"
)
logger
.
debug
(
"Using Kalman Tracker to Track Objects"
)
if
len
(
self
.
tracker_list
)
>
0
:
if
len
(
self
.
tracker_list
)
>
0
:
logger
.
info
(
f
"length of tracker list is greater than zero"
)
logger
.
debug
(
f
"length of tracker list is greater than zero"
)
for
trk
in
self
.
tracker_list
:
for
trk
in
self
.
tracker_list
:
logger
.
info
(
"Appending tracker list"
)
logger
.
debug
(
"Appending tracker list"
)
x_box
.
append
(
trk
.
box
)
x_box
.
append
(
trk
.
box
)
logger
.
info
(
"Assigning detections to trackers"
)
logger
.
debug
(
"Assigning detections to trackers"
)
matched
,
unmatched_dets
,
unmatched_trks
=
self
.
assign_detections_to_trackers
(
x_box
,
z_box
,
iou_thrd
=
0.15
)
matched
,
unmatched_dets
,
unmatched_trks
=
self
.
assign_detections_to_trackers
(
x_box
,
z_box
,
iou_thrd
=
0.15
)
# Deal with matched detections
# Deal with matched detections
if
matched
.
size
>
0
:
if
matched
.
size
>
0
:
logger
.
info
(
"Deal with matched detections"
)
logger
.
debug
(
"Deal with matched detections"
)
for
trk_idx
,
det_idx
in
matched
:
for
trk_idx
,
det_idx
in
matched
:
z
=
z_box
[
det_idx
]
z
=
z_box
[
det_idx
]
z
=
np
.
expand_dims
(
z
,
axis
=
0
)
.
T
z
=
np
.
expand_dims
(
z
,
axis
=
0
)
.
T
...
@@ -133,7 +132,7 @@ class CementBagCounter(ModelWrapper):
...
@@ -133,7 +132,7 @@ class CementBagCounter(ModelWrapper):
# Deal with unmatched detections
# Deal with unmatched detections
if
len
(
unmatched_dets
)
>
0
:
if
len
(
unmatched_dets
)
>
0
:
logger
.
info
(
"Deal with unmatched detections"
)
logger
.
debug
(
"Deal with unmatched detections"
)
for
idx
in
unmatched_dets
:
for
idx
in
unmatched_dets
:
z
=
z_box
[
idx
]
z
=
z_box
[
idx
]
z
=
np
.
expand_dims
(
z
,
axis
=
0
)
.
T
z
=
np
.
expand_dims
(
z
,
axis
=
0
)
.
T
...
@@ -152,7 +151,7 @@ class CementBagCounter(ModelWrapper):
...
@@ -152,7 +151,7 @@ class CementBagCounter(ModelWrapper):
# Deal with unmatched tracks
# Deal with unmatched tracks
if
len
(
unmatched_trks
)
>
0
:
if
len
(
unmatched_trks
)
>
0
:
logger
.
info
(
"Deal with unmatched tracks"
)
logger
.
debug
(
"Deal with unmatched tracks"
)
for
trk_idx
in
unmatched_trks
:
for
trk_idx
in
unmatched_trks
:
tmp_trk
=
self
.
tracker_list
[
trk_idx
]
tmp_trk
=
self
.
tracker_list
[
trk_idx
]
tmp_trk
.
no_losses
+=
1
tmp_trk
.
no_losses
+=
1
...
@@ -168,7 +167,7 @@ class CementBagCounter(ModelWrapper):
...
@@ -168,7 +167,7 @@ class CementBagCounter(ModelWrapper):
objects
=
[]
objects
=
[]
boxs
=
[]
boxs
=
[]
for
trk
in
self
.
tracker_list
:
for
trk
in
self
.
tracker_list
:
logger
.
info
(
"Getting the list of trackers to be annotated"
)
logger
.
debug
(
"Getting the list of trackers to be annotated"
)
if
(
trk
.
hits
>=
self
.
min_hits
)
and
(
trk
.
no_losses
<=
self
.
max_age
):
if
(
trk
.
hits
>=
self
.
min_hits
)
and
(
trk
.
no_losses
<=
self
.
max_age
):
good_tracker_list
.
append
(
trk
)
good_tracker_list
.
append
(
trk
)
x_cv2
=
trk
.
box
x_cv2
=
trk
.
box
...
@@ -198,15 +197,15 @@ class CementBagCounter(ModelWrapper):
...
@@ -198,15 +197,15 @@ class CementBagCounter(ModelWrapper):
"""
"""
iou_mat
=
np
.
zeros
((
len
(
trackers
),
len
(
detections
)),
dtype
=
np
.
float32
)
iou_mat
=
np
.
zeros
((
len
(
trackers
),
len
(
detections
)),
dtype
=
np
.
float32
)
for
t
,
trk
in
enumerate
(
trackers
):
for
t
,
trk
in
enumerate
(
trackers
):
logger
.
info
(
"Enumerating through trackers"
)
logger
.
debug
(
"Enumerating through trackers"
)
for
d
,
det
in
enumerate
(
detections
):
for
d
,
det
in
enumerate
(
detections
):
logger
.
info
(
"Enumerating through detections"
)
logger
.
debug
(
"Enumerating through detections"
)
iou_mat
[
t
,
d
]
=
box_iou2
(
trk
,
det
)
iou_mat
[
t
,
d
]
=
box_iou2
(
trk
,
det
)
logger
.
info
(
"Linear assignment"
)
logger
.
debug
(
"Linear assignment"
)
matched_idx
=
linear_assignment
(
-
iou_mat
)
matched_idx
=
linear_assignment
(
-
iou_mat
)
row
,
col
=
matched_idx
row
,
col
=
matched_idx
matched_idx
=
np
.
concatenate
((
row
.
reshape
(
-
1
,
1
),
col
.
reshape
(
-
1
,
1
)),
axis
=
1
)
matched_idx
=
np
.
concatenate
((
row
.
reshape
(
-
1
,
1
),
col
.
reshape
(
-
1
,
1
)),
axis
=
1
)
logger
.
info
(
"Linear assignment done"
)
logger
.
debug
(
"Linear assignment done"
)
unmatched_trackers
,
unmatched_detections
=
[],
[]
unmatched_trackers
,
unmatched_detections
=
[],
[]
for
t
,
trk
in
enumerate
(
trackers
):
for
t
,
trk
in
enumerate
(
trackers
):
if
t
not
in
matched_idx
[:,
0
]:
if
t
not
in
matched_idx
[:,
0
]:
...
@@ -229,7 +228,7 @@ class CementBagCounter(ModelWrapper):
...
@@ -229,7 +228,7 @@ class CementBagCounter(ModelWrapper):
matches
=
np
.
empty
((
0
,
2
),
dtype
=
int
)
matches
=
np
.
empty
((
0
,
2
),
dtype
=
int
)
else
:
else
:
matches
=
np
.
concatenate
(
matches
,
axis
=
0
)
matches
=
np
.
concatenate
(
matches
,
axis
=
0
)
logger
.
info
(
"leaving assign detections to trackers function"
)
logger
.
debug
(
"leaving assign detections to trackers function"
)
return
matches
,
np
.
array
(
unmatched_detections
),
np
.
array
(
unmatched_trackers
)
return
matches
,
np
.
array
(
unmatched_detections
),
np
.
array
(
unmatched_trackers
)
def
get_line_coordinates
(
self
):
def
get_line_coordinates
(
self
):
...
@@ -267,92 +266,6 @@ class CementBagCounter(ModelWrapper):
...
@@ -267,92 +266,6 @@ class CementBagCounter(ModelWrapper):
else
:
else
:
return
False
return
False
def
insert_alarm_event
(
self
,
message
=
"MRP Missing"
,
asset_hierarchy
=
""
):
data
=
{
"device_instance_id"
:
asset_hierarchy
,
"device_instance_ids"
:
asset_hierarchy
,
"alarm_id"
:
"alarm_configuration_212"
,
"triggered_devices"
:
[
asset_hierarchy
],
"tag_value"
:
5.0
,
"start_time"
:
None
,
"end_time"
:
""
,
"current_level"
:
0
,
"id"
:
"alarm_event_1567101"
,
"trigger_time"
:
[
{
"start_time"
:
None
,
"counter"
:
0
}
],
"trigger_levels"
:
[
{
"timestamp"
:
None
,
"notificaton_profile"
:
[
{
"usersOrUserGroup"
:
[
{
"value"
:
"access_group_100"
,
"type"
:
"access_group"
,
"label"
:
"ACC Admin"
}
],
"notificationProfile"
:
[
"alarm_notify_type_4"
],
"emailIds"
:
[],
"phoneNumbers"
:
[],
"notificationTone"
:
""
,
"isNotificationToneShow"
:
True
,
"triggers"
:
[
{
"device_instance_id"
:
None
,
"tags"
:
None
,
"customValueType"
:
None
,
"customValue"
:
None
,
"counter"
:
1
}
],
"counter"
:
1
,
"enable_custom"
:
True
}
]
}
],
"priority"
:
"alarm_priority_type_109"
,
"tag_id"
:
""
,
"template"
:
"MRP Missing"
,
"acknowledge"
:
True
,
"alarmName"
:
message
,
"alarmType"
:
"Alarm"
,
"created_by"
:
"user_100"
,
"project_id"
:
"project_101"
,
"product_encrypted"
:
False
,
"start_time_in_epoch"
:
None
,
"show_data_viz"
:
True
,
"alarm_condition"
:
message
,
"tag_id_list"
:
[
asset_hierarchy
],
"tag_value_json"
:
{
asset_hierarchy
:
5.0
},
"alarm_tag_list"
:
[
asset_hierarchy
],
"acknowledged_at"
:
"2022-01-06 20:51:22"
,
"acknowledged_by"
:
None
}
epoch
=
int
(
time
.
time
())
*
1000
time_string
=
datetime
.
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S.
%
f"
)
data
[
'start_time_in_epoch'
]
=
epoch
data
[
'trigger_time'
][
0
][
'start_time'
]
=
epoch
data
[
'start_time'
]
=
time_string
data
[
'trigger_levels'
][
0
][
'timestamp'
]
=
time_string
data
[
'acknowledged_at'
]
=
time_string
data
[
'id'
]
=
f
"alarm_event_{str(uuid4()).split('-')[0]}"
self
.
mongo_alarm_coll
.
insert_one
(
data
)
def
validate_point_position
(
self
,
point
):
def
validate_point_position
(
self
,
point
):
"""
"""
...
@@ -385,7 +298,7 @@ class CementBagCounter(ModelWrapper):
...
@@ -385,7 +298,7 @@ class CementBagCounter(ModelWrapper):
:param frame: image
:param frame: image
:param detection_objects: detection object having object id and centroids
:param detection_objects: detection object having object id and centroids
"""
"""
logger
.
info
(
"Updating Cement Bag Count
"
)
logger
.
debug
(
f
"Updating Cement Bag Count and detection objects are {detection_objects}
"
)
for
(
object_id
,
det
,
class_detected
)
in
zip
(
for
(
object_id
,
det
,
class_detected
)
in
zip
(
detection_objects
,
detections
,
class_name
detection_objects
,
detections
,
class_name
):
):
...
@@ -481,7 +394,7 @@ class CementBagCounter(ModelWrapper):
...
@@ -481,7 +394,7 @@ class CementBagCounter(ModelWrapper):
removable_detections
=
[]
removable_detections
=
[]
centroid_distance_in_pixels
=
(
self
.
centroid_distance
*
w
)
/
100
centroid_distance_in_pixels
=
(
self
.
centroid_distance
*
w
)
/
100
logger
.
info
(
f
"centroid_distance_in_pixels : {centroid_distance_in_pixels}"
)
logger
.
debug
(
f
"centroid_distance_in_pixels : {centroid_distance_in_pixels}"
)
if
dets
:
if
dets
:
for
j
in
dets
:
for
j
in
dets
:
centroid_1
=
j
[
"points"
][
0
]
+
(
j
[
"points"
][
2
]
-
j
[
"points"
][
0
])
/
2
centroid_1
=
j
[
"points"
][
0
]
+
(
j
[
"points"
][
2
]
-
j
[
"points"
][
0
])
/
2
...
@@ -492,7 +405,7 @@ class CementBagCounter(ModelWrapper):
...
@@ -492,7 +405,7 @@ class CementBagCounter(ModelWrapper):
centroid_2
=
k
[
"points"
][
0
]
+
(
k
[
"points"
][
2
]
-
k
[
"points"
][
0
])
/
2
centroid_2
=
k
[
"points"
][
0
]
+
(
k
[
"points"
][
2
]
-
k
[
"points"
][
0
])
/
2
conf_2
=
k
[
"conf"
]
conf_2
=
k
[
"conf"
]
centroid_distance
=
abs
(
centroid_2
-
centroid_1
)
centroid_distance
=
abs
(
centroid_2
-
centroid_1
)
logger
.
info
(
f
"centroid distance : {centroid_distance}"
)
logger
.
debug
(
f
"centroid distance : {centroid_distance}"
)
if
centroid_distance
<
centroid_distance_in_pixels
:
if
centroid_distance
<
centroid_distance_in_pixels
:
if
conf_1
>
conf_2
:
if
conf_1
>
conf_2
:
if
k
not
in
removable_detections
:
if
k
not
in
removable_detections
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment