[classifier] make sure, we always start with user labeled detections
This commit is contained in:
parent
15264dbe48
commit
ae24463be2
@ -135,6 +135,16 @@ class ConsistencyWorker(QRunnable):
|
|||||||
del detections[lowest_dist]
|
del detections[lowest_dist]
|
||||||
return detections
|
return detections
|
||||||
|
|
||||||
|
def find_last_userlabeled(startframe):
|
||||||
|
t1index = np.where((self.frames < startframe) & (self.userlabeled) & (self.tracks == 1))[0][-1]
|
||||||
|
t2index = np.where((self.frames < startframe) & (self.userlabeled) & (self.tracks == 2))[0][-1]
|
||||||
|
d1 = Detection(t1index, self.frames[t1index], self.tracks[t1index], self.positions[t1index],
|
||||||
|
self.orientations[t1index], self.lengths[t1index], self.userlabeled[t1index])
|
||||||
|
d2 = Detection(t1index, self.frames[t2index], self.tracks[t2index], self.positions[t2index],
|
||||||
|
self.orientations[t2index], self.lengths[t2index], self.userlabeled[t2index])
|
||||||
|
last_detections[1] = d1
|
||||||
|
last_detections[2] = d2
|
||||||
|
|
||||||
unique_frames = np.unique(self.frames)
|
unique_frames = np.unique(self.frames)
|
||||||
steps = int((len(unique_frames) - self._startframe) // 100)
|
steps = int((len(unique_frames) - self._startframe) // 100)
|
||||||
errors = 0
|
errors = 0
|
||||||
@ -142,6 +152,7 @@ class ConsistencyWorker(QRunnable):
|
|||||||
progress = 0
|
progress = 0
|
||||||
self._stoprequest = False
|
self._stoprequest = False
|
||||||
last_detections = {1: None, 2: None, -1: None}
|
last_detections = {1: None, 2: None, -1: None}
|
||||||
|
find_last_userlabeled(self._startframe)
|
||||||
|
|
||||||
for f in unique_frames[unique_frames >= self._startframe]:
|
for f in unique_frames[unique_frames >= self._startframe]:
|
||||||
if self._stoprequest:
|
if self._stoprequest:
|
||||||
@ -188,7 +199,7 @@ class ConsistencyWorker(QRunnable):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
if error and self._stoponerror:
|
if error and self._stoponerror:
|
||||||
self.signals.message.emit("Tracking stopped at frame %i.", f)
|
self.signals.message.emit(f"Tracking stopped at frame {f}.")
|
||||||
break
|
break
|
||||||
elif error:
|
elif error:
|
||||||
continue
|
continue
|
||||||
@ -559,8 +570,11 @@ class ConsistencyClassifier(QWidget):
|
|||||||
self._messagebox.append("Error preparing data! Make sure that the first user-labeled frames contain both tracks!")
|
self._messagebox.append("Error preparing data! Make sure that the first user-labeled frames contain both tracks!")
|
||||||
self.setEnabled(False)
|
self.setEnabled(False)
|
||||||
return
|
return
|
||||||
max_startframe = np.min([t1_userlabeled[-1], t2_userlabeled[-1]])
|
max_startframe = np.min([t1_userlabeled[-1], t2_userlabeled[-1]]) -1
|
||||||
min_startframe = np.max([t1_userlabeled[0], t2_userlabeled[0]])
|
first_guess = np.max([t1_userlabeled[0], t2_userlabeled[0]])
|
||||||
|
while first_guess not in t1_userlabeled or first_guess not in t2_userlabeled:
|
||||||
|
first_guess += 1
|
||||||
|
min_startframe = first_guess + 1
|
||||||
self._maxframes = np.max(self._frames)
|
self._maxframes = np.max(self._frames)
|
||||||
self._maxframeslabel.setText(str(self._maxframes))
|
self._maxframeslabel.setText(str(self._maxframes))
|
||||||
self._startframe_spinner.setMinimum(min_startframe)
|
self._startframe_spinner.setMinimum(min_startframe)
|
||||||
|
Loading…
Reference in New Issue
Block a user