Fixed application of entropy threshold
Signed-off-by: Jim Martens <github@2martens.de>
This commit is contained in:
@ -411,11 +411,11 @@ def _apply_entropy_threshold(observations: Sequence[np.ndarray], entropy_thresho
|
|||||||
final_observations.append(observations[i])
|
final_observations.append(observations[i])
|
||||||
continue
|
continue
|
||||||
|
|
||||||
filtered_image_observations = observations[observations[i][-1] < entropy_threshold]
|
filtered_image_observations = observations[observations[i][:, -1] < entropy_threshold]
|
||||||
final_image_observations = np.copy(filtered_image_observations[:, :, -8:-1])
|
final_image_observations = np.copy(filtered_image_observations[:, -8:-1])
|
||||||
final_image_observations[:, :, 0] = np.argmax(filtered_image_observations[:, :, :-5], axis=-1)
|
final_image_observations[:, 0] = np.argmax(filtered_image_observations[:, :-5], axis=-1)
|
||||||
final_image_observations[:, :, 1] = np.amax(filtered_image_observations[:, :, :-5], axis=-1)
|
final_image_observations[:, 1] = np.amax(filtered_image_observations[:, :-5], axis=-1)
|
||||||
final_image_observations[:, :, 2] = filtered_image_observations[:, :, -1]
|
final_image_observations[:, 2] = filtered_image_observations[:, -1]
|
||||||
final_observations.append(final_image_observations)
|
final_observations.append(final_image_observations)
|
||||||
|
|
||||||
return final_observations
|
return final_observations
|
||||||
@ -479,7 +479,7 @@ def _get_observations(detections: Sequence[np.ndarray]) -> List[np.ndarray]:
|
|||||||
if not len(overlap_detections[0]):
|
if not len(overlap_detections[0]):
|
||||||
continue
|
continue
|
||||||
observation_set = np.unique(overlap_detections, axis=0)
|
observation_set = np.unique(overlap_detections, axis=0)
|
||||||
for k in overlap_detections:
|
for k in overlap_detections[0]:
|
||||||
# check if box was already removed from observation, then skip
|
# check if box was already removed from observation, then skip
|
||||||
if k not in observation_set:
|
if k not in observation_set:
|
||||||
continue
|
continue
|
||||||
@ -488,8 +488,8 @@ def _get_observations(detections: Sequence[np.ndarray]) -> List[np.ndarray]:
|
|||||||
# detection
|
# detection
|
||||||
second_overlaps = overlaps[k]
|
second_overlaps = overlaps[k]
|
||||||
second_detections = np.unique(np.nonzero(second_overlaps >= 0.95), axis=0)
|
second_detections = np.unique(np.nonzero(second_overlaps >= 0.95), axis=0)
|
||||||
difference = _set_difference(observation_set, second_detections)
|
difference = np.setdiff1d(observation_set, second_detections, assume_unique=True)
|
||||||
observation_set = _set_difference(observation_set, difference)
|
observation_set = np.setdiff1d(observation_set, difference)
|
||||||
|
|
||||||
if used_boxes is None:
|
if used_boxes is None:
|
||||||
used_boxes = observation_set
|
used_boxes = observation_set
|
||||||
@ -522,7 +522,11 @@ def _set_difference(first_array: np.ndarray, second_array: np.ndarray) -> np.nda
|
|||||||
Returns:
|
Returns:
|
||||||
set difference between first_array and second_array
|
set difference between first_array and second_array
|
||||||
"""
|
"""
|
||||||
dims = np.maximum(second_array.max(axis=0),
|
max2 = second_array.max(axis=0)
|
||||||
first_array.max(axis=0)) + 1
|
max1 = first_array.max(axis=0)
|
||||||
return second_array[~np.in1d(np.ravel_multi_index(second_array.T, dims),
|
dims = np.maximum(max2,
|
||||||
np.ravel_multi_index(first_array.T, dims))]
|
max1) + 1
|
||||||
|
rmi2 = np.ravel_multi_index(second_array.T, dims)
|
||||||
|
rmi1 = np.ravel_multi_index(first_array.T, dims)
|
||||||
|
in1d = np.in1d(rmi2, rmi1)
|
||||||
|
return second_array[~in1d]
|
||||||
|
|||||||
Reference in New Issue
Block a user