diff --git a/bin/models/cunet/info.json b/bin/models/cunet/info.json index 227af7a..ecc6071 100644 --- a/bin/models/cunet/info.json +++ b/bin/models/cunet/info.json @@ -1,3 +1,4 @@ {"name":"upcunet","arch_name":"upcunet","has_noise_scale":true,"channels":3, -"scale_factor":2,"offset":36,"recommended_crop_size":184 +"scale_factor":2,"offset":36,"recommended_crop_size":184, +"scale_factor_noise":1,"offset_noise":28 } \ No newline at end of file diff --git a/common/cNet.cpp b/common/cNet.cpp index abbffb6..0141822 100644 --- a/common/cNet.cpp +++ b/common/cNet.cpp @@ -191,13 +191,11 @@ Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path, const auto arch_name = d["arch_name"].GetString(); const bool has_noise_scale = d.HasMember("has_noise_scale") && d["has_noise_scale"].GetBool() ? true : false; const int channels = d["channels"].GetInt(); - const int recommended_crop_size = d.HasMember("recommended_crop_size") ? d["recommended_crop_size"].GetInt() : -1; info.name = name; info.arch_name = arch_name; info.has_noise_scale = has_noise_scale; info.channels = channels; - info.recommended_crop_size = recommended_crop_size; if (d.HasMember("offset")) { @@ -217,6 +215,14 @@ Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path, info.noise_scale.scale_factor = scale_factor; } + if (d.HasMember("recommended_crop_size")) + { + const int recommended_crop_size = d["recommended_crop_size"].GetInt(); + info.noise.recommended_crop_size = recommended_crop_size; + info.scale.recommended_crop_size = recommended_crop_size; + info.noise_scale.recommended_crop_size = recommended_crop_size; + } + if (d.HasMember("offset_noise")) { const int offset = d["offset_noise"].GetInt(); @@ -229,6 +235,12 @@ Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path, info.noise.scale_factor = scale_factor; } + if (d.HasMember("recommended_crop_size_noise")) + { + const int recommended_crop_size = d["recommended_crop_size_noise"].GetInt(); + info.noise.recommended_crop_size = recommended_crop_size; + } + if (d.HasMember("offset_scale")) { const int offset = d["offset_scale"].GetInt(); @@ -241,6 +253,12 @@ Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path, info.scale.scale_factor = scale_factor; } + if (d.HasMember("recommended_crop_size_scale")) + { + const int recommended_crop_size = d["recommended_crop_size_scale"].GetInt(); + info.scale.recommended_crop_size = recommended_crop_size; + } + if (d.HasMember("offset_noise_scale")) { const int offset = d["offset_noise_scale"].GetInt(); @@ -252,6 +270,12 @@ Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path, const int scale_factor = d["scale_factor_noise_scale"].GetInt(); info.noise_scale.scale_factor = scale_factor; } + + if (d.HasMember("recommended_crop_size_noise_scale")) + { + const int recommended_crop_size = d["recommended_crop_size_noise_scale"].GetInt(); + info.noise_scale.recommended_crop_size = recommended_crop_size; + } } catch (...) { diff --git a/common/waifu2x.h b/common/waifu2x.h index fa23ad9..59ce928 100644 --- a/common/waifu2x.h +++ b/common/waifu2x.h @@ -65,13 +65,13 @@ public: { int scale_factor; int offset; + int recommended_crop_size; }; std::string name; std::string arch_name; bool has_noise_scale; int channels; - int recommended_crop_size; stParam noise; stParam scale; diff --git a/waifu2x-caffe-gui/MainDialog.cpp b/waifu2x-caffe-gui/MainDialog.cpp index bb1681f..0b94889 100644 --- a/waifu2x-caffe-gui/MainDialog.cpp +++ b/waifu2x-caffe-gui/MainDialog.cpp @@ -548,11 +548,31 @@ void DialogEvent::SetCropSizeList(const boost::filesystem::path & input_path) bool isRecommendedCropSize = false; Waifu2x::stInfo info; - if (Waifu2x::GetInfo(model_dir, info) && info.recommended_crop_size > 0) + if (Waifu2x::GetInfo(model_dir, info)) { - tstring str(to_tstring(info.recommended_crop_size)); - SendMessage(hcrop, CB_ADDSTRING, 0, (LPARAM)str.c_str()); - isRecommendedCropSize = true; + int recommended_crop_size = 0; + switch (mode) + { + case Waifu2x::eWaifu2xModelTypeNoise: + recommended_crop_size = info.noise.recommended_crop_size; + break; + case Waifu2x::eWaifu2xModelTypeScale: + recommended_crop_size = info.scale.recommended_crop_size; + break; + case Waifu2x::eWaifu2xModelTypeNoiseScale: + recommended_crop_size = info.noise_scale.recommended_crop_size; + break; + case Waifu2x::eWaifu2xModelTypeAutoScale: + recommended_crop_size = info.noise_scale.recommended_crop_size; + break; + } + + if (recommended_crop_size > 0) + { + tstring str(to_tstring(recommended_crop_size)); + SendMessage(hcrop, CB_ADDSTRING, 0, (LPARAM)str.c_str()); + isRecommendedCropSize = true; + } } if (list.size() > 0)