Skip to content

Commit

Permalink
* renaming some tracklet things
Browse files Browse the repository at this point in the history
* reloading network variables constantly... lets see if that makes any problems
  • Loading branch information
Tristan Walter committed Mar 6, 2025
1 parent b8b5bb3 commit 40cea2b
Show file tree
Hide file tree
Showing 14 changed files with 160 additions and 102 deletions.
37 changes: 21 additions & 16 deletions Application/src/tracker/gui/TrackingScene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ bool TrackingScene::on_global_event(Event event) {
break;
case Keyboard::Comma:
WorkProgress::add_queue("Pausing...", [this](){
_state->analysis.set_paused(not _state->analysis.paused()).get();
_state->analysis->set_paused(not _state->analysis->paused()).get();
});
break;
case Keyboard::S:
Expand Down Expand Up @@ -569,10 +569,10 @@ void TrackingScene::activate() {

} else if(key == "track_pause") {
/*gui::WorkProgress::add_queue("pausing...", [this](){
_state->analysis.bump();
_state->analysis->bump();
bool pause = SETTING(track_pause).value<bool>();
if(_state->analysis.paused() != pause) {
_state->analysis.set_paused(pause).get();
if(_state->analysis->paused() != pause) {
_state->analysis->set_paused(pause).get();
}
});*/
} else if(key == "analysis_range") {
Expand All @@ -589,7 +589,7 @@ void TrackingScene::activate() {
WorkProgress::add_queue("", [frame = _data->_cache->frame_idx, this](){
Tracker::instance()->_remove_frames(frame);
if(_state)
_state->analysis.set_paused(false);
_state->analysis->set_paused(false);
});
}
}
Expand Down Expand Up @@ -649,9 +649,11 @@ void TrackingScene::activate() {
_state->init_video();

_state->tracker->register_add_callback([this](Frame_t frame){
if(GUI_SETTINGS(gui_frame) == frame) {
redraw_all();
}
SceneManager::getInstance().enqueue([this, frame](){
if(GUI_SETTINGS(gui_frame) == frame) {
redraw_all();
}
});
});

assert(not _data->_frame_callback);
Expand Down Expand Up @@ -957,7 +959,7 @@ void TrackingScene::_draw(DrawStructure& graph) {
return;

if(_data->_tracker_has_added_frames
//&& _state && _state->analysis.is_paused()
//&& _state && _state->analysis->is_paused()
&& _data->_cache)
{
auto result = _data->_cache->update_slow_tracker_stuff();
Expand Down Expand Up @@ -1397,7 +1399,7 @@ void TrackingScene::init_gui(dyn::DynamicGUI& dynGUI, DrawStructure& ) {
auto frame = Meta::fromStr<Frame_t>(action.first());
_state->tracker->_remove_frames(frame);
}
_state->analysis.set_paused(false);
_state->analysis->set_paused(false);
}),
ActionFunc("load_results", [this](Action){
_state->load_state(SceneManager::getInstance().gui_task_queue(), Output::TrackingResults::expected_filename());
Expand Down Expand Up @@ -1441,7 +1443,7 @@ void TrackingScene::init_gui(dyn::DynamicGUI& dynGUI, DrawStructure& ) {
bool value = Meta::fromStr<bool>(action.first());
WorkProgress::add_queue("Pausing...", [this, value](){
if(_state)
_state->analysis.set_paused(value).get();
_state->analysis->set_paused(value).get();
});
}),
ActionFunc("write_config", [video = _state->video](Action){
Expand Down Expand Up @@ -1470,12 +1472,12 @@ void TrackingScene::init_gui(dyn::DynamicGUI& dynGUI, DrawStructure& ) {
);
}),
ActionFunc("auto_correct", [this](Action){
_state->_controller->auto_correct(SceneManager::getInstance().gui_task_queue(), false);
VIControllerImpl::auto_correct(_state->_controller, SceneManager::getInstance().gui_task_queue(), false);
}),
ActionFunc("visual_identification", [this](Action) {
vident::training_data_dialog(SceneManager::getInstance().gui_task_queue(), false, [](){
Print("callback ");
}, _state->_controller.get());
}, _state->_controller);
}),
ActionFunc("remove_automatic_matches", [this](const Action& action) {
REQUIRE_EXACTLY(2, action);
Expand All @@ -1489,7 +1491,7 @@ void TrackingScene::init_gui(dyn::DynamicGUI& dynGUI, DrawStructure& ) {
LockGuard guard(w_t{}, "automatic assignments");
AutoAssign::delete_automatic_assignments(fdx, range);
_state->tracker->_remove_frames(range.start());
_state->analysis.set_paused(false);
_state->analysis->set_paused(false);
}
} else {
auto frame = Meta::fromStr<Frame_t>(action.parameters.back());
Expand All @@ -1498,7 +1500,7 @@ void TrackingScene::init_gui(dyn::DynamicGUI& dynGUI, DrawStructure& ) {
LockGuard guard(w_t{}, "automatic assignments");
AutoAssign::delete_automatic_assignments(fdx, FrameRange(Range<Frame_t>{frame, frame}));
_state->tracker->_remove_frames(frame);
_state->analysis.set_paused(false);
_state->analysis->set_paused(false);
}
}

Expand All @@ -1520,7 +1522,10 @@ void TrackingScene::init_gui(dyn::DynamicGUI& dynGUI, DrawStructure& ) {
VarFunc("is_paused", [this](const VarProps&) -> bool {
if(not _state)
return false;
return _state->analysis.is_paused();
return _state->analysis->is_paused();
}),
VarFunc("is_checking_tracklet_identities", [](const VarProps&) -> bool {
return Tracker::is_checking_tracklet_identities.load();
}),
VarFunc("get_tracklet", [this](const VarProps& props) -> FrameRange {
if(props.parameters.size() != 1)
Expand Down
34 changes: 17 additions & 17 deletions Application/src/tracker/gui/TrackingState.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ VIControllerImpl::VIControllerImpl(std::weak_ptr<pv::File> video, TrackingState&
: _scene(&scene)
{
_video = std::move(video);
_tracker = scene.tracker.get();
_analysis = &scene.analysis;
_tracker = std::weak_ptr(scene.tracker);
_analysis = std::weak_ptr(scene.analysis);
}

static constexpr Frame_t cache_size{Frame_t::number_t(10)};
Expand Down Expand Up @@ -82,15 +82,15 @@ auto TrackingState::addSafeTask(const std::string& title, Func&& f) {
TrackingState::TrackingState(GUITaskQueue_t* gui)
: video(pv::File::Make(SETTING(filename).value<file::Path>())),
tracker(std::make_unique<track::Tracker>(*this->video)),
analysis(
analysis(std::unique_ptr<ConnectedTasks>(new ConnectedTasks(
{
[this](ConnectedTasks::Type&& ptr, auto&) -> bool {
return stage_0(std::move(ptr));
},
[this](ConnectedTasks::Type&& ptr, auto&) -> bool {
return stage_1(std::move(ptr));
}
}),
}))),
pool(4u, "preprocess_main"),
_controller(std::make_unique<VIControllerImpl>(video, *this))
{
Expand All @@ -101,11 +101,11 @@ TrackingState::TrackingState(GUITaskQueue_t* gui)

} else if(SETTING(auto_train)) {
SETTING(auto_train) = false;
_controller->auto_train(gui, [](){});
VIControllerImpl::auto_train(_controller, gui, [](){});

} else if(SETTING(auto_apply)) {
SETTING(auto_apply) = false;
_controller->auto_apply(gui, [](){});
VIControllerImpl::auto_apply(_controller, gui, [](){});

} else if(SETTING(auto_tags)) {
auto message = "Can currently only use auto_tags in combination with '-load', when loading from a results file generated by TGrabs (where the tag information is stored). Please append '-load' to the command-line, for example, to load an existing results file.\nOtherwise please open a ticket at https://github.com/mooch443/trex, if you have a specific application for this kind of function (where TRex, not TGrabs, applies a network model to existing tag images).";
Expand All @@ -126,7 +126,7 @@ TrackingState::TrackingState(GUITaskQueue_t* gui)
{
SETTING(auto_quit) = false;

analysis.terminate();
analysis->terminate();
_controller->auto_quit(gui);
}
};
Expand All @@ -143,7 +143,7 @@ TrackingState::~TrackingState() {
#endif

pool.force_stop();
analysis.terminate();
analysis->terminate();

if(_end_task.valid())
_end_task.get();
Expand Down Expand Up @@ -360,14 +360,14 @@ void TrackingState::init_video() {
for (auto i=0_f; i<cache_size; ++i)
unused.emplace(std::make_unique<PPFrame>(tracker->average().bounds().size()));

analysis.start(// main thread
analysis->start(// main thread
[this, &analysis = analysis, &please_stop_analysis = please_stop_analysis, &currentID = currentID, &tracker = tracker, &video = video]()
{
auto endframe = tracker->end_frame();
if(not currentID.load().valid()
|| not endframe.valid()
|| currentID.load() > endframe + cache_size
|| (analysis.stage_empty(0) && analysis.stage_empty(1))
|| (analysis->stage_empty(0) && analysis->stage_empty(1))
|| currentID.load() < endframe)
{
currentID = endframe; // update current as well
Expand Down Expand Up @@ -407,7 +407,7 @@ void TrackingState::init_video() {
currentID = currentID.load() + 1_f;
ptr->set_index(currentID.load());

analysis.add(std::move(ptr));
analysis->add(std::move(ptr));
}
}
);
Expand All @@ -417,7 +417,7 @@ void TrackingState::on_tracking_done() {
please_stop_analysis = true;

addSafeTask("", [this](){
analysis.set_paused(true).get();
analysis->set_paused(true).get();

tracker->global_tracklet_order_changed();
tracker->global_tracklet_order();
Expand Down Expand Up @@ -546,8 +546,8 @@ void TrackingState::save_state(GUITaskQueue_t* gui, bool force_overwrite) {
save_state_visible = true;
file::Path file = Output::TrackingResults::expected_filename();
auto fn = [this, file, gui]() {
bool before = analysis.is_paused();
analysis.set_paused(true).get();
bool before = analysis->is_paused();
analysis->set_paused(true).get();

LockGuard guard(w_t{}, "GUI::save_state");
try {
Expand All @@ -563,7 +563,7 @@ void TrackingState::save_state(GUITaskQueue_t* gui, bool force_overwrite) {
FormatExcept("Something went wrong saving program state. Maybe no write permissions?"); }

if(!before)
analysis.set_paused(false).get();
analysis->set_paused(false).get();

save_state_visible = false;
};
Expand Down Expand Up @@ -613,8 +613,8 @@ std::future<void> TrackingState::load_state(GUITaskQueue_t* gui, file::Path from
state_visible = true;

auto fn = [this, from, gui]() {
//bool before = analysis.is_paused();
analysis.set_paused(true).get();
//bool before = analysis->is_paused();
analysis->set_paused(true).get();

track::Categorize::DataStore::clear();

Expand Down
6 changes: 3 additions & 3 deletions Application/src/tracker/gui/TrackingState.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ struct TrackingState {
/**
* @brief Tracker used for tracking objects/entities in the video.
*/
std::unique_ptr<track::Tracker> tracker;
std::shared_ptr<track::Tracker> tracker;

/**
* @brief Flag indicating whether to stop the analysis process.
Expand All @@ -62,7 +62,7 @@ struct TrackingState {
/**
* @brief Manages the analysis tasks and their inter-dependencies.
*/
ConnectedTasks analysis;
std::shared_ptr<ConnectedTasks> analysis;

/**
* @brief Pool of threads used for parallel processing of analysis tasks.
Expand Down Expand Up @@ -115,7 +115,7 @@ struct TrackingState {
_apply_callbacks.push(std::move(fn));
}

std::unique_ptr<VIControllerImpl> _controller;
std::shared_ptr<VIControllerImpl> _controller;

bool stage_0(ConnectedTasks::Type&&);
bool stage_1(ConnectedTasks::Type&&);
Expand Down
Loading

0 comments on commit 40cea2b

Please sign in to comment.