Mercurial > hg > orthanc-stone
comparison Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp @ 1951:060d61913e39 deep-learning
deep learning in steps
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 12 Aug 2022 21:49:37 +0200 |
parents | 6ffd65cfd2ee |
children | a1e0aae9c17f |
comparison
equal
deleted
inserted
replaced
1950:6ffd65cfd2ee | 1951:060d61913e39 |
---|---|
3666 | 3666 |
3667 | 3667 |
3668 #include <emscripten/fetch.h> | 3668 #include <emscripten/fetch.h> |
3669 #include "deep-learning/WebAssembly/Worker.pb.h" | 3669 #include "deep-learning/WebAssembly/Worker.pb.h" |
3670 | 3670 |
3671 static void SendRequestToWebWorker(const OrthancStone::Messages::Request& request); | |
3672 | |
3671 static void DeepLearningCallback(char* data, | 3673 static void DeepLearningCallback(char* data, |
3672 int size, | 3674 int size, |
3673 void* payload) | 3675 void* payload) |
3674 { | 3676 { |
3675 OrthancStone::Messages::Response response; | 3677 OrthancStone::Messages::Response response; |
3681 DISPATCH_JAVASCRIPT_EVENT("DeepLearningInitialized"); | 3683 DISPATCH_JAVASCRIPT_EVENT("DeepLearningInitialized"); |
3682 break; | 3684 break; |
3683 | 3685 |
3684 case OrthancStone::Messages::ResponseType::PARSED_MODEL: | 3686 case OrthancStone::Messages::ResponseType::PARSED_MODEL: |
3685 LOG(WARNING) << "Number of steps in the model: " << response.parse_model().number_of_steps(); | 3687 LOG(WARNING) << "Number of steps in the model: " << response.parse_model().number_of_steps(); |
3686 DISPATCH_JAVASCRIPT_EVENT("DeepLearningReady"); | 3688 DISPATCH_JAVASCRIPT_EVENT("DeepLearningModelReady"); |
3687 break; | 3689 break; |
3690 | |
3691 case OrthancStone::Messages::ResponseType::LOADED_IMAGE: | |
3692 { | |
3693 OrthancStone::Messages::Request request; | |
3694 request.set_type(OrthancStone::Messages::RequestType::EXECUTE_STEP); | |
3695 SendRequestToWebWorker(request); | |
3696 break; | |
3697 } | |
3698 | |
3699 case OrthancStone::Messages::ResponseType::STEP_DONE: | |
3700 { | |
3701 EM_ASM({ | |
3702 const customEvent = document.createEvent("CustomEvent"); | |
3703 customEvent.initCustomEvent("DeepLearningStep", false, false, | |
3704 { "progress" : $0 }); | |
3705 window.dispatchEvent(customEvent); | |
3706 }, | |
3707 response.step().progress() | |
3708 ); | |
3709 | |
3710 if (response.step().done()) | |
3711 { | |
3712 LOG(WARNING) << "SUCCESS! Mask: " << response.step().output().width() << "x" | |
3713 << response.step().output().height() << " for frame " | |
3714 << response.step().output().sop_instance_uid() << " / " | |
3715 << response.step().output().frame_number(); | |
3716 } | |
3717 else | |
3718 { | |
3719 OrthancStone::Messages::Request request; | |
3720 request.set_type(OrthancStone::Messages::RequestType::EXECUTE_STEP); | |
3721 SendRequestToWebWorker(request); | |
3722 } | |
3723 | |
3724 break; | |
3725 } | |
3688 | 3726 |
3689 default: | 3727 default: |
3690 LOG(ERROR) << "Unsupported response type from the deep learning worker"; | 3728 LOG(ERROR) << "Unsupported response type from the deep learning worker"; |
3691 } | 3729 } |
3692 } | 3730 } |