Compare commits

..

98 Commits

Author SHA1 Message Date
lltcggie
807cfcb78f イタリア語の言語ファイルを追加 resolved #216 2024-06-19 23:07:47 +09:00
lltcggie
3812b90f68 cuDNNが使うランタイムよりCUDAランタイムのバージョンが古くないかのチェックを入れた 2020-09-05 16:49:04 +09:00
lltcggie
c365977a1e CUDAデバイスのCCチェックを3.5に更新 2020-09-05 16:30:18 +09:00
lltcggie
07daa3665c Update README.md 2020-09-05 16:27:28 +09:00
lltcggie
f69abf82ad CUDA Toolkitを11.0に更新、cuDNNをv8.0.3に更新 2020-09-05 16:25:18 +09:00
lltcggie
c8dde5eb0a
Merge pull request #198 from dakotagrvtt/master
English translation of README.md file
2020-09-05 13:08:42 +09:00
Dakota
df762ffb57 Fixed grammar, spelling, slight formatting issues 2020-07-02 15:57:22 -05:00
Dakota Gravitt
6cecabf248 Initial English translation of README.md 2020-06-30 16:28:19 -05:00
lltcggie
a7befd9c7f Update README.md 2020-06-28 02:52:05 +09:00
lltcggie
897ae1495f README.mdからcuDNNの項を削除
cuDNNのdllを同梱するようにするのでわざわざ説明する必要がなくなったため
2020-06-28 02:31:04 +09:00
lltcggie
b06dc530fe
Merge pull request #167 from 07pepa/addCzechTranslation
Added czech translation
2020-06-28 01:56:39 +09:00
lltcggie
e27bf60945
Merge branch 'master' into addCzechTranslation 2020-06-28 01:56:24 +09:00
lltcggie
e659ab3a43
Merge pull request #162 from AndreasWebdev/patch-1
German translation
2020-06-28 01:54:16 +09:00
lltcggie
4e44d4a13f LangList.txtの微妙な変更巻き戻し 2020-06-28 01:52:57 +09:00
lltcggie
0341ec63c1
Merge pull request #157 from ghost/master
Improved Spanish translation
2020-06-28 01:51:32 +09:00
lltcggie
735ac9762d LangList.txtの微妙な変更巻き戻し 2020-06-28 01:49:43 +09:00
lltcggie
bb2aaa8916 #165 韓国語の言語ファイルを更新 2020-06-28 01:48:08 +09:00
lltcggie
67306abc32 使用するcuDNNをv7.6に更新 2020-06-28 01:48:08 +09:00
lltcggie
d0dc6e6d23 CUDA Toolkitを10.2に更新 2020-06-28 01:48:08 +09:00
lltcggie
9127b28b55
Merge pull request #151 from simrafael/master
Added brazilian portuguese language
2020-06-28 01:46:37 +09:00
Andreas Heimann
dd7eae43f6
Update bin/lang/german.json
Co-Authored-By: Electron <electron@freakmail.de>
2019-08-01 13:01:15 +02:00
Andreas Heimann
30e5845ac5
Update bin/lang/german.json
Co-Authored-By: Electron <electron@freakmail.de>
2019-08-01 12:58:16 +02:00
Andreas Heimann
8b155e47f2
Update bin/lang/german.json
Co-Authored-By: Electron <electron@freakmail.de>
2019-08-01 12:58:02 +02:00
Andreas Heimann
c0d9c20432
Update bin/lang/german.json
Co-Authored-By: Electron <electron@freakmail.de>
2019-08-01 12:57:47 +02:00
Andreas Heimann
1d92873d70
Update bin/lang/german.json
Co-Authored-By: Electron <electron@freakmail.de>
2019-08-01 12:57:38 +02:00
Andreas Heimann
698b5d8166
Update bin/lang/german.json
Co-Authored-By: Electron <electron@freakmail.de>
2019-08-01 12:57:30 +02:00
Andreas Heimann
e7d72e255e
Update bin/lang/german.json
Co-Authored-By: Electron <electron@freakmail.de>
2019-08-01 12:57:20 +02:00
Andreas Heimann
6e05cdd99a
Update bin/lang/german.json
Co-Authored-By: Electron <electron@freakmail.de>
2019-08-01 12:57:09 +02:00
Andreas Heimann
7dc6a9f75f
Update bin/lang/LangList.txt
Co-Authored-By: Electron <electron@freakmail.de>
2019-08-01 12:57:00 +02:00
Andreas Heimann
c091a557ec
Update bin/lang/LangList.txt
Co-Authored-By: Electron <electron@freakmail.de>
2019-08-01 12:56:45 +02:00
Josef Havránek
3fc9399a3f Added czech translation
Request for coments/merge
2019-04-18 14:56:36 +02:00
Andreas Heimann
daad1f358b added some proposed changes from @felixfrischeisen 2019-04-16 12:06:24 +02:00
Andreas Heimann
01c9e77009
Create german.json 2019-03-29 15:45:11 +01:00
Andreas Heimann
954535e3c0
add de_DE to langlist 2019-03-29 15:22:15 +01:00
Maximiliano Vildósola
14ebcea3ce Improved Spanish translation
Added an improved and more accurate Spanish translation.
2019-03-22 19:42:06 -03:00
simrafael
eabf35552d
Update LangList.txt
Changed portuguese.json to portuguese_brazilian.json.
2019-02-18 17:08:54 -03:00
simrafael
e681af17cb
Added portuguese_brazilian.json
Added translation for brazilian portuguese.
2019-02-18 17:05:00 -03:00
simrafael
0018275991
Update LangList.txt
Added portuguese language and adjusted spanish (it has spaces instead of separation with tab).
2019-02-18 16:57:36 -03:00
lltcggie
3f26c040f2 ノイズ除去と拡大でUpCUnetではなくCUnetが使われていたのを修正 resolved #141 2019-01-16 02:47:21 +09:00
lltcggie
cc711eb870 ノイズ除去だけの場合でもscale2.0x_modelを読み込んでいたバグを修正 2019-01-16 02:47:11 +09:00
lltcggie
991974a240
Merge pull request #140 from yoonhakcher/master
Update Chinese_Simplified.json
2019-01-16 02:21:13 +09:00
Johnny Yoon
90d7308ed4 Update Chinese_Simplified.json
简体中文更新
2018-12-04 12:45:49 +09:00
lltcggie
2608a2e85c
Update README.md 2018-12-01 18:15:17 +09:00
lltcggie
6a2d1e5813
Merge pull request #137 from yoonhakcher/master
Update Chinese_Simplified.json
2018-12-01 15:32:56 +09:00
lltcggie
c131ca38c4 GUIでモデルごとの分割サイズMod制限に引っかかった場合はエラーダイアログを出すようにした resolved #135
モデルによっては分割サイズがある数で割り切れないとエラーが起きるのでその対応
2018-12-01 15:25:41 +09:00
lltcggie
62c0f4bc71 コメント修正 2018-12-01 15:03:16 +09:00
lltcggie
cad223c7e5 サイズ指定の方のstImage::ShrinkImage()ではcv::INTER_AREAを全く使ってなかったのを修正
でもCUIでもGUIでもこの関数は使ってなかったから影響はない
2018-12-01 15:02:32 +09:00
lltcggie
20ad7ebd0b Poolingが強制的にcuDNNを使ってしまうのを修正 resolved #133 2018-12-01 14:45:38 +09:00
lltcggie
424542d3f7 CUDA無効で起動するbat追加 2018-12-01 14:43:00 +09:00
Johnny Yoon
e2fe0325ed Update Chinese_Simplified.json
简体中文改善
2018-11-30 14:04:08 +09:00
lltcggie
e5c310f851 noise_scaleとnoiseを両方持っているモデルに対応 2018-11-23 23:49:22 +09:00
lltcggie
8b53d0f086 各種コマンドラインオプションにcunet追加 resolved #132 2018-11-23 23:29:30 +09:00
lltcggie
0de94b6ff9
Update README.md 2018-11-23 23:22:34 +09:00
lltcggie
df0ceaea1e cuDNNのバージョンチェックの対象バージョンが古すぎたのを修正 resolved #111 2018-11-23 23:10:54 +09:00
lltcggie
bc6281ba7d ReleaseだとGUIで分割サイズがバグった値になるのを修正 2018-11-23 22:53:35 +09:00
lltcggie
1a3c0d323d CUnetでrecommended_crop_sizeの指定をやめた
そこまで出力に影響がない割りにrecommended_crop_sizeが大きすぎると動かない環境がでるし、小さすぎると遅くなるというジレンマを抱えていてめんどくさいから廃止
2018-11-23 22:47:01 +09:00
lltcggie
6e80372099 GUIでデフォルトのモデルを指定するようにした 2018-11-23 22:42:19 +09:00
lltcggie
d1ba0f1105 cunetのrecommended_crop_sizeをより多くのGPUで動かせるように減らした 2018-11-23 22:38:18 +09:00
lltcggie
b8c29d2aae GUIにCUnet追加 2018-11-23 22:29:11 +09:00
lltcggie
e9b146ac3a GUIでモデルの追加がもう少し楽になる構造にした 2018-11-23 22:17:25 +09:00
lltcggie
0add9fa2c9 cunetでノイズ除去用の設定を追加 2018-11-23 22:02:06 +09:00
lltcggie
0808ab9027 waifu2x v0.13.2のcunet、upcunetを取り込んだ
ただしcunetはupcunetと同じフォルダにあるせいで動かない
2018-11-23 18:36:53 +09:00
lltcggie
a96d22b4f4 cNet::LoadParameterFromJson()の不要なチェックを外した 2018-11-23 18:28:23 +09:00
lltcggie
7d1973c314 CUDAが使えない環境でCPUでUpResNet10を動作させるとクラッシュするのを修正 resolved #126 2018-10-25 20:57:45 +09:00
lltcggie
de6de69ac6 中国語(繁体字)の言語ファイル修正 resolved #119 2018-10-25 20:19:21 +09:00
lltcggie
e388e3a788 中国語(簡体字)の言語ファイル更新 resolved #37 2018-10-25 20:17:16 +09:00
lltcggie
125de0277c 英語の言語ファイル読み込みに失敗するのを修正 fixed #125 2018-10-25 20:11:44 +09:00
lltcggie
b08e61bda1
Update README.md 2018-10-25 05:22:20 +09:00
lltcggie
8823bb3a90 モデル変更時に推奨の分割サイズに戻すようにした 2018-10-25 05:15:35 +09:00
lltcggie
d7c9da5f2d
Update README.md 2018-10-25 05:00:49 +09:00
lltcggie
1428d36cee GUIでバッチサイズを設定できるようにした
CropSizeで出力が変わるモデルでCropSizeを変えずに高速化するため
2018-10-25 04:35:59 +09:00
lltcggie
6effe0dfaa モデルのおすすめのCropSizeを設定する機能追加、UpResNet10モデルにおすすめのCropSize設定
CropSizeによって出力が変わるモデル用の設定
2018-10-25 04:15:53 +09:00
lltcggie
a17ad89116 caffemodelとprototxtのみが存在してjsonとprototxt.protobinが存在しない状況でもエラーを吐かないようにした 2018-10-25 03:54:07 +09:00
lltcggie
b280d34413 UpResNet10モデル追加
モデルはwaifu2x-chainer v1.9.0のもの
2018-10-25 03:44:27 +09:00
lltcggie
c8090a6486 caffe更新 2018-10-25 03:36:25 +09:00
lltcggie
1e3c4796d8 UpResNet10のcaffemodelをwaifu2x-chainerのUpResNet10モデルから生成するスクリプト追加、生成したUpResNet10モデルとwaifu2x-chainerのUpResNet10モデルの出力を比較するスクリプト追加 2018-10-25 03:36:01 +09:00
lltcggie
65ad2de604 upresnet10_3.prototxt生成スクリプトが正しくないネットワークを吐き出していたのを修正、スクリプトのファイル名を変更 2018-10-25 03:34:27 +09:00
lltcggie
706ee0d32b UpResNet10のprototxtを作るスクリプト追加 2018-10-24 03:48:52 +09:00
lltcggie
ca223b2f00 CUDAアーキテクチャを指定するようにした 2018-10-18 00:35:18 +09:00
lltcggie
ccaaf677f7 ビルドエラー、リンクエラーになる箇所を修正 2018-10-17 23:16:03 +09:00
lltcggie
5fcbf4d657 コミット忘れ修正 2018-10-17 23:16:02 +09:00
lltcggie
5296d67a4e ビルド環境をVS2015に変更、依存ライブラリパス設定 2018-10-17 23:16:02 +09:00
lltcggie
76400950b2 依存ライブラリをサブモジュールに追加 2018-10-17 23:15:53 +09:00
lltcggie
520cc3b0cd Update README.md 2017-09-17 17:33:40 +09:00
lltcggie
3ce44ea66f cuDNN v7に更新 2017-09-17 17:26:13 +09:00
lltcggie
dd0ec0a302 Merge pull request #98 from Underforest/master
Add spanish language
2017-08-17 18:59:37 +09:00
Underforest
52a0c1da8e Update LangList.txt 2017-07-24 22:30:45 -07:00
Underforest
34e0f3ad2e whoops 2017-07-24 22:26:10 -07:00
Underforest
0084e7c991 Add Spanish strings 2017-07-24 22:25:22 -07:00
Underforest
60ef8838b3 refix w 2017-07-24 20:56:36 -07:00
Underforest
74e7be5626 Fixed format 2017-07-24 20:56:13 -07:00
Underforest
613278c595 Add spanish to language list 2017-07-24 20:54:38 -07:00
Underforest
8fedea3701 Update README.md 2017-07-24 20:48:03 -07:00
lltcggie
df60474d7b Merge pull request #97 from Akagase/master
Update README and russian.json
2017-07-21 00:33:44 +09:00
Akagase
fe44070761 Update russian.json 2017-07-13 10:21:11 +03:00
Akagase
948fd4083f Update README.md 2017-07-13 10:16:49 +03:00
lltcggie
7df39bff6a Merge pull request #90 from kenin0726/patch-6
Update korean.json
2017-05-27 17:26:26 +09:00
kenin0726
3a9ea9ee07 Update korean.json 2017-05-20 19:20:09 +09:00
70 changed files with 13698 additions and 398 deletions

7
.gitmodules vendored
View File

@ -7,3 +7,10 @@
[submodule "msgpack-c"] [submodule "msgpack-c"]
path = msgpack-c path = msgpack-c
url = https://github.com/msgpack/msgpack-c url = https://github.com/msgpack/msgpack-c
[submodule "caffe"]
path = caffe
url = https://github.com/lltcggie/caffe.git
branch = lltcggie/custom
[submodule "opencv"]
path = opencv
url = https://github.com/opencv/opencv.git

436
README-EN.md Normal file
View File

@ -0,0 +1,436 @@
waifu2x-caffe (for Windows)
----------
Author: lltcggie
This software uses only the conversion function of the image conversion software "[waifu2x](https://github.com/nagadomi/waifu2x)"
This software was rewritten using [Caffe](http://caffe.berkeleyvision.org/) and built for Windows.
It can be converted using CPU, but it can be converted faster than CPU by using CUDA (or cuDNN).
GUI supports English, Japanese, Simplified Chinese, Traditional Chinese, Korean, Turkish, Spanish, Russian, and French.
You can download the software from [the releases page](https://github.com/lltcggie/waifu2x-caffe/releases).
Requirements
----------
At least the following environment is required to run this software.
* OS: Windows Vista or later 64bit (There is no exe for 32bit)
* Memory: 1GB or more of free memory (however, this depends on the image size to be converted)
* GPU: NVIDIA GPU with Compute Capability 3.5 or higher
* Microsoft Visual C++ 2015 Redistributable Package Update 3 (x64 version) must be installed (Required)
- The above package is [here.](https://www.microsoft.com/ja-jp/download/details.aspx?id=53587)
- After pressing the `Download` button, select `vcredist_x64.exe` to download and install.
- If you can't find it, try searching with "Visual C++ 2015 Redistributable Package Update 3".
If you want to know the Compute Capability of your GPU, check it out on [this page](https://developer.nvidia.com/cuda-gpus).
How to use (GUI version)
--------
"Waifu2x-caffe.exe" is GUI software. Start by double-clicking.
Or, drag and drop the file or folder to "waifu2x-caffe.exe" with Explorer and the conversion will be performed with the settings at the last startup.
In that case, depending on the settings, if the conversion is successful, the dialog will be closed automatically.
You can also use the GUI to set options on the command line.
For details, see the section on command line options (common) and command line options (GUI version).
After starting, drag and drop an image or folder into the "Input path" field to automatically set the "Output path" field.
If you want to change the output destination, change the "Output path" column.
You can change the conversion settings to your liking.
## Input/output setting
Settings related to file input/output.
### Input path
Specify the path of the file you want to convert.
If you specify a folder, the files with the "extension to be converted in the folder"
including subfolders will be converted.
You can specify multiple files and folders by dragging.
In that case, the files are output in the new folder while maintaining the folder structure.
(In the input path column, "(Multi Files)" is displayed. The output folder name is generated
from the file and folder name that the mouse holds.)
When you click the browse button to select a file, you can select a single file, a folder, or multiple files.
### Output path
Specify the path to save the converted image.
When a folder is specified in "Input path", the converted file is saved in the specified folder (without changing the folder structure). If the specified folder does not exist, it will be created automatically.
### Extension to be converted in the folder
If the "Input path" is a folder, specify the extension of the image to be converted in the folder.
The default value is `png:jpg:jpeg:tif:tiff:bmp:tga`.
The delimiter is `:`.
Case does not matter.
Example.png:jpg:jpeg:tif:tiff:bmp:tga
### Output extension
Specify the format of the converted image.
The values that can be set for "Output image quality setting" and "Output depth bit rate" differ depending on the format specified here.
### Output quality setting
Specify the quality of the converted image.
The value that can be set is an integer.
The range and meaning of the values that can be specified depend on the format set in "Output extension".
* .jpg: Value range (0 to 100) The higher the number, the higher the image quality
* .webp: Range of values (1 to 100) The higher the number, the higher the image quality
* .tga: Value range (0 to 1) 0 means no compression, 1 means RLE compression
### Output depth bits
Specify the number of bits per channel of the converted image.
The value that can be specified depends on the format set in "Output extension".
## Conversion image quality/processing settings
Settings related to the file conversion processing method and image quality.
### Conversion mode
Specify the conversion mode.
* Noise reduction and magnification: Noise reduction and magnification are performed.
* Enlarge: Enlarge
* Noise removal: Performs noise removal
* Noise removal (automatic detection) and enlargement: Enlarge. Noise removal is also performed only when the input is a JPEG image
### JPEG noise removal level
Specify the noise reduction level. Higher levels remove noise more powerfully, but may result in a flatter picture.
### Enlarged size
Set the size after enlargement.
* Specified by enlargement ratio: Enlarges the image at the specified enlargement ratio
* Specified width after conversion: Enlarges to the specified width while maintaining the aspect ratio of the image (pixels)
* Specified height after conversion: Enlarges to the specified height while maintaining the aspect ratio of the image (pixels)
* Specify the width and width after conversion: Enlarges to the specified height and width. Specify as "1920x1080" (Unit is pixel)
For magnifications greater than 2x (only one time if removing noise is done the first time) Enlarges by 2x until the specified magnification is exceeded, and if the magnification is not a power of 2, shrinks last The process of doing is performed. Therefore, the conversion result may be a flat picture.
### Model
Specify the model to use.
The best model depends on the image to be converted, so we recommend that you try various models.
* 2D illustration (RGB model): 2D illustration model that converts all RGB of the image
* Photo/Anime (Photo model): Model for photo/animation
* 2D illustration (UpRGB model): A model that converts faster than 2D illustration (RGB model) with the same or higher image quality. However, the amount of memory (VRAM) that is consumed is larger than that of the RGB model, so adjust the division size if forced termination during conversion.
* Photo/animation (Up Photo model): A model that converts at higher speed than the photo/animation (Photo model) with the same or higher image quality. However, the amount of memory (VRAM) that is consumed is larger than that of the Photo model, so adjust the division size if it is forcibly terminated during conversion.
* 2D illustration (Y model): A model for 2D illustration that converts only the brightness of the image
* 2D illustration (UpResNet10 model): A model that converts with higher image quality than 2D illustration (UpRGB model). Note that this model will change the output result if the division size is different.
* 2D illustration (CUnet model): The model that can convert the 2D illustration with the highest image quality with the included model. Note that this model will change the output result if the division size is different.
### Use TTA mode
Specify whether to use TTA (Test-Time Augmentation) mode.
Using TTA mode, conversion is 8 times slower, but PSNR (one of the image evaluation indexes) is about 0.15.
## Processing speed setting
It is a group of setting items that affect the processing speed of image conversion.
### division size
Specify the width (pixel unit) when dividing and processing internally.
How to decide the optimum number (the process ends at the fastest) is explained in the section "Split size".
Separated by "-------", the upper one is the divisor of the vertical and horizontal size of the input image,
The lower one is a general division size read from "crop_size_list.txt".
If the partition size is too large, the amount of memory required (VRAM amount when using GPU) exceeds the memory available on the PC, and the software will be killed, so be careful.
Since it will affect the processing speed to some extent, when converting a large number of images with the same image size by specifying a folder, it is recommended to check the optimal division size before conversion.
However, be aware that depending on the model, the output result may change when the division size is changed.
(In that case, use the default split size and adjust the batch size to speed up processing.)
### Batch size
Specify the size when processing all at once internally.
Increasing the batch size may increase the processing speed.
Make sure that the amount of memory required, as well as the partition size, does not exceed the memory available on your PC.
## Operation setting
Settings that summarize the operation settings which are unlikely to be changed.
### Automatic conversion start setting at file input
Set whether to start the conversion automatically when the input file is specified by the reference button or drag and drop.
If the input file is given to exe as an argument, the setting contents of this item have no effect.
* Do not start automatically: Do not start conversion automatically when inputting a file
* Start after inputting one file: Start conversion automatically after inputting one file
* Start after inputting a folder or multiple files: Start conversion automatically when inputting a folder or multiple files. Single image file Convert files only when adjusting conversion settings
### Processor used
Specifies the processor that does the conversion.
* CUDA (cuDNN if available): CUDA(GPU) is used for conversion (cuDNN is used when cuDNN is available)
* CPU: Only CPU is used for conversion
### Do not overwrite output file
If this setting is ON, conversion will not be performed if a file with the same name exists in the image writing destination.
### Startup settings with arguments
Set the operation when an input file is given to exe as an argument.
* Convert at startup: Start conversion automatically at startup
* Exit on success: auto exit if not failed at the end of conversion
### Used GPU No.
You can specify the device number to use when there are multiple GPUs. Ignored when in CPU mode or when an invalid device number is specified.
### Fixed folder for input reference
The folder that is first displayed when you click the input reference button is fixed to the folder set here.
### Fixed folder when referencing output
The output destination folder of the converted image is fixed to the folder set here.
Also, the folder that is first displayed when you click the output reference button is fixed to the folder set here.
## Other
It is a group of other setting items.
### UI language
Set the UI language.
When starting up for the first time, the same language as the PC language setting is selected. (English if not present)
### cuDNN check
You can check if you can use cuDNN by clicking the "cuDNN check" button.
If cuDNN is not available, the reason will be displayed.
Click "Run" button to start conversion.
If you want to cancel while it is converting, click the "Cancel" button.
However, there is a time lag before it actually stops.
The progress bar shows the progress when changing multiple images.
The log shows the estimated remaining time, which is an estimate when processing multiple files with the same height and width.
Therefore, it is not useful when the size of the file is different, and when the number of images to be processed is 2 or less, only "Unknown" is displayed.
How to use (CUI version)
--------
"Waifu2x-caffe-cui.exe" is a command line tool.
Start a `command prompt`, type the command as follows, and press enter.
The following command prints usage information to the screen.
```
waifu2x-caffe-cui.exe --help
```
The following command is an example of commands that perform image conversion.
```
waifu2x-caffe-cui.exe -i mywaifu.png -m noise_scale --scale_ratio 1.6 --noise_level 2
```
After executing the above, the conversion result is saved in `mywaifu(noise_scale)(Level2)(x1.600000).png`.
For the command list and details of each command, refer to the section on command line options (common) and command line options (CUI version).
Command line options (common)
--------
With this software, the following options can be specified.
In the GUI version, if the command line option other than the input file is specified and started, the option file is not currently saved.
For the options not specified in the GUI version, the options at the time of the previous termination will be used.
### -l <string>, --input_extention_list <string>
When input_file is a folder, specify the extension of the image to be converted in the folder.
The default value is `png:jpg:jpeg:tif:tiff:bmp:tga`.
The delimiter is `:`.
Example.png:jpg:jpeg:tif:tiff:bmp:tga
### -e <string>, --output_extention <string>
Specifies the extension of the output image when input_file is a folder.
The default value is `png`.
### -m <noise|scale|noise_scale>, --mode <noise|scale|noise_scale>
Specify the conversion mode. If not specified, `noise_scale` is selected.
* noise: Performs noise reduction (to be exact, performs image conversion using a noise reduction model)
* scale: Enlarge (to be exact, after enlarging with the existing algorithm, perform image conversion using the model for enlarged image complement)
* noise_scale: Performs noise reduction and enlargement (after noise reduction, enlargement processing continues)
* auto_scale: Scales. Noise removal is also performed only when the input is a JPEG image
### -s <number with decimal point>, --scale_ratio <number with decimal point>
Specify how many times to enlarge the image. The default value is `2.0`, but you can specify a value other than 2.0.
If scale_width or scale_height is specified, that one has priority.
If you specify a number other than 2.0, the following processing is performed.
* First, repeat 2x enlargement to cover the specified magnification as necessary and sufficient.
* If a value other than a power of 2 is specified, the enlarged image will be reduced to the specified magnification.
### -w <integer>, --scale_width <integer>
Enlarges to the specified width while maintaining the aspect ratio of the image (in pixels).
If specified at the same time as scale_height, the image will be enlarged to have the specified width and height.
### -h <integer>, --scale_height <integer>
Enlarges to the specified height while maintaining the aspect ratio of the image (pixels).
If specified at the same time as scale_width, the image will be enlarged to have the specified width and height.
### -n <0|1|2|3>, --noise_level <0|1|2|3>
Specify the noise reduction level. As for the model for noise removal, only levels 0-3 are prepared, so
Please specify 0, 1 or 2 or 3.
The default value is `0`.
### -p <cpu|gpu|cudnn>, --process <cpu|gpu|cudnn>
Specifies the processor used for processing. The default value is `gpu`.
* cpu: Perform conversion using CPU.
* gpu: Convert using CUDA (GPU). For Windows version only, if cuDNN is available, use cuDNN.
* cudnn: Convert using cuDNN.
### -c <integer>, --crop_size <integer>
Specify the division size. The default value is `128`.
### -q <integer>, --output_quality <integer>
Set the image quality of the converted image. The default value is `-1`
The values that can be specified and their meanings depend on the format set in "Output extension".
If -1, the default value for each image format will be used.
### -d <integer>, --output_depth <integer>
Specify the number of bits per channel of the converted image. The default value is `8`.
The value that can be specified depends on the format set in "Output extension".
### -b <integer>, --batch_size <integer>
Specify the mini-batch size. The default value is `1`.
The mini-batch size is the number of blocks that the image is divided into by "division size" and processed at the same time. For example, if you specify `2`, it will be converted every 2 blocks.
When the mini-batch size is increased, the GPU usage rate increases as well as when the split size is increased, but if you feel it is measured, it is more effective to increase the split size.
(For example, if the split size is `64` and the mini-batch size is `4`, the split size is `128` and the mini-batch size is `1`.
### --gpu <int>
Specify the GPU device number used for processing. The default value is `0`.
Note that GPU device numbers start at 0.
Ignored if no GPU is used for processing.
If a GPU device number that does not exist is specified, it will be executed on the default GPU.
### -t <0|1>, --tta <0|1>
If you specify `1`, TTA mode is used. The default value is `0`.
### --, --ignore_rest
Ignores all options after this option is specified.
For script batch files.
Command line option (GUI version)
--------
In the GUI version, arguments that do not apply to the option specification are recognized as an input file.
Input files can be specified as files, folders, multiple files and folders at the same time.
### -o <string>, --output_folder <string>
Set the path to the folder where you want to save the converted images.
Save the converted file in the specified folder.
The conversion file naming convention is the same as the output file name that is automatically determined when the input file is set in the GUI.
If not specified, it will be saved in the same folder as the first input file.
### --auto_start <0|1>
If you specify `1`, the conversion will start automatically at startup.
### --auto_exit <0|1>
If you specify `1`, if conversion is successful at startup, it will end automatically if conversion is successful.
### --no_overwrite <0|1>
If you specify `1`, if there is a file with the same name in the image write destination, conversion will not be performed.
### -y <upconv_7_anime_style_art_rgb|upconv_7_photo|anime_style_art_rgb|photo|anime_style_art_y|upresnet10|cunet>, --model_type <upconv_7_anime_style_art_rgb|upconv_7_photo|anime_style_art_net_net_up_art_rg_net_style_art_rg_net_art_rg_
Specify the model to use.
The setting item “Model” on the GUI and the following we respond.
* upconv_7_anime_style_art_rgb: 2D illustration (UpRGB model)
* upconv_7_photo :Photo/Anime (UpPhoto model)
* anime_style_art_rgb: 2D illustration (RGB model)
* photo: Photo/animation (Photo model)
* anime_style_art_y: 2D illustration (Y model)
* upresnet10: 2D illustration (UpResNet10 model)
* cunet: 2D illustration (CUnet model)
Command line option (CUI version)
--------
### --version
Print version information and exit.
### -?, --help
Display usage information and exit.
Please use when you want to check how to use it easily.
### -i <string>, --input_file <string>
(Required) Path to the image to convert
When a folder is specified, all image files under that folder will be converted and output to the folder specified by output_file.
### -o <string>, --output_file <string>
The path to the file where you want to save the converted image
(when input_file is a folder) Path to the folder to save the converted image
(When input_file is an image file) Be sure to enter the extension (such as .png at the end).
If not specified, the file name is automatically determined and saved in that file.
The file name determination rule is
`[original image file name] ``(model name) ``(mode name) ``(noise reduction level (in noise reduction mode)) ``(magnification ratio (in magnification mode))'' (output (Number of bits (other than 8 bits)) ``.output extension`
It looks like.
The location to save is basically the same directory as the input image.
### --model_dir <string>
Specify the path to the directory where the model is stored. The default value is `models/cunet`.
The following models are included as standard.
* `models/anime_style_art_rgb`: 2D illustration (RGB model)
* `models/anime_style_art`: 2D illustration (Y model)
* `models/photo`: Photo/animation (Photo model)
* `models/upconv_7_anime_style_art_rgb`: 2D illustration (UpRGB model)
* `models/upconv_7_photo` :Photo/Anime (UpPhoto model)
* `models/upresnet10`: 2D illustration (UpResNet10 model)
* `models/cunet`: 2D illustration (CUnet model)
* `models/ukbench`: Old-fashioned photographic model (only the enlarged model is included, noise removal is not possible)
Basically, you don't have to specify it. Please specify it when using a model other than the default model or your own model.
### --crop_w <int>
Specify the division size (width). If not set, the value of crop_size will be used.
If you specify the divisor of the width of the input image, conversion may be faster.
### --crop_h <integer>
Specify the division size (vertical width). If not set, the value of crop_size will be used.
If you specify a divisor of the height of the input image, conversion may be faster.
Division size
--------
waifu2x-caffe (also waifu2x) converts images.
The image is divided into pieces of a certain size, converted one by one, and finally combined into a single image.
The division size (crop_size) is the width (in pixels) when dividing this image.
If the GPU is not exhausted even if it is converted with CUDA (the usage of the GPU is not close to 100%),
If you increase this number, the process may end sooner. (Because the GPU can be used up)
Please adjust it while seeing GPU Load (GPU usage rate) and Memory Used (VRAM usage rate) with [GPU-Z](http://www.techpowerup.com/gpuz/).
Also, refer to the following characteristics.
* Larger numbers do not necessarily mean faster
* If the division size is a divisor (or a number with a small remainder when divided) of the vertical and horizontal size of the image, the amount of wasteful calculation decreases and the speed increases. (In some cases, it seems that the numerical value that does not apply to this condition is the fastest.)
* If you double the number, theoretically the amount of memory used will be 4 times (actually it is 3 to 4 times), so be careful not to drop the software. Especially, CUDA consumes much more memory than cuDNN, so be careful.
About images with alpha channel
--------
This software also supports enlargement of images with alpha channel.
However, please note that it takes about twice as long as the image without alpha channel is enlarged because the process is to enlarge the alpha channel by itself.
However, if the alpha channel is composed of a single color, it can be expanded in about the same time as it was without.
The format of language files
--------
Language files format is JSON.
If you create new language file, add language setting to'lang/LangList.txt'.
'lang/LangList.txt' format is TSV(Tab-Separated Values).
* LangName: Language name
* LangID: Primary language [See MSDN](https://msdn.microsoft.com/en-us/library/windows/desktop/dd318693.aspx)
* SubLangID :Sublanguage [See MSDN](https://msdn.microsoft.com/en-us/library/windows/desktop/dd318693.aspx)
* FileName: Language file name
ex.
* Japanese LangID: 0x11(LANG_JAPANESE), SubLangID: 0x01(SUBLANG_JAPANESE_JAPAN)
* English(US) LangID: 0x09(LANG_ENGLISH), SubLangID: 0x01(SUBLANG_ENGLISH_US)
* English(UK) LangID: 0x09(LANG_ENGLISH), SubLangID: 0x02(SUBLANG_ENGLISH_UK)
Note
------------
This software is not guaranteed safe.
Please use it at the discretion of the user.
The creator does not assume any obligation.
Acknowledgment
------
The original [waifu2x](https://github.com/nagadomi/waifu2x) and model were produced and published under the MIT license [ultraist](https://twitter.com/ultraistter) Mr.
Created [waifu2x-converter](https://github.com/WL-Amigo/waifu2x-converter-cpp) based on the original waifu2x [Amigo](https://twitter.com/WL_Amigo) Mr. (I used to refer to how to write README and LICENSE.txt, how to use OpenCV)
[waifu2x-chainer](https://github.com/tsurumeso/waifu2x-chainer) was created to create the original model, and it was published under the MIT license [tsurumeso](https:// github.com/tsurumeso)
will be grateful to.
Also, @paul70078 for translating the message into English, @yoonhakcher for translating the message into Simplified Chinese, @mzhboy for the pull request for Simplified Chinese translation,
@Kenin0726 for translating the message into Korean, @aruhirin for suggesting improvements to the Korean translation,
@Lizardon1995 for translating messages in Traditional Chinese, @yoonhakcher, @Scharynche for pull request for Turkish translation, @Serized for pull request for French translation, Brazilian Portuguese @Simrafael for pull request for translation, @AndreasWebdev for pull request for German translation, @07pepa for pull request for Czech translation, @07pepa for pull request for Italian translation,
Thanks to JYUNYA for providing the GUI version of the icon.

123
README.md
View File

@ -1,4 +1,4 @@
waifu2x-caffe (for Windows) waifu2x-caffe (for Windows)
---------- ----------
制作者 : lltcggie 制作者 : lltcggie
@ -7,7 +7,7 @@
[Caffe](http://caffe.berkeleyvision.org/)を用いて書き直し、Windows向けにビルドしたソフトです。 [Caffe](http://caffe.berkeleyvision.org/)を用いて書き直し、Windows向けにビルドしたソフトです。
CPUで変換することも出来ますが、CUDA(あるいはcuDNN)を使うとCPUより高速に変換することが出来ます。 CPUで変換することも出来ますが、CUDA(あるいはcuDNN)を使うとCPUより高速に変換することが出来ます。
GUI supports English, Japanese, Simplified Chinese, Traditional Chinese, Korean, Turkish, and French. GUI supports English, Japanese, Simplified Chinese, Traditional Chinese, Korean, Turkish, Spanish, Russian, and French.
ソフトのダウンロードは[こちらのreleasesページ](https://github.com/lltcggie/waifu2x-caffe/releases)の「Downloads」の項で出来ます。 ソフトのダウンロードは[こちらのreleasesページ](https://github.com/lltcggie/waifu2x-caffe/releases)の「Downloads」の項で出来ます。
@ -19,84 +19,15 @@ GUI supports English, Japanese, Simplified Chinese, Traditional Chinese, Korean,
* OS : Windows Vista以降 64bit (32bit用exeはありません) * OS : Windows Vista以降 64bit (32bit用exeはありません)
* メモリ : 空きメモリ1GB以上 (ただし、変換する画像サイズによる) * メモリ : 空きメモリ1GB以上 (ただし、変換する画像サイズによる)
* GPU : Compute Capability 2.0 以上のNVIDIA製GPU(CPUで変換する場合は不要) * GPU : Compute Capability 3.5 以上のNVIDIA製GPU(CPUで変換する場合は不要)
* Visual C++ 2013 再頒布可能パッケージがインストールされていること(必須) * Microsoft Visual C++ 2015 再頒布可能パッケージ Update 3(x64版)がインストールされていること(必須)
- 上記パッケージは[こちら](https://www.microsoft.com/ja-jp/download/details.aspx?id=40784) - 上記パッケージは[こちら](https://www.microsoft.com/ja-jp/download/details.aspx?id=53587)
- `ダウンロード` ボタンを押した後、`vcredist_x64.exe`を選択し、ダウンロード・インストールを行って下さい。 - `ダウンロード` ボタンを押した後、`vcredist_x64.exe`を選択し、ダウンロード・インストールを行って下さい。
- 見つからない場合は、「Visual C++ 2013 再頒布可能パッケージ」で検索してみて下さい。 - 見つからない場合は、「Visual C++ 2015 再頒布可能パッケージ Update 3」で検索してみて下さい。
cuDNNで変換する場合はさらに
* GPU : Compute Capability 3.0 以上のNVIDIA製GPU
自分のGPUのCompute Capabilityが知りたい場合は[こちらのページ](https://developer.nvidia.com/cuda-gpus)で調べて下さい。 自分のGPUのCompute Capabilityが知りたい場合は[こちらのページ](https://developer.nvidia.com/cuda-gpus)で調べて下さい。
cuDNNについて
--------
cuDNNはNVIDIA製GPUでのみつかえる高速な機械学習向けのライブラリです。
cuDNNを使わなくてもCUDAで変換出来ますが、cuDNNを使うと以下のような利点があります。
* 使用するGPUの種類によっては画像をより高速に変換することが出来る
* VRAMの使用量を減らすことが出来る(最低でもCUDAの半分未満。分割サイズが大きくなるほど差が開いていく)
このような利点があるcuDNNですが、ライセンスの関係上動作に必要なファイルを配布することが出来ません。
なので、cuDNNを使いたい人は[こちらのページ](https://developer.nvidia.com/cuDNN)でWindows向けバイナリ(v5.1 RC以降)をダウンロードし、
「cudnn64_6.dll」をwaifu2x-caffeのフォルダに入れて下さい。
なお、ソフトを起動している最中にdllを入れた場合はソフトを起動しなおしてください。
(cuDNNをダウンロードするにはNVIDIA Developerへの登録とCUDA Registered Developersへの登録が必要です。
CUDA Registered Developersはおそらく(簡単な)審査があるっぽいので登録してもすぐにcuDNNをダウンロード出来るわけではありません。)
作者の環境での処理速度、VRAM使用量の計測結果は以下の通りです。
* GPU : GTX 980 Ti
* VRAM : 6GB
* 処理内容 : 1000*1000のPNG 4ch画像でイズ除去と拡大、JPEGイズ除去レベル1、拡大率2.00、TTAモード未使用
* 処理時間計測方法 : CUI版で10回の平均処理時間を計測。ただし初めに2回事前に処理を行う(初期化にかかる時間を含めないようにするため)
* VRAM使用量計算方法 : (GUI版で処理中に使用した最大VRAM) - (GUI版を起動した後のVRAM使用量)
cuDNN RGBモデル
| 分割サイズ | 処理時間 | VRAM使用量(MB) |
|:-----------|:-------------|:-------------------|
| 100 | 00:00:03.170 | 278 |
| 125 | 00:00:02.745 | 279 |
| 200 | 00:00:02.253 | 365 |
| 250 | 00:00:02.147 | 446 |
| 500 | 00:00:01.982 | 1110 |
CUDA RGBモデル
| 分割サイズ | 処理時間 | VRAM使用量(MB) |
|:-----------|:-------------|:-------------------|
| 100 | 00:00:06.192 | 724 |
| 125 | 00:00:05.504 | 724 |
| 200 | 00:00:04.642 | 1556 |
| 250 | 00:00:04.436 | 2345 |
| 500 | 計測不能 | 計測不能(6144以上) |
cuDNN UpRGBモデル
| 分割サイズ | 処理時間 | VRAM使用量(MB) |
|:-----------|:-------------|:-------------------|
| 100 | 00:00:02.831 | 328 |
| 125 | 00:00:02.573 | 329 |
| 200 | 00:00:02.261 | 461 |
| 250 | 00:00:02.150 | 578 |
| 500 | 00:00:01.991 | 1554 |
CUDA UpRGBモデル
| 分割サイズ | 処理時間 | VRAM使用量(MB) |
|:-----------|:-------------|:-------------------|
| 100 | 00:00:03.669 | 788 |
| 125 | 00:00:03.382 | 787 |
| 200 | 00:00:02.965 | 1596 |
| 250 | 00:00:02.852 | 2345 |
| 500 | 計測不能 | 計測不能(6144以上) |
使い方(GUI版) 使い方(GUI版)
-------- --------
@ -180,6 +111,8 @@ CUDA UpRGBモデル
* 2次元イラスト(UpRGBモデル) : 2次元イラスト(RGBモデル)より高速かつ同等以上の画質で変換するモデル。ただしRGBモデルより消費するメモリ(VRAM)の量が多いので、変換中に強制終了する場合は分割サイズを調節すること * 2次元イラスト(UpRGBモデル) : 2次元イラスト(RGBモデル)より高速かつ同等以上の画質で変換するモデル。ただしRGBモデルより消費するメモリ(VRAM)の量が多いので、変換中に強制終了する場合は分割サイズを調節すること
* 写真・アニメ(UpPhotoモデル) : 写真・アニメ(Photoモデル)より高速かつ同等以上の画質で変換するモデル。ただしPhotoモデルより消費するメモリ(VRAM)の量が多いので、変換中に強制終了する場合は分割サイズを調節すること * 写真・アニメ(UpPhotoモデル) : 写真・アニメ(Photoモデル)より高速かつ同等以上の画質で変換するモデル。ただしPhotoモデルより消費するメモリ(VRAM)の量が多いので、変換中に強制終了する場合は分割サイズを調節すること
* 2次元イラスト(Yモデル) : 画像の輝度のみを変換する2次元イラスト用モデル * 2次元イラスト(Yモデル) : 画像の輝度のみを変換する2次元イラスト用モデル
* 2次元イラスト(UpResNet10モデル) : 2次元イラスト(UpRGBモデル)より高画質で変換するモデル。このモデルは分割サイズが違うと出力結果が変わるので注意すること
* 2次元イラスト(CUnetモデル) : 2次元イラストを同梱のモデルで一番高画質で変換できるモデル。このモデルは分割サイズが違うと出力結果が変わるので注意すること
### 「TTAモードを使う」 ### 「TTAモードを使う」
TTA(Test-Time Augmentation)モードを使うかどうかを指定します。 TTA(Test-Time Augmentation)モードを使うかどうかを指定します。
@ -195,6 +128,13 @@ CUDA UpRGBモデル
下の方は「crop_size_list.txt」から読み出した汎用的な分割サイズです。 下の方は「crop_size_list.txt」から読み出した汎用的な分割サイズです。
分割サイズが大きすぎる場合、要求されるメモリの量(GPUを使う場合はVRAMの量)がPCで使用できるメモリを超えてソフトが強制終了するので気をつけてください。 分割サイズが大きすぎる場合、要求されるメモリの量(GPUを使う場合はVRAMの量)がPCで使用できるメモリを超えてソフトが強制終了するので気をつけてください。
処理速度にそれなりに影響するので、同じ画像サイズの画像をフォルダ指定で大量に変換するときは、最適な分割サイズを調べてから変換することをおすすめします。 処理速度にそれなりに影響するので、同じ画像サイズの画像をフォルダ指定で大量に変換するときは、最適な分割サイズを調べてから変換することをおすすめします。
ただし、モデルによっては分割サイズを変更すると出力結果が変わるものがあるので気を付けてください。
(その場合は分割サイズはデフォルトを使用し、バッチサイズを調整することで処理速度を上げることができます)
### 「バッチサイズ」
内部でまとめて処理を行う際のサイズを指定します。
バッチサイズを大きくすると処理速度が速くなることがあります。
分割サイズと同様に要求されるメモリの量がPCで使用できるメモリを超えないように気を付けてください。
## 動作設定 ## 動作設定
あまり変更する機会がないと思われる動作設定をまとめた設定群です。 あまり変更する機会がないと思われる動作設定をまとめた設定群です。
@ -298,7 +238,7 @@ GUI版では入力ファイル以外のコマンドラインオプションを
scale_widthかscale_heightが指定された場合、そちらが優先されます。 scale_widthかscale_heightが指定された場合、そちらが優先されます。
2.0以外の数値を指定すると、次のような処理を行います。 2.0以外の数値を指定すると、次のような処理を行います。
* まず、指定された倍率を必要十分にカバーするように、2倍拡大を繰り返し行います。 * まず、指定された倍率を必要十分にカバーするように、2倍拡大を繰り返し行います。
* 2の累乗以外の数値が指定されている場合は、指定倍率になるように拡大した画像を線形フィルタで縮小します。 * 2の累乗以外の数値が指定されている場合は、指定倍率になるように拡大した画像を縮小します。
### -w <整数>, --scale_width <整数> ### -w <整数>, --scale_width <整数>
画像の縦横比を維持したまま、指定された横幅になるように拡大します(単位はピクセル)。 画像の縦横比を維持したまま、指定された横幅になるように拡大します(単位はピクセル)。
@ -372,7 +312,7 @@ GUI版ではオプション指定に当てはまらなかった引数は入力
### --no_overwrite <0|1> ### --no_overwrite <0|1>
`1`を指定すると、画像の書き込み先に同名のファイルが存在する場合は変換を行いません。 `1`を指定すると、画像の書き込み先に同名のファイルが存在する場合は変換を行いません。
### -y <upconv_7_anime_style_art_rgb|upconv_7_photo|anime_style_art_rgb|photo|anime_style_art_y>, --model_type <upconv_7_anime_style_art_rgb|upconv_7_photo|anime_style_art_rgb|photo|anime_style_art_y> ### -y <upconv_7_anime_style_art_rgb|upconv_7_photo|anime_style_art_rgb|photo|anime_style_art_y|upresnet10|cunet>, --model_type <upconv_7_anime_style_art_rgb|upconv_7_photo|anime_style_art_rgb|photo|anime_style_art_y|upresnet10|cunet>
使用するモデルを指定します。 使用するモデルを指定します。
GUIでの設定項目「モデル」と以下のように対応しています。 GUIでの設定項目「モデル」と以下のように対応しています。
* upconv_7_anime_style_art_rgb : 2次元イラスト(UpRGBモデル) * upconv_7_anime_style_art_rgb : 2次元イラスト(UpRGBモデル)
@ -380,6 +320,8 @@ GUI版ではオプション指定に当てはまらなかった引数は入力
* anime_style_art_rgb : 2次元イラスト(RGBモデル) * anime_style_art_rgb : 2次元イラスト(RGBモデル)
* photo : 写真・アニメ(Photoモデル) * photo : 写真・アニメ(Photoモデル)
* anime_style_art_y : 2次元イラスト(Yモデル) * anime_style_art_y : 2次元イラスト(Yモデル)
* upresnet10 : 2次元イラスト(UpResNet10モデル)
* cunet : 2次元イラスト(CUnetモデル)
コマンドラインオプション(CUI版) コマンドラインオプション(CUI版)
@ -407,13 +349,15 @@ GUI版ではオプション指定に当てはまらなかった引数は入力
保存される場所は、基本的には入力画像と同じディレクトリになります。 保存される場所は、基本的には入力画像と同じディレクトリになります。
### --model_dir <文字列> ### --model_dir <文字列>
モデルが格納されているディレクトリへのパスを指定します。デフォルト値は`models/upconv_7_anime_style_art_rgb`です。 モデルが格納されているディレクトリへのパスを指定します。デフォルト値は`models/cunet`です。
標準では以下のモデルが付属しています。 標準では以下のモデルが付属しています。
* `models/anime_style_art_rgb` : RGBすべてを変換する2次元画像用モデル * `models/anime_style_art_rgb` : 2次元イラスト(RGBモデル)
* `models/anime_style_art` : 輝度のみを変換する2次元画像用モデル * `models/anime_style_art` : 2次元イラスト(Yモデル)
* `models/photo` : RGBすべてを変換する写真、アニメ画像用モデル * `models/photo` : 写真・アニメ(Photoモデル)
* `models/upconv_7_anime_style_art_rgb` : anime_style_art_rgbより高速かつ同等以上の画質で変換するモデル * `models/upconv_7_anime_style_art_rgb` : 2次元イラスト(UpRGBモデル)
* `models/upconv_7_photo` : photoより高速かつ同等以上の画質で変換するモデル * `models/upconv_7_photo` : 写真・アニメ(UpPhotoモデル)
* `models/upresnet10` : 2次元イラスト(UpResNet10モデル)
* `models/cunet` : 2次元イラスト(CUnetモデル)
* `models/ukbench` : 旧式の写真用モデル(拡大するモデルのみ付属しています。ノイズ除去は出来ません) * `models/ukbench` : 旧式の写真用モデル(拡大するモデルのみ付属しています。ノイズ除去は出来ません)
基本的には指定しなくても大丈夫です。デフォルト以外のモデルや自作のモデルを使用する時などに指定して下さい。 基本的には指定しなくても大丈夫です。デフォルト以外のモデルや自作のモデルを使用する時などに指定して下さい。
@ -480,10 +424,11 @@ ex.
謝辞 謝辞
------ ------
オリジナルの[waifu2x](https://github.com/nagadomi/waifu2x)、及びモデルの制作を行い、MITライセンスの下で公開して下さった [ultraist](https://twitter.com/ultraistter)さん、 オリジナルの[waifu2x](https://github.com/nagadomi/waifu2x)、及びモデルの制作を行い、MITライセンスの下で公開して下さった [ultraist](https://twitter.com/ultraistter)さん、
オリジナルのwaifu2xを元に[waifu2x-converter](https://github.com/WL-Amigo/waifu2x-converter-cpp)を作成して下さった [アミーゴ](https://twitter.com/WL_Amigo)さん(READMEやLICENSE.txtの書き方、OpenCVの使い方等かなり参考にさせていただきました) オリジナルのwaifu2xを元に[waifu2x-converter](https://github.com/WL-Amigo/waifu2x-converter-cpp)を作成して下さった [アミーゴ](https://twitter.com/WL_Amigo)さん(READMEやLICENSE.txtの書き方、OpenCVの使い方等かなり参考にさせていただきました)
に、感謝します。 [waifu2x-chainer](https://github.com/tsurumeso/waifu2x-chainer)を作成してオリジナルのモデルの制作を行い、MITライセンスの下で公開して下さった[tsurumeso](https://github.com/tsurumeso)さん
また、メッセージを英訳してくださった @paul70078 さん、メッセージを中国語(簡体字)に翻訳してくださった @yoonhakcher さん、中国語(簡体字)訳のプルリクエストを下さった @mzhboy さん、 に、感謝します。
メッセージを韓国語に翻訳してくださった @kenin0726 さん、韓国語訳の改善を提案してくださった @aruhirin さん、 また、メッセージを英訳してくださった @paul70078 さん、メッセージを中国語(簡体字)に翻訳してくださった @yoonhakcher さん、中国語(簡体字)訳のプルリクエストを下さった @mzhboy さん、
メッセージを中国語(繁体字)に翻訳してくださった @lizardon1995 さん、@yoonhakcher さん、トルコ語訳のプルリクエストを下さった @Scharynche さん、フランス語訳のプルリクエストを下さった @Serized さん、 メッセージを韓国語に翻訳してくださった @kenin0726 さん、韓国語訳の改善を提案してくださった @aruhirin さん、
メッセージを中国語(繁体字)に翻訳してくださった @lizardon1995 さん、@yoonhakcher さん、トルコ語訳のプルリクエストを下さった @Scharynche さん、フランス語訳のプルリクエストを下さった @Serized さん、ブラジルポルトガル語訳のプルリクエストを下さった @simrafael さん、ドイツ語訳のプルリクエストを下さった @AndreasWebdev さん、チェコ語訳のプルリクエストを下さった @07pepa さん、イタリア語訳のプルリクエストを下さった @AndryGabry01 さん、
GUI版のアイコンを提供してくださった JYUNYAさん に感謝します。 GUI版のアイコンを提供してくださった JYUNYAさん に感謝します。

View File

@ -0,0 +1,63 @@
import os
import os.path as osp
import sys
import google.protobuf as pb
from argparse import ArgumentParser
import numpy as np
import shutil
import caffe
from caffe.proto import caffe_pb2
sys.path.append('waifu2x-chainer')
from lib import srcnn
import chainer
def main():
caffe.set_mode_cpu()
model_name = 'UpResNet10'
model_dir = 'waifu2x-chainer/models/{}'.format(model_name.lower())
model_class = srcnn.archs[model_name]
for filename in os.listdir(model_dir):
basename, ext = os.path.splitext(filename)
if ext == '.npz':
model_path = os.path.join(model_dir, filename)
print(model_path)
channels = 3 if 'rgb' in filename else 1
model = model_class(channels)
chainer.serializers.load_npz(model_path, model)
model.to_cpu()
params = {}
for path, param in model.namedparams():
params[path] = param.array
net = caffe.Net('upresnet10_3.prototxt', caffe.TEST)
for key in net.params:
l = len(net.params[key])
net.params[key][0].data[...] = params[key + '/W']
if l >= 2:
net.params[key][1].data[...] = params[key + '/b']
input_data = np.empty(net.blobs['input'].data.shape, dtype=np.float32)
input_data[...] = np.random.random_sample(net.blobs['input'].data.shape)
net.blobs['input'].data[...] = input_data
ret = net.forward()
input_data = np.empty(net.blobs['input'].data.shape, dtype=np.float32)
input_data[...] = np.random.random_sample(net.blobs['input'].data.shape)
net.blobs['input'].data[...] = input_data
ret = net.forward()
batch_y = model(input_data)
print(batch_y.array - ret['/conv_post'])
if __name__ == '__main__':
caffe.init_log(3)
main()

View File

@ -0,0 +1,61 @@
import os
import os.path as osp
import sys
import google.protobuf as pb
from argparse import ArgumentParser
import numpy as np
import shutil
import caffe
from caffe.proto import caffe_pb2
sys.path.append('waifu2x-chainer')
from lib import srcnn
import chainer
fname_convert_table = {
'anime_style_noise0_scale_rgb': 'noise0_scale2.0x_model',
'anime_style_noise1_scale_rgb': 'noise1_scale2.0x_model',
'anime_style_noise2_scale_rgb': 'noise2_scale2.0x_model',
'anime_style_noise3_scale_rgb': 'noise3_scale2.0x_model',
'anime_style_scale_rgb': 'scale2.0x_model',
}
def main():
caffe.set_mode_cpu()
model_name = 'UpResNet10'
model_dir = 'waifu2x-chainer/models/{}'.format(model_name.lower())
model_class = srcnn.archs[model_name]
for filename in os.listdir(model_dir):
basename, ext = os.path.splitext(filename)
if ext == '.npz':
model_path = os.path.join(model_dir, filename)
print(model_path)
channels = 3 if 'rgb' in filename else 1
model = model_class(channels)
size = 64 + model.offset
data = np.zeros((1, channels, size, size), dtype=np.float32)
x = chainer.Variable(data)
chainer.serializers.load_npz(model_path, model)
params = {}
for path, param in model.namedparams():
params[path] = param.array
net = caffe.Net('upresnet10_3.prototxt', caffe.TEST)
for key in net.params:
l = len(net.params[key])
net.params[key][0].data[...] = params[key + '/W']
if l >= 2:
net.params[key][1].data[...] = params[key + '/b']
prototxt_path = '{}.prototxt'.format(fname_convert_table[basename])
caffemodel_path = '{}.json.caffemodel'.format(fname_convert_table[basename])
net.save(caffemodel_path)
shutil.copy('upresnet10_3.prototxt', prototxt_path)
if __name__ == '__main__':
caffe.init_log(3)
main()

View File

@ -0,0 +1,251 @@
import os
import os.path as osp
import sys
import google.protobuf as pb
from argparse import ArgumentParser
import numpy as np
import caffe
from caffe.proto import caffe_pb2
def _get_include(phase):
inc = caffe_pb2.NetStateRule()
if phase == 'train':
inc.phase = caffe_pb2.TRAIN
elif phase == 'test':
inc.phase = caffe_pb2.TEST
else:
raise ValueError("Unknown phase {}".format(phase))
return inc
def _get_param(num_param):
if num_param == 1:
# only weight
param = caffe_pb2.ParamSpec()
param.lr_mult = 1
param.decay_mult = 1
return [param]
elif num_param == 2:
# weight and bias
param_w = caffe_pb2.ParamSpec()
param_w.lr_mult = 1
param_w.decay_mult = 1
param_b = caffe_pb2.ParamSpec()
param_b.lr_mult = 2
param_b.decay_mult = 0
return [param_w, param_b]
else:
raise ValueError("Unknown num_param {}".format(num_param))
def Input(name, top, shape):
layer = caffe_pb2.LayerParameter()
layer.name = name
layer.type = 'Input'
layer.top.append(top)
blobShape = layer.input_param.shape.add()
blobShape.dim.extend(shape)
return layer
def Conv(name, bottom, num_output, kernel_size, stride = 1, pad = 0, nobias = False):
layer = caffe_pb2.LayerParameter()
layer.name = name
layer.type = 'Convolution'
layer.bottom.extend([bottom])
layer.top.extend([name])
layer.convolution_param.num_output = num_output
layer.convolution_param.kernel_size.extend([kernel_size])
layer.convolution_param.stride.extend([stride])
layer.convolution_param.pad.extend([pad])
layer.convolution_param.weight_filler.type = 'msra'
layer.convolution_param.bias_term = not(nobias)
layer.param.extend(_get_param(1 if nobias else 2))
return layer
def DeConv(name, bottom, num_output, kernel_size, stride = 1, pad = 0, nobias = False):
layer = caffe_pb2.LayerParameter()
layer.name = name
layer.type = 'Deconvolution'
layer.bottom.extend([bottom])
layer.top.extend([name])
layer.convolution_param.num_output = num_output
layer.convolution_param.kernel_size.extend([kernel_size])
layer.convolution_param.stride.extend([stride])
layer.convolution_param.pad.extend([pad])
layer.convolution_param.weight_filler.type = 'msra'
layer.convolution_param.bias_term = not(nobias)
layer.param.extend(_get_param(1 if nobias else 2))
return layer
def Sigmoid(name, bottom):
top_name = name + '_sigmoid'
# ReLU
sigmoid_layer = caffe_pb2.LayerParameter()
sigmoid_layer.name = name + '_sigmoid'
sigmoid_layer.type = 'Sigmoid'
sigmoid_layer.bottom.extend([bottom])
sigmoid_layer.top.extend([top_name])
return sigmoid_layer
def Relu(name, bottom):
top_name = name + '_relu'
# ReLU
relu_layer = caffe_pb2.LayerParameter()
relu_layer.name = name + '_relu'
relu_layer.type = 'ReLU'
relu_layer.bottom.extend([bottom])
relu_layer.top.extend([top_name])
return relu_layer
def LeakyRelu(name, bottom, negative_slope):
top_name = name + '_relu'
# LeakyRelu
relu_layer = caffe_pb2.LayerParameter()
relu_layer.name = name + '_relu'
relu_layer.type = 'ReLU'
relu_layer.relu_param.negative_slope = negative_slope
relu_layer.bottom.extend([bottom])
relu_layer.top.extend([top_name])
return relu_layer
def ConvLeakyRelu(name, bottom, num_output, kernel_size, stride = 1, pad = 0, negative_slope = 0.1):
layers = []
layers.append(Conv(name, bottom, num_output, kernel_size, stride, pad))
layers.append(LeakyRelu(name, layers[-1].top[0], negative_slope))
return layers
def GlobalAvgPool(name, bottom, stride = 1, pad = 0):
top_name = name + '_globalavgpool'
layer = caffe_pb2.LayerParameter()
layer.name = name + '_globalavgpool'
layer.type = 'Pooling'
layer.bottom.extend([bottom])
layer.top.extend([top_name])
layer.pooling_param.pool = caffe_pb2.PoolingParameter.AVE
layer.pooling_param.stride = stride
layer.pooling_param.pad = pad
layer.pooling_param.global_pooling = True
layer.pooling_param.engine = caffe_pb2.PoolingParameter.CAFFE
return layer
def Linear(name, bottom, num_output):
layer = caffe_pb2.LayerParameter()
layer.name = name
layer.type = 'InnerProduct'
layer.bottom.extend([bottom])
layer.top.extend([name])
layer.inner_product_param.num_output = num_output
layer.inner_product_param.weight_filler.type = 'msra'
layer.inner_product_param.bias_filler.value = 0
layer.param.extend(_get_param(2))
return layer
def Crop(name, bottom, crop_size):
layer = caffe_pb2.LayerParameter()
layer.name = name
layer.type = 'CropCenter'
layer.bottom.extend([bottom])
layer.top.extend([name])
layer.crop_center_param.crop_size.extend(crop_size)
return layer
def Add(name, bottoms):
layer = caffe_pb2.LayerParameter()
layer.name = name
layer.type = 'Eltwise'
layer.bottom.extend(bottoms)
layer.top.extend([name])
return layer
def Axpy(name, bottoms):
layer = caffe_pb2.LayerParameter()
layer.name = name
layer.type = 'Axpy'
layer.bottom.extend(bottoms)
layer.top.extend([name])
return layer
def SEResBlock(name, bottom, in_channels, out_channels, r=16, slope=0.1):
layers = []
res_bottom = bottom
layers.extend(ConvLeakyRelu(name + '/conv1', res_bottom, out_channels, 3, 1, 0, slope))
layers.extend(ConvLeakyRelu(name + '/conv2', layers[-1].top[0], out_channels, 3, 1, 0, slope))
h = layers[-1].top[0]
layers.append(GlobalAvgPool(name + '/fc1', h))
layers.append(Linear(name + '/fc1', layers[-1].top[0], out_channels // r))
layers.append(Relu(name + '/fc1', layers[-1].top[0]))
layers.append(Linear(name + '/fc2', layers[-1].top[0], out_channels))
layers.append(Sigmoid(name + '/fc2', layers[-1].top[0]))
se = layers[-1].top[0]
layers.append(Crop(name + '/crop', res_bottom, [0, 0, 2, 2]))
x = layers[-1].top[0]
if in_channels != out_channels:
layers.extend(ConvLeakyRelu(name + '/conv_bridge', x, out_channels, 3, 1, 0, slope))
x = layers[-1].top[0]
# h * se + x
layers.append(Axpy(name + '/axpy', [se, h, x]))
return layers
def create_model(ch):
model = caffe_pb2.NetParameter()
model.name = 'UpResNet10_{}'.format(ch)
layers = []
layers.append(Input('data', 'input', [1, ch, 90, 90]))
layers.extend(ConvLeakyRelu('/conv_pre', layers[-1].top[0], 64, 3, 1, 0, 0.1))
skip = layers[-1].top[0]
layers.extend(SEResBlock('/res1', layers[-1].top[0], 64, 64, 4))
layers.extend(SEResBlock('/res2', layers[-1].top[0], 64, 64, 4))
layers.extend(SEResBlock('/res3', layers[-1].top[0], 64, 64, 4))
layers.extend(SEResBlock('/res4', layers[-1].top[0], 64, 64, 4))
layers.extend(SEResBlock('/res5', layers[-1].top[0], 64, 64, 4))
layers.extend(ConvLeakyRelu('/conv_bridge', layers[-1].top[0], 64, 3, 1, 0, 0.1))
h = layers[-1].top[0]
layers.append(Crop('/crop', skip, [0, 0, 11, 11]))
skip = layers[-1].top[0]
layers.append(Add('/add', [h, skip]))
layers.append(DeConv('/conv_post', layers[-1].top[0], ch, 4, 2, 3, True))
model.layer.extend(layers)
return model
def main(args):
model = create_model(args.ch)
if args.output is None:
args.output = osp.join(osp.dirname(__file__),
'upresnet10_{}.prototxt'.format(args.ch))
with open(args.output, 'w') as f:
f.write(pb.text_format.MessageToString(model))
if __name__ == '__main__':
parser = ArgumentParser()
parser.add_argument('--ch', type=int, default=3,
choices=[1, 3])
parser.add_argument('-o', '--output', type=str)
args = parser.parse_args()
main(args)

View File

@ -1,17 +1,17 @@
{ {
"IDC_STATIC_IO_SETTING":"输入和输出设置", "IDC_STATIC_IO_SETTING":"输入和输出设置",
"IDC_STATIC_INPUT_PATH":"输入\r\n(文件或文件夹)", "IDC_STATIC_INPUT_PATH":"输入路径\r\n(文件或文件夹)",
"IDC_BUTTON_INPUT_REF":"浏览...", "IDC_BUTTON_INPUT_REF":"浏览...",
"IDC_STATIC_OUTPUT_PATH":"输出", "IDC_STATIC_OUTPUT_PATH":"输出路径",
"IDC_STATIC_TANS_EXT_LIST":"文件夹内进行转换的格式", "IDC_STATIC_TANS_EXT_LIST":"文件夹内进行转换的文件格式",
"IDC_STATIC_OUTPUT_EXT":"输出格式", "IDC_STATIC_OUTPUT_EXT":"输出文件格式",
"IDC_STATIC_OUTPUT_QUALITY":"输出图像质量", "IDC_STATIC_OUTPUT_QUALITY":"输出图像质量",
"IDC_STATIC_OUTPUT_DEPTH":"输出色彩深度", "IDC_STATIC_OUTPUT_DEPTH":"输出色彩深度",
"IDC_STATIC_AUTO_START":"输入文件后自动开始转换", "IDC_STATIC_AUTO_START":"输入文件后自动开始转换",
"IDC_RADIO_AUTO_START_NONE":"不启用", "IDC_RADIO_AUTO_START_NONE":"不启用",
"IDC_RADIO_AUTO_START_ONE":"输入单个文件时启用", "IDC_RADIO_AUTO_START_ONE":"输入单个文件时启用",
"IDC_RADIO_AUTO_START_MULTI":"输入文件夹或多个文件时启用", "IDC_RADIO_AUTO_START_MULTI":"输入文件夹或多个文件时启用",
"IDC_STATIC_QUALITY_PROCESS_SETTING":"质量和处理设置", "IDC_STATIC_QUALITY_PROCESS_SETTING":"转换质量和处理设置",
"IDC_STATIC_TRANS_MODE":"转换模式", "IDC_STATIC_TRANS_MODE":"转换模式",
"IDC_RADIO_MODE_NOISE_SCALE":"降噪和放大", "IDC_RADIO_MODE_NOISE_SCALE":"降噪和放大",
"IDC_RADIO_MODE_SCALE":"仅放大", "IDC_RADIO_MODE_SCALE":"仅放大",
@ -31,70 +31,75 @@
"IDC_RADIO_MODEL_RGB":"2D 插图 — RGB 模型", "IDC_RADIO_MODEL_RGB":"2D 插图 — RGB 模型",
"IDC_RADIO_MODEL_PHOTO":"照片或动画 — Photo 模型", "IDC_RADIO_MODEL_PHOTO":"照片或动画 — Photo 模型",
"IDC_RADIO_MODEL_Y":"2D 插图 — Y 模型", "IDC_RADIO_MODEL_Y":"2D 插图 — Y 模型",
"IDC_RADIO_MODEL_UpResNet10":"2D 插图 — UpResNet10 模型",
"IDC_CHECK_TTA":"TTA 模式", "IDC_CHECK_TTA":"TTA 模式",
"IDC_STATIC_PROCESS_SPEED_SETTING":"处理速度设置", "IDC_STATIC_PROCESS_SPEED_SETTING":"处理速度设置",
"IDC_STATIC_PROCESSOR":"处理器", "IDC_STATIC_PROCESSOR":"处理器",
"IDC_RADIO_MODE_GPU":"CUDA (cuDNN 优先)", "IDC_RADIO_MODE_GPU":"CUDA (优先使用 cuDNN)",
"IDC_RADIO_MODE_CPU":"CPU", "IDC_RADIO_MODE_CPU":"CPU",
"IDC_STATIC_CROP_SIZE":"拆分大小", "IDC_STATIC_CROP_SIZE":"拆分尺寸",
"IDC_BUTTON_CHECK_CUDNN":"cuDNN 检查", "IDC_BUTTON_CHECK_CUDNN":"cuDNN 检查...",
"IDC_BUTTON_CANCEL":"取消", "IDC_BUTTON_CANCEL":"取消",
"IDC_BUTTON_EXEC":"开始", "IDC_BUTTON_EXEC":"开始",
"IDC_STATIC_LANG_UI":"界面语言", "IDC_STATIC_LANG_UI":"界面语言",
"IDC_BUTTON_OUTPUT_REF":"浏览...", "IDC_BUTTON_OUTPUT_REF":"浏览...",
"IDC_BUTTON_APP_SETTING":"应用设置...", "IDC_BUTTON_APP_SETTING":"应用设置...",
"IDC_BUTTON_CLEAR_OUTPUT_DIR":"重设输出路径", "IDC_BUTTON_CLEAR_OUTPUT_DIR":"重设输出文件夹",
"IDC_STATIC_ARG_START":"带参数的启动设置", "IDC_STATIC_ARG_START":"启动参数",
"IDC_CHECK_ARG_START_AUTO":"启动时开始转换", "IDC_CHECK_ARG_START_AUTO":"启动时开始转换",
"IDC_CHECK_ARG_START_SUCCESS_FINISH":"成功后自动退出", "IDC_CHECK_ARG_START_SUCCESS_FINISH":"成功后自动退出",
"IDC_STATIC_INPUT_DIR_FIX":"默认输入文件夹", "IDC_STATIC_INPUT_DIR_FIX":"默认输入文件夹",
"IDC_STATIC_OUTPUT_DIR_FIX":"默认输出文件夹", "IDC_STATIC_OUTPUT_DIR_FIX":"默认输出文件夹",
"IDC_CHECK_OUTPUT_NO_OVERWRITE":"输出文件不覆盖", "IDC_CHECK_OUTPUT_NO_OVERWRITE":"输出时不覆盖同名文件",
"MessageUseProcessorMode":"使用的处理模式: %s", "MessageUseProcessorMode":"使用的处理模式: %s",
"MessageProcessTime":"处理时间: %02d:%02d:%02d.%03d", "MessageProcessTime":"处理时间: %02d:%02d:%02d.%03d",
"MessageInitTime":"初始化时间: %02d:%02d:%02d.%03d", "MessageInitTime":"初始化时间: %02d:%02d:%02d.%03d",
"MessagecuDNNCheckTime":"cuDNN 检查时间: %02d:%02d:%02d.%03d", "MessagecuDNNCheckTime":"cuDNN 检查时间: %02d:%02d:%02d.%03d",
"MessageTitleError":"错误", "MessageTitleError":"错误",
"MessageScaleRateCheckError":"放大倍率必须大于 0 的正数", "MessageScaleRateCheckError":"放大倍率必须大于 0.0 的正数",
"MessageScaleWidthCheckError":"放大尺寸必须大于 0 的正数", "MessageScaleWidthCheckError":"放大尺寸必须是大于 0 的整数",
"MessageCropSizeCheckError":"拆分大小必须大于 0 的正数", "MessageCropSizeCheckError":"拆分尺寸必须是大于 0 的整数",
"MessageInputPathCheckError":"请设置输入路径", "MessageInputPathCheckError":"请设置输入路径",
"MessageOutputPathCheckError":"请设置输出路径", "MessageOutputPathCheckError":"请设置输出路径",
"MessageOutputExtCheckError":"请设置输出格式", "MessageOutputExtCheckError":"请设置输出文件格式",
"MessageInputCheckError":"输入或输出路径不存在", "MessageInputCheckError":"输入的文件或文件夹不存在",
"MessageOutputExtentionCheckError":"请选择输出格式", "MessageOutputExtentionCheckError":"请选择输出格式",
"MessageOutputQualityCheckError":"输出图像质量过大", "MessageOutputQualityCheckError":"输出图像质量的值超出范围",
"MessageOutputDepthCheckError":"输出图像色彩深度数值不正确", "MessageOutputDepthCheckError":"输出色彩深度数值无效",
"MessageCudaNotFindError":"使用 GPU 转换失败。\r\n可能是因为没有安装可调用的 CUDA 驱动。\r\n请安装驱动。", "MessageCudaNotFindError":"无法使用 GPU 转换。\r\n可能是因为没有安装有效的 CUDA 驱动。\r\n请安装驱动。",
"MessageCudaOldVersionError":"使用 GPU 转换失败。\r\n可能是因为安装的 CUDA 驱动太旧。\r\n请更新驱动。", "MessageCudaOldVersionError":"无法使用 GPU 转换。\r\n可能是因为安装的 CUDA 驱动版本过旧。\r\n请更新驱动。",
"MessageTransSuccess":"转换成功", "MessageTransSuccess":"转换成功",
"MessageErrorHappen":"发生错误", "MessageErrorHappen":"发生错误",
"MessageCreateOutDirError":"输出目录\r\n「%s」\r\n创建失败", "MessageCreateOutDirError":"输出文件夹\r\n「%s」\r\n创建失败",
"MessageCancelError":"已经取消", "MessageCancelError":"转换被取消",
"MessageInvalidParameterError":"参数无效", "MessageInvalidParameterError":"参数无效",
"MessageFailedOpenModelFileError":"模型文件无法打开", "MessageFailedOpenModelFileError":"模型文件无法打开",
"MessageFailedParseModelFileError":"模型文件已损坏", "MessageFailedParseModelFileError":"模型文件已损坏",
"MessageFailedConstructModelError":"无法构建模型", "MessageFailedConstructModelError":"构建网络失败",
"MessageFailedOpenInputFileError":"无法打开输入文件「%s」", "MessageFailedOpenInputFileError":"无法打开输入文件「%s」",
"MessageFailedOpenOutputFileError":"无法输出文件「%s」", "MessageFailedOpenOutputFileError":"无法保存输出文件「%s」",
"MessageFailedProcessCaffeError":"插值处理失败", "MessageFailedProcessCaffeError":"插值处理失败",
"MessageTitleResult":"结果", "MessageTitleResult":"结果",
"MessagecuDNNOK":"可以使用 cuDNN。", "MessagecuDNNOK":"可以使用 cuDNN。",
"MessagecuDNNNotFindError":"调用 cuDNN 失败。\r\n没有发现「%s」。", "MessagecuDNNNotFindError":"无法使用 cuDNN。\r\n找不到「%s」。",
"MessagecuDNNOldVersionError":"调用 cuDNN 失败。\r\n「%s」版本太旧。请使用 %s。", "MessagecuDNNOldVersionError":"无法使用 cuDNN。\r\n「%s」的版本过旧。请使用 %s。",
"MessagecuDNNCannotCreateError":"调用 cuDNN 失败。\r\n初始化 cuDNN 失败。", "MessagecuDNNCannotCreateError":"无法使用 cuDNN。\r\ncuDNN 无法初始化。",
"MessagecuDNNDefautlError":"调用 cuDNN 失败", "MessagecuDNNDefautlError":"无法使用 cuDNN",
"MessageExtStr":"输入文件扩展名 (%s)", "MessageExtStr":"自定义文件 (%s)",
"MessageAllFileFolder":"所有文件和文件夹 (.)", "MessageAllFileFolder":"所有文件 (*.*)",
"MessageTitleInputDialog":"请选择输入文件或文件夹", "MessageTitleInputDialog":"请选择文件或文件夹",
"MessageTimeLeftUnknown":"估计剩余时间: 未知", "MessageTimeLeftUnknown":"估计剩余时间: 未知",
"MessageTimeLeft":"估计剩余时间", "MessageTimeLeft":"估计剩余时间",
"MessageNoOverwrite":"此位置已经包含同名文件: %s", "MessageNoOverwrite":"此位置已经包含同名文件: %s",
"MessageCudaOldDeviceError":"CUDA 组件版本太旧。\r\n请使用 rnCompute Capability 2.0 以上版本。", "MessageCudaOldDeviceError":"CUDA 设备过旧。\r\n请使用 Compute Capability (计算能力) 2.0 以上的设备。",
"OK":"确定", "OK":"确定",
"Cancel":"取消", "Cancel":"取消",
"IDC_STATIC_USE_GPU_NO":"使用GPU No.", "IDC_STATIC_USE_GPU_NO":"使用GPU No.",
"IDC_RADIO_MODEL_UPCONV_RGB":"2D 插图 — UpRGB 模型", "IDC_RADIO_MODEL_UPCONV_RGB":"2D 插图 — UpRGB 模型",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"照片或动画 — UpPhoto 模型", "IDC_RADIO_MODEL_UPCONV_PHOTO":"照片或动画 — UpPhoto 模型",
"MessageLogFatalError":"发生了致命错误。\r\n分割尺寸可能过大。" "MessageLogFatalError":"发生了致命错误。\r\n拆分尺寸可能过大。",
"IDC_STATIC_BATCH_SIZE":"批尺寸",
"MessageBatchSizeCheckError":"批尺寸必须是大于 0 的整数",
"IDC_RADIO_MODEL_CUNET":"2D 插图 — CUnet 模型",
"MessageCropSizeDivisibleCheckError":"这个模组的拆分尺寸必须是 %d 的正整数倍"
} }

View File

@ -24,12 +24,13 @@
"IDC_RADIONOISE_LEVEL3":"等級 3", "IDC_RADIONOISE_LEVEL3":"等級 3",
"IDC_STATIC_SCALE_RATE":"放大倍率", "IDC_STATIC_SCALE_RATE":"放大倍率",
"IDC_RADIO_SCALE_RATIO":"比例設定", "IDC_RADIO_SCALE_RATIO":"比例設定",
"IDC_RADIO_SCALE_WIDTH":"轉換度設定", "IDC_RADIO_SCALE_WIDTH":"轉換度設定",
"IDC_RADIO_SCALE_HEIGHT":"轉換度設定", "IDC_RADIO_SCALE_HEIGHT":"轉換度設定",
"IDC_STATIC_MODEL":"模組", "IDC_STATIC_MODEL":"模組",
"IDC_RADIO_MODEL_RGB":"二次元插圖RGB 模式)", "IDC_RADIO_MODEL_RGB":"二次元插圖RGB 模式)",
"IDC_RADIO_MODEL_PHOTO":"照片和動畫Photo 模式)", "IDC_RADIO_MODEL_PHOTO":"照片和動畫Photo 模式)",
"IDC_RADIO_MODEL_Y":"二次元插圖Y 模式)", "IDC_RADIO_MODEL_Y":"二次元插圖Y 模式)",
"IDC_RADIO_MODEL_UpResNet10":"二次元插圖UpResNet10",
"IDC_CHECK_TTA":"使用 TTA 模式", "IDC_CHECK_TTA":"使用 TTA 模式",
"IDC_STATIC_PROCESS_SPEED_SETTING":"處理速度設定", "IDC_STATIC_PROCESS_SPEED_SETTING":"處理速度設定",
"IDC_STATIC_PROCESSOR":"使用處理器", "IDC_STATIC_PROCESSOR":"使用處理器",
@ -95,5 +96,6 @@
"IDC_STATIC_USE_GPU_NO":"使用GPU數量", "IDC_STATIC_USE_GPU_NO":"使用GPU數量",
"IDC_RADIO_MODEL_UPCONV_RGB":"二次元插圖UpRGB 模式)", "IDC_RADIO_MODEL_UPCONV_RGB":"二次元插圖UpRGB 模式)",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"照片和動畫UpPhoto 模式)", "IDC_RADIO_MODEL_UPCONV_PHOTO":"照片和動畫UpPhoto 模式)",
"MessageLogFatalError":"發生嚴重錯誤。\r\n可能是分割大小過大" "MessageLogFatalError":"發生嚴重錯誤。\r\n可能是分割大小過大",
"IDC_RADIO_MODEL_CUNET":"二次元插圖CUnet 模式)"
} }

View File

@ -1,5 +1,7 @@
;LangName LangID SubLangID FileName ;LangName LangID SubLangID FileName
English(US) 0x09 0x01 english.json English(US) 0x09 0x01 english.json
Deutsch(DE) 0x07 0x01 german.json
Español(ES) 0x0A 0x01 spanish.json
Français(FR) 0x0C 0x01 french.json Français(FR) 0x0C 0x01 french.json
Русский(RU) 0x19 0x01 russian.json Русский(RU) 0x19 0x01 russian.json
Türkçe(TR) 0x1F 0x01 turkish.json Türkçe(TR) 0x1F 0x01 turkish.json
@ -7,3 +9,6 @@ Türkçe(TR) 0x1F 0x01 turkish.json
한국어 0x12 0x01 korean.json 한국어 0x12 0x01 korean.json
繁體中文 0x04 0x01 Chinese_Traditional.json 繁體中文 0x04 0x01 Chinese_Traditional.json
简体中文 0x04 0x02 Chinese_Simplified.json 简体中文 0x04 0x02 Chinese_Simplified.json
Português(BR) 0x16 0x01 portuguese_brazilian.json
Čeština 0x05 0x01 czech.json
Italian 0x10 0x01 italian.json

105
bin/lang/czech.json Normal file
View File

@ -0,0 +1,105 @@
{
"IDC_STATIC_IO_SETTING": "Nasvavení vstupu/výstupu",
"IDC_STATIC_INPUT_PATH": "Vstupní cesta\r\n(soubor či složka)",
"IDC_BUTTON_INPUT_REF": "Procházet",
"IDC_STATIC_OUTPUT_PATH": "výstupní cesta",
"IDC_STATIC_TANS_EXT_LIST": "Formáty vstupů",
"IDC_STATIC_OUTPUT_EXT": "Formát výstupů",
"IDC_STATIC_OUTPUT_QUALITY": "Výstupní kvalita",
"IDC_STATIC_OUTPUT_DEPTH": "Výstupní bitová hloubka",
"IDC_STATIC_AUTO_START": "Nastavení samozpuštění při nastavení vstupu",
"IDC_RADIO_AUTO_START_NONE": "Vypnuto",
"IDC_RADIO_AUTO_START_ONE": "Zapnuto při jednom souboru",
"IDC_RADIO_AUTO_START_MULTI": "Zapnuto při složce, více siuborech",
"IDC_STATIC_QUALITY_PROCESS_SETTING": "Nasvavení kvality a zpracování",
"IDC_STATIC_TRANS_MODE": "Způsoby zpracování",
"IDC_RADIO_MODE_NOISE_SCALE": "Odšumit a zvětšit",
"IDC_RADIO_MODE_SCALE": "Pouze zvětšit",
"IDC_RADIO_MODE_NOISE": "Pouze odšumit",
"IDC_RADIO_AUTO_SCALE": "Zvětšit a automaticky odstranit šum",
"IDC_STATIC_JPEG_NOISE_LEVEL": "Úroveň odšumení",
"IDC_RADIONOISE_LEVEL0": "Úroveň 0",
"IDC_RADIONOISE_LEVEL1": "Úroveň 1",
"IDC_RADIONOISE_LEVEL2": "Úroveň 2",
"IDC_RADIONOISE_LEVEL3": "Úroveň 3",
"IDC_STATIC_SCALE_RATE": "Zvětšení",
"IDC_RADIO_SCALE_RATIO": "Násobné",
"IDC_RADIO_SCALE_WIDTH": "Dle šířky",
"IDC_RADIO_SCALE_HEIGHT": "Dle déky",
"IDC_RADIO_SCALE_WIDTH_HEIGHT": "Přesně na (š x délka)",
"IDC_STATIC_MODEL": "Model",
"IDC_RADIO_MODEL_RGB": "2-D ilustrace (RGB Model)",
"IDC_RADIO_MODEL_PHOTO": "Fotka, Anime",
"IDC_RADIO_MODEL_Y": "2-D ilustrace (Y Model)",
"IDC_RADIO_MODEL_UpResNet10": "2-D ilustrace (UpResNet10)",
"IDC_CHECK_TTA": "Uží TTA Mode(průměr z 8 zvětšení)",
"IDC_STATIC_PROCESS_SPEED_SETTING": "Nastavení rychlosti zpracování",
"IDC_STATIC_PROCESSOR": "Užít pracovní jednotku",
"IDC_RADIO_MODE_GPU": "GPU - CUDA (je třeba cuDNN)",
"IDC_RADIO_MODE_CPU": "Procesor (ultra pomalé)",
"IDC_STATIC_CROP_SIZE": "Velokost rozdělení",
"IDC_BUTTON_CHECK_CUDNN": "Kontr. cuDNN",
"IDC_BUTTON_CANCEL": "Zrušit",
"IDC_BUTTON_EXEC": "Start",
"IDC_STATIC_LANG_UI": "Jazyk rozhraní",
"IDC_BUTTON_OUTPUT_REF": "Procházet",
"IDC_BUTTON_APP_SETTING": "Nastavení",
"IDC_BUTTON_CLEAR_OUTPUT_DIR": "Reset. výst. soubor",
"IDC_STATIC_ARG_START": "Nastartovat s ARGEM (konverzní engine)",
"IDC_CHECK_ARG_START_AUTO": "Nastartovat automaticky",
"IDC_CHECK_ARG_START_SUCCESS_FINISH": "vypnout po dokončení",
"IDC_STATIC_INPUT_DIR_FIX": "Stálá vstupní složka",
"IDC_STATIC_OUTPUT_DIR_FIX": "Stálá výstupní složka",
"IDC_CHECK_OUTPUT_NO_OVERWRITE": "Nepřepepisovat již existující soubory",
"MessageUseProcessorMode": "Použít %s. pracovní jednotku",
"MessageProcessTime": "Délka zpracování: %02d:%02d:%02d.%03d",
"MessageInitTime": "Délka inicializace: %02d:%02d:%02d.%03d",
"MessagecuDNNCheckTime": "Čas kontroly cuDNN: %02d:%02d:%02d.%03d",
"MessageTitleError": "Chyba",
"MessageScaleRateCheckError": "násobek musí být větší než 0 a nezáporný",
"MessageScaleWidthCheckError": "Velikost musí být celé číslo větší než nula.",
"MessageCropSizeCheckError": "Velikost rozdělení musí být větší než 1",
"MessageInputPathCheckError": "Vložte prosím vstupní cestu",
"MessageOutputPathCheckError": "Vložte prosím výstupní cestu",
"MessageOutputExtCheckError": "Vložte formát výstupu",
"MessageInputCheckError": "Vstupní soubor či složka nenalezena",
"MessageOutputExtentionCheckError": "Vložte formát výstupu",
"MessageOutputQualityCheckError": "Výstupní kvalita je mimo rozsah",
"MessageOutputDepthCheckError": "Nasavení výstupní bitové hloubky je špatně",
"MessageCudaNotFindError": "Nelze použít GPU pro konverzi\r\nCUDA ovladač možná není nainstalován. \r\nZkuste ho instalovat",
"MessageCudaOldVersionError": "Nelze použít GPU pro konverzi\r\nCUDA ovladač je asi zastaralí \r\nZkuste ho updatovat",
"MessageTransSuccess": "Uspěšně provedeno",
"MessageErrorHappen": "nastala chyba",
"MessageCreateOutDirError": "Nelze vytvořit výstupní složku \r\n[%s]",
"MessageCancelError": "Konverze přerušena",
"MessageInvalidParameterError": "Parameter je špatně",
"MessageFailedOpenModelFileError": "Nelze otevřít soubor s modelem",
"MessageFailedParseModelFileError": "Nelze načíst soubor s modelem",
"MessageFailedConstructModelError": "Nelze zkonstruovat model z souboru",
"MessageFailedOpenInputFileError": "Nezle otevřít vstupní soubor: %s",
"MessageFailedOpenOutputFileError": "Nezle zapsat výstupní soubor: %s",
"MessageFailedProcessCaffeError": "Nelze zpracovat interpolaci",
"MessageTitleResult": "Výsledek kontroly",
"MessagecuDNNOK": "cuDNN lze použít",
"MessagecuDNNNotFindError": "cuDNN nemuže být použito\r\n[%s] nenalezeno",
"MessagecuDNNOldVersionError": "cuDNN nemuže být použito\r\n[%s]je stará verze. použíjte v2",
"MessagecuDNNCannotCreateError": "cuDNN nemuže být použito\r\n nelze inicializovat cuDNN",
"MessagecuDNNDefautlError": "cuDNN nemuže být použito",
"MessageExtStr": "Formát výstupi(%s)",
"MessageAllFileFolder": "Všechny soubory a složky(*.*)",
"MessageTitleInputDialog": "Zvolte vstupní soubor/složku",
"MessageTimeLeftUnknown": "Zbývající čas: Neznámé",
"MessageTimeLeft": "Zbyvající čas",
"MessageNoOverwrite": "Soubor: %s už existuje v složce ",
"MessageCudaOldDeviceError": "Vaše zařízení s podporou CUDA je zastaralé.\r\n Použíte prosím zařízení s „Compute Capability 2.0“ čí starší",
"OK": "OK",
"Cancel": "Zrušit",
"IDC_STATIC_USE_GPU_NO": "Užít GPU číslo:",
"IDC_RADIO_MODEL_UPCONV_RGB": "2-D ilustrace (UpRGB Model)",
"IDC_RADIO_MODEL_UPCONV_PHOTO": "Fotka (UpPhoto Model)",
"MessageLogFatalError": "Nastala fatální chyba.\r\nJe možné že velikost rozdělení je příliš velká",
"IDC_STATIC_BATCH_SIZE": "Velikost dávky",
"MessageBatchSizeCheckError": "Velikost dávky musí být větší než 0",
"IDC_RADIO_MODEL_CUNET": "2-D ilustrace (CUnet Model)",
"MessageCropSizeDivisibleCheckError": "Velikost rozdělení pro tento model Musí být bezezbytku dělitelná %d"
}

View File

@ -31,6 +31,7 @@
"IDC_RADIO_MODEL_RGB":"2-D illust (RGB Model)", "IDC_RADIO_MODEL_RGB":"2-D illust (RGB Model)",
"IDC_RADIO_MODEL_PHOTO":"Photography, Anime", "IDC_RADIO_MODEL_PHOTO":"Photography, Anime",
"IDC_RADIO_MODEL_Y":"2-D illust (Y Model)", "IDC_RADIO_MODEL_Y":"2-D illust (Y Model)",
"IDC_RADIO_MODEL_UpResNet10":"2-D illust (UpResNet10)",
"IDC_CHECK_TTA":"Use TTA Mode", "IDC_CHECK_TTA":"Use TTA Mode",
"IDC_STATIC_PROCESS_SPEED_SETTING":"Processing Speed Settings", "IDC_STATIC_PROCESS_SPEED_SETTING":"Processing Speed Settings",
"IDC_STATIC_PROCESSOR":"Use Processor", "IDC_STATIC_PROCESSOR":"Use Processor",
@ -96,5 +97,9 @@
"IDC_STATIC_USE_GPU_NO":"Use GPU No", "IDC_STATIC_USE_GPU_NO":"Use GPU No",
"IDC_RADIO_MODEL_UPCONV_RGB":"2-D illust (UpRGB Model)", "IDC_RADIO_MODEL_UPCONV_RGB":"2-D illust (UpRGB Model)",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"Photo (UpPhoto Model)", "IDC_RADIO_MODEL_UPCONV_PHOTO":"Photo (UpPhoto Model)",
"MessageLogFatalError":"A fatal error has occurred.\r\nThere is a possibility the split size is too large" "MessageLogFatalError":"A fatal error has occurred.\r\nThere is a possibility the split size is too large",
"IDC_STATIC_BATCH_SIZE":"Batch size",
"MessageBatchSizeCheckError":"Batch size must be greater than 0",
"IDC_RADIO_MODEL_CUNET":"2-D illust (CUnet Model)",
"MessageCropSizeDivisibleCheckError":"Split size of this model must be divisible by %d"
} }

View File

@ -31,6 +31,7 @@
"IDC_RADIO_MODEL_RGB":"Illustration 2D (modèle RGB)", "IDC_RADIO_MODEL_RGB":"Illustration 2D (modèle RGB)",
"IDC_RADIO_MODEL_PHOTO":"Photo & animé (modèle Photo)", "IDC_RADIO_MODEL_PHOTO":"Photo & animé (modèle Photo)",
"IDC_RADIO_MODEL_Y":"Illustration 2D (modèle Y)", "IDC_RADIO_MODEL_Y":"Illustration 2D (modèle Y)",
"IDC_RADIO_MODEL_UpResNet10":"Illustration 2D (UpResNet10)",
"IDC_CHECK_TTA":"Utiliser mode TTA", "IDC_CHECK_TTA":"Utiliser mode TTA",
"IDC_STATIC_PROCESS_SPEED_SETTING":"Vitesse de traitement", "IDC_STATIC_PROCESS_SPEED_SETTING":"Vitesse de traitement",
"IDC_STATIC_PROCESSOR":"Utiliser le processeur", "IDC_STATIC_PROCESSOR":"Utiliser le processeur",
@ -96,5 +97,6 @@
"IDC_STATIC_USE_GPU_NO":"Utiliser GPU n°", "IDC_STATIC_USE_GPU_NO":"Utiliser GPU n°",
"IDC_RADIO_MODEL_UPCONV_RGB":"Illustration 2D (modèle UpRGB)", "IDC_RADIO_MODEL_UPCONV_RGB":"Illustration 2D (modèle UpRGB)",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"Photo (modèle UpPhoto)", "IDC_RADIO_MODEL_UPCONV_PHOTO":"Photo (modèle UpPhoto)",
"MessageLogFatalError":"Erreur fatale\r\nLa taille de découpage est peut-être trop grande" "MessageLogFatalError":"Erreur fatale\r\nLa taille de découpage est peut-être trop grande",
"IDC_RADIO_MODEL_CUNET":"Illustration 2D (modèle CUnet)"
} }

105
bin/lang/german.json Normal file
View File

@ -0,0 +1,105 @@
{
"IDC_STATIC_IO_SETTING":"Eingabe/Ausgabe Einstellungen",
"IDC_STATIC_INPUT_PATH":"Eingabepfad\r\n(Datei oder Ordner)",
"IDC_BUTTON_INPUT_REF":"Durchsuchen",
"IDC_STATIC_OUTPUT_PATH":"Ausgabepfad",
"IDC_STATIC_TANS_EXT_LIST":"Eingabedateiendungen",
"IDC_STATIC_OUTPUT_EXT":"Ausgabedateiendung",
"IDC_STATIC_OUTPUT_QUALITY":"Ausgabequalität",
"IDC_STATIC_OUTPUT_DEPTH":"Farbtiefe pro Kanal",
"IDC_STATIC_AUTO_START":"Automatischer Start wenn Eingabedatei ausgewählt wurde",
"IDC_RADIO_AUTO_START_NONE":"Kein automatischer Start",
"IDC_RADIO_AUTO_START_ONE":"Bei einer Eingabedatei",
"IDC_RADIO_AUTO_START_MULTI":"Bei mehreren Eingabedateien/Ordner",
"IDC_STATIC_QUALITY_PROCESS_SETTING":"Konvertierungseinstellungen für Bildqualität und Bildverarbeitung",
"IDC_STATIC_TRANS_MODE":"Umwandlungsmodus",
"IDC_RADIO_MODE_NOISE_SCALE":"Entrauschen && Vergrößern",
"IDC_RADIO_MODE_SCALE":"Nur Vergrößern",
"IDC_RADIO_MODE_NOISE":"Nur Entrauschen",
"IDC_RADIO_AUTO_SCALE":"Vergrößern & Auto-Entrauschen",
"IDC_STATIC_JPEG_NOISE_LEVEL":"Entrauschlevel",
"IDC_RADIONOISE_LEVEL0":"Level 0",
"IDC_RADIONOISE_LEVEL1":"Level 1",
"IDC_RADIONOISE_LEVEL2":"Level 2",
"IDC_RADIONOISE_LEVEL3":"Level 3",
"IDC_STATIC_SCALE_RATE":"Vergrößerung",
"IDC_RADIO_SCALE_RATIO":"Größenfaktor setzen",
"IDC_RADIO_SCALE_WIDTH":"Endbreite setzen",
"IDC_RADIO_SCALE_HEIGHT":"Endhöhe setzen",
"IDC_RADIO_SCALE_WIDTH_HEIGHT":"Endbreite und Endhöhe setzen",
"IDC_STATIC_MODEL":"Model",
"IDC_RADIO_MODEL_RGB":"2-D illust (RGB Model)",
"IDC_RADIO_MODEL_PHOTO":"Fotografie, Anime",
"IDC_RADIO_MODEL_Y":"2-D illust (Y Model)",
"IDC_RADIO_MODEL_UpResNet10":"2-D illust (UpResNet10)",
"IDC_CHECK_TTA":"TTA Modus nutzen",
"IDC_STATIC_PROCESS_SPEED_SETTING":"Prozesseinstellungen",
"IDC_STATIC_PROCESSOR":"Prozessornutzung",
"IDC_RADIO_MODE_GPU":"CUDA (nutzt cuDNN)",
"IDC_RADIO_MODE_CPU":"CPU",
"IDC_STATIC_CROP_SIZE":"Zuschneidegröße",
"IDC_BUTTON_CHECK_CUDNN":"cuDNN überprüfen",
"IDC_BUTTON_CANCEL":"Abbrechen",
"IDC_BUTTON_EXEC":"Starten",
"IDC_STATIC_LANG_UI":"UI Sprache",
"IDC_BUTTON_OUTPUT_REF":"Durchsuchen",
"IDC_BUTTON_APP_SETTING":"Optionen",
"IDC_BUTTON_CLEAR_OUTPUT_DIR":"Ausgabepfad zurücksetzen",
"IDC_STATIC_ARG_START":"Mit Startoptionen Booten",
"IDC_CHECK_ARG_START_AUTO":"Starten wenn geöffnet",
"IDC_CHECK_ARG_START_SUCCESS_FINISH":"Beenden wenn vollständig fertig",
"IDC_STATIC_INPUT_DIR_FIX":"Fixer Eingabeordner",
"IDC_STATIC_OUTPUT_DIR_FIX":"Fixer Ausgabeordner",
"IDC_CHECK_OUTPUT_NO_OVERWRITE":"Ausgabedateien nicht überschreiben",
"MessageUseProcessorMode":"Genutzter Prozessor: %s",
"MessageProcessTime":"Umwandlungszeit: %02d:%02d:%02d.%03d",
"MessageInitTime":"Initialisierungszeit: %02d:%02d:%02d.%03d",
"MessagecuDNNCheckTime":"cuDNN-überprüfungszeit: %02d:%02d:%02d.%03d",
"MessageTitleError":"Fehler",
"MessageScaleRateCheckError":"Vergrößerungsfaktor muss größer als 0.0 und positiv sein.",
"MessageScaleWidthCheckError":"Größe muss eine Ganzzahl und größer als 0 sein.",
"MessageCropSizeCheckError":"Teilungsgröße muss größer als 0 sein.",
"MessageInputPathCheckError":"Bitte gebe einen Eingabepfad an.",
"MessageOutputPathCheckError":"Bitte gebe einen Ausgabepfad an.",
"MessageOutputExtCheckError":"Bitte eine Dateiendung für die Ausgabe wählen.",
"MessageInputCheckError":"Eingabedatei oder Ordner existiert nicht.",
"MessageOutputExtentionCheckError":"Bitte die Dateiendung der Ausgabe wählen.",
"MessageOutputQualityCheckError":"Ausgabequalität ist außerhalb des gültigen Bereichs",
"MessageOutputDepthCheckError":"Bittiefe der Ausgabe ist inkorrekt.",
"MessageCudaNotFindError":"Eingabe kann nicht mittels GPU umgewandelt werden.\r\nDer CUDA Treiber ist möglicherweise nicht installiert. \r\nInstalliere bitte den CUDA Treiber.",
"MessageCudaOldVersionError":"Eingabe kann nicht mittels GPU umgewandelt werden.\r\nDie CUDA Treiberversion scheint veraltet.\r\nBitte aktualisiere den CUDA Treiber.",
"MessageTransSuccess":"Erfolgreich umgewandelt",
"MessageErrorHappen":"Ein Fehler ist aufgetreten",
"MessageCreateOutDirError":"Ausgabeordner\r\n[%s]\r\nkonnte nicht erstellt werden",
"MessageCancelError":"Umwandlung wurde abgebrochen",
"MessageInvalidParameterError":"Parameter ist ungültig",
"MessageFailedOpenModelFileError":"Modeldatei konnte nicht geöffnet werden",
"MessageFailedParseModelFileError":"Modeldatei konnte nicht verarbeitet werden",
"MessageFailedConstructModelError":"Model konnte nicht konstruiert werden",
"MessageFailedOpenInputFileError":"Die Eingabedatei %s konnte nicht geöffnet werden",
"MessageFailedOpenOutputFileError":"In die Ausgabedatei %s konnte nicht geschrieben werden",
"MessageFailedProcessCaffeError":"Die Interpolation konnte nicht durchgeführt werden",
"MessageTitleResult":"Ergebnis",
"MessagecuDNNOK":"cuDNN kann genutzt werden",
"MessagecuDNNNotFindError":"cuDNN kann nicht genutzt werden\r\n[%s] konnte nicht gefunden werden",
"MessagecuDNNOldVersionError":"cuDNN kann nicht genutzt werden\r\n[%s] ist eine veraltete Version. Bitte v2 benutzen",
"MessagecuDNNCannotCreateError":"cuDNN kann nicht genutzt werden\r\ncKonnte cuDNN nicht initialisieren",
"MessagecuDNNDefautlError":"cuDNN kann nicht genutzt werden",
"MessageExtStr":"Eingabedateiendungen(%s)",
"MessageAllFileFolder":"Alle Dateien und Ordner(*.*)",
"MessageTitleInputDialog":"Bitte wähle eine Datei oder einen Ordner",
"MessageTimeLeftUnknown":"Restzeit: Unbekannt",
"MessageTimeLeft":"Übrige Zeit",
"MessageNoOverwrite":"Es existiert bereits eine Datei an dem Speicherort: %s",
"MessageCudaOldDeviceError":"Dein CUDA Gerät ist veraltet.\r\nBitte nutze ein Gerät mit Compute Capability 2.0 oder neuer",
"OK":"OK",
"Cancel":"Abbrechen",
"IDC_STATIC_USE_GPU_NO":"Benutze GPU Nr.",
"IDC_RADIO_MODEL_UPCONV_RGB":"2-D illust (UpRGB Model)",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"Foto (UpPhoto Model)",
"MessageLogFatalError":"Ein fataler Fehler ist aufgetreten.\r\nEventuell ist die Teilungsgröße zu hoch.",
"IDC_STATIC_BATCH_SIZE":"Batchgröße",
"MessageBatchSizeCheckError":"Stapelgröße muss größer als 0 sein",
"IDC_RADIO_MODEL_CUNET":"2-D illust (CUnet Model)",
"MessageCropSizeDivisibleCheckError":"Teilungsgröße bei diesem Model muss durch %d teilbar sein."
}

105
bin/lang/italian.json Normal file
View File

@ -0,0 +1,105 @@
{
"IDC_STATIC_IO_SETTING":"Impostazioni Input/Output",
"IDC_STATIC_INPUT_PATH":"Percorso di Input\r\n(File o Cartelle)",
"IDC_BUTTON_INPUT_REF":"Browse",
"IDC_STATIC_OUTPUT_PATH":"Percorso di Output",
"IDC_STATIC_TANS_EXT_LIST":"Estensioni file in input",
"IDC_STATIC_OUTPUT_EXT":"Estensione di Output",
"IDC_STATIC_OUTPUT_QUALITY":"Qualita Output",
"IDC_STATIC_OUTPUT_DEPTH":"Output depth bits",
"IDC_STATIC_AUTO_START":"Avvio automatico quando vengono impostati i file di input",
"IDC_RADIO_AUTO_START_NONE":"No Avvio Automatico",
"IDC_RADIO_AUTO_START_ONE":"Al inserimento di un file",
"IDC_RADIO_AUTO_START_MULTI":"Al inserimento di più file o di una cartella",
"IDC_STATIC_QUALITY_PROCESS_SETTING":"Conversione qualità immagine e impostazioni di elaborazione ",
"IDC_STATIC_TRANS_MODE":"Modalità di conversione",
"IDC_RADIO_MODE_NOISE_SCALE":"Riduci rumore e ingrandisci",
"IDC_RADIO_MODE_SCALE":"Ingrandisci",
"IDC_RADIO_MODE_NOISE":"eliminazione delle impurità",
"IDC_RADIO_AUTO_SCALE":"Ingrandisci e elimina le inpurità in automatico",
"IDC_STATIC_JPEG_NOISE_LEVEL":"Livello di eliminazione delle impurità",
"IDC_RADIONOISE_LEVEL0":"Livello 0",
"IDC_RADIONOISE_LEVEL1":"Livello 1",
"IDC_RADIONOISE_LEVEL2":"Livello 2",
"IDC_RADIONOISE_LEVEL3":"Livello 3",
"IDC_STATIC_SCALE_RATE":"Dimensione dell'ingrandimento",
"IDC_RADIO_SCALE_RATIO":"Imposta rate",
"IDC_RADIO_SCALE_WIDTH":"Imposta trans width",
"IDC_RADIO_SCALE_HEIGHT":"Imposta trans height",
"IDC_RADIO_SCALE_WIDTH_HEIGHT":"Imposta trans width e height",
"IDC_STATIC_MODEL":"Modello",
"IDC_RADIO_MODEL_RGB":"2-D illust (RGB Model)",
"IDC_RADIO_MODEL_PHOTO":"Photography, Anime",
"IDC_RADIO_MODEL_Y":"2-D illust (Y Model)",
"IDC_RADIO_MODEL_UpResNet10":"2-D illust (UpResNet10)",
"IDC_CHECK_TTA":"Usa la modalita TTA",
"IDC_STATIC_PROCESS_SPEED_SETTING":"Impostazioni della velocità di elaborazione",
"IDC_STATIC_PROCESSOR":"Usa processore",
"IDC_RADIO_MODE_GPU":"CUDA (Usa cuDNN)",
"IDC_RADIO_MODE_CPU":"CPU",
"IDC_STATIC_CROP_SIZE":"Split size",
"IDC_BUTTON_CHECK_CUDNN":"Controlla cuDNN",
"IDC_BUTTON_CANCEL":"Cancella",
"IDC_BUTTON_EXEC":"Avvia",
"IDC_STATIC_LANG_UI":"Lingua UI",
"IDC_BUTTON_OUTPUT_REF":"Browse",
"IDC_BUTTON_APP_SETTING":"Impostazioni App",
"IDC_BUTTON_CLEAR_OUTPUT_DIR":"Resetta cartella di output",
"IDC_STATIC_ARG_START":"Avvia con Arg",
"IDC_CHECK_ARG_START_AUTO":"Avvia Quando Lanciato",
"IDC_CHECK_ARG_START_SUCCESS_FINISH":"Esci quando completato con successo",
"IDC_STATIC_INPUT_DIR_FIX":"Cartella di input prestabilita",
"IDC_STATIC_OUTPUT_DIR_FIX":"Cartella di output prestabilita",
"IDC_CHECK_OUTPUT_NO_OVERWRITE":"Non sovrascrivere file di output",
"MessageUseProcessorMode":"Processore usato: %s",
"MessageProcessTime":"Tempo di elaborazione: %02d:%02d:%02d.%03d",
"MessageInitTime":"Tempo di inizializzazione: %02d:%02d:%02d.%03d",
"MessagecuDNNCheckTime":"Tempo di controllo cuDNN: %02d:%02d:%02d.%03d",
"MessageTitleError":"Errore",
"MessageScaleRateCheckError":"Il fattore di ingrandimento deve essere maggiore di 0,0 e positivo",
"MessageScaleWidthCheckError":"La dimensione deve essere un numero intero maggiore di 0.",
"MessageCropSizeCheckError":"La dimensione della divisione deve essere maggiore di 0",
"MessageInputPathCheckError":"Si prega di specificare il percorso di input",
"MessageOutputPathCheckError":"Si prega di specificare il percorso di output",
"MessageOutputExtCheckError":"Si prega di specificare l'estensione di output",
"MessageInputCheckError":"Il file o la cartella di input non esiste",
"MessageOutputExtentionCheckError":"Seleziona l'estensione di output",
"MessageOutputQualityCheckError":"La qualità dell'output è fuori dal intervallo",
"MessageOutputDepthCheckError":"I bit di profondità di output non sono corretti",
"MessageCudaNotFindError":"L'input non puo essere elaborato dalla GPU\r\n I driver CUDA potrebbero non essere stati installati. \r\nPer favore installa i driver CUDA",
"MessageCudaOldVersionError":"L'input non puo essere elaborato dalla GPU\r\n I driver CUDA potrebbero non essere aggiornati. \r\nPer favore aggiorna i driver CUDA",
"MessageTransSuccess":"Convertito con successo",
"MessageErrorHappen":"C'è stato un errore",
"MessageCreateOutDirError":"Cartella di Output\r\n[%s]\r\nCreazione fallita",
"MessageCancelError":"L'elaborazione è stata bloccata",
"MessageInvalidParameterError":"Parametro non valido",
"MessageFailedOpenModelFileError":"Errore nell'apertura del file del modello",
"MessageFailedParseModelFileError":"Impossibile analizzare il file del modello",
"MessageFailedConstructModelError":"Impossibile costruire il modello",
"MessageFailedOpenInputFileError":"Errore nell'apertura del file %s",
"MessageFailedOpenOutputFileError":"Impossibile scrivere nel file di output %s",
"MessageFailedProcessCaffeError":"Impossibile elaborare l'interpolazione",
"MessageTitleResult":"Risultato",
"MessagecuDNNOK":"cuDNN è disponibile",
"MessagecuDNNNotFindError":"cuDNN non puo essere usato\r\n[%s]non trovato",
"MessagecuDNNOldVersionError":"cuDNN non puo essere usato\r\n[%s]è una vecchia versione, per favore usa la versione v2",
"MessagecuDNNCannotCreateError":"cuDNN non puo essere usato\r\ncInizializzazione di cuDNN fallita",
"MessagecuDNNDefautlError":"cuDNN non puo essere usato",
"MessageExtStr":"Input file extensions(%s)",
"MessageAllFileFolder":"Tutti i file e le cartelle(*.*)",
"MessageTitleInputDialog":"Perfavore seleziona il file o la cartella di input",
"MessageTimeLeftUnknown":"Tempo mancante: Sconosciuto",
"MessageTimeLeft":"Tempo Mancante",
"MessageNoOverwrite":"File gia esistente in: %s",
"MessageCudaOldDeviceError":"Il tuo dispositivo CUDA è troppo vecchio.\r\nPer favore usa un dispositivo con Compute Capability 2.0 o superiore",
"OK":"OK",
"Cancel":"Cancella",
"IDC_STATIC_USE_GPU_NO":"Usa la GPU n°",
"IDC_RADIO_MODEL_UPCONV_RGB":"2-D illust (UpRGB Model)",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"Photo (UpPhoto Model)",
"MessageLogFatalError":"Si è verificato un errore irreversibile.\r\nc'è la possibilità che la dimensione dello split sia troppo grande",
"IDC_STATIC_BATCH_SIZE":"Batch size",
"MessageBatchSizeCheckError":"La dimensione del batch deve essere maggiore di 0",
"IDC_RADIO_MODEL_CUNET":"2-D illust (CUnet Model)",
"MessageCropSizeDivisibleCheckError":"La dimensione della divisione di questo modello deve essere divisibile per %d"
}

View File

@ -31,6 +31,7 @@
"IDC_RADIO_MODEL_RGB":"2次元イラスト (RGBモデル)", "IDC_RADIO_MODEL_RGB":"2次元イラスト (RGBモデル)",
"IDC_RADIO_MODEL_PHOTO":"写真・アニメ (Photoモデル)", "IDC_RADIO_MODEL_PHOTO":"写真・アニメ (Photoモデル)",
"IDC_RADIO_MODEL_Y":"2次元イラスト (Yモデル)", "IDC_RADIO_MODEL_Y":"2次元イラスト (Yモデル)",
"IDC_RADIO_MODEL_UpResNet10":"2次元イラスト (UpResNet10)",
"IDC_CHECK_TTA":"TTAモードを使う", "IDC_CHECK_TTA":"TTAモードを使う",
"IDC_STATIC_PROCESS_SPEED_SETTING":"処理速度設定", "IDC_STATIC_PROCESS_SPEED_SETTING":"処理速度設定",
"IDC_STATIC_PROCESSOR":"使用プロセッサー", "IDC_STATIC_PROCESSOR":"使用プロセッサー",
@ -96,5 +97,9 @@
"IDC_STATIC_USE_GPU_NO":"使用GPU No", "IDC_STATIC_USE_GPU_NO":"使用GPU No",
"IDC_RADIO_MODEL_UPCONV_RGB":"2次元イラスト (UpRGBモデル)", "IDC_RADIO_MODEL_UPCONV_RGB":"2次元イラスト (UpRGBモデル)",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"写真・アニメ (UpPhotoモデル)", "IDC_RADIO_MODEL_UPCONV_PHOTO":"写真・アニメ (UpPhotoモデル)",
"MessageLogFatalError":"致命的なエラーが発生しました。\r\n分割サイズが大きすぎる可能性があります" "MessageLogFatalError":"致命的なエラーが発生しました。\r\n分割サイズが大きすぎる可能性があります",
"IDC_STATIC_BATCH_SIZE":"バッチサイズ",
"MessageBatchSizeCheckError":"バッチサイズは0より大きい整数である必要があります",
"IDC_RADIO_MODEL_CUNET":"2次元イラスト (CUnet)",
"MessageCropSizeDivisibleCheckError":"このモデルの分割サイズは %d で割り切れる必要があります"
} }

View File

@ -1,39 +1,41 @@
{ {
"IDC_STATIC_IO_SETTING":"입출력 설정", "IDC_STATIC_IO_SETTING":"입출력 설정",
"IDC_STATIC_INPUT_PATH":"입력 경로\r\n(파일 폴더)", "IDC_STATIC_INPUT_PATH":"입력 경로\r\n(파일 또는 폴더)",
"IDC_BUTTON_INPUT_REF":"찾기", "IDC_BUTTON_INPUT_REF":"설정",
"IDC_STATIC_OUTPUT_PATH":"출력 경로", "IDC_STATIC_OUTPUT_PATH":"출력 경로",
"IDC_STATIC_TANS_EXT_LIST":"변환할 파일 확장자", "IDC_STATIC_TANS_EXT_LIST":"변환 대상 확장자 종류",
"IDC_STATIC_OUTPUT_EXT":"출력 확장자", "IDC_STATIC_OUTPUT_EXT":"출력 확장자",
"IDC_STATIC_OUTPUT_QUALITY":"출력 화질 설정", "IDC_STATIC_OUTPUT_QUALITY":"출력 화질 설정",
"IDC_STATIC_OUTPUT_DEPTH":"출력 컬러 비트", "IDC_STATIC_OUTPUT_DEPTH":"색상 비트수 설정",
"IDC_STATIC_AUTO_START":"퀵 스타트 설정", "IDC_STATIC_AUTO_START":"퀵 스타트 설정",
"IDC_RADIO_AUTO_START_NONE":"사용 안 함", "IDC_RADIO_AUTO_START_NONE":"자동 시작 안 함",
"IDC_RADIO_AUTO_START_ONE":"파일이 추가되면 바로 시작", "IDC_RADIO_AUTO_START_ONE":"파일 추가시 바로 시작",
"IDC_RADIO_AUTO_START_MULTI":"폴더 또는 여러 파일이\r\n추가되면 바로 시작", "IDC_RADIO_AUTO_START_MULTI":"폴더 또는 여러 파일\r\n추가시 바로 시작",
"IDC_STATIC_QUALITY_PROCESS_SETTING":"변환 이미지 화질 && 처리 설정", "IDC_STATIC_QUALITY_PROCESS_SETTING":"변환 화질 및 처리 설정",
"IDC_STATIC_TRANS_MODE":"변환 모드", "IDC_STATIC_TRANS_MODE":"변환 모드",
"IDC_RADIO_MODE_NOISE_SCALE":"노이즈 제거 && 확대", "IDC_RADIO_MODE_NOISE_SCALE":"확대 및 노이즈 제거",
"IDC_RADIO_MODE_SCALE":"확대", "IDC_RADIO_MODE_SCALE":"확대",
"IDC_RADIO_MODE_NOISE":"노이즈 제거", "IDC_RADIO_MODE_NOISE":"노이즈 제거",
"IDC_RADIO_AUTO_SCALE":"자동 노이즈 제거 && 확대", "IDC_RADIO_AUTO_SCALE":"노이즈 제거(자동판별)&& 확대",
"IDC_STATIC_JPEG_NOISE_LEVEL":"노이즈 제거 단계", "IDC_STATIC_JPEG_NOISE_LEVEL":"노이즈 제거 수준",
"IDC_RADIONOISE_LEVEL0":"0단계", "IDC_RADIONOISE_LEVEL0":"0단계",
"IDC_RADIONOISE_LEVEL1":"1단계", "IDC_RADIONOISE_LEVEL1":"1단계",
"IDC_RADIONOISE_LEVEL2":"2단계", "IDC_RADIONOISE_LEVEL2":"2단계",
"IDC_RADIONOISE_LEVEL3":"3단계", "IDC_RADIONOISE_LEVEL3":"3단계",
"IDC_STATIC_SCALE_RATE":"확대 크기", "IDC_STATIC_SCALE_RATE":"확대 설정",
"IDC_RADIO_SCALE_RATIO":"확대율로 설정", "IDC_RADIO_SCALE_RATIO":"확대율로 설정",
"IDC_RADIO_SCALE_WIDTH":"변환 후의 가로 너비", "IDC_RADIO_SCALE_WIDTH":"변환 후 가로 길이",
"IDC_RADIO_SCALE_HEIGHT":"변환 후의 세로 너비", "IDC_RADIO_SCALE_HEIGHT":"변환 후 세로 길이",
"IDC_RADIO_SCALE_WIDTH_HEIGHT":"'가로 세로'로 확대",
"IDC_STATIC_MODEL":"모델", "IDC_STATIC_MODEL":"모델",
"IDC_RADIO_MODEL_RGB":"2D 일러스트 (RGB 모델)", "IDC_RADIO_MODEL_RGB":"2D 일러스트 (RGB모델)",
"IDC_RADIO_MODEL_PHOTO":"사진 & 애니메이션 (Photo모델)", "IDC_RADIO_MODEL_PHOTO":"사진/애니메이션 (Photo모델)",
"IDC_RADIO_MODEL_Y":"2D 일러스트 (Y 모델)", "IDC_RADIO_MODEL_Y":"2D 일러스트 (Y모델)",
"IDC_RADIO_MODEL_UpResNet10":"2D 일러스트 (UpResNet10모델)",
"IDC_CHECK_TTA":"TTA 모드 사용", "IDC_CHECK_TTA":"TTA 모드 사용",
"IDC_STATIC_PROCESS_SPEED_SETTING":"처리 속도 설정", "IDC_STATIC_PROCESS_SPEED_SETTING":"처리 속도 설정",
"IDC_STATIC_PROCESSOR":"사용할 처리 방식", "IDC_STATIC_PROCESSOR":"사용할 프로세서",
"IDC_RADIO_MODE_GPU":"CUDA (cuDNN 사용)", "IDC_RADIO_MODE_GPU":"CUDA (cuDNN 우선)",
"IDC_RADIO_MODE_CPU":"CPU", "IDC_RADIO_MODE_CPU":"CPU",
"IDC_STATIC_CROP_SIZE":"분할 크기", "IDC_STATIC_CROP_SIZE":"분할 크기",
"IDC_BUTTON_CHECK_CUDNN":"cuDNN 검사", "IDC_BUTTON_CHECK_CUDNN":"cuDNN 검사",
@ -43,57 +45,61 @@
"IDC_BUTTON_OUTPUT_REF":"설정", "IDC_BUTTON_OUTPUT_REF":"설정",
"IDC_BUTTON_APP_SETTING":"환경 설정", "IDC_BUTTON_APP_SETTING":"환경 설정",
"IDC_BUTTON_CLEAR_OUTPUT_DIR":"출력 경로 초기화", "IDC_BUTTON_CLEAR_OUTPUT_DIR":"출력 경로 초기화",
"IDC_STATIC_ARG_START":"인수로 시작 설정", "IDC_STATIC_ARG_START":"인수 추가 실행시 설정",
"IDC_CHECK_ARG_START_AUTO":"즉시 작업 시작", "IDC_CHECK_ARG_START_AUTO":"즉시 변환 시작",
"IDC_CHECK_ARG_START_SUCCESS_FINISH":"오류가 없으면 바로 종료", "IDC_CHECK_ARG_START_SUCCESS_FINISH":"오류가 없으면 자동 종료",
"IDC_STATIC_INPUT_DIR_FIX":"입력 경로\n기본 폴더", "IDC_STATIC_INPUT_DIR_FIX":"입력 경로\n기본 폴더",
"IDC_STATIC_OUTPUT_DIR_FIX":"결과 경로 창\n기본 폴더", "IDC_STATIC_OUTPUT_DIR_FIX":"출력 경로\n기본 폴더",
"IDC_CHECK_OUTPUT_NO_OVERWRITE":"출력 파일을 덮어쓰지 않음", "IDC_CHECK_OUTPUT_NO_OVERWRITE":"출력 파일을 덮어쓰지 않음",
"MessageUseProcessorMode":"사용한 프로세서 : %s", "MessageUseProcessorMode":"사용한 프로세서 모드 : %s",
"MessageProcessTime":"처리 시간: %02d:%02d:%02d.%03d", "MessageProcessTime":"처리 시간 : %02d:%02d:%02d.%03d",
"MessageInitTime":"초기화 시간: %02d:%02d:%02d.%03d", "MessageInitTime":"초기화 시간 : %02d:%02d:%02d.%03d",
"MessagecuDNNCheckTime":"cuDNN 검사 시간: %02d:%02d:%02d.%03d", "MessagecuDNNCheckTime":"cuDNN 검사 시간 : %02d:%02d:%02d.%03d",
"MessageTitleError":"오류", "MessageTitleError":"오류",
"MessageScaleRateCheckError":"확대 비율은 반드시 0.0 이상의 숫자를 입력하십시오.", "MessageScaleRateCheckError":"확대 비율은 0.0 이상의 숫자를 입력해 주십시오.",
"MessageScaleWidthCheckError":"확대 크기는 0보다 큰 정수여야 합니다.", "MessageScaleWidthCheckError":"확대 크기는 0보다 큰 정수여야 합니다.",
"MessageCropSizeCheckError":"분할 크기는 반드시 0 이상이어야 합니다.", "MessageCropSizeCheckError":"분할 크기는 0 이상이어야 합니다.",
"MessageInputPathCheckError":"입력 경로를 선택해 주십시오.", "MessageInputPathCheckError":"입력 경로를 설정해 주십시오.",
"MessageOutputPathCheckError":"출력 경로를 선택해 주십시오.", "MessageOutputPathCheckError":"출력 경로를 설정해 주십시오.",
"MessageOutputExtCheckError":"출력할 확장자를 선택해 주십시오.", "MessageOutputExtCheckError":"출력 확장자를 설정해 주십시오.",
"MessageInputCheckError":"선택한 파일이나 폴더가 존재하지 않습니다.", "MessageInputCheckError":"입력 파일 혹은 폴더가 존재하지 않습니다.",
"MessageOutputExtentionCheckError":"출력할 확장자가 잘못되었습니다.", "MessageOutputExtentionCheckError":"출력 확장자를 설정해 주십시오.",
"MessageOutputQualityCheckError":"출력 화질이 설정 가능한 범위를 초과했습니다.", "MessageOutputQualityCheckError":"출력 화질이 설정 가능한 범위를 벗어났습니다.",
"MessageOutputDepthCheckError":"출력 비트수가 맞지 않습니다.", "MessageOutputDepthCheckError":"출력할 색상 비트수가 올바르지 않습니다.",
"MessageCudaNotFindError":"선택한 파일이 GPU로 변환되지 못했습니다.\r\nCUDA 드라이버가 설치되어 있지 않은 것일 수 있습니다. \r\nCUDA 드라이버를 다시 설치해 주십시오.", "MessageCudaNotFindError":"GPU를 사용하여 변환할 수 없습니다.\r\nCUDA 드라이버가 설치되어 있지 않은 것일 수 있습니다. \r\nCUDA 드라이버를 다시 설치해 주십시오.",
"MessageCudaOldVersionError":"선택한 파일이 GPU로 변환되지 못했습니다.\r\nCUDA 드라이버가 너무 오래된 것일 수도 있습니다.\r\nCUDA 드라이버를 다시 설치해 주십시오.", "MessageCudaOldVersionError":"선택한 파일이 GPU를 사용하여 변환하지 못했습니다.\r\nCUDA 드라이버가 너무 오래된 것일 수도 있습니다.\r\n최신 CUDA 드라이버를 설치해 주십시오.",
"MessageTransSuccess":"변환 성공", "MessageTransSuccess":"변환 성공했습니다.",
"MessageErrorHappen":"오류가 발생했습니다.", "MessageErrorHappen":"오류가 발생했습니다.",
"MessageCreateOutDirError":"출력할 폴더\r\n「%s」\r\n을 만드는 데 실패했습니다.", "MessageCreateOutDirError":"출력 폴더\r\n'%s'\r\n를 만들지 못했습니다.",
"MessageCancelError":"변환이 취소되었습니다.", "MessageCancelError":"변환이 취소되었습니다.",
"MessageInvalidParameterError":"설정값이 잘못되었습니다.", "MessageInvalidParameterError":"설정값이 잘못되었습니다.",
"MessageFailedOpenModelFileError":"모델 파일을 여는 데 실패했습니다.", "MessageFailedOpenModelFileError":"모델 파일을 열지 못했습니다.",
"MessageFailedParseModelFileError":"모델 파일을 구문 분석하는 데 실패했습니다.", "MessageFailedParseModelFileError":"모델 파일을 구문 분석하지 못했습니다.",
"MessageFailedConstructModelError":"모델을 구성하는 데 실패했습니다.", "MessageFailedConstructModelError":"모델 구성에 실패했습니다.",
"MessageFailedOpenInputFileError":"파일 %s를 여는 데 실패했습니다.", "MessageFailedOpenInputFileError":"파일 %s을 불러오지 못했습니다.",
"MessageFailedOpenOutputFileError":"%s로 변환하는 데 실패했습니다.", "MessageFailedOpenOutputFileError":"%s로 변환하지 못했습니다.",
"MessageFailedProcessCaffeError":"보정 처리에 실패했습니다.", "MessageFailedProcessCaffeError":"보정 처리에 실패했습니다.",
"MessageTitleResult":"결과", "MessageTitleResult":"결과",
"MessagecuDNNOK":"cuDNN을 사용할 수 있습니다.", "MessagecuDNNOK":"cuDNN을 사용할 수 있습니다.",
"MessagecuDNNNotFindError":"cuDNN을 사용할 수 없습니다. \r\n%s 파일이 없습니다.", "MessagecuDNNNotFindError":"cuDNN을 사용할 수 없습니다. \r\n%s 없습니다.",
"MessagecuDNNOldVersionError":"cuDNN을 사용할 수 없습니다.\r\n%s 파일이 오래되었습니다. %s를 사용해 주십시오.", "MessagecuDNNOldVersionError":"cuDNN을 사용할 수 없습니다.\r\n%s의 버전이 오래 되었습니다. %s를 사용해 주십시오.",
"MessagecuDNNCannotCreateError":"cuDNN을 사용할 수 없습니다.\r\n cuDNN을 초기화하는 데 실패했습니다.", "MessagecuDNNCannotCreateError":"cuDNN을 사용할 수 없습니다.\r\n cuDNN 초기화에 실패했습니다.",
"MessagecuDNNDefautlError":"cuDNN을 사용할 수 없습니다.", "MessagecuDNNDefautlError":"cuDNN을 사용할 수 없습니다.",
"MessageExtStr":"입력 파일 확장자(%s)", "MessageExtStr":"변환 대상 확장자(%s)",
"MessageAllFileFolder":"모든 파일과 폴더(*.*)", "MessageAllFileFolder":"모든 파일과 폴더(*.*)",
"MessageTitleInputDialog":"입력할 파일 또는 폴더를 선택해 주십시오.", "MessageTitleInputDialog":"변환할 파일 또는 폴더를 선택해 주십시오.",
"MessageTimeLeftUnknown":"남은 시간: 불명", "MessageTimeLeftUnknown":"남은 시간 : 알 수 없음",
"MessageTimeLeft":"남은 시간", "MessageTimeLeft":"남은 시간",
"MessageNoOverwrite":"출력 경로에 이미 파일이 존재합니다.: %s", "MessageNoOverwrite":"출력 경로에 이미 %s 파일이 존재합니다.",
"MessageCudaOldDeviceError":"CUDA 장치가 오래되었습니다.r\nCompute Capability 2.0 이상 호환되는 장치를 사용해 주세요.", "MessageCudaOldDeviceError":"CUDA 장치가 오래 되었습니다.r\nCompute Capability 3.0 이상의 장치를 사용해 주십시오.",
"OK":"확인", "OK":"확인",
"Cancel":"취소", "Cancel":"취소",
"IDC_STATIC_USE_GPU_NO":"사용할 GPU 번호", "IDC_STATIC_USE_GPU_NO":"사용할 GPU 번호",
"IDC_RADIO_MODEL_UPCONV_RGB":"2D 일러스트 (UpRGB 모델)", "IDC_RADIO_MODEL_UPCONV_RGB":"2D 일러스트 (UpRGB모델)",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"사진 & 애니메이션 (UpPhoto 모델)", "IDC_RADIO_MODEL_UPCONV_PHOTO":"사진/애니메이션 (UpPhoto모델)",
"MessageLogFatalError":"치명적인 오류가 발생했습니다.\r\n분할 크기가 너무 크게 설정되어 있을 가능성이 있습니다." "MessageLogFatalError":"치명적인 오류가 발생했습니다.\r\n분할 크기가 너무 크게 설정되어 있을 가능성이 있습니다.",
"IDC_STATIC_BATCH_SIZE":"bat 크기",
"MessageBatchSizeCheckError":"bat 크기는 0보다 큰 정수여야 합니다.",
"IDC_RADIO_MODEL_CUNET":"2D 일러스트 (CUnet모델)",
"MessageCropSizeDivisibleCheckError":"이 모델의 분할 크기는 %d 로 나눠져야만 합니다."
} }

View File

@ -0,0 +1,105 @@
{
"IDC_STATIC_IO_SETTING":"Config Entrada/Saída",
"IDC_STATIC_INPUT_PATH":"Entrada\r\n(arquivo ou pasta)",
"IDC_BUTTON_INPUT_REF":"Abrir",
"IDC_STATIC_OUTPUT_PATH":"Saída",
"IDC_STATIC_TANS_EXT_LIST":"Extensão da entrada",
"IDC_STATIC_OUTPUT_EXT":"Extensão da saída ",
"IDC_STATIC_OUTPUT_QUALITY":"Qualidade da saída",
"IDC_STATIC_OUTPUT_DEPTH":"Depth bits da saída",
"IDC_STATIC_AUTO_START":"Iniciar direto ao inserir arquivo",
"IDC_RADIO_AUTO_START_NONE":"Sem auto início",
"IDC_RADIO_AUTO_START_ONE":"Ao colocar um arquivo",
"IDC_RADIO_AUTO_START_MULTI":"Ao colocar vários arquivos ou uma pasta",
"IDC_STATIC_QUALITY_PROCESS_SETTING":"Qualidade da Imagem de Conversão e Config de Processamento",
"IDC_STATIC_TRANS_MODE":"Modo de Conversão",
"IDC_RADIO_MODE_NOISE_SCALE":"Reduzir Ruído e Aumentar",
"IDC_RADIO_MODE_SCALE":"Somente Aumentar",
"IDC_RADIO_MODE_NOISE":"Somente Reduzir Ruído",
"IDC_RADIO_AUTO_SCALE":"Aumentar e Auto Reduzir Ruído",
"IDC_STATIC_JPEG_NOISE_LEVEL":"Reduzir Ruído",
"IDC_RADIONOISE_LEVEL0":"Nível 0",
"IDC_RADIONOISE_LEVEL1":"Nível 1",
"IDC_RADIONOISE_LEVEL2":"Nível 2",
"IDC_RADIONOISE_LEVEL3":"Nível 3",
"IDC_STATIC_SCALE_RATE":"Tamanho do Aumentar",
"IDC_RADIO_SCALE_RATIO":"Mudar por taxa",
"IDC_RADIO_SCALE_WIDTH":"Mudar por largura",
"IDC_RADIO_SCALE_HEIGHT":"Mudar por altura",
"IDC_RADIO_SCALE_WIDTH_HEIGHT":"Mudar por largura/altura",
"IDC_STATIC_MODEL":"Modelo",
"IDC_RADIO_MODEL_RGB":"Ilustração 2-D (Modelo RGB)",
"IDC_RADIO_MODEL_PHOTO":"Fotografia, Anime",
"IDC_RADIO_MODEL_Y":"Ilustração 2-D (Modelo Y)",
"IDC_RADIO_MODEL_UpResNet10":"Ilustração 2-D (UpResNet10)",
"IDC_CHECK_TTA":"Usar modo TTA",
"IDC_STATIC_PROCESS_SPEED_SETTING":"Config Velocidade de Processamento",
"IDC_STATIC_PROCESSOR":"Usar Processador",
"IDC_RADIO_MODE_GPU":"CUDA (usa cuDNN)",
"IDC_RADIO_MODE_CPU":"CPU",
"IDC_STATIC_CROP_SIZE":"Tamanho da divisão",
"IDC_BUTTON_CHECK_CUDNN":"Checar cuDNN",
"IDC_BUTTON_CANCEL":"Cancelar",
"IDC_BUTTON_EXEC":"Iniciar",
"IDC_STATIC_LANG_UI":"Idioma",
"IDC_BUTTON_OUTPUT_REF":"Abrir",
"IDC_BUTTON_APP_SETTING":"Config do App",
"IDC_BUTTON_CLEAR_OUTPUT_DIR":"Resetar dir. saída",
"IDC_STATIC_ARG_START":"Iniciar como argumento",
"IDC_CHECK_ARG_START_AUTO":"Iniciar quando lançado",
"IDC_CHECK_ARG_START_SUCCESS_FINISH":"Sair quando completado com sucesso",
"IDC_STATIC_INPUT_DIR_FIX":"Pasta fixa de entrada",
"IDC_STATIC_OUTPUT_DIR_FIX":"Pasta fixa de saída",
"IDC_CHECK_OUTPUT_NO_OVERWRITE":"Não sobrescrever arquivos de saída",
"MessageUseProcessorMode":"Processador Usado: %s",
"MessageProcessTime":"Tempo de Processamento: %02d:%02d:%02d.%03d",
"MessageInitTime":"Tempo de inicialização: %02d:%02d:%02d.%03d",
"MessagecuDNNCheckTime":"Tempo de checagem cuDNN: %02d:%02d:%02d.%03d",
"MessageTitleError":"Erro",
"MessageScaleRateCheckError":"Fator de escala deve ser maior que 0.0 e positivo",
"MessageScaleWidthCheckError":"Tamanho deve ser um inteiro maior que 0.",
"MessageCropSizeCheckError":"Tamanho da divisão deve ser maior que 0",
"MessageInputPathCheckError":"Por favor especifique o caminho de entrada",
"MessageOutputPathCheckError":"Por favor especifique o caminho de saída",
"MessageOutputExtCheckError":"Por favor especifique a extensão de saída",
"MessageInputCheckError":"Arquivo de entrada ou pasta não existe",
"MessageOutputExtentionCheckError":"Por favor selecione a extensão de saída",
"MessageOutputQualityCheckError":"Qualidade de saída está fora do limite",
"MessageOutputDepthCheckError":"Profundidade de bits está incorreta",
"MessageCudaNotFindError":"Entrada não pode ser convertida pela GPU\r\nO driver CUDA não está instalado. \r\nPor favor instale o driver CUDA",
"MessageCudaOldVersionError":"Entrada não pode ser convertida pela GPU\r\nA versão do driver CUDA é antiga \r\nPor favor atualize o driver CUDA",
"MessageTransSuccess":"Convertido com sucesso",
"MessageErrorHappen":"Ocorreu um erro",
"MessageCreateOutDirError":"Pasta de saída\r\n[%s]\r\ncriação falhou",
"MessageCancelError":"Conversão foi cancelada",
"MessageInvalidParameterError":"Parâmetro não é válido",
"MessageFailedOpenModelFileError":"Falha ao abrir o arquivo de modelo",
"MessageFailedParseModelFileError":"Falha ao analizar o arquivo de modelo",
"MessageFailedConstructModelError":"Falha ao construir o modelo",
"MessageFailedOpenInputFileError":"Falha ao abrir o arquivo de entrada %s",
"MessageFailedOpenOutputFileError":"Falha para escrever o arquivo de saída %s",
"MessageFailedProcessCaffeError":"Falha ao processar a interpolação",
"MessageTitleResult":"Resultado",
"MessagecuDNNOK":"cuDNN pode ser usado",
"MessagecuDNNNotFindError":"cuDNN não pode ser usado\r\n[%s]não encontrado",
"MessagecuDNNOldVersionError":"cuDNN não pode ser usado\r\n[%s]é uma versão antiga. Por favor use a v2",
"MessagecuDNNCannotCreateError":"cuDNN não pode ser usado\r\ncFalha ao iniciar o cuDNN",
"MessagecuDNNDefautlError":"cuDNN não pode ser usado",
"MessageExtStr":"Extensões do arquivo de entrada(%s)",
"MessageAllFileFolder":"Todos os arquivos e pastas(*.*)",
"MessageTitleInputDialog":"Por favor selecione o arquivo ou pasta de entrada",
"MessageTimeLeftUnknown":"Tempo Restante: Desconhecido",
"MessageTimeLeft":"Tempo Restante",
"MessageNoOverwrite":"Arquivo já existe no destino: %s",
"MessageCudaOldDeviceError":"Seu dispositivo CUDA é antigo.\r\nPor favor use um dispositivo com Compute Capability 2.0 ou superior",
"OK":"OK",
"Cancel":"Cancelar",
"IDC_STATIC_USE_GPU_NO":"Usar GPU Nº",
"IDC_RADIO_MODEL_UPCONV_RGB":"Ilustração 2-D (Modelo UpRGB)",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"Foto (Modelo UpPhoto)",
"MessageLogFatalError":"Um erro fatal ocorreu.\r\nHá a possibilidade do tamanho da divisão ser muito grande",
"IDC_STATIC_BATCH_SIZE":"Tamanho da Batch",
"MessageBatchSizeCheckError":"Tamanho da batch deve ser maior que 0",
"IDC_RADIO_MODEL_CUNET":"Ilustração 2-D (Modelo CUnet)",
"MessageCropSizeDivisibleCheckError":"Tamanho da divisão deste modelo deve ser divisível por %d"
}

View File

@ -26,10 +26,12 @@
"IDC_RADIO_SCALE_RATIO":"По величине", "IDC_RADIO_SCALE_RATIO":"По величине",
"IDC_RADIO_SCALE_WIDTH":"По ширине", "IDC_RADIO_SCALE_WIDTH":"По ширине",
"IDC_RADIO_SCALE_HEIGHT":"По высоте", "IDC_RADIO_SCALE_HEIGHT":"По высоте",
"IDC_RADIO_SCALE_WIDTH_HEIGHT":"По ширине и высоте",
"IDC_STATIC_MODEL":"Профиль", "IDC_STATIC_MODEL":"Профиль",
"IDC_RADIO_MODEL_RGB":"2D изображ. (Профиль RGB)", "IDC_RADIO_MODEL_RGB":"2D изображ. (Профиль RGB)",
"IDC_RADIO_MODEL_PHOTO":"Фотография, Аниме", "IDC_RADIO_MODEL_PHOTO":"Фотография, Аниме",
"IDC_RADIO_MODEL_Y":"2D изображ. (Профиль Y)", "IDC_RADIO_MODEL_Y":"2D изображ. (Профиль Y)",
"IDC_RADIO_MODEL_UpResNet10":"2D изображ. (UpResNet10)",
"IDC_CHECK_TTA":"В режиме TTA ", "IDC_CHECK_TTA":"В режиме TTA ",
"IDC_STATIC_PROCESS_SPEED_SETTING":"Скорость обработки", "IDC_STATIC_PROCESS_SPEED_SETTING":"Скорость обработки",
"IDC_STATIC_PROCESSOR":"Устройство обработки", "IDC_STATIC_PROCESSOR":"Устройство обработки",
@ -95,5 +97,6 @@
"IDC_STATIC_USE_GPU_NO":"Использ. GPU №", "IDC_STATIC_USE_GPU_NO":"Использ. GPU №",
"IDC_RADIO_MODEL_UPCONV_RGB":"2D изображ. (Профиль UpRGB)", "IDC_RADIO_MODEL_UPCONV_RGB":"2D изображ. (Профиль UpRGB)",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"Фото (Профиль UpPhoto)", "IDC_RADIO_MODEL_UPCONV_PHOTO":"Фото (Профиль UpPhoto)",
"MessageLogFatalError":"Произошла критическая ошибка.\r\nВозможно размер блока слишком большой" "MessageLogFatalError":"Произошла критическая ошибка.\r\nВозможно размер блока слишком большой",
"IDC_RADIO_MODEL_CUNET":"2D изображ. (Профиль CUnet)"
} }

105
bin/lang/spanish.json Normal file
View File

@ -0,0 +1,105 @@
{
"IDC_STATIC_IO_SETTING":"Configuración de entrada y salida",
"IDC_STATIC_INPUT_PATH":"Ruta de entrada\r\n(archivo o carpeta)",
"IDC_BUTTON_INPUT_REF":"Explorar",
"IDC_STATIC_OUTPUT_PATH":"Ruta de salida",
"IDC_STATIC_TANS_EXT_LIST":"Extensiones de archivos de entrada",
"IDC_STATIC_OUTPUT_EXT":"Extensión de salida",
"IDC_STATIC_OUTPUT_QUALITY":"Calidad de salida",
"IDC_STATIC_OUTPUT_DEPTH":"Profundidad de bits de salida",
"IDC_STATIC_AUTO_START":"Inicio automático al agregar archivos",
"IDC_RADIO_AUTO_START_NONE":"Desactivado",
"IDC_RADIO_AUTO_START_ONE":"Cuando se agregue un archivo",
"IDC_RADIO_AUTO_START_MULTI":"Cuando se agreguen varios archivos o una carpeta",
"IDC_STATIC_QUALITY_PROCESS_SETTING":"Calidad de conversión de la imagen y configuración de procesamiento",
"IDC_STATIC_TRANS_MODE":"Modo de conversión",
"IDC_RADIO_MODE_NOISE_SCALE":"Reducir ruido y ampliar",
"IDC_RADIO_MODE_SCALE":"Solo ampliar",
"IDC_RADIO_MODE_NOISE":"Solo reducir ruido",
"IDC_RADIO_AUTO_SCALE":"Ampliar y reducir ruido autom.",
"IDC_STATIC_JPEG_NOISE_LEVEL":"Nv. reducción ruido",
"IDC_RADIONOISE_LEVEL0":"Nivel 0",
"IDC_RADIONOISE_LEVEL1":"Nivel 1",
"IDC_RADIONOISE_LEVEL2":"Nivel 2",
"IDC_RADIONOISE_LEVEL3":"Nivel 3",
"IDC_STATIC_SCALE_RATE":"Tamaño de la ampliación",
"IDC_RADIO_SCALE_RATIO":"Multiplicador",
"IDC_RADIO_SCALE_WIDTH":"Ancho",
"IDC_RADIO_SCALE_HEIGHT":"Alto",
"IDC_RADIO_SCALE_WIDTH_HEIGHT":"Ancho y alto",
"IDC_STATIC_MODEL":"Modelo",
"IDC_RADIO_MODEL_RGB":"Ilustración en 2D (modelo RGB)",
"IDC_RADIO_MODEL_PHOTO":"Fotografía y anime",
"IDC_RADIO_MODEL_Y":"Ilustración en 2D (modelo Y)",
"IDC_RADIO_MODEL_UpResNet10":"Ilustración en 2D (modelo UpResNet10)",
"IDC_CHECK_TTA":"Usar modo TTA",
"IDC_STATIC_PROCESS_SPEED_SETTING":"Configuración de velocidad de procesamiento",
"IDC_STATIC_PROCESSOR":"Método de procesamiento",
"IDC_RADIO_MODE_GPU":"CUDA (con cuDNN)",
"IDC_RADIO_MODE_CPU":"CPU",
"IDC_STATIC_CROP_SIZE":"Tamaño de división",
"IDC_BUTTON_CHECK_CUDNN":"Verificar cuDNN",
"IDC_BUTTON_CANCEL":"Cancelar",
"IDC_BUTTON_EXEC":"Comenzar",
"IDC_STATIC_LANG_UI":"Idioma de la interfaz",
"IDC_BUTTON_OUTPUT_REF":"Explorar",
"IDC_BUTTON_APP_SETTING":"Configuración",
"IDC_BUTTON_CLEAR_OUTPUT_DIR":"Rest. carpeta de salida",
"IDC_STATIC_ARG_START":"Inicio con argumentos",
"IDC_CHECK_ARG_START_AUTO":"Comenzar al abrir",
"IDC_CHECK_ARG_START_SUCCESS_FINISH":"Salir al terminar",
"IDC_STATIC_INPUT_DIR_FIX":"Carpeta de entrada fija",
"IDC_STATIC_OUTPUT_DIR_FIX":"Carpeta de salida fija",
"IDC_CHECK_OUTPUT_NO_OVERWRITE":"No reemplazar los archivos de salida",
"MessageUseProcessorMode":"Se usará el método de procesamiento %s",
"MessageProcessTime":"Tiempo de procesamiento: %02d:%02d:%02d.%03d",
"MessageInitTime":"Tiempo de inicialización: %02d:%02d:%02d.%03d",
"MessagecuDNNCheckTime":"Tiempo de comprobación de cuDNN: %02d:%02d:%02d.%03d",
"MessageTitleError":"Error",
"MessageScaleRateCheckError":"El factor de ampliación debe ser mayor que 0.0.",
"MessageScaleWidthCheckError":"El tamaño debe ser un número entero mayor que 0.",
"MessageCropSizeCheckError":"El tamaño de división debe ser mayor que 0.",
"MessageInputPathCheckError":"Debes especificar la ruta de entrada.",
"MessageOutputPathCheckError":"Debes especificar la ruta de salida.",
"MessageOutputExtCheckError":"Debes especificar la extensión de salida.",
"MessageInputCheckError":"El archivo o la carpeta de entrada no existe.",
"MessageOutputExtentionCheckError":"Debes elegir la extensión de salida.",
"MessageOutputQualityCheckError":"La calidad de salida está fuera del rango admitido.",
"MessageOutputDepthCheckError":"La profundidad de bits de salida no es válida.",
"MessageCudaNotFindError":"La GPU no puede convertir el archivo de entrada.\r\nEs posible que el controlador CUDA no esté instalado, instálalo.",
"MessageCudaOldVersionError":"La GPU no puede convertir el archivo de entrada.\r\nEs posible que la versión del controlador CUDA esté desactualizada.\r\nActualiza el controlador CUDA.",
"MessageTransSuccess":"Conversión exitosa.",
"MessageErrorHappen":"Ocurrió un error.",
"MessageCreateOutDirError":"No se pudo crear la carpeta de salida\r\n[%s].",
"MessageCancelError":"Se canceló la conversión.",
"MessageInvalidParameterError":"El parámetro no es válido.",
"MessageFailedOpenModelFileError":"No se pudo abrir el archivo de modelo.",
"MessageFailedParseModelFileError":"No se pudo analizar el archivo de modelo.",
"MessageFailedConstructModelError":"No se pudo construir el modelo.",
"MessageFailedOpenInputFileError":"No se pudo abrir el archivo de entrada %s.",
"MessageFailedOpenOutputFileError":"No se pudo escribir el archivo de salida %s.",
"MessageFailedProcessCaffeError":"No se pudo procesar la interpolación.",
"MessageTitleResult":"Resultado",
"MessagecuDNNOK":"Puedes usar cuDNN.",
"MessagecuDNNNotFindError":"No puedes usar cuDNN porque no se encontró [%s].",
"MessagecuDNNOldVersionError":"No puedes usar cuDNN porque la versión de [%s] es muy antigua.\r\nUsa la versión 2.",
"MessagecuDNNCannotCreateError":"No puedes usar cuDNN porque no se pudo inicializar.",
"MessagecuDNNDefautlError":"No puedes usar cuDNN.",
"MessageExtStr":"Extensiones de archivos de entrada (%s)",
"MessageAllFileFolder":"Todos los archivos (*.*)",
"MessageTitleInputDialog":"Elige un archivo o una carpeta de entrada.",
"MessageTimeLeftUnknown":"Tiempo restante: Desconocido",
"MessageTimeLeft":"Tiempo restante",
"MessageNoOverwrite":"El archivo %s ya existe en la ruta de destino.",
"MessageCudaOldDeviceError":"El dispositivo CUDA es muy antiguo.\r\nUsa un dispositivo compatible con Compute Capability 2.0 o posterior.",
"OK":"Aceptar",
"Cancel":"Cancelar",
"IDC_STATIC_USE_GPU_NO":"Usar la GPU n.º",
"IDC_RADIO_MODEL_UPCONV_RGB":"Ilustración en 2D (modelo UpRGB)",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"Fotografía (modelo UpPhoto)",
"MessageLogFatalError":"Ocurrió un error irrecuperable.\r\nEs posible que el tamaño de división sea demasiado grande.",
"IDC_STATIC_BATCH_SIZE":"Tamaño de lote",
"MessageBatchSizeCheckError":"El tamaño de lote debe ser mayor que 0.",
"IDC_RADIO_MODEL_CUNET":"Ilustración en 2D (modelo CUnet)",
"MessageCropSizeDivisibleCheckError":"El tamaño de división de este modelo debe ser divisible por %d."
}

View File

@ -30,6 +30,7 @@
"IDC_RADIO_MODEL_RGB":"2-B çizim (RGB Modeli)", "IDC_RADIO_MODEL_RGB":"2-B çizim (RGB Modeli)",
"IDC_RADIO_MODEL_PHOTO":"Fotoğrafçılık veya Anime", "IDC_RADIO_MODEL_PHOTO":"Fotoğrafçılık veya Anime",
"IDC_RADIO_MODEL_Y":"2-B çizim (Y Modeli)", "IDC_RADIO_MODEL_Y":"2-B çizim (Y Modeli)",
"IDC_RADIO_MODEL_UpResNet10":"2-B çizim (UpResNet10)",
"IDC_CHECK_TTA":"TTA Modu Kullan", "IDC_CHECK_TTA":"TTA Modu Kullan",
"IDC_STATIC_PROCESS_SPEED_SETTING":"İşleme Hızı Ayarları", "IDC_STATIC_PROCESS_SPEED_SETTING":"İşleme Hızı Ayarları",
"IDC_STATIC_PROCESSOR":"", "IDC_STATIC_PROCESSOR":"",
@ -79,5 +80,8 @@
"MessageAllFileFolder":"Bütün dosyalar ve klasörler(*.*)", "MessageAllFileFolder":"Bütün dosyalar ve klasörler(*.*)",
"MessageTitleInputDialog":"Lütfen girdi dosyası veya klasörü seçin", "MessageTitleInputDialog":"Lütfen girdi dosyası veya klasörü seçin",
"MessageTimeLeftUnknown":"Kalan Süre: Bilinmiyor", "MessageTimeLeftUnknown":"Kalan Süre: Bilinmiyor",
"MessageTimeLeft":"Kalan Süre" "MessageTimeLeft":"Kalan Süre",
"IDC_RADIO_MODEL_UPCONV_RGB":"2-B çizim (UpRGB Modeli)",
"IDC_RADIO_MODEL_UPCONV_PHOTO":"Fotoğrafçılık veya Anime (UpPhoto Modeli)",
"IDC_RADIO_MODEL_CUNET":"2-B çizim (CUnet Modeli)"
} }

View File

@ -0,0 +1,4 @@
{"name":"CUnet","arch_name":"upcunet","has_noise_scale":true,"has_noise_only":true,"channels":3,"force_divisible_crop_size":4,
"scale_factor":2,"offset":36,
"scale_factor_noise":1,"offset_noise":28
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,794 @@
layer {
name: "input"
type: "Input"
top: "Input1"
input_param {
shape {
dim: 1
dim: 3
dim: 312
dim: 312
}
}
}
layer {
name: "Convolution1"
type: "Convolution"
bottom: "Input1"
top: "Convolution1"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU1"
type: "ReLU"
bottom: "Convolution1"
top: "Convolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution2"
type: "Convolution"
bottom: "Convolution1"
top: "Convolution2"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU2"
type: "ReLU"
bottom: "Convolution2"
top: "Convolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution3"
type: "Convolution"
bottom: "Convolution2"
top: "Convolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU3"
type: "ReLU"
bottom: "Convolution3"
top: "Convolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution4"
type: "Convolution"
bottom: "Convolution3"
top: "Convolution4"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU4"
type: "ReLU"
bottom: "Convolution4"
top: "Convolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution5"
type: "Convolution"
bottom: "Convolution4"
top: "Convolution5"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU5"
type: "ReLU"
bottom: "Convolution5"
top: "Convolution5"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling1"
type: "Pooling"
bottom: "Convolution5"
top: "Pooling1"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution6"
type: "Convolution"
bottom: "Pooling1"
top: "Convolution6"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU6"
type: "ReLU"
bottom: "Convolution6"
top: "Convolution6"
}
layer {
name: "Convolution7"
type: "Convolution"
bottom: "Convolution6"
top: "Convolution7"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid1"
type: "Sigmoid"
bottom: "Convolution7"
top: "Convolution7"
}
layer {
name: "Flatten1"
type: "Flatten"
bottom: "Convolution7"
top: "Flatten1"
}
layer {
name: "Scale1"
type: "Scale"
bottom: "Convolution5"
bottom: "Flatten1"
top: "Scale1"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution1"
type: "Deconvolution"
bottom: "Scale1"
top: "Deconvolution1"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU7"
type: "ReLU"
bottom: "Deconvolution1"
top: "Deconvolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop1"
type: "Crop"
bottom: "Convolution2"
bottom: "Deconvolution1"
top: "Crop1"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise1"
type: "Eltwise"
bottom: "Crop1"
bottom: "Deconvolution1"
top: "Eltwise1"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution8"
type: "Convolution"
bottom: "Eltwise1"
top: "Convolution8"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU8"
type: "ReLU"
bottom: "Convolution8"
top: "Convolution8"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution9"
type: "Convolution"
bottom: "Convolution8"
top: "Convolution9"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Convolution10"
type: "Convolution"
bottom: "Convolution9"
top: "Convolution10"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU9"
type: "ReLU"
bottom: "Convolution10"
top: "Convolution10"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution11"
type: "Convolution"
bottom: "Convolution10"
top: "Convolution11"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU10"
type: "ReLU"
bottom: "Convolution11"
top: "Convolution11"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution12"
type: "Convolution"
bottom: "Convolution11"
top: "Convolution12"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU11"
type: "ReLU"
bottom: "Convolution12"
top: "Convolution12"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution13"
type: "Convolution"
bottom: "Convolution12"
top: "Convolution13"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU12"
type: "ReLU"
bottom: "Convolution13"
top: "Convolution13"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution14"
type: "Convolution"
bottom: "Convolution13"
top: "Convolution14"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU13"
type: "ReLU"
bottom: "Convolution14"
top: "Convolution14"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling2"
type: "Pooling"
bottom: "Convolution14"
top: "Pooling2"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution15"
type: "Convolution"
bottom: "Pooling2"
top: "Convolution15"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU14"
type: "ReLU"
bottom: "Convolution15"
top: "Convolution15"
}
layer {
name: "Convolution16"
type: "Convolution"
bottom: "Convolution15"
top: "Convolution16"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid2"
type: "Sigmoid"
bottom: "Convolution16"
top: "Convolution16"
}
layer {
name: "Flatten2"
type: "Flatten"
bottom: "Convolution16"
top: "Flatten2"
}
layer {
name: "Scale2"
type: "Scale"
bottom: "Convolution14"
bottom: "Flatten2"
top: "Scale2"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Convolution17"
type: "Convolution"
bottom: "Scale2"
top: "Convolution17"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU15"
type: "ReLU"
bottom: "Convolution17"
top: "Convolution17"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution18"
type: "Convolution"
bottom: "Convolution17"
top: "Convolution18"
convolution_param {
num_output: 256
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU16"
type: "ReLU"
bottom: "Convolution18"
top: "Convolution18"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution19"
type: "Convolution"
bottom: "Convolution18"
top: "Convolution19"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU17"
type: "ReLU"
bottom: "Convolution19"
top: "Convolution19"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling3"
type: "Pooling"
bottom: "Convolution19"
top: "Pooling3"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution20"
type: "Convolution"
bottom: "Pooling3"
top: "Convolution20"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU18"
type: "ReLU"
bottom: "Convolution20"
top: "Convolution20"
}
layer {
name: "Convolution21"
type: "Convolution"
bottom: "Convolution20"
top: "Convolution21"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid3"
type: "Sigmoid"
bottom: "Convolution21"
top: "Convolution21"
}
layer {
name: "Flatten3"
type: "Flatten"
bottom: "Convolution21"
top: "Flatten3"
}
layer {
name: "Scale3"
type: "Scale"
bottom: "Convolution19"
bottom: "Flatten3"
top: "Scale3"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution2"
type: "Deconvolution"
bottom: "Scale3"
top: "Deconvolution2"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU19"
type: "ReLU"
bottom: "Deconvolution2"
top: "Deconvolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop2"
type: "Crop"
bottom: "Scale2"
bottom: "Deconvolution2"
top: "Crop2"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise2"
type: "Eltwise"
bottom: "Crop2"
bottom: "Deconvolution2"
top: "Eltwise2"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution22"
type: "Convolution"
bottom: "Eltwise2"
top: "Convolution22"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU20"
type: "ReLU"
bottom: "Convolution22"
top: "Convolution22"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution23"
type: "Convolution"
bottom: "Convolution22"
top: "Convolution23"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU21"
type: "ReLU"
bottom: "Convolution23"
top: "Convolution23"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling4"
type: "Pooling"
bottom: "Convolution23"
top: "Pooling4"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution24"
type: "Convolution"
bottom: "Pooling4"
top: "Convolution24"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU22"
type: "ReLU"
bottom: "Convolution24"
top: "Convolution24"
}
layer {
name: "Convolution25"
type: "Convolution"
bottom: "Convolution24"
top: "Convolution25"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid4"
type: "Sigmoid"
bottom: "Convolution25"
top: "Convolution25"
}
layer {
name: "Flatten4"
type: "Flatten"
bottom: "Convolution25"
top: "Flatten4"
}
layer {
name: "Scale4"
type: "Scale"
bottom: "Convolution23"
bottom: "Flatten4"
top: "Scale4"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution3"
type: "Deconvolution"
bottom: "Scale4"
top: "Deconvolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU23"
type: "ReLU"
bottom: "Deconvolution3"
top: "Deconvolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop3"
type: "Crop"
bottom: "Convolution11"
bottom: "Deconvolution3"
top: "Crop3"
crop_param {
axis: 2
offset: 16
}
}
layer {
name: "Eltwise3"
type: "Eltwise"
bottom: "Crop3"
bottom: "Deconvolution3"
top: "Eltwise3"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution26"
type: "Convolution"
bottom: "Eltwise3"
top: "Convolution26"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU24"
type: "ReLU"
bottom: "Convolution26"
top: "Convolution26"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution27"
type: "Convolution"
bottom: "Convolution26"
top: "Convolution27"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Crop4"
type: "Crop"
bottom: "Convolution9"
bottom: "Convolution27"
top: "Crop4"
crop_param {
axis: 2
offset: 20
}
}
layer {
name: "Eltwise4"
type: "Eltwise"
bottom: "Crop4"
bottom: "Convolution27"
top: "Eltwise4"
eltwise_param {
operation: SUM
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,794 @@
layer {
name: "input"
type: "Input"
top: "Input1"
input_param {
shape {
dim: 1
dim: 3
dim: 200
dim: 200
}
}
}
layer {
name: "Convolution1"
type: "Convolution"
bottom: "Input1"
top: "Convolution1"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU1"
type: "ReLU"
bottom: "Convolution1"
top: "Convolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution2"
type: "Convolution"
bottom: "Convolution1"
top: "Convolution2"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU2"
type: "ReLU"
bottom: "Convolution2"
top: "Convolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution3"
type: "Convolution"
bottom: "Convolution2"
top: "Convolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU3"
type: "ReLU"
bottom: "Convolution3"
top: "Convolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution4"
type: "Convolution"
bottom: "Convolution3"
top: "Convolution4"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU4"
type: "ReLU"
bottom: "Convolution4"
top: "Convolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution5"
type: "Convolution"
bottom: "Convolution4"
top: "Convolution5"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU5"
type: "ReLU"
bottom: "Convolution5"
top: "Convolution5"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling1"
type: "Pooling"
bottom: "Convolution5"
top: "Pooling1"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution6"
type: "Convolution"
bottom: "Pooling1"
top: "Convolution6"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU6"
type: "ReLU"
bottom: "Convolution6"
top: "Convolution6"
}
layer {
name: "Convolution7"
type: "Convolution"
bottom: "Convolution6"
top: "Convolution7"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid1"
type: "Sigmoid"
bottom: "Convolution7"
top: "Convolution7"
}
layer {
name: "Flatten1"
type: "Flatten"
bottom: "Convolution7"
top: "Flatten1"
}
layer {
name: "Scale1"
type: "Scale"
bottom: "Convolution5"
bottom: "Flatten1"
top: "Scale1"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution1"
type: "Deconvolution"
bottom: "Scale1"
top: "Deconvolution1"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU7"
type: "ReLU"
bottom: "Deconvolution1"
top: "Deconvolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop1"
type: "Crop"
bottom: "Convolution2"
bottom: "Deconvolution1"
top: "Crop1"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise1"
type: "Eltwise"
bottom: "Crop1"
bottom: "Deconvolution1"
top: "Eltwise1"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution8"
type: "Convolution"
bottom: "Eltwise1"
top: "Convolution8"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU8"
type: "ReLU"
bottom: "Convolution8"
top: "Convolution8"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Deconvolution2"
type: "Deconvolution"
bottom: "Convolution8"
top: "Deconvolution2"
convolution_param {
num_output: 3
pad: 3
kernel_size: 4
stride: 2
}
}
layer {
name: "Convolution9"
type: "Convolution"
bottom: "Deconvolution2"
top: "Convolution9"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU9"
type: "ReLU"
bottom: "Convolution9"
top: "Convolution9"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution10"
type: "Convolution"
bottom: "Convolution9"
top: "Convolution10"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU10"
type: "ReLU"
bottom: "Convolution10"
top: "Convolution10"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution11"
type: "Convolution"
bottom: "Convolution10"
top: "Convolution11"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU11"
type: "ReLU"
bottom: "Convolution11"
top: "Convolution11"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution12"
type: "Convolution"
bottom: "Convolution11"
top: "Convolution12"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU12"
type: "ReLU"
bottom: "Convolution12"
top: "Convolution12"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution13"
type: "Convolution"
bottom: "Convolution12"
top: "Convolution13"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU13"
type: "ReLU"
bottom: "Convolution13"
top: "Convolution13"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling2"
type: "Pooling"
bottom: "Convolution13"
top: "Pooling2"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution14"
type: "Convolution"
bottom: "Pooling2"
top: "Convolution14"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU14"
type: "ReLU"
bottom: "Convolution14"
top: "Convolution14"
}
layer {
name: "Convolution15"
type: "Convolution"
bottom: "Convolution14"
top: "Convolution15"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid2"
type: "Sigmoid"
bottom: "Convolution15"
top: "Convolution15"
}
layer {
name: "Flatten2"
type: "Flatten"
bottom: "Convolution15"
top: "Flatten2"
}
layer {
name: "Scale2"
type: "Scale"
bottom: "Convolution13"
bottom: "Flatten2"
top: "Scale2"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Convolution16"
type: "Convolution"
bottom: "Scale2"
top: "Convolution16"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU15"
type: "ReLU"
bottom: "Convolution16"
top: "Convolution16"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution17"
type: "Convolution"
bottom: "Convolution16"
top: "Convolution17"
convolution_param {
num_output: 256
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU16"
type: "ReLU"
bottom: "Convolution17"
top: "Convolution17"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution18"
type: "Convolution"
bottom: "Convolution17"
top: "Convolution18"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU17"
type: "ReLU"
bottom: "Convolution18"
top: "Convolution18"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling3"
type: "Pooling"
bottom: "Convolution18"
top: "Pooling3"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution19"
type: "Convolution"
bottom: "Pooling3"
top: "Convolution19"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU18"
type: "ReLU"
bottom: "Convolution19"
top: "Convolution19"
}
layer {
name: "Convolution20"
type: "Convolution"
bottom: "Convolution19"
top: "Convolution20"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid3"
type: "Sigmoid"
bottom: "Convolution20"
top: "Convolution20"
}
layer {
name: "Flatten3"
type: "Flatten"
bottom: "Convolution20"
top: "Flatten3"
}
layer {
name: "Scale3"
type: "Scale"
bottom: "Convolution18"
bottom: "Flatten3"
top: "Scale3"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution3"
type: "Deconvolution"
bottom: "Scale3"
top: "Deconvolution3"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU19"
type: "ReLU"
bottom: "Deconvolution3"
top: "Deconvolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop2"
type: "Crop"
bottom: "Scale2"
bottom: "Deconvolution3"
top: "Crop2"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise2"
type: "Eltwise"
bottom: "Crop2"
bottom: "Deconvolution3"
top: "Eltwise2"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution21"
type: "Convolution"
bottom: "Eltwise2"
top: "Convolution21"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU20"
type: "ReLU"
bottom: "Convolution21"
top: "Convolution21"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution22"
type: "Convolution"
bottom: "Convolution21"
top: "Convolution22"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU21"
type: "ReLU"
bottom: "Convolution22"
top: "Convolution22"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling4"
type: "Pooling"
bottom: "Convolution22"
top: "Pooling4"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution23"
type: "Convolution"
bottom: "Pooling4"
top: "Convolution23"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU22"
type: "ReLU"
bottom: "Convolution23"
top: "Convolution23"
}
layer {
name: "Convolution24"
type: "Convolution"
bottom: "Convolution23"
top: "Convolution24"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid4"
type: "Sigmoid"
bottom: "Convolution24"
top: "Convolution24"
}
layer {
name: "Flatten4"
type: "Flatten"
bottom: "Convolution24"
top: "Flatten4"
}
layer {
name: "Scale4"
type: "Scale"
bottom: "Convolution22"
bottom: "Flatten4"
top: "Scale4"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution4"
type: "Deconvolution"
bottom: "Scale4"
top: "Deconvolution4"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU23"
type: "ReLU"
bottom: "Deconvolution4"
top: "Deconvolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop3"
type: "Crop"
bottom: "Convolution10"
bottom: "Deconvolution4"
top: "Crop3"
crop_param {
axis: 2
offset: 16
}
}
layer {
name: "Eltwise3"
type: "Eltwise"
bottom: "Crop3"
bottom: "Deconvolution4"
top: "Eltwise3"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution25"
type: "Convolution"
bottom: "Eltwise3"
top: "Convolution25"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU24"
type: "ReLU"
bottom: "Convolution25"
top: "Convolution25"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution26"
type: "Convolution"
bottom: "Convolution25"
top: "Convolution26"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Crop4"
type: "Crop"
bottom: "Deconvolution2"
bottom: "Convolution26"
top: "Crop4"
crop_param {
axis: 2
offset: 20
}
}
layer {
name: "Eltwise4"
type: "Eltwise"
bottom: "Crop4"
bottom: "Convolution26"
top: "Eltwise4"
eltwise_param {
operation: SUM
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,794 @@
layer {
name: "input"
type: "Input"
top: "Input1"
input_param {
shape {
dim: 1
dim: 3
dim: 312
dim: 312
}
}
}
layer {
name: "Convolution1"
type: "Convolution"
bottom: "Input1"
top: "Convolution1"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU1"
type: "ReLU"
bottom: "Convolution1"
top: "Convolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution2"
type: "Convolution"
bottom: "Convolution1"
top: "Convolution2"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU2"
type: "ReLU"
bottom: "Convolution2"
top: "Convolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution3"
type: "Convolution"
bottom: "Convolution2"
top: "Convolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU3"
type: "ReLU"
bottom: "Convolution3"
top: "Convolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution4"
type: "Convolution"
bottom: "Convolution3"
top: "Convolution4"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU4"
type: "ReLU"
bottom: "Convolution4"
top: "Convolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution5"
type: "Convolution"
bottom: "Convolution4"
top: "Convolution5"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU5"
type: "ReLU"
bottom: "Convolution5"
top: "Convolution5"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling1"
type: "Pooling"
bottom: "Convolution5"
top: "Pooling1"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution6"
type: "Convolution"
bottom: "Pooling1"
top: "Convolution6"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU6"
type: "ReLU"
bottom: "Convolution6"
top: "Convolution6"
}
layer {
name: "Convolution7"
type: "Convolution"
bottom: "Convolution6"
top: "Convolution7"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid1"
type: "Sigmoid"
bottom: "Convolution7"
top: "Convolution7"
}
layer {
name: "Flatten1"
type: "Flatten"
bottom: "Convolution7"
top: "Flatten1"
}
layer {
name: "Scale1"
type: "Scale"
bottom: "Convolution5"
bottom: "Flatten1"
top: "Scale1"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution1"
type: "Deconvolution"
bottom: "Scale1"
top: "Deconvolution1"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU7"
type: "ReLU"
bottom: "Deconvolution1"
top: "Deconvolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop1"
type: "Crop"
bottom: "Convolution2"
bottom: "Deconvolution1"
top: "Crop1"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise1"
type: "Eltwise"
bottom: "Crop1"
bottom: "Deconvolution1"
top: "Eltwise1"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution8"
type: "Convolution"
bottom: "Eltwise1"
top: "Convolution8"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU8"
type: "ReLU"
bottom: "Convolution8"
top: "Convolution8"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution9"
type: "Convolution"
bottom: "Convolution8"
top: "Convolution9"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Convolution10"
type: "Convolution"
bottom: "Convolution9"
top: "Convolution10"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU9"
type: "ReLU"
bottom: "Convolution10"
top: "Convolution10"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution11"
type: "Convolution"
bottom: "Convolution10"
top: "Convolution11"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU10"
type: "ReLU"
bottom: "Convolution11"
top: "Convolution11"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution12"
type: "Convolution"
bottom: "Convolution11"
top: "Convolution12"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU11"
type: "ReLU"
bottom: "Convolution12"
top: "Convolution12"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution13"
type: "Convolution"
bottom: "Convolution12"
top: "Convolution13"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU12"
type: "ReLU"
bottom: "Convolution13"
top: "Convolution13"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution14"
type: "Convolution"
bottom: "Convolution13"
top: "Convolution14"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU13"
type: "ReLU"
bottom: "Convolution14"
top: "Convolution14"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling2"
type: "Pooling"
bottom: "Convolution14"
top: "Pooling2"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution15"
type: "Convolution"
bottom: "Pooling2"
top: "Convolution15"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU14"
type: "ReLU"
bottom: "Convolution15"
top: "Convolution15"
}
layer {
name: "Convolution16"
type: "Convolution"
bottom: "Convolution15"
top: "Convolution16"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid2"
type: "Sigmoid"
bottom: "Convolution16"
top: "Convolution16"
}
layer {
name: "Flatten2"
type: "Flatten"
bottom: "Convolution16"
top: "Flatten2"
}
layer {
name: "Scale2"
type: "Scale"
bottom: "Convolution14"
bottom: "Flatten2"
top: "Scale2"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Convolution17"
type: "Convolution"
bottom: "Scale2"
top: "Convolution17"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU15"
type: "ReLU"
bottom: "Convolution17"
top: "Convolution17"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution18"
type: "Convolution"
bottom: "Convolution17"
top: "Convolution18"
convolution_param {
num_output: 256
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU16"
type: "ReLU"
bottom: "Convolution18"
top: "Convolution18"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution19"
type: "Convolution"
bottom: "Convolution18"
top: "Convolution19"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU17"
type: "ReLU"
bottom: "Convolution19"
top: "Convolution19"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling3"
type: "Pooling"
bottom: "Convolution19"
top: "Pooling3"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution20"
type: "Convolution"
bottom: "Pooling3"
top: "Convolution20"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU18"
type: "ReLU"
bottom: "Convolution20"
top: "Convolution20"
}
layer {
name: "Convolution21"
type: "Convolution"
bottom: "Convolution20"
top: "Convolution21"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid3"
type: "Sigmoid"
bottom: "Convolution21"
top: "Convolution21"
}
layer {
name: "Flatten3"
type: "Flatten"
bottom: "Convolution21"
top: "Flatten3"
}
layer {
name: "Scale3"
type: "Scale"
bottom: "Convolution19"
bottom: "Flatten3"
top: "Scale3"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution2"
type: "Deconvolution"
bottom: "Scale3"
top: "Deconvolution2"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU19"
type: "ReLU"
bottom: "Deconvolution2"
top: "Deconvolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop2"
type: "Crop"
bottom: "Scale2"
bottom: "Deconvolution2"
top: "Crop2"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise2"
type: "Eltwise"
bottom: "Crop2"
bottom: "Deconvolution2"
top: "Eltwise2"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution22"
type: "Convolution"
bottom: "Eltwise2"
top: "Convolution22"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU20"
type: "ReLU"
bottom: "Convolution22"
top: "Convolution22"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution23"
type: "Convolution"
bottom: "Convolution22"
top: "Convolution23"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU21"
type: "ReLU"
bottom: "Convolution23"
top: "Convolution23"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling4"
type: "Pooling"
bottom: "Convolution23"
top: "Pooling4"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution24"
type: "Convolution"
bottom: "Pooling4"
top: "Convolution24"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU22"
type: "ReLU"
bottom: "Convolution24"
top: "Convolution24"
}
layer {
name: "Convolution25"
type: "Convolution"
bottom: "Convolution24"
top: "Convolution25"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid4"
type: "Sigmoid"
bottom: "Convolution25"
top: "Convolution25"
}
layer {
name: "Flatten4"
type: "Flatten"
bottom: "Convolution25"
top: "Flatten4"
}
layer {
name: "Scale4"
type: "Scale"
bottom: "Convolution23"
bottom: "Flatten4"
top: "Scale4"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution3"
type: "Deconvolution"
bottom: "Scale4"
top: "Deconvolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU23"
type: "ReLU"
bottom: "Deconvolution3"
top: "Deconvolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop3"
type: "Crop"
bottom: "Convolution11"
bottom: "Deconvolution3"
top: "Crop3"
crop_param {
axis: 2
offset: 16
}
}
layer {
name: "Eltwise3"
type: "Eltwise"
bottom: "Crop3"
bottom: "Deconvolution3"
top: "Eltwise3"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution26"
type: "Convolution"
bottom: "Eltwise3"
top: "Convolution26"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU24"
type: "ReLU"
bottom: "Convolution26"
top: "Convolution26"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution27"
type: "Convolution"
bottom: "Convolution26"
top: "Convolution27"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Crop4"
type: "Crop"
bottom: "Convolution9"
bottom: "Convolution27"
top: "Crop4"
crop_param {
axis: 2
offset: 20
}
}
layer {
name: "Eltwise4"
type: "Eltwise"
bottom: "Crop4"
bottom: "Convolution27"
top: "Eltwise4"
eltwise_param {
operation: SUM
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,794 @@
layer {
name: "input"
type: "Input"
top: "Input1"
input_param {
shape {
dim: 1
dim: 3
dim: 200
dim: 200
}
}
}
layer {
name: "Convolution1"
type: "Convolution"
bottom: "Input1"
top: "Convolution1"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU1"
type: "ReLU"
bottom: "Convolution1"
top: "Convolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution2"
type: "Convolution"
bottom: "Convolution1"
top: "Convolution2"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU2"
type: "ReLU"
bottom: "Convolution2"
top: "Convolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution3"
type: "Convolution"
bottom: "Convolution2"
top: "Convolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU3"
type: "ReLU"
bottom: "Convolution3"
top: "Convolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution4"
type: "Convolution"
bottom: "Convolution3"
top: "Convolution4"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU4"
type: "ReLU"
bottom: "Convolution4"
top: "Convolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution5"
type: "Convolution"
bottom: "Convolution4"
top: "Convolution5"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU5"
type: "ReLU"
bottom: "Convolution5"
top: "Convolution5"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling1"
type: "Pooling"
bottom: "Convolution5"
top: "Pooling1"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution6"
type: "Convolution"
bottom: "Pooling1"
top: "Convolution6"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU6"
type: "ReLU"
bottom: "Convolution6"
top: "Convolution6"
}
layer {
name: "Convolution7"
type: "Convolution"
bottom: "Convolution6"
top: "Convolution7"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid1"
type: "Sigmoid"
bottom: "Convolution7"
top: "Convolution7"
}
layer {
name: "Flatten1"
type: "Flatten"
bottom: "Convolution7"
top: "Flatten1"
}
layer {
name: "Scale1"
type: "Scale"
bottom: "Convolution5"
bottom: "Flatten1"
top: "Scale1"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution1"
type: "Deconvolution"
bottom: "Scale1"
top: "Deconvolution1"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU7"
type: "ReLU"
bottom: "Deconvolution1"
top: "Deconvolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop1"
type: "Crop"
bottom: "Convolution2"
bottom: "Deconvolution1"
top: "Crop1"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise1"
type: "Eltwise"
bottom: "Crop1"
bottom: "Deconvolution1"
top: "Eltwise1"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution8"
type: "Convolution"
bottom: "Eltwise1"
top: "Convolution8"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU8"
type: "ReLU"
bottom: "Convolution8"
top: "Convolution8"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Deconvolution2"
type: "Deconvolution"
bottom: "Convolution8"
top: "Deconvolution2"
convolution_param {
num_output: 3
pad: 3
kernel_size: 4
stride: 2
}
}
layer {
name: "Convolution9"
type: "Convolution"
bottom: "Deconvolution2"
top: "Convolution9"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU9"
type: "ReLU"
bottom: "Convolution9"
top: "Convolution9"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution10"
type: "Convolution"
bottom: "Convolution9"
top: "Convolution10"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU10"
type: "ReLU"
bottom: "Convolution10"
top: "Convolution10"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution11"
type: "Convolution"
bottom: "Convolution10"
top: "Convolution11"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU11"
type: "ReLU"
bottom: "Convolution11"
top: "Convolution11"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution12"
type: "Convolution"
bottom: "Convolution11"
top: "Convolution12"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU12"
type: "ReLU"
bottom: "Convolution12"
top: "Convolution12"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution13"
type: "Convolution"
bottom: "Convolution12"
top: "Convolution13"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU13"
type: "ReLU"
bottom: "Convolution13"
top: "Convolution13"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling2"
type: "Pooling"
bottom: "Convolution13"
top: "Pooling2"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution14"
type: "Convolution"
bottom: "Pooling2"
top: "Convolution14"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU14"
type: "ReLU"
bottom: "Convolution14"
top: "Convolution14"
}
layer {
name: "Convolution15"
type: "Convolution"
bottom: "Convolution14"
top: "Convolution15"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid2"
type: "Sigmoid"
bottom: "Convolution15"
top: "Convolution15"
}
layer {
name: "Flatten2"
type: "Flatten"
bottom: "Convolution15"
top: "Flatten2"
}
layer {
name: "Scale2"
type: "Scale"
bottom: "Convolution13"
bottom: "Flatten2"
top: "Scale2"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Convolution16"
type: "Convolution"
bottom: "Scale2"
top: "Convolution16"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU15"
type: "ReLU"
bottom: "Convolution16"
top: "Convolution16"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution17"
type: "Convolution"
bottom: "Convolution16"
top: "Convolution17"
convolution_param {
num_output: 256
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU16"
type: "ReLU"
bottom: "Convolution17"
top: "Convolution17"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution18"
type: "Convolution"
bottom: "Convolution17"
top: "Convolution18"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU17"
type: "ReLU"
bottom: "Convolution18"
top: "Convolution18"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling3"
type: "Pooling"
bottom: "Convolution18"
top: "Pooling3"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution19"
type: "Convolution"
bottom: "Pooling3"
top: "Convolution19"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU18"
type: "ReLU"
bottom: "Convolution19"
top: "Convolution19"
}
layer {
name: "Convolution20"
type: "Convolution"
bottom: "Convolution19"
top: "Convolution20"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid3"
type: "Sigmoid"
bottom: "Convolution20"
top: "Convolution20"
}
layer {
name: "Flatten3"
type: "Flatten"
bottom: "Convolution20"
top: "Flatten3"
}
layer {
name: "Scale3"
type: "Scale"
bottom: "Convolution18"
bottom: "Flatten3"
top: "Scale3"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution3"
type: "Deconvolution"
bottom: "Scale3"
top: "Deconvolution3"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU19"
type: "ReLU"
bottom: "Deconvolution3"
top: "Deconvolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop2"
type: "Crop"
bottom: "Scale2"
bottom: "Deconvolution3"
top: "Crop2"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise2"
type: "Eltwise"
bottom: "Crop2"
bottom: "Deconvolution3"
top: "Eltwise2"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution21"
type: "Convolution"
bottom: "Eltwise2"
top: "Convolution21"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU20"
type: "ReLU"
bottom: "Convolution21"
top: "Convolution21"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution22"
type: "Convolution"
bottom: "Convolution21"
top: "Convolution22"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU21"
type: "ReLU"
bottom: "Convolution22"
top: "Convolution22"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling4"
type: "Pooling"
bottom: "Convolution22"
top: "Pooling4"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution23"
type: "Convolution"
bottom: "Pooling4"
top: "Convolution23"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU22"
type: "ReLU"
bottom: "Convolution23"
top: "Convolution23"
}
layer {
name: "Convolution24"
type: "Convolution"
bottom: "Convolution23"
top: "Convolution24"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid4"
type: "Sigmoid"
bottom: "Convolution24"
top: "Convolution24"
}
layer {
name: "Flatten4"
type: "Flatten"
bottom: "Convolution24"
top: "Flatten4"
}
layer {
name: "Scale4"
type: "Scale"
bottom: "Convolution22"
bottom: "Flatten4"
top: "Scale4"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution4"
type: "Deconvolution"
bottom: "Scale4"
top: "Deconvolution4"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU23"
type: "ReLU"
bottom: "Deconvolution4"
top: "Deconvolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop3"
type: "Crop"
bottom: "Convolution10"
bottom: "Deconvolution4"
top: "Crop3"
crop_param {
axis: 2
offset: 16
}
}
layer {
name: "Eltwise3"
type: "Eltwise"
bottom: "Crop3"
bottom: "Deconvolution4"
top: "Eltwise3"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution25"
type: "Convolution"
bottom: "Eltwise3"
top: "Convolution25"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU24"
type: "ReLU"
bottom: "Convolution25"
top: "Convolution25"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution26"
type: "Convolution"
bottom: "Convolution25"
top: "Convolution26"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Crop4"
type: "Crop"
bottom: "Deconvolution2"
bottom: "Convolution26"
top: "Crop4"
crop_param {
axis: 2
offset: 20
}
}
layer {
name: "Eltwise4"
type: "Eltwise"
bottom: "Crop4"
bottom: "Convolution26"
top: "Eltwise4"
eltwise_param {
operation: SUM
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,794 @@
layer {
name: "input"
type: "Input"
top: "Input1"
input_param {
shape {
dim: 1
dim: 3
dim: 312
dim: 312
}
}
}
layer {
name: "Convolution1"
type: "Convolution"
bottom: "Input1"
top: "Convolution1"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU1"
type: "ReLU"
bottom: "Convolution1"
top: "Convolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution2"
type: "Convolution"
bottom: "Convolution1"
top: "Convolution2"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU2"
type: "ReLU"
bottom: "Convolution2"
top: "Convolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution3"
type: "Convolution"
bottom: "Convolution2"
top: "Convolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU3"
type: "ReLU"
bottom: "Convolution3"
top: "Convolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution4"
type: "Convolution"
bottom: "Convolution3"
top: "Convolution4"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU4"
type: "ReLU"
bottom: "Convolution4"
top: "Convolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution5"
type: "Convolution"
bottom: "Convolution4"
top: "Convolution5"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU5"
type: "ReLU"
bottom: "Convolution5"
top: "Convolution5"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling1"
type: "Pooling"
bottom: "Convolution5"
top: "Pooling1"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution6"
type: "Convolution"
bottom: "Pooling1"
top: "Convolution6"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU6"
type: "ReLU"
bottom: "Convolution6"
top: "Convolution6"
}
layer {
name: "Convolution7"
type: "Convolution"
bottom: "Convolution6"
top: "Convolution7"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid1"
type: "Sigmoid"
bottom: "Convolution7"
top: "Convolution7"
}
layer {
name: "Flatten1"
type: "Flatten"
bottom: "Convolution7"
top: "Flatten1"
}
layer {
name: "Scale1"
type: "Scale"
bottom: "Convolution5"
bottom: "Flatten1"
top: "Scale1"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution1"
type: "Deconvolution"
bottom: "Scale1"
top: "Deconvolution1"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU7"
type: "ReLU"
bottom: "Deconvolution1"
top: "Deconvolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop1"
type: "Crop"
bottom: "Convolution2"
bottom: "Deconvolution1"
top: "Crop1"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise1"
type: "Eltwise"
bottom: "Crop1"
bottom: "Deconvolution1"
top: "Eltwise1"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution8"
type: "Convolution"
bottom: "Eltwise1"
top: "Convolution8"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU8"
type: "ReLU"
bottom: "Convolution8"
top: "Convolution8"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution9"
type: "Convolution"
bottom: "Convolution8"
top: "Convolution9"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Convolution10"
type: "Convolution"
bottom: "Convolution9"
top: "Convolution10"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU9"
type: "ReLU"
bottom: "Convolution10"
top: "Convolution10"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution11"
type: "Convolution"
bottom: "Convolution10"
top: "Convolution11"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU10"
type: "ReLU"
bottom: "Convolution11"
top: "Convolution11"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution12"
type: "Convolution"
bottom: "Convolution11"
top: "Convolution12"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU11"
type: "ReLU"
bottom: "Convolution12"
top: "Convolution12"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution13"
type: "Convolution"
bottom: "Convolution12"
top: "Convolution13"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU12"
type: "ReLU"
bottom: "Convolution13"
top: "Convolution13"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution14"
type: "Convolution"
bottom: "Convolution13"
top: "Convolution14"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU13"
type: "ReLU"
bottom: "Convolution14"
top: "Convolution14"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling2"
type: "Pooling"
bottom: "Convolution14"
top: "Pooling2"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution15"
type: "Convolution"
bottom: "Pooling2"
top: "Convolution15"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU14"
type: "ReLU"
bottom: "Convolution15"
top: "Convolution15"
}
layer {
name: "Convolution16"
type: "Convolution"
bottom: "Convolution15"
top: "Convolution16"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid2"
type: "Sigmoid"
bottom: "Convolution16"
top: "Convolution16"
}
layer {
name: "Flatten2"
type: "Flatten"
bottom: "Convolution16"
top: "Flatten2"
}
layer {
name: "Scale2"
type: "Scale"
bottom: "Convolution14"
bottom: "Flatten2"
top: "Scale2"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Convolution17"
type: "Convolution"
bottom: "Scale2"
top: "Convolution17"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU15"
type: "ReLU"
bottom: "Convolution17"
top: "Convolution17"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution18"
type: "Convolution"
bottom: "Convolution17"
top: "Convolution18"
convolution_param {
num_output: 256
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU16"
type: "ReLU"
bottom: "Convolution18"
top: "Convolution18"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution19"
type: "Convolution"
bottom: "Convolution18"
top: "Convolution19"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU17"
type: "ReLU"
bottom: "Convolution19"
top: "Convolution19"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling3"
type: "Pooling"
bottom: "Convolution19"
top: "Pooling3"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution20"
type: "Convolution"
bottom: "Pooling3"
top: "Convolution20"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU18"
type: "ReLU"
bottom: "Convolution20"
top: "Convolution20"
}
layer {
name: "Convolution21"
type: "Convolution"
bottom: "Convolution20"
top: "Convolution21"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid3"
type: "Sigmoid"
bottom: "Convolution21"
top: "Convolution21"
}
layer {
name: "Flatten3"
type: "Flatten"
bottom: "Convolution21"
top: "Flatten3"
}
layer {
name: "Scale3"
type: "Scale"
bottom: "Convolution19"
bottom: "Flatten3"
top: "Scale3"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution2"
type: "Deconvolution"
bottom: "Scale3"
top: "Deconvolution2"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU19"
type: "ReLU"
bottom: "Deconvolution2"
top: "Deconvolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop2"
type: "Crop"
bottom: "Scale2"
bottom: "Deconvolution2"
top: "Crop2"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise2"
type: "Eltwise"
bottom: "Crop2"
bottom: "Deconvolution2"
top: "Eltwise2"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution22"
type: "Convolution"
bottom: "Eltwise2"
top: "Convolution22"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU20"
type: "ReLU"
bottom: "Convolution22"
top: "Convolution22"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution23"
type: "Convolution"
bottom: "Convolution22"
top: "Convolution23"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU21"
type: "ReLU"
bottom: "Convolution23"
top: "Convolution23"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling4"
type: "Pooling"
bottom: "Convolution23"
top: "Pooling4"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution24"
type: "Convolution"
bottom: "Pooling4"
top: "Convolution24"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU22"
type: "ReLU"
bottom: "Convolution24"
top: "Convolution24"
}
layer {
name: "Convolution25"
type: "Convolution"
bottom: "Convolution24"
top: "Convolution25"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid4"
type: "Sigmoid"
bottom: "Convolution25"
top: "Convolution25"
}
layer {
name: "Flatten4"
type: "Flatten"
bottom: "Convolution25"
top: "Flatten4"
}
layer {
name: "Scale4"
type: "Scale"
bottom: "Convolution23"
bottom: "Flatten4"
top: "Scale4"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution3"
type: "Deconvolution"
bottom: "Scale4"
top: "Deconvolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU23"
type: "ReLU"
bottom: "Deconvolution3"
top: "Deconvolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop3"
type: "Crop"
bottom: "Convolution11"
bottom: "Deconvolution3"
top: "Crop3"
crop_param {
axis: 2
offset: 16
}
}
layer {
name: "Eltwise3"
type: "Eltwise"
bottom: "Crop3"
bottom: "Deconvolution3"
top: "Eltwise3"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution26"
type: "Convolution"
bottom: "Eltwise3"
top: "Convolution26"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU24"
type: "ReLU"
bottom: "Convolution26"
top: "Convolution26"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution27"
type: "Convolution"
bottom: "Convolution26"
top: "Convolution27"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Crop4"
type: "Crop"
bottom: "Convolution9"
bottom: "Convolution27"
top: "Crop4"
crop_param {
axis: 2
offset: 20
}
}
layer {
name: "Eltwise4"
type: "Eltwise"
bottom: "Crop4"
bottom: "Convolution27"
top: "Eltwise4"
eltwise_param {
operation: SUM
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,794 @@
layer {
name: "input"
type: "Input"
top: "Input1"
input_param {
shape {
dim: 1
dim: 3
dim: 200
dim: 200
}
}
}
layer {
name: "Convolution1"
type: "Convolution"
bottom: "Input1"
top: "Convolution1"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU1"
type: "ReLU"
bottom: "Convolution1"
top: "Convolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution2"
type: "Convolution"
bottom: "Convolution1"
top: "Convolution2"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU2"
type: "ReLU"
bottom: "Convolution2"
top: "Convolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution3"
type: "Convolution"
bottom: "Convolution2"
top: "Convolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU3"
type: "ReLU"
bottom: "Convolution3"
top: "Convolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution4"
type: "Convolution"
bottom: "Convolution3"
top: "Convolution4"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU4"
type: "ReLU"
bottom: "Convolution4"
top: "Convolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution5"
type: "Convolution"
bottom: "Convolution4"
top: "Convolution5"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU5"
type: "ReLU"
bottom: "Convolution5"
top: "Convolution5"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling1"
type: "Pooling"
bottom: "Convolution5"
top: "Pooling1"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution6"
type: "Convolution"
bottom: "Pooling1"
top: "Convolution6"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU6"
type: "ReLU"
bottom: "Convolution6"
top: "Convolution6"
}
layer {
name: "Convolution7"
type: "Convolution"
bottom: "Convolution6"
top: "Convolution7"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid1"
type: "Sigmoid"
bottom: "Convolution7"
top: "Convolution7"
}
layer {
name: "Flatten1"
type: "Flatten"
bottom: "Convolution7"
top: "Flatten1"
}
layer {
name: "Scale1"
type: "Scale"
bottom: "Convolution5"
bottom: "Flatten1"
top: "Scale1"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution1"
type: "Deconvolution"
bottom: "Scale1"
top: "Deconvolution1"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU7"
type: "ReLU"
bottom: "Deconvolution1"
top: "Deconvolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop1"
type: "Crop"
bottom: "Convolution2"
bottom: "Deconvolution1"
top: "Crop1"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise1"
type: "Eltwise"
bottom: "Crop1"
bottom: "Deconvolution1"
top: "Eltwise1"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution8"
type: "Convolution"
bottom: "Eltwise1"
top: "Convolution8"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU8"
type: "ReLU"
bottom: "Convolution8"
top: "Convolution8"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Deconvolution2"
type: "Deconvolution"
bottom: "Convolution8"
top: "Deconvolution2"
convolution_param {
num_output: 3
pad: 3
kernel_size: 4
stride: 2
}
}
layer {
name: "Convolution9"
type: "Convolution"
bottom: "Deconvolution2"
top: "Convolution9"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU9"
type: "ReLU"
bottom: "Convolution9"
top: "Convolution9"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution10"
type: "Convolution"
bottom: "Convolution9"
top: "Convolution10"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU10"
type: "ReLU"
bottom: "Convolution10"
top: "Convolution10"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution11"
type: "Convolution"
bottom: "Convolution10"
top: "Convolution11"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU11"
type: "ReLU"
bottom: "Convolution11"
top: "Convolution11"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution12"
type: "Convolution"
bottom: "Convolution11"
top: "Convolution12"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU12"
type: "ReLU"
bottom: "Convolution12"
top: "Convolution12"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution13"
type: "Convolution"
bottom: "Convolution12"
top: "Convolution13"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU13"
type: "ReLU"
bottom: "Convolution13"
top: "Convolution13"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling2"
type: "Pooling"
bottom: "Convolution13"
top: "Pooling2"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution14"
type: "Convolution"
bottom: "Pooling2"
top: "Convolution14"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU14"
type: "ReLU"
bottom: "Convolution14"
top: "Convolution14"
}
layer {
name: "Convolution15"
type: "Convolution"
bottom: "Convolution14"
top: "Convolution15"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid2"
type: "Sigmoid"
bottom: "Convolution15"
top: "Convolution15"
}
layer {
name: "Flatten2"
type: "Flatten"
bottom: "Convolution15"
top: "Flatten2"
}
layer {
name: "Scale2"
type: "Scale"
bottom: "Convolution13"
bottom: "Flatten2"
top: "Scale2"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Convolution16"
type: "Convolution"
bottom: "Scale2"
top: "Convolution16"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU15"
type: "ReLU"
bottom: "Convolution16"
top: "Convolution16"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution17"
type: "Convolution"
bottom: "Convolution16"
top: "Convolution17"
convolution_param {
num_output: 256
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU16"
type: "ReLU"
bottom: "Convolution17"
top: "Convolution17"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution18"
type: "Convolution"
bottom: "Convolution17"
top: "Convolution18"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU17"
type: "ReLU"
bottom: "Convolution18"
top: "Convolution18"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling3"
type: "Pooling"
bottom: "Convolution18"
top: "Pooling3"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution19"
type: "Convolution"
bottom: "Pooling3"
top: "Convolution19"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU18"
type: "ReLU"
bottom: "Convolution19"
top: "Convolution19"
}
layer {
name: "Convolution20"
type: "Convolution"
bottom: "Convolution19"
top: "Convolution20"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid3"
type: "Sigmoid"
bottom: "Convolution20"
top: "Convolution20"
}
layer {
name: "Flatten3"
type: "Flatten"
bottom: "Convolution20"
top: "Flatten3"
}
layer {
name: "Scale3"
type: "Scale"
bottom: "Convolution18"
bottom: "Flatten3"
top: "Scale3"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution3"
type: "Deconvolution"
bottom: "Scale3"
top: "Deconvolution3"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU19"
type: "ReLU"
bottom: "Deconvolution3"
top: "Deconvolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop2"
type: "Crop"
bottom: "Scale2"
bottom: "Deconvolution3"
top: "Crop2"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise2"
type: "Eltwise"
bottom: "Crop2"
bottom: "Deconvolution3"
top: "Eltwise2"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution21"
type: "Convolution"
bottom: "Eltwise2"
top: "Convolution21"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU20"
type: "ReLU"
bottom: "Convolution21"
top: "Convolution21"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution22"
type: "Convolution"
bottom: "Convolution21"
top: "Convolution22"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU21"
type: "ReLU"
bottom: "Convolution22"
top: "Convolution22"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling4"
type: "Pooling"
bottom: "Convolution22"
top: "Pooling4"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution23"
type: "Convolution"
bottom: "Pooling4"
top: "Convolution23"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU22"
type: "ReLU"
bottom: "Convolution23"
top: "Convolution23"
}
layer {
name: "Convolution24"
type: "Convolution"
bottom: "Convolution23"
top: "Convolution24"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid4"
type: "Sigmoid"
bottom: "Convolution24"
top: "Convolution24"
}
layer {
name: "Flatten4"
type: "Flatten"
bottom: "Convolution24"
top: "Flatten4"
}
layer {
name: "Scale4"
type: "Scale"
bottom: "Convolution22"
bottom: "Flatten4"
top: "Scale4"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution4"
type: "Deconvolution"
bottom: "Scale4"
top: "Deconvolution4"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU23"
type: "ReLU"
bottom: "Deconvolution4"
top: "Deconvolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop3"
type: "Crop"
bottom: "Convolution10"
bottom: "Deconvolution4"
top: "Crop3"
crop_param {
axis: 2
offset: 16
}
}
layer {
name: "Eltwise3"
type: "Eltwise"
bottom: "Crop3"
bottom: "Deconvolution4"
top: "Eltwise3"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution25"
type: "Convolution"
bottom: "Eltwise3"
top: "Convolution25"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU24"
type: "ReLU"
bottom: "Convolution25"
top: "Convolution25"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution26"
type: "Convolution"
bottom: "Convolution25"
top: "Convolution26"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Crop4"
type: "Crop"
bottom: "Deconvolution2"
bottom: "Convolution26"
top: "Crop4"
crop_param {
axis: 2
offset: 20
}
}
layer {
name: "Eltwise4"
type: "Eltwise"
bottom: "Crop4"
bottom: "Convolution26"
top: "Eltwise4"
eltwise_param {
operation: SUM
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,794 @@
layer {
name: "input"
type: "Input"
top: "Input1"
input_param {
shape {
dim: 1
dim: 3
dim: 312
dim: 312
}
}
}
layer {
name: "Convolution1"
type: "Convolution"
bottom: "Input1"
top: "Convolution1"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU1"
type: "ReLU"
bottom: "Convolution1"
top: "Convolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution2"
type: "Convolution"
bottom: "Convolution1"
top: "Convolution2"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU2"
type: "ReLU"
bottom: "Convolution2"
top: "Convolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution3"
type: "Convolution"
bottom: "Convolution2"
top: "Convolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU3"
type: "ReLU"
bottom: "Convolution3"
top: "Convolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution4"
type: "Convolution"
bottom: "Convolution3"
top: "Convolution4"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU4"
type: "ReLU"
bottom: "Convolution4"
top: "Convolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution5"
type: "Convolution"
bottom: "Convolution4"
top: "Convolution5"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU5"
type: "ReLU"
bottom: "Convolution5"
top: "Convolution5"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling1"
type: "Pooling"
bottom: "Convolution5"
top: "Pooling1"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution6"
type: "Convolution"
bottom: "Pooling1"
top: "Convolution6"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU6"
type: "ReLU"
bottom: "Convolution6"
top: "Convolution6"
}
layer {
name: "Convolution7"
type: "Convolution"
bottom: "Convolution6"
top: "Convolution7"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid1"
type: "Sigmoid"
bottom: "Convolution7"
top: "Convolution7"
}
layer {
name: "Flatten1"
type: "Flatten"
bottom: "Convolution7"
top: "Flatten1"
}
layer {
name: "Scale1"
type: "Scale"
bottom: "Convolution5"
bottom: "Flatten1"
top: "Scale1"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution1"
type: "Deconvolution"
bottom: "Scale1"
top: "Deconvolution1"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU7"
type: "ReLU"
bottom: "Deconvolution1"
top: "Deconvolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop1"
type: "Crop"
bottom: "Convolution2"
bottom: "Deconvolution1"
top: "Crop1"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise1"
type: "Eltwise"
bottom: "Crop1"
bottom: "Deconvolution1"
top: "Eltwise1"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution8"
type: "Convolution"
bottom: "Eltwise1"
top: "Convolution8"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU8"
type: "ReLU"
bottom: "Convolution8"
top: "Convolution8"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution9"
type: "Convolution"
bottom: "Convolution8"
top: "Convolution9"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Convolution10"
type: "Convolution"
bottom: "Convolution9"
top: "Convolution10"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU9"
type: "ReLU"
bottom: "Convolution10"
top: "Convolution10"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution11"
type: "Convolution"
bottom: "Convolution10"
top: "Convolution11"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU10"
type: "ReLU"
bottom: "Convolution11"
top: "Convolution11"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution12"
type: "Convolution"
bottom: "Convolution11"
top: "Convolution12"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU11"
type: "ReLU"
bottom: "Convolution12"
top: "Convolution12"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution13"
type: "Convolution"
bottom: "Convolution12"
top: "Convolution13"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU12"
type: "ReLU"
bottom: "Convolution13"
top: "Convolution13"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution14"
type: "Convolution"
bottom: "Convolution13"
top: "Convolution14"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU13"
type: "ReLU"
bottom: "Convolution14"
top: "Convolution14"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling2"
type: "Pooling"
bottom: "Convolution14"
top: "Pooling2"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution15"
type: "Convolution"
bottom: "Pooling2"
top: "Convolution15"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU14"
type: "ReLU"
bottom: "Convolution15"
top: "Convolution15"
}
layer {
name: "Convolution16"
type: "Convolution"
bottom: "Convolution15"
top: "Convolution16"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid2"
type: "Sigmoid"
bottom: "Convolution16"
top: "Convolution16"
}
layer {
name: "Flatten2"
type: "Flatten"
bottom: "Convolution16"
top: "Flatten2"
}
layer {
name: "Scale2"
type: "Scale"
bottom: "Convolution14"
bottom: "Flatten2"
top: "Scale2"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Convolution17"
type: "Convolution"
bottom: "Scale2"
top: "Convolution17"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU15"
type: "ReLU"
bottom: "Convolution17"
top: "Convolution17"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution18"
type: "Convolution"
bottom: "Convolution17"
top: "Convolution18"
convolution_param {
num_output: 256
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU16"
type: "ReLU"
bottom: "Convolution18"
top: "Convolution18"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution19"
type: "Convolution"
bottom: "Convolution18"
top: "Convolution19"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU17"
type: "ReLU"
bottom: "Convolution19"
top: "Convolution19"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling3"
type: "Pooling"
bottom: "Convolution19"
top: "Pooling3"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution20"
type: "Convolution"
bottom: "Pooling3"
top: "Convolution20"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU18"
type: "ReLU"
bottom: "Convolution20"
top: "Convolution20"
}
layer {
name: "Convolution21"
type: "Convolution"
bottom: "Convolution20"
top: "Convolution21"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid3"
type: "Sigmoid"
bottom: "Convolution21"
top: "Convolution21"
}
layer {
name: "Flatten3"
type: "Flatten"
bottom: "Convolution21"
top: "Flatten3"
}
layer {
name: "Scale3"
type: "Scale"
bottom: "Convolution19"
bottom: "Flatten3"
top: "Scale3"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution2"
type: "Deconvolution"
bottom: "Scale3"
top: "Deconvolution2"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU19"
type: "ReLU"
bottom: "Deconvolution2"
top: "Deconvolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop2"
type: "Crop"
bottom: "Scale2"
bottom: "Deconvolution2"
top: "Crop2"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise2"
type: "Eltwise"
bottom: "Crop2"
bottom: "Deconvolution2"
top: "Eltwise2"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution22"
type: "Convolution"
bottom: "Eltwise2"
top: "Convolution22"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU20"
type: "ReLU"
bottom: "Convolution22"
top: "Convolution22"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution23"
type: "Convolution"
bottom: "Convolution22"
top: "Convolution23"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU21"
type: "ReLU"
bottom: "Convolution23"
top: "Convolution23"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling4"
type: "Pooling"
bottom: "Convolution23"
top: "Pooling4"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution24"
type: "Convolution"
bottom: "Pooling4"
top: "Convolution24"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU22"
type: "ReLU"
bottom: "Convolution24"
top: "Convolution24"
}
layer {
name: "Convolution25"
type: "Convolution"
bottom: "Convolution24"
top: "Convolution25"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid4"
type: "Sigmoid"
bottom: "Convolution25"
top: "Convolution25"
}
layer {
name: "Flatten4"
type: "Flatten"
bottom: "Convolution25"
top: "Flatten4"
}
layer {
name: "Scale4"
type: "Scale"
bottom: "Convolution23"
bottom: "Flatten4"
top: "Scale4"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution3"
type: "Deconvolution"
bottom: "Scale4"
top: "Deconvolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU23"
type: "ReLU"
bottom: "Deconvolution3"
top: "Deconvolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop3"
type: "Crop"
bottom: "Convolution11"
bottom: "Deconvolution3"
top: "Crop3"
crop_param {
axis: 2
offset: 16
}
}
layer {
name: "Eltwise3"
type: "Eltwise"
bottom: "Crop3"
bottom: "Deconvolution3"
top: "Eltwise3"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution26"
type: "Convolution"
bottom: "Eltwise3"
top: "Convolution26"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU24"
type: "ReLU"
bottom: "Convolution26"
top: "Convolution26"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution27"
type: "Convolution"
bottom: "Convolution26"
top: "Convolution27"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Crop4"
type: "Crop"
bottom: "Convolution9"
bottom: "Convolution27"
top: "Crop4"
crop_param {
axis: 2
offset: 20
}
}
layer {
name: "Eltwise4"
type: "Eltwise"
bottom: "Crop4"
bottom: "Convolution27"
top: "Eltwise4"
eltwise_param {
operation: SUM
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,794 @@
layer {
name: "input"
type: "Input"
top: "Input1"
input_param {
shape {
dim: 1
dim: 3
dim: 200
dim: 200
}
}
}
layer {
name: "Convolution1"
type: "Convolution"
bottom: "Input1"
top: "Convolution1"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU1"
type: "ReLU"
bottom: "Convolution1"
top: "Convolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution2"
type: "Convolution"
bottom: "Convolution1"
top: "Convolution2"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU2"
type: "ReLU"
bottom: "Convolution2"
top: "Convolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution3"
type: "Convolution"
bottom: "Convolution2"
top: "Convolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU3"
type: "ReLU"
bottom: "Convolution3"
top: "Convolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution4"
type: "Convolution"
bottom: "Convolution3"
top: "Convolution4"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU4"
type: "ReLU"
bottom: "Convolution4"
top: "Convolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution5"
type: "Convolution"
bottom: "Convolution4"
top: "Convolution5"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU5"
type: "ReLU"
bottom: "Convolution5"
top: "Convolution5"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling1"
type: "Pooling"
bottom: "Convolution5"
top: "Pooling1"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution6"
type: "Convolution"
bottom: "Pooling1"
top: "Convolution6"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU6"
type: "ReLU"
bottom: "Convolution6"
top: "Convolution6"
}
layer {
name: "Convolution7"
type: "Convolution"
bottom: "Convolution6"
top: "Convolution7"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid1"
type: "Sigmoid"
bottom: "Convolution7"
top: "Convolution7"
}
layer {
name: "Flatten1"
type: "Flatten"
bottom: "Convolution7"
top: "Flatten1"
}
layer {
name: "Scale1"
type: "Scale"
bottom: "Convolution5"
bottom: "Flatten1"
top: "Scale1"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution1"
type: "Deconvolution"
bottom: "Scale1"
top: "Deconvolution1"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU7"
type: "ReLU"
bottom: "Deconvolution1"
top: "Deconvolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop1"
type: "Crop"
bottom: "Convolution2"
bottom: "Deconvolution1"
top: "Crop1"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise1"
type: "Eltwise"
bottom: "Crop1"
bottom: "Deconvolution1"
top: "Eltwise1"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution8"
type: "Convolution"
bottom: "Eltwise1"
top: "Convolution8"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU8"
type: "ReLU"
bottom: "Convolution8"
top: "Convolution8"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Deconvolution2"
type: "Deconvolution"
bottom: "Convolution8"
top: "Deconvolution2"
convolution_param {
num_output: 3
pad: 3
kernel_size: 4
stride: 2
}
}
layer {
name: "Convolution9"
type: "Convolution"
bottom: "Deconvolution2"
top: "Convolution9"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU9"
type: "ReLU"
bottom: "Convolution9"
top: "Convolution9"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution10"
type: "Convolution"
bottom: "Convolution9"
top: "Convolution10"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU10"
type: "ReLU"
bottom: "Convolution10"
top: "Convolution10"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution11"
type: "Convolution"
bottom: "Convolution10"
top: "Convolution11"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU11"
type: "ReLU"
bottom: "Convolution11"
top: "Convolution11"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution12"
type: "Convolution"
bottom: "Convolution11"
top: "Convolution12"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU12"
type: "ReLU"
bottom: "Convolution12"
top: "Convolution12"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution13"
type: "Convolution"
bottom: "Convolution12"
top: "Convolution13"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU13"
type: "ReLU"
bottom: "Convolution13"
top: "Convolution13"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling2"
type: "Pooling"
bottom: "Convolution13"
top: "Pooling2"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution14"
type: "Convolution"
bottom: "Pooling2"
top: "Convolution14"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU14"
type: "ReLU"
bottom: "Convolution14"
top: "Convolution14"
}
layer {
name: "Convolution15"
type: "Convolution"
bottom: "Convolution14"
top: "Convolution15"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid2"
type: "Sigmoid"
bottom: "Convolution15"
top: "Convolution15"
}
layer {
name: "Flatten2"
type: "Flatten"
bottom: "Convolution15"
top: "Flatten2"
}
layer {
name: "Scale2"
type: "Scale"
bottom: "Convolution13"
bottom: "Flatten2"
top: "Scale2"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Convolution16"
type: "Convolution"
bottom: "Scale2"
top: "Convolution16"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU15"
type: "ReLU"
bottom: "Convolution16"
top: "Convolution16"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution17"
type: "Convolution"
bottom: "Convolution16"
top: "Convolution17"
convolution_param {
num_output: 256
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU16"
type: "ReLU"
bottom: "Convolution17"
top: "Convolution17"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution18"
type: "Convolution"
bottom: "Convolution17"
top: "Convolution18"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU17"
type: "ReLU"
bottom: "Convolution18"
top: "Convolution18"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling3"
type: "Pooling"
bottom: "Convolution18"
top: "Pooling3"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution19"
type: "Convolution"
bottom: "Pooling3"
top: "Convolution19"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU18"
type: "ReLU"
bottom: "Convolution19"
top: "Convolution19"
}
layer {
name: "Convolution20"
type: "Convolution"
bottom: "Convolution19"
top: "Convolution20"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid3"
type: "Sigmoid"
bottom: "Convolution20"
top: "Convolution20"
}
layer {
name: "Flatten3"
type: "Flatten"
bottom: "Convolution20"
top: "Flatten3"
}
layer {
name: "Scale3"
type: "Scale"
bottom: "Convolution18"
bottom: "Flatten3"
top: "Scale3"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution3"
type: "Deconvolution"
bottom: "Scale3"
top: "Deconvolution3"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU19"
type: "ReLU"
bottom: "Deconvolution3"
top: "Deconvolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop2"
type: "Crop"
bottom: "Scale2"
bottom: "Deconvolution3"
top: "Crop2"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise2"
type: "Eltwise"
bottom: "Crop2"
bottom: "Deconvolution3"
top: "Eltwise2"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution21"
type: "Convolution"
bottom: "Eltwise2"
top: "Convolution21"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU20"
type: "ReLU"
bottom: "Convolution21"
top: "Convolution21"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution22"
type: "Convolution"
bottom: "Convolution21"
top: "Convolution22"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU21"
type: "ReLU"
bottom: "Convolution22"
top: "Convolution22"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling4"
type: "Pooling"
bottom: "Convolution22"
top: "Pooling4"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution23"
type: "Convolution"
bottom: "Pooling4"
top: "Convolution23"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU22"
type: "ReLU"
bottom: "Convolution23"
top: "Convolution23"
}
layer {
name: "Convolution24"
type: "Convolution"
bottom: "Convolution23"
top: "Convolution24"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid4"
type: "Sigmoid"
bottom: "Convolution24"
top: "Convolution24"
}
layer {
name: "Flatten4"
type: "Flatten"
bottom: "Convolution24"
top: "Flatten4"
}
layer {
name: "Scale4"
type: "Scale"
bottom: "Convolution22"
bottom: "Flatten4"
top: "Scale4"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution4"
type: "Deconvolution"
bottom: "Scale4"
top: "Deconvolution4"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU23"
type: "ReLU"
bottom: "Deconvolution4"
top: "Deconvolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop3"
type: "Crop"
bottom: "Convolution10"
bottom: "Deconvolution4"
top: "Crop3"
crop_param {
axis: 2
offset: 16
}
}
layer {
name: "Eltwise3"
type: "Eltwise"
bottom: "Crop3"
bottom: "Deconvolution4"
top: "Eltwise3"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution25"
type: "Convolution"
bottom: "Eltwise3"
top: "Convolution25"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU24"
type: "ReLU"
bottom: "Convolution25"
top: "Convolution25"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution26"
type: "Convolution"
bottom: "Convolution25"
top: "Convolution26"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Crop4"
type: "Crop"
bottom: "Deconvolution2"
bottom: "Convolution26"
top: "Crop4"
crop_param {
axis: 2
offset: 20
}
}
layer {
name: "Eltwise4"
type: "Eltwise"
bottom: "Crop4"
bottom: "Convolution26"
top: "Eltwise4"
eltwise_param {
operation: SUM
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,794 @@
layer {
name: "input"
type: "Input"
top: "Input1"
input_param {
shape {
dim: 1
dim: 3
dim: 200
dim: 200
}
}
}
layer {
name: "Convolution1"
type: "Convolution"
bottom: "Input1"
top: "Convolution1"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU1"
type: "ReLU"
bottom: "Convolution1"
top: "Convolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution2"
type: "Convolution"
bottom: "Convolution1"
top: "Convolution2"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU2"
type: "ReLU"
bottom: "Convolution2"
top: "Convolution2"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution3"
type: "Convolution"
bottom: "Convolution2"
top: "Convolution3"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU3"
type: "ReLU"
bottom: "Convolution3"
top: "Convolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution4"
type: "Convolution"
bottom: "Convolution3"
top: "Convolution4"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU4"
type: "ReLU"
bottom: "Convolution4"
top: "Convolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution5"
type: "Convolution"
bottom: "Convolution4"
top: "Convolution5"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU5"
type: "ReLU"
bottom: "Convolution5"
top: "Convolution5"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling1"
type: "Pooling"
bottom: "Convolution5"
top: "Pooling1"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution6"
type: "Convolution"
bottom: "Pooling1"
top: "Convolution6"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU6"
type: "ReLU"
bottom: "Convolution6"
top: "Convolution6"
}
layer {
name: "Convolution7"
type: "Convolution"
bottom: "Convolution6"
top: "Convolution7"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid1"
type: "Sigmoid"
bottom: "Convolution7"
top: "Convolution7"
}
layer {
name: "Flatten1"
type: "Flatten"
bottom: "Convolution7"
top: "Flatten1"
}
layer {
name: "Scale1"
type: "Scale"
bottom: "Convolution5"
bottom: "Flatten1"
top: "Scale1"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution1"
type: "Deconvolution"
bottom: "Scale1"
top: "Deconvolution1"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU7"
type: "ReLU"
bottom: "Deconvolution1"
top: "Deconvolution1"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop1"
type: "Crop"
bottom: "Convolution2"
bottom: "Deconvolution1"
top: "Crop1"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise1"
type: "Eltwise"
bottom: "Crop1"
bottom: "Deconvolution1"
top: "Eltwise1"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution8"
type: "Convolution"
bottom: "Eltwise1"
top: "Convolution8"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU8"
type: "ReLU"
bottom: "Convolution8"
top: "Convolution8"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Deconvolution2"
type: "Deconvolution"
bottom: "Convolution8"
top: "Deconvolution2"
convolution_param {
num_output: 3
pad: 3
kernel_size: 4
stride: 2
}
}
layer {
name: "Convolution9"
type: "Convolution"
bottom: "Deconvolution2"
top: "Convolution9"
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU9"
type: "ReLU"
bottom: "Convolution9"
top: "Convolution9"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution10"
type: "Convolution"
bottom: "Convolution9"
top: "Convolution10"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU10"
type: "ReLU"
bottom: "Convolution10"
top: "Convolution10"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution11"
type: "Convolution"
bottom: "Convolution10"
top: "Convolution11"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU11"
type: "ReLU"
bottom: "Convolution11"
top: "Convolution11"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution12"
type: "Convolution"
bottom: "Convolution11"
top: "Convolution12"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU12"
type: "ReLU"
bottom: "Convolution12"
top: "Convolution12"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution13"
type: "Convolution"
bottom: "Convolution12"
top: "Convolution13"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU13"
type: "ReLU"
bottom: "Convolution13"
top: "Convolution13"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling2"
type: "Pooling"
bottom: "Convolution13"
top: "Pooling2"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution14"
type: "Convolution"
bottom: "Pooling2"
top: "Convolution14"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU14"
type: "ReLU"
bottom: "Convolution14"
top: "Convolution14"
}
layer {
name: "Convolution15"
type: "Convolution"
bottom: "Convolution14"
top: "Convolution15"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid2"
type: "Sigmoid"
bottom: "Convolution15"
top: "Convolution15"
}
layer {
name: "Flatten2"
type: "Flatten"
bottom: "Convolution15"
top: "Flatten2"
}
layer {
name: "Scale2"
type: "Scale"
bottom: "Convolution13"
bottom: "Flatten2"
top: "Scale2"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Convolution16"
type: "Convolution"
bottom: "Scale2"
top: "Convolution16"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU15"
type: "ReLU"
bottom: "Convolution16"
top: "Convolution16"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution17"
type: "Convolution"
bottom: "Convolution16"
top: "Convolution17"
convolution_param {
num_output: 256
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU16"
type: "ReLU"
bottom: "Convolution17"
top: "Convolution17"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution18"
type: "Convolution"
bottom: "Convolution17"
top: "Convolution18"
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU17"
type: "ReLU"
bottom: "Convolution18"
top: "Convolution18"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling3"
type: "Pooling"
bottom: "Convolution18"
top: "Pooling3"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution19"
type: "Convolution"
bottom: "Pooling3"
top: "Convolution19"
convolution_param {
num_output: 16
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU18"
type: "ReLU"
bottom: "Convolution19"
top: "Convolution19"
}
layer {
name: "Convolution20"
type: "Convolution"
bottom: "Convolution19"
top: "Convolution20"
convolution_param {
num_output: 128
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid3"
type: "Sigmoid"
bottom: "Convolution20"
top: "Convolution20"
}
layer {
name: "Flatten3"
type: "Flatten"
bottom: "Convolution20"
top: "Flatten3"
}
layer {
name: "Scale3"
type: "Scale"
bottom: "Convolution18"
bottom: "Flatten3"
top: "Scale3"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution3"
type: "Deconvolution"
bottom: "Scale3"
top: "Deconvolution3"
convolution_param {
num_output: 128
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU19"
type: "ReLU"
bottom: "Deconvolution3"
top: "Deconvolution3"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop2"
type: "Crop"
bottom: "Scale2"
bottom: "Deconvolution3"
top: "Crop2"
crop_param {
axis: 2
offset: 4
}
}
layer {
name: "Eltwise2"
type: "Eltwise"
bottom: "Crop2"
bottom: "Deconvolution3"
top: "Eltwise2"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution21"
type: "Convolution"
bottom: "Eltwise2"
top: "Convolution21"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU20"
type: "ReLU"
bottom: "Convolution21"
top: "Convolution21"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution22"
type: "Convolution"
bottom: "Convolution21"
top: "Convolution22"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU21"
type: "ReLU"
bottom: "Convolution22"
top: "Convolution22"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Pooling4"
type: "Pooling"
bottom: "Convolution22"
top: "Pooling4"
pooling_param {
pool: AVE
global_pooling: true
}
}
layer {
name: "Convolution23"
type: "Convolution"
bottom: "Pooling4"
top: "Convolution23"
convolution_param {
num_output: 8
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "ReLU22"
type: "ReLU"
bottom: "Convolution23"
top: "Convolution23"
}
layer {
name: "Convolution24"
type: "Convolution"
bottom: "Convolution23"
top: "Convolution24"
convolution_param {
num_output: 64
pad: 0
kernel_size: 1
stride: 1
}
}
layer {
name: "Sigmoid4"
type: "Sigmoid"
bottom: "Convolution24"
top: "Convolution24"
}
layer {
name: "Flatten4"
type: "Flatten"
bottom: "Convolution24"
top: "Flatten4"
}
layer {
name: "Scale4"
type: "Scale"
bottom: "Convolution22"
bottom: "Flatten4"
top: "Scale4"
scale_param {
axis: 0
bias_term: false
}
}
layer {
name: "Deconvolution4"
type: "Deconvolution"
bottom: "Scale4"
top: "Deconvolution4"
convolution_param {
num_output: 64
pad: 0
kernel_size: 2
stride: 2
}
}
layer {
name: "ReLU23"
type: "ReLU"
bottom: "Deconvolution4"
top: "Deconvolution4"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Crop3"
type: "Crop"
bottom: "Convolution10"
bottom: "Deconvolution4"
top: "Crop3"
crop_param {
axis: 2
offset: 16
}
}
layer {
name: "Eltwise3"
type: "Eltwise"
bottom: "Crop3"
bottom: "Deconvolution4"
top: "Eltwise3"
eltwise_param {
operation: SUM
}
}
layer {
name: "Convolution25"
type: "Convolution"
bottom: "Eltwise3"
top: "Convolution25"
convolution_param {
num_output: 64
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "ReLU24"
type: "ReLU"
bottom: "Convolution25"
top: "Convolution25"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "Convolution26"
type: "Convolution"
bottom: "Convolution25"
top: "Convolution26"
convolution_param {
num_output: 3
pad: 0
kernel_size: 3
stride: 1
}
}
layer {
name: "Crop4"
type: "Crop"
bottom: "Deconvolution2"
bottom: "Convolution26"
top: "Crop4"
crop_param {
axis: 2
offset: 20
}
}
layer {
name: "Eltwise4"
type: "Eltwise"
bottom: "Crop4"
bottom: "Convolution26"
top: "Eltwise4"
eltwise_param {
operation: SUM
}
}

View File

@ -0,0 +1,3 @@
{"name":"UpResNet10","arch_name":"upresnet10","has_noise_scale":true,"channels":3,
"scale_factor":2,"offset":26,"recommended_crop_size":38
}

View File

@ -0,0 +1,904 @@
name: "UpResNet10_3"
layer {
name: "data"
type: "Input"
top: "input"
input_param {
shape {
dim: 1
dim: 3
dim: 90
dim: 90
}
}
}
layer {
name: "/conv_pre"
type: "Convolution"
bottom: "input"
top: "/conv_pre"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/conv_pre_relu"
type: "ReLU"
bottom: "/conv_pre"
top: "/conv_pre_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/conv1"
type: "Convolution"
bottom: "/conv_pre_relu"
top: "/res1/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res1/conv1_relu"
type: "ReLU"
bottom: "/res1/conv1"
top: "/res1/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/conv2"
type: "Convolution"
bottom: "/res1/conv1_relu"
top: "/res1/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res1/conv2_relu"
type: "ReLU"
bottom: "/res1/conv2"
top: "/res1/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/fc1_globalavgpool"
type: "Pooling"
bottom: "/res1/conv2_relu"
top: "/res1/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res1/fc1"
type: "InnerProduct"
bottom: "/res1/fc1_globalavgpool"
top: "/res1/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res1/fc1_relu"
type: "ReLU"
bottom: "/res1/fc1"
top: "/res1/fc1_relu"
}
layer {
name: "/res1/fc2"
type: "InnerProduct"
bottom: "/res1/fc1_relu"
top: "/res1/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res1/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res1/fc2"
top: "/res1/fc2_sigmoid"
}
layer {
name: "/res1/crop"
type: "CropCenter"
bottom: "/conv_pre_relu"
top: "/res1/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res1/axpy"
type: "Axpy"
bottom: "/res1/fc2_sigmoid"
bottom: "/res1/conv2_relu"
bottom: "/res1/crop"
top: "/res1/axpy"
}
layer {
name: "/res2/conv1"
type: "Convolution"
bottom: "/res1/axpy"
top: "/res2/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res2/conv1_relu"
type: "ReLU"
bottom: "/res2/conv1"
top: "/res2/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res2/conv2"
type: "Convolution"
bottom: "/res2/conv1_relu"
top: "/res2/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res2/conv2_relu"
type: "ReLU"
bottom: "/res2/conv2"
top: "/res2/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res2/fc1_globalavgpool"
type: "Pooling"
bottom: "/res2/conv2_relu"
top: "/res2/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res2/fc1"
type: "InnerProduct"
bottom: "/res2/fc1_globalavgpool"
top: "/res2/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res2/fc1_relu"
type: "ReLU"
bottom: "/res2/fc1"
top: "/res2/fc1_relu"
}
layer {
name: "/res2/fc2"
type: "InnerProduct"
bottom: "/res2/fc1_relu"
top: "/res2/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res2/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res2/fc2"
top: "/res2/fc2_sigmoid"
}
layer {
name: "/res2/crop"
type: "CropCenter"
bottom: "/res1/axpy"
top: "/res2/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res2/axpy"
type: "Axpy"
bottom: "/res2/fc2_sigmoid"
bottom: "/res2/conv2_relu"
bottom: "/res2/crop"
top: "/res2/axpy"
}
layer {
name: "/res3/conv1"
type: "Convolution"
bottom: "/res2/axpy"
top: "/res3/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res3/conv1_relu"
type: "ReLU"
bottom: "/res3/conv1"
top: "/res3/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res3/conv2"
type: "Convolution"
bottom: "/res3/conv1_relu"
top: "/res3/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res3/conv2_relu"
type: "ReLU"
bottom: "/res3/conv2"
top: "/res3/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res3/fc1_globalavgpool"
type: "Pooling"
bottom: "/res3/conv2_relu"
top: "/res3/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res3/fc1"
type: "InnerProduct"
bottom: "/res3/fc1_globalavgpool"
top: "/res3/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res3/fc1_relu"
type: "ReLU"
bottom: "/res3/fc1"
top: "/res3/fc1_relu"
}
layer {
name: "/res3/fc2"
type: "InnerProduct"
bottom: "/res3/fc1_relu"
top: "/res3/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res3/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res3/fc2"
top: "/res3/fc2_sigmoid"
}
layer {
name: "/res3/crop"
type: "CropCenter"
bottom: "/res2/axpy"
top: "/res3/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res3/axpy"
type: "Axpy"
bottom: "/res3/fc2_sigmoid"
bottom: "/res3/conv2_relu"
bottom: "/res3/crop"
top: "/res3/axpy"
}
layer {
name: "/res4/conv1"
type: "Convolution"
bottom: "/res3/axpy"
top: "/res4/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res4/conv1_relu"
type: "ReLU"
bottom: "/res4/conv1"
top: "/res4/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res4/conv2"
type: "Convolution"
bottom: "/res4/conv1_relu"
top: "/res4/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res4/conv2_relu"
type: "ReLU"
bottom: "/res4/conv2"
top: "/res4/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res4/fc1_globalavgpool"
type: "Pooling"
bottom: "/res4/conv2_relu"
top: "/res4/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res4/fc1"
type: "InnerProduct"
bottom: "/res4/fc1_globalavgpool"
top: "/res4/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res4/fc1_relu"
type: "ReLU"
bottom: "/res4/fc1"
top: "/res4/fc1_relu"
}
layer {
name: "/res4/fc2"
type: "InnerProduct"
bottom: "/res4/fc1_relu"
top: "/res4/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res4/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res4/fc2"
top: "/res4/fc2_sigmoid"
}
layer {
name: "/res4/crop"
type: "CropCenter"
bottom: "/res3/axpy"
top: "/res4/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res4/axpy"
type: "Axpy"
bottom: "/res4/fc2_sigmoid"
bottom: "/res4/conv2_relu"
bottom: "/res4/crop"
top: "/res4/axpy"
}
layer {
name: "/res5/conv1"
type: "Convolution"
bottom: "/res4/axpy"
top: "/res5/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res5/conv1_relu"
type: "ReLU"
bottom: "/res5/conv1"
top: "/res5/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res5/conv2"
type: "Convolution"
bottom: "/res5/conv1_relu"
top: "/res5/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res5/conv2_relu"
type: "ReLU"
bottom: "/res5/conv2"
top: "/res5/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res5/fc1_globalavgpool"
type: "Pooling"
bottom: "/res5/conv2_relu"
top: "/res5/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res5/fc1"
type: "InnerProduct"
bottom: "/res5/fc1_globalavgpool"
top: "/res5/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res5/fc1_relu"
type: "ReLU"
bottom: "/res5/fc1"
top: "/res5/fc1_relu"
}
layer {
name: "/res5/fc2"
type: "InnerProduct"
bottom: "/res5/fc1_relu"
top: "/res5/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res5/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res5/fc2"
top: "/res5/fc2_sigmoid"
}
layer {
name: "/res5/crop"
type: "CropCenter"
bottom: "/res4/axpy"
top: "/res5/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res5/axpy"
type: "Axpy"
bottom: "/res5/fc2_sigmoid"
bottom: "/res5/conv2_relu"
bottom: "/res5/crop"
top: "/res5/axpy"
}
layer {
name: "/conv_bridge"
type: "Convolution"
bottom: "/res5/axpy"
top: "/conv_bridge"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/conv_bridge_relu"
type: "ReLU"
bottom: "/conv_bridge"
top: "/conv_bridge_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/crop"
type: "CropCenter"
bottom: "/conv_pre_relu"
top: "/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 11
crop_size: 11
}
}
layer {
name: "/add"
type: "Eltwise"
bottom: "/conv_bridge_relu"
bottom: "/crop"
top: "/add"
}
layer {
name: "/conv_post"
type: "Deconvolution"
bottom: "/add"
top: "/conv_post"
param {
lr_mult: 1
decay_mult: 1
}
convolution_param {
num_output: 3
bias_term: false
pad: 3
kernel_size: 4
stride: 2
weight_filler {
type: "msra"
}
}
}

View File

@ -0,0 +1,904 @@
name: "UpResNet10_3"
layer {
name: "data"
type: "Input"
top: "input"
input_param {
shape {
dim: 1
dim: 3
dim: 90
dim: 90
}
}
}
layer {
name: "/conv_pre"
type: "Convolution"
bottom: "input"
top: "/conv_pre"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/conv_pre_relu"
type: "ReLU"
bottom: "/conv_pre"
top: "/conv_pre_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/conv1"
type: "Convolution"
bottom: "/conv_pre_relu"
top: "/res1/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res1/conv1_relu"
type: "ReLU"
bottom: "/res1/conv1"
top: "/res1/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/conv2"
type: "Convolution"
bottom: "/res1/conv1_relu"
top: "/res1/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res1/conv2_relu"
type: "ReLU"
bottom: "/res1/conv2"
top: "/res1/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/fc1_globalavgpool"
type: "Pooling"
bottom: "/res1/conv2_relu"
top: "/res1/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res1/fc1"
type: "InnerProduct"
bottom: "/res1/fc1_globalavgpool"
top: "/res1/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res1/fc1_relu"
type: "ReLU"
bottom: "/res1/fc1"
top: "/res1/fc1_relu"
}
layer {
name: "/res1/fc2"
type: "InnerProduct"
bottom: "/res1/fc1_relu"
top: "/res1/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res1/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res1/fc2"
top: "/res1/fc2_sigmoid"
}
layer {
name: "/res1/crop"
type: "CropCenter"
bottom: "/conv_pre_relu"
top: "/res1/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res1/axpy"
type: "Axpy"
bottom: "/res1/fc2_sigmoid"
bottom: "/res1/conv2_relu"
bottom: "/res1/crop"
top: "/res1/axpy"
}
layer {
name: "/res2/conv1"
type: "Convolution"
bottom: "/res1/axpy"
top: "/res2/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res2/conv1_relu"
type: "ReLU"
bottom: "/res2/conv1"
top: "/res2/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res2/conv2"
type: "Convolution"
bottom: "/res2/conv1_relu"
top: "/res2/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res2/conv2_relu"
type: "ReLU"
bottom: "/res2/conv2"
top: "/res2/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res2/fc1_globalavgpool"
type: "Pooling"
bottom: "/res2/conv2_relu"
top: "/res2/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res2/fc1"
type: "InnerProduct"
bottom: "/res2/fc1_globalavgpool"
top: "/res2/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res2/fc1_relu"
type: "ReLU"
bottom: "/res2/fc1"
top: "/res2/fc1_relu"
}
layer {
name: "/res2/fc2"
type: "InnerProduct"
bottom: "/res2/fc1_relu"
top: "/res2/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res2/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res2/fc2"
top: "/res2/fc2_sigmoid"
}
layer {
name: "/res2/crop"
type: "CropCenter"
bottom: "/res1/axpy"
top: "/res2/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res2/axpy"
type: "Axpy"
bottom: "/res2/fc2_sigmoid"
bottom: "/res2/conv2_relu"
bottom: "/res2/crop"
top: "/res2/axpy"
}
layer {
name: "/res3/conv1"
type: "Convolution"
bottom: "/res2/axpy"
top: "/res3/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res3/conv1_relu"
type: "ReLU"
bottom: "/res3/conv1"
top: "/res3/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res3/conv2"
type: "Convolution"
bottom: "/res3/conv1_relu"
top: "/res3/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res3/conv2_relu"
type: "ReLU"
bottom: "/res3/conv2"
top: "/res3/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res3/fc1_globalavgpool"
type: "Pooling"
bottom: "/res3/conv2_relu"
top: "/res3/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res3/fc1"
type: "InnerProduct"
bottom: "/res3/fc1_globalavgpool"
top: "/res3/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res3/fc1_relu"
type: "ReLU"
bottom: "/res3/fc1"
top: "/res3/fc1_relu"
}
layer {
name: "/res3/fc2"
type: "InnerProduct"
bottom: "/res3/fc1_relu"
top: "/res3/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res3/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res3/fc2"
top: "/res3/fc2_sigmoid"
}
layer {
name: "/res3/crop"
type: "CropCenter"
bottom: "/res2/axpy"
top: "/res3/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res3/axpy"
type: "Axpy"
bottom: "/res3/fc2_sigmoid"
bottom: "/res3/conv2_relu"
bottom: "/res3/crop"
top: "/res3/axpy"
}
layer {
name: "/res4/conv1"
type: "Convolution"
bottom: "/res3/axpy"
top: "/res4/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res4/conv1_relu"
type: "ReLU"
bottom: "/res4/conv1"
top: "/res4/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res4/conv2"
type: "Convolution"
bottom: "/res4/conv1_relu"
top: "/res4/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res4/conv2_relu"
type: "ReLU"
bottom: "/res4/conv2"
top: "/res4/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res4/fc1_globalavgpool"
type: "Pooling"
bottom: "/res4/conv2_relu"
top: "/res4/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res4/fc1"
type: "InnerProduct"
bottom: "/res4/fc1_globalavgpool"
top: "/res4/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res4/fc1_relu"
type: "ReLU"
bottom: "/res4/fc1"
top: "/res4/fc1_relu"
}
layer {
name: "/res4/fc2"
type: "InnerProduct"
bottom: "/res4/fc1_relu"
top: "/res4/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res4/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res4/fc2"
top: "/res4/fc2_sigmoid"
}
layer {
name: "/res4/crop"
type: "CropCenter"
bottom: "/res3/axpy"
top: "/res4/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res4/axpy"
type: "Axpy"
bottom: "/res4/fc2_sigmoid"
bottom: "/res4/conv2_relu"
bottom: "/res4/crop"
top: "/res4/axpy"
}
layer {
name: "/res5/conv1"
type: "Convolution"
bottom: "/res4/axpy"
top: "/res5/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res5/conv1_relu"
type: "ReLU"
bottom: "/res5/conv1"
top: "/res5/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res5/conv2"
type: "Convolution"
bottom: "/res5/conv1_relu"
top: "/res5/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res5/conv2_relu"
type: "ReLU"
bottom: "/res5/conv2"
top: "/res5/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res5/fc1_globalavgpool"
type: "Pooling"
bottom: "/res5/conv2_relu"
top: "/res5/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res5/fc1"
type: "InnerProduct"
bottom: "/res5/fc1_globalavgpool"
top: "/res5/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res5/fc1_relu"
type: "ReLU"
bottom: "/res5/fc1"
top: "/res5/fc1_relu"
}
layer {
name: "/res5/fc2"
type: "InnerProduct"
bottom: "/res5/fc1_relu"
top: "/res5/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res5/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res5/fc2"
top: "/res5/fc2_sigmoid"
}
layer {
name: "/res5/crop"
type: "CropCenter"
bottom: "/res4/axpy"
top: "/res5/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res5/axpy"
type: "Axpy"
bottom: "/res5/fc2_sigmoid"
bottom: "/res5/conv2_relu"
bottom: "/res5/crop"
top: "/res5/axpy"
}
layer {
name: "/conv_bridge"
type: "Convolution"
bottom: "/res5/axpy"
top: "/conv_bridge"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/conv_bridge_relu"
type: "ReLU"
bottom: "/conv_bridge"
top: "/conv_bridge_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/crop"
type: "CropCenter"
bottom: "/conv_pre_relu"
top: "/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 11
crop_size: 11
}
}
layer {
name: "/add"
type: "Eltwise"
bottom: "/conv_bridge_relu"
bottom: "/crop"
top: "/add"
}
layer {
name: "/conv_post"
type: "Deconvolution"
bottom: "/add"
top: "/conv_post"
param {
lr_mult: 1
decay_mult: 1
}
convolution_param {
num_output: 3
bias_term: false
pad: 3
kernel_size: 4
stride: 2
weight_filler {
type: "msra"
}
}
}

View File

@ -0,0 +1,904 @@
name: "UpResNet10_3"
layer {
name: "data"
type: "Input"
top: "input"
input_param {
shape {
dim: 1
dim: 3
dim: 90
dim: 90
}
}
}
layer {
name: "/conv_pre"
type: "Convolution"
bottom: "input"
top: "/conv_pre"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/conv_pre_relu"
type: "ReLU"
bottom: "/conv_pre"
top: "/conv_pre_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/conv1"
type: "Convolution"
bottom: "/conv_pre_relu"
top: "/res1/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res1/conv1_relu"
type: "ReLU"
bottom: "/res1/conv1"
top: "/res1/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/conv2"
type: "Convolution"
bottom: "/res1/conv1_relu"
top: "/res1/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res1/conv2_relu"
type: "ReLU"
bottom: "/res1/conv2"
top: "/res1/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/fc1_globalavgpool"
type: "Pooling"
bottom: "/res1/conv2_relu"
top: "/res1/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res1/fc1"
type: "InnerProduct"
bottom: "/res1/fc1_globalavgpool"
top: "/res1/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res1/fc1_relu"
type: "ReLU"
bottom: "/res1/fc1"
top: "/res1/fc1_relu"
}
layer {
name: "/res1/fc2"
type: "InnerProduct"
bottom: "/res1/fc1_relu"
top: "/res1/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res1/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res1/fc2"
top: "/res1/fc2_sigmoid"
}
layer {
name: "/res1/crop"
type: "CropCenter"
bottom: "/conv_pre_relu"
top: "/res1/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res1/axpy"
type: "Axpy"
bottom: "/res1/fc2_sigmoid"
bottom: "/res1/conv2_relu"
bottom: "/res1/crop"
top: "/res1/axpy"
}
layer {
name: "/res2/conv1"
type: "Convolution"
bottom: "/res1/axpy"
top: "/res2/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res2/conv1_relu"
type: "ReLU"
bottom: "/res2/conv1"
top: "/res2/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res2/conv2"
type: "Convolution"
bottom: "/res2/conv1_relu"
top: "/res2/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res2/conv2_relu"
type: "ReLU"
bottom: "/res2/conv2"
top: "/res2/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res2/fc1_globalavgpool"
type: "Pooling"
bottom: "/res2/conv2_relu"
top: "/res2/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res2/fc1"
type: "InnerProduct"
bottom: "/res2/fc1_globalavgpool"
top: "/res2/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res2/fc1_relu"
type: "ReLU"
bottom: "/res2/fc1"
top: "/res2/fc1_relu"
}
layer {
name: "/res2/fc2"
type: "InnerProduct"
bottom: "/res2/fc1_relu"
top: "/res2/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res2/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res2/fc2"
top: "/res2/fc2_sigmoid"
}
layer {
name: "/res2/crop"
type: "CropCenter"
bottom: "/res1/axpy"
top: "/res2/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res2/axpy"
type: "Axpy"
bottom: "/res2/fc2_sigmoid"
bottom: "/res2/conv2_relu"
bottom: "/res2/crop"
top: "/res2/axpy"
}
layer {
name: "/res3/conv1"
type: "Convolution"
bottom: "/res2/axpy"
top: "/res3/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res3/conv1_relu"
type: "ReLU"
bottom: "/res3/conv1"
top: "/res3/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res3/conv2"
type: "Convolution"
bottom: "/res3/conv1_relu"
top: "/res3/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res3/conv2_relu"
type: "ReLU"
bottom: "/res3/conv2"
top: "/res3/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res3/fc1_globalavgpool"
type: "Pooling"
bottom: "/res3/conv2_relu"
top: "/res3/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res3/fc1"
type: "InnerProduct"
bottom: "/res3/fc1_globalavgpool"
top: "/res3/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res3/fc1_relu"
type: "ReLU"
bottom: "/res3/fc1"
top: "/res3/fc1_relu"
}
layer {
name: "/res3/fc2"
type: "InnerProduct"
bottom: "/res3/fc1_relu"
top: "/res3/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res3/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res3/fc2"
top: "/res3/fc2_sigmoid"
}
layer {
name: "/res3/crop"
type: "CropCenter"
bottom: "/res2/axpy"
top: "/res3/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res3/axpy"
type: "Axpy"
bottom: "/res3/fc2_sigmoid"
bottom: "/res3/conv2_relu"
bottom: "/res3/crop"
top: "/res3/axpy"
}
layer {
name: "/res4/conv1"
type: "Convolution"
bottom: "/res3/axpy"
top: "/res4/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res4/conv1_relu"
type: "ReLU"
bottom: "/res4/conv1"
top: "/res4/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res4/conv2"
type: "Convolution"
bottom: "/res4/conv1_relu"
top: "/res4/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res4/conv2_relu"
type: "ReLU"
bottom: "/res4/conv2"
top: "/res4/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res4/fc1_globalavgpool"
type: "Pooling"
bottom: "/res4/conv2_relu"
top: "/res4/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res4/fc1"
type: "InnerProduct"
bottom: "/res4/fc1_globalavgpool"
top: "/res4/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res4/fc1_relu"
type: "ReLU"
bottom: "/res4/fc1"
top: "/res4/fc1_relu"
}
layer {
name: "/res4/fc2"
type: "InnerProduct"
bottom: "/res4/fc1_relu"
top: "/res4/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res4/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res4/fc2"
top: "/res4/fc2_sigmoid"
}
layer {
name: "/res4/crop"
type: "CropCenter"
bottom: "/res3/axpy"
top: "/res4/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res4/axpy"
type: "Axpy"
bottom: "/res4/fc2_sigmoid"
bottom: "/res4/conv2_relu"
bottom: "/res4/crop"
top: "/res4/axpy"
}
layer {
name: "/res5/conv1"
type: "Convolution"
bottom: "/res4/axpy"
top: "/res5/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res5/conv1_relu"
type: "ReLU"
bottom: "/res5/conv1"
top: "/res5/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res5/conv2"
type: "Convolution"
bottom: "/res5/conv1_relu"
top: "/res5/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res5/conv2_relu"
type: "ReLU"
bottom: "/res5/conv2"
top: "/res5/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res5/fc1_globalavgpool"
type: "Pooling"
bottom: "/res5/conv2_relu"
top: "/res5/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res5/fc1"
type: "InnerProduct"
bottom: "/res5/fc1_globalavgpool"
top: "/res5/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res5/fc1_relu"
type: "ReLU"
bottom: "/res5/fc1"
top: "/res5/fc1_relu"
}
layer {
name: "/res5/fc2"
type: "InnerProduct"
bottom: "/res5/fc1_relu"
top: "/res5/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res5/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res5/fc2"
top: "/res5/fc2_sigmoid"
}
layer {
name: "/res5/crop"
type: "CropCenter"
bottom: "/res4/axpy"
top: "/res5/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res5/axpy"
type: "Axpy"
bottom: "/res5/fc2_sigmoid"
bottom: "/res5/conv2_relu"
bottom: "/res5/crop"
top: "/res5/axpy"
}
layer {
name: "/conv_bridge"
type: "Convolution"
bottom: "/res5/axpy"
top: "/conv_bridge"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/conv_bridge_relu"
type: "ReLU"
bottom: "/conv_bridge"
top: "/conv_bridge_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/crop"
type: "CropCenter"
bottom: "/conv_pre_relu"
top: "/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 11
crop_size: 11
}
}
layer {
name: "/add"
type: "Eltwise"
bottom: "/conv_bridge_relu"
bottom: "/crop"
top: "/add"
}
layer {
name: "/conv_post"
type: "Deconvolution"
bottom: "/add"
top: "/conv_post"
param {
lr_mult: 1
decay_mult: 1
}
convolution_param {
num_output: 3
bias_term: false
pad: 3
kernel_size: 4
stride: 2
weight_filler {
type: "msra"
}
}
}

View File

@ -0,0 +1,904 @@
name: "UpResNet10_3"
layer {
name: "data"
type: "Input"
top: "input"
input_param {
shape {
dim: 1
dim: 3
dim: 90
dim: 90
}
}
}
layer {
name: "/conv_pre"
type: "Convolution"
bottom: "input"
top: "/conv_pre"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/conv_pre_relu"
type: "ReLU"
bottom: "/conv_pre"
top: "/conv_pre_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/conv1"
type: "Convolution"
bottom: "/conv_pre_relu"
top: "/res1/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res1/conv1_relu"
type: "ReLU"
bottom: "/res1/conv1"
top: "/res1/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/conv2"
type: "Convolution"
bottom: "/res1/conv1_relu"
top: "/res1/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res1/conv2_relu"
type: "ReLU"
bottom: "/res1/conv2"
top: "/res1/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/fc1_globalavgpool"
type: "Pooling"
bottom: "/res1/conv2_relu"
top: "/res1/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res1/fc1"
type: "InnerProduct"
bottom: "/res1/fc1_globalavgpool"
top: "/res1/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res1/fc1_relu"
type: "ReLU"
bottom: "/res1/fc1"
top: "/res1/fc1_relu"
}
layer {
name: "/res1/fc2"
type: "InnerProduct"
bottom: "/res1/fc1_relu"
top: "/res1/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res1/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res1/fc2"
top: "/res1/fc2_sigmoid"
}
layer {
name: "/res1/crop"
type: "CropCenter"
bottom: "/conv_pre_relu"
top: "/res1/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res1/axpy"
type: "Axpy"
bottom: "/res1/fc2_sigmoid"
bottom: "/res1/conv2_relu"
bottom: "/res1/crop"
top: "/res1/axpy"
}
layer {
name: "/res2/conv1"
type: "Convolution"
bottom: "/res1/axpy"
top: "/res2/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res2/conv1_relu"
type: "ReLU"
bottom: "/res2/conv1"
top: "/res2/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res2/conv2"
type: "Convolution"
bottom: "/res2/conv1_relu"
top: "/res2/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res2/conv2_relu"
type: "ReLU"
bottom: "/res2/conv2"
top: "/res2/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res2/fc1_globalavgpool"
type: "Pooling"
bottom: "/res2/conv2_relu"
top: "/res2/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res2/fc1"
type: "InnerProduct"
bottom: "/res2/fc1_globalavgpool"
top: "/res2/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res2/fc1_relu"
type: "ReLU"
bottom: "/res2/fc1"
top: "/res2/fc1_relu"
}
layer {
name: "/res2/fc2"
type: "InnerProduct"
bottom: "/res2/fc1_relu"
top: "/res2/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res2/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res2/fc2"
top: "/res2/fc2_sigmoid"
}
layer {
name: "/res2/crop"
type: "CropCenter"
bottom: "/res1/axpy"
top: "/res2/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res2/axpy"
type: "Axpy"
bottom: "/res2/fc2_sigmoid"
bottom: "/res2/conv2_relu"
bottom: "/res2/crop"
top: "/res2/axpy"
}
layer {
name: "/res3/conv1"
type: "Convolution"
bottom: "/res2/axpy"
top: "/res3/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res3/conv1_relu"
type: "ReLU"
bottom: "/res3/conv1"
top: "/res3/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res3/conv2"
type: "Convolution"
bottom: "/res3/conv1_relu"
top: "/res3/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res3/conv2_relu"
type: "ReLU"
bottom: "/res3/conv2"
top: "/res3/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res3/fc1_globalavgpool"
type: "Pooling"
bottom: "/res3/conv2_relu"
top: "/res3/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res3/fc1"
type: "InnerProduct"
bottom: "/res3/fc1_globalavgpool"
top: "/res3/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res3/fc1_relu"
type: "ReLU"
bottom: "/res3/fc1"
top: "/res3/fc1_relu"
}
layer {
name: "/res3/fc2"
type: "InnerProduct"
bottom: "/res3/fc1_relu"
top: "/res3/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res3/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res3/fc2"
top: "/res3/fc2_sigmoid"
}
layer {
name: "/res3/crop"
type: "CropCenter"
bottom: "/res2/axpy"
top: "/res3/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res3/axpy"
type: "Axpy"
bottom: "/res3/fc2_sigmoid"
bottom: "/res3/conv2_relu"
bottom: "/res3/crop"
top: "/res3/axpy"
}
layer {
name: "/res4/conv1"
type: "Convolution"
bottom: "/res3/axpy"
top: "/res4/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res4/conv1_relu"
type: "ReLU"
bottom: "/res4/conv1"
top: "/res4/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res4/conv2"
type: "Convolution"
bottom: "/res4/conv1_relu"
top: "/res4/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res4/conv2_relu"
type: "ReLU"
bottom: "/res4/conv2"
top: "/res4/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res4/fc1_globalavgpool"
type: "Pooling"
bottom: "/res4/conv2_relu"
top: "/res4/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res4/fc1"
type: "InnerProduct"
bottom: "/res4/fc1_globalavgpool"
top: "/res4/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res4/fc1_relu"
type: "ReLU"
bottom: "/res4/fc1"
top: "/res4/fc1_relu"
}
layer {
name: "/res4/fc2"
type: "InnerProduct"
bottom: "/res4/fc1_relu"
top: "/res4/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res4/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res4/fc2"
top: "/res4/fc2_sigmoid"
}
layer {
name: "/res4/crop"
type: "CropCenter"
bottom: "/res3/axpy"
top: "/res4/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res4/axpy"
type: "Axpy"
bottom: "/res4/fc2_sigmoid"
bottom: "/res4/conv2_relu"
bottom: "/res4/crop"
top: "/res4/axpy"
}
layer {
name: "/res5/conv1"
type: "Convolution"
bottom: "/res4/axpy"
top: "/res5/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res5/conv1_relu"
type: "ReLU"
bottom: "/res5/conv1"
top: "/res5/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res5/conv2"
type: "Convolution"
bottom: "/res5/conv1_relu"
top: "/res5/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res5/conv2_relu"
type: "ReLU"
bottom: "/res5/conv2"
top: "/res5/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res5/fc1_globalavgpool"
type: "Pooling"
bottom: "/res5/conv2_relu"
top: "/res5/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res5/fc1"
type: "InnerProduct"
bottom: "/res5/fc1_globalavgpool"
top: "/res5/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res5/fc1_relu"
type: "ReLU"
bottom: "/res5/fc1"
top: "/res5/fc1_relu"
}
layer {
name: "/res5/fc2"
type: "InnerProduct"
bottom: "/res5/fc1_relu"
top: "/res5/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res5/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res5/fc2"
top: "/res5/fc2_sigmoid"
}
layer {
name: "/res5/crop"
type: "CropCenter"
bottom: "/res4/axpy"
top: "/res5/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res5/axpy"
type: "Axpy"
bottom: "/res5/fc2_sigmoid"
bottom: "/res5/conv2_relu"
bottom: "/res5/crop"
top: "/res5/axpy"
}
layer {
name: "/conv_bridge"
type: "Convolution"
bottom: "/res5/axpy"
top: "/conv_bridge"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/conv_bridge_relu"
type: "ReLU"
bottom: "/conv_bridge"
top: "/conv_bridge_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/crop"
type: "CropCenter"
bottom: "/conv_pre_relu"
top: "/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 11
crop_size: 11
}
}
layer {
name: "/add"
type: "Eltwise"
bottom: "/conv_bridge_relu"
bottom: "/crop"
top: "/add"
}
layer {
name: "/conv_post"
type: "Deconvolution"
bottom: "/add"
top: "/conv_post"
param {
lr_mult: 1
decay_mult: 1
}
convolution_param {
num_output: 3
bias_term: false
pad: 3
kernel_size: 4
stride: 2
weight_filler {
type: "msra"
}
}
}

Binary file not shown.

View File

@ -0,0 +1,904 @@
name: "UpResNet10_3"
layer {
name: "data"
type: "Input"
top: "input"
input_param {
shape {
dim: 1
dim: 3
dim: 90
dim: 90
}
}
}
layer {
name: "/conv_pre"
type: "Convolution"
bottom: "input"
top: "/conv_pre"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/conv_pre_relu"
type: "ReLU"
bottom: "/conv_pre"
top: "/conv_pre_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/conv1"
type: "Convolution"
bottom: "/conv_pre_relu"
top: "/res1/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res1/conv1_relu"
type: "ReLU"
bottom: "/res1/conv1"
top: "/res1/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/conv2"
type: "Convolution"
bottom: "/res1/conv1_relu"
top: "/res1/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res1/conv2_relu"
type: "ReLU"
bottom: "/res1/conv2"
top: "/res1/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res1/fc1_globalavgpool"
type: "Pooling"
bottom: "/res1/conv2_relu"
top: "/res1/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res1/fc1"
type: "InnerProduct"
bottom: "/res1/fc1_globalavgpool"
top: "/res1/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res1/fc1_relu"
type: "ReLU"
bottom: "/res1/fc1"
top: "/res1/fc1_relu"
}
layer {
name: "/res1/fc2"
type: "InnerProduct"
bottom: "/res1/fc1_relu"
top: "/res1/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res1/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res1/fc2"
top: "/res1/fc2_sigmoid"
}
layer {
name: "/res1/crop"
type: "CropCenter"
bottom: "/conv_pre_relu"
top: "/res1/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res1/axpy"
type: "Axpy"
bottom: "/res1/fc2_sigmoid"
bottom: "/res1/conv2_relu"
bottom: "/res1/crop"
top: "/res1/axpy"
}
layer {
name: "/res2/conv1"
type: "Convolution"
bottom: "/res1/axpy"
top: "/res2/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res2/conv1_relu"
type: "ReLU"
bottom: "/res2/conv1"
top: "/res2/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res2/conv2"
type: "Convolution"
bottom: "/res2/conv1_relu"
top: "/res2/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res2/conv2_relu"
type: "ReLU"
bottom: "/res2/conv2"
top: "/res2/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res2/fc1_globalavgpool"
type: "Pooling"
bottom: "/res2/conv2_relu"
top: "/res2/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res2/fc1"
type: "InnerProduct"
bottom: "/res2/fc1_globalavgpool"
top: "/res2/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res2/fc1_relu"
type: "ReLU"
bottom: "/res2/fc1"
top: "/res2/fc1_relu"
}
layer {
name: "/res2/fc2"
type: "InnerProduct"
bottom: "/res2/fc1_relu"
top: "/res2/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res2/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res2/fc2"
top: "/res2/fc2_sigmoid"
}
layer {
name: "/res2/crop"
type: "CropCenter"
bottom: "/res1/axpy"
top: "/res2/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res2/axpy"
type: "Axpy"
bottom: "/res2/fc2_sigmoid"
bottom: "/res2/conv2_relu"
bottom: "/res2/crop"
top: "/res2/axpy"
}
layer {
name: "/res3/conv1"
type: "Convolution"
bottom: "/res2/axpy"
top: "/res3/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res3/conv1_relu"
type: "ReLU"
bottom: "/res3/conv1"
top: "/res3/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res3/conv2"
type: "Convolution"
bottom: "/res3/conv1_relu"
top: "/res3/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res3/conv2_relu"
type: "ReLU"
bottom: "/res3/conv2"
top: "/res3/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res3/fc1_globalavgpool"
type: "Pooling"
bottom: "/res3/conv2_relu"
top: "/res3/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res3/fc1"
type: "InnerProduct"
bottom: "/res3/fc1_globalavgpool"
top: "/res3/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res3/fc1_relu"
type: "ReLU"
bottom: "/res3/fc1"
top: "/res3/fc1_relu"
}
layer {
name: "/res3/fc2"
type: "InnerProduct"
bottom: "/res3/fc1_relu"
top: "/res3/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res3/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res3/fc2"
top: "/res3/fc2_sigmoid"
}
layer {
name: "/res3/crop"
type: "CropCenter"
bottom: "/res2/axpy"
top: "/res3/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res3/axpy"
type: "Axpy"
bottom: "/res3/fc2_sigmoid"
bottom: "/res3/conv2_relu"
bottom: "/res3/crop"
top: "/res3/axpy"
}
layer {
name: "/res4/conv1"
type: "Convolution"
bottom: "/res3/axpy"
top: "/res4/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res4/conv1_relu"
type: "ReLU"
bottom: "/res4/conv1"
top: "/res4/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res4/conv2"
type: "Convolution"
bottom: "/res4/conv1_relu"
top: "/res4/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res4/conv2_relu"
type: "ReLU"
bottom: "/res4/conv2"
top: "/res4/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res4/fc1_globalavgpool"
type: "Pooling"
bottom: "/res4/conv2_relu"
top: "/res4/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res4/fc1"
type: "InnerProduct"
bottom: "/res4/fc1_globalavgpool"
top: "/res4/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res4/fc1_relu"
type: "ReLU"
bottom: "/res4/fc1"
top: "/res4/fc1_relu"
}
layer {
name: "/res4/fc2"
type: "InnerProduct"
bottom: "/res4/fc1_relu"
top: "/res4/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res4/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res4/fc2"
top: "/res4/fc2_sigmoid"
}
layer {
name: "/res4/crop"
type: "CropCenter"
bottom: "/res3/axpy"
top: "/res4/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res4/axpy"
type: "Axpy"
bottom: "/res4/fc2_sigmoid"
bottom: "/res4/conv2_relu"
bottom: "/res4/crop"
top: "/res4/axpy"
}
layer {
name: "/res5/conv1"
type: "Convolution"
bottom: "/res4/axpy"
top: "/res5/conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res5/conv1_relu"
type: "ReLU"
bottom: "/res5/conv1"
top: "/res5/conv1_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res5/conv2"
type: "Convolution"
bottom: "/res5/conv1_relu"
top: "/res5/conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/res5/conv2_relu"
type: "ReLU"
bottom: "/res5/conv2"
top: "/res5/conv2_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/res5/fc1_globalavgpool"
type: "Pooling"
bottom: "/res5/conv2_relu"
top: "/res5/fc1_globalavgpool"
pooling_param {
pool: AVE
stride: 1
pad: 0
engine: CAFFE
global_pooling: true
}
}
layer {
name: "/res5/fc1"
type: "InnerProduct"
bottom: "/res5/fc1_globalavgpool"
top: "/res5/fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 16
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res5/fc1_relu"
type: "ReLU"
bottom: "/res5/fc1"
top: "/res5/fc1_relu"
}
layer {
name: "/res5/fc2"
type: "InnerProduct"
bottom: "/res5/fc1_relu"
top: "/res5/fc2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 64
weight_filler {
type: "msra"
}
bias_filler {
value: 0
}
}
}
layer {
name: "/res5/fc2_sigmoid"
type: "Sigmoid"
bottom: "/res5/fc2"
top: "/res5/fc2_sigmoid"
}
layer {
name: "/res5/crop"
type: "CropCenter"
bottom: "/res4/axpy"
top: "/res5/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 2
crop_size: 2
}
}
layer {
name: "/res5/axpy"
type: "Axpy"
bottom: "/res5/fc2_sigmoid"
bottom: "/res5/conv2_relu"
bottom: "/res5/crop"
top: "/res5/axpy"
}
layer {
name: "/conv_bridge"
type: "Convolution"
bottom: "/res5/axpy"
top: "/conv_bridge"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
bias_term: true
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "/conv_bridge_relu"
type: "ReLU"
bottom: "/conv_bridge"
top: "/conv_bridge_relu"
relu_param {
negative_slope: 0.1
}
}
layer {
name: "/crop"
type: "CropCenter"
bottom: "/conv_pre_relu"
top: "/crop"
crop_center_param {
crop_size: 0
crop_size: 0
crop_size: 11
crop_size: 11
}
}
layer {
name: "/add"
type: "Eltwise"
bottom: "/conv_bridge_relu"
bottom: "/crop"
top: "/add"
}
layer {
name: "/conv_post"
type: "Deconvolution"
bottom: "/add"
top: "/conv_post"
param {
lr_mult: 1
decay_mult: 1
}
convolution_param {
num_output: 3
bias_term: false
pad: 3
kernel_size: 4
stride: 2
weight_filler {
type: "msra"
}
}
}

View File

@ -0,0 +1,6 @@
@echo off
cd "%~dp0"
set CUDA_VISIBLE_DEVICES=-1
start waifu2x-caffe-gui.exe

1
caffe Submodule

@ -0,0 +1 @@
Subproject commit 9d5aa36c65a0082768f10c1d474c56d8a7cc9934

27
caffe_build.bat Normal file
View File

@ -0,0 +1,27 @@
@echo off
cd /d "%~dp0"
cd caffe
set MSVC_VERSION=14
set USE_CUDNN=1
set USE_NCCL=0
set USE_OPENCV=0
set USE_LEVELDB=0
set USE_LMDB=0
set USE_HDF5=0
set WITH_NINJA=0
set CPU_ONLY=0
set CUDA_ARCH_NAME=Manual
set CMAKE_CONFIG=Release
set WITH_CUDA=1
set BUILD_PYTHON=0
set BUILD_PYTHON_LAYER=0
set RUN_TESTS=0
set CMAKE_INSTALL_PREFIX=../../lib
set RUN_INSTALL=1
set CUDA_ARCH_BIN=35 50 52 53 60 61 62 70 75 80
set CUDA_ARCH_PTX=80
scripts\build_win.cmd

View File

@ -174,7 +174,7 @@ cNet::cNet() : mModelScale(0), mInnerScale(0), mNetOffset(0), mInputPlane(0), mH
cNet::~cNet() cNet::~cNet()
{} {}
Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path, stInfo &info) Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path, Waifu2x::stInfo &info)
{ {
rapidjson::Document d; rapidjson::Document d;
std::vector<char> jsonBuf; std::vector<char> jsonBuf;
@ -190,12 +190,16 @@ Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path,
const auto name = d["name"].GetString(); const auto name = d["name"].GetString();
const auto arch_name = d["arch_name"].GetString(); 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 bool has_noise_scale = d.HasMember("has_noise_scale") && d["has_noise_scale"].GetBool() ? true : false;
const bool has_noise_only = d.HasMember("has_noise_only") && d["has_noise_only"].GetBool() ? true : false;
const int channels = d["channels"].GetInt(); const int channels = d["channels"].GetInt();
const int force_divisible_crop_size = d.HasMember("force_divisible_crop_size") ? d["force_divisible_crop_size"].GetInt() : 1;
info.name = name; info.name = name;
info.arch_name = arch_name; info.arch_name = arch_name;
info.has_noise_scale = has_noise_scale; info.has_noise_scale = has_noise_scale;
info.has_noise_only = has_noise_only;
info.channels = channels; info.channels = channels;
info.force_divisible_crop_size = force_divisible_crop_size;
if (d.HasMember("offset")) if (d.HasMember("offset"))
{ {
@ -215,6 +219,14 @@ Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path,
info.noise_scale.scale_factor = scale_factor; 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")) if (d.HasMember("offset_noise"))
{ {
const int offset = d["offset_noise"].GetInt(); const int offset = d["offset_noise"].GetInt();
@ -227,6 +239,12 @@ Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path,
info.noise.scale_factor = scale_factor; 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")) if (d.HasMember("offset_scale"))
{ {
const int offset = d["offset_scale"].GetInt(); const int offset = d["offset_scale"].GetInt();
@ -239,6 +257,12 @@ Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path,
info.scale.scale_factor = scale_factor; 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")) if (d.HasMember("offset_noise_scale"))
{ {
const int offset = d["offset_noise_scale"].GetInt(); const int offset = d["offset_noise_scale"].GetInt();
@ -250,6 +274,12 @@ Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path,
const int scale_factor = d["scale_factor_noise_scale"].GetInt(); const int scale_factor = d["scale_factor_noise_scale"].GetInt();
info.noise_scale.scale_factor = scale_factor; 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 (...) catch (...)
{ {
@ -261,7 +291,7 @@ Waifu2x::eWaifu2xError cNet::GetInfo(const boost::filesystem::path & info_path,
// モデルファイルからネットワークを構築 // モデルファイルからネットワークを構築
// processでcudnnが指定されなかった場合はcuDNNが呼び出されないように変更する // processでcudnnが指定されなかった場合はcuDNNが呼び出されないように変更する
Waifu2x::eWaifu2xError cNet::ConstractNet(const Waifu2x::eWaifu2xModelType mode, const boost::filesystem::path &model_path, const boost::filesystem::path &param_path, const stInfo &info, const std::string &process) Waifu2x::eWaifu2xError cNet::ConstractNet(const Waifu2x::eWaifu2xModelType mode, const boost::filesystem::path &model_path, const boost::filesystem::path &param_path, const Waifu2x::stInfo &info, const std::string &process)
{ {
Waifu2x::eWaifu2xError ret; Waifu2x::eWaifu2xError ret;
@ -280,8 +310,20 @@ Waifu2x::eWaifu2xError cNet::ConstractNet(const Waifu2x::eWaifu2xModelType mode,
const auto retModelBin = readProtoBinary(modelbin_path, &param_model); const auto retModelBin = readProtoBinary(modelbin_path, &param_model);
const auto retParamBin = readProtoBinary(caffemodel_path, &param_caffemodel); const auto retParamBin = readProtoBinary(caffemodel_path, &param_caffemodel);
if (retModelBin == Waifu2x::eWaifu2xError_OK && retParamBin == Waifu2x::eWaifu2xError_OK) if ( retParamBin == Waifu2x::eWaifu2xError_OK &&
(retModelBin == Waifu2x::eWaifu2xError_OK || retModelBin == Waifu2x::eWaifu2xError_FailedOpenModelFile))
{ {
if (retModelBin == Waifu2x::eWaifu2xError_FailedOpenModelFile) // protobinのみが読み込めなかったときはprototxtから読み込む(ついでにprotobinも書き込む)
{
ret = readProtoText(model_path, &param_model);
if (ret != Waifu2x::eWaifu2xError_OK)
return ret;
ret = writeProtoBinary(param_model, modelbin_path);
if (ret != Waifu2x::eWaifu2xError_OK)
return ret;
}
ret = SetParameter(param_model, process); ret = SetParameter(param_model, process);
if (ret != Waifu2x::eWaifu2xError_OK) if (ret != Waifu2x::eWaifu2xError_OK)
return ret; return ret;
@ -309,11 +351,11 @@ Waifu2x::eWaifu2xError cNet::ConstractNet(const Waifu2x::eWaifu2xModelType mode,
return Waifu2x::eWaifu2xError_OK; return Waifu2x::eWaifu2xError_OK;
} }
void cNet::LoadParamFromInfo(const Waifu2x::eWaifu2xModelType mode, const stInfo &info) void cNet::LoadParamFromInfo(const Waifu2x::eWaifu2xModelType mode, const Waifu2x::stInfo &info)
{ {
mModelScale = 2; // TODO: 動的に設定するようにする mModelScale = 2; // TODO: 動的に設定するようにする
stInfo::stParam param; Waifu2x::stInfo::stParam param;
switch (mode) switch (mode)
{ {
@ -376,6 +418,20 @@ Waifu2x::eWaifu2xError cNet::SetParameter(caffe::NetParameter &param, const std:
else else
layer_param->mutable_relu_param()->set_engine(caffe::ReLUParameter_Engine_CAFFE); layer_param->mutable_relu_param()->set_engine(caffe::ReLUParameter_Engine_CAFFE);
} }
else if (type == "Sigmoid")
{
if (process == "cudnn")
layer_param->mutable_sigmoid_param()->set_engine(caffe::SigmoidParameter_Engine_CUDNN);
else
layer_param->mutable_sigmoid_param()->set_engine(caffe::SigmoidParameter_Engine_CAFFE);
}
else if (type == "Pooling")
{
if (process == "cudnn")
layer_param->mutable_pooling_param()->set_engine(caffe::PoolingParameter_Engine_CUDNN);
else
layer_param->mutable_pooling_param()->set_engine(caffe::PoolingParameter_Engine_CAFFE);
}
} }
return Waifu2x::eWaifu2xError_OK; return Waifu2x::eWaifu2xError_OK;
@ -435,9 +491,6 @@ Waifu2x::eWaifu2xError cNet::LoadParameterFromJson(const boost::filesystem::path
return Waifu2x::eWaifu2xError_FailedParseModelFile; return Waifu2x::eWaifu2xError_FailedParseModelFile;
} }
if (d.Size() != 7)
return Waifu2x::eWaifu2xError_FailedParseModelFile;
int inputPlane = 0; int inputPlane = 0;
int outputPlane = 0; int outputPlane = 0;
try try
@ -456,9 +509,6 @@ Waifu2x::eWaifu2xError cNet::LoadParameterFromJson(const boost::filesystem::path
if (inputPlane != outputPlane) if (inputPlane != outputPlane)
return Waifu2x::eWaifu2xError_FailedParseModelFile; return Waifu2x::eWaifu2xError_FailedParseModelFile;
//if (param.layer_size() < 17)
// return Waifu2x::eWaifu2xError_FailedParseModelFile;
std::vector<boost::shared_ptr<caffe::Layer<float>>> list; std::vector<boost::shared_ptr<caffe::Layer<float>>> list;
auto &v = mNet->layers(); auto &v = mNet->layers();
for (auto &l : v) for (auto &l : v)
@ -812,7 +862,7 @@ std::string cNet::GetModelName(const boost::filesystem::path &info_path)
{ {
Waifu2x::eWaifu2xError ret; Waifu2x::eWaifu2xError ret;
stInfo info; Waifu2x::stInfo info;
ret = GetInfo(info_path, info); ret = GetInfo(info_path, info);
if (ret != Waifu2x::eWaifu2xError_OK) if (ret != Waifu2x::eWaifu2xError_OK)
return std::string(); return std::string();

View File

@ -4,24 +4,6 @@
#include "waifu2x.h" #include "waifu2x.h"
struct stInfo
{
struct stParam
{
int scale_factor;
int offset;
};
std::string name;
std::string arch_name;
bool has_noise_scale;
int channels;
stParam noise;
stParam scale;
stParam noise_scale;
};
class cNet class cNet
{ {
private: private:
@ -36,7 +18,7 @@ private:
bool mHasNoiseScaleModel; bool mHasNoiseScaleModel;
private: private:
void LoadParamFromInfo(const Waifu2x::eWaifu2xModelType mode, const stInfo &info); void LoadParamFromInfo(const Waifu2x::eWaifu2xModelType mode, const Waifu2x::stInfo &info);
Waifu2x::eWaifu2xError LoadParameterFromJson(const boost::filesystem::path &model_path, const boost::filesystem::path &param_path Waifu2x::eWaifu2xError LoadParameterFromJson(const boost::filesystem::path &model_path, const boost::filesystem::path &param_path
, const boost::filesystem::path &modelbin_path, const boost::filesystem::path &caffemodel_path, const std::string &process); , const boost::filesystem::path &modelbin_path, const boost::filesystem::path &caffemodel_path, const std::string &process);
Waifu2x::eWaifu2xError SetParameter(caffe::NetParameter &param, const std::string &process) const; Waifu2x::eWaifu2xError SetParameter(caffe::NetParameter &param, const std::string &process) const;
@ -45,9 +27,9 @@ public:
cNet(); cNet();
~cNet(); ~cNet();
static Waifu2x::eWaifu2xError GetInfo(const boost::filesystem::path &info_path, stInfo &info); static Waifu2x::eWaifu2xError GetInfo(const boost::filesystem::path &info_path, Waifu2x::stInfo &info);
Waifu2x::eWaifu2xError ConstractNet(const Waifu2x::eWaifu2xModelType mode, const boost::filesystem::path &model_path, const boost::filesystem::path &param_path, const stInfo &info, const std::string &process); Waifu2x::eWaifu2xError ConstractNet(const Waifu2x::eWaifu2xModelType mode, const boost::filesystem::path &model_path, const boost::filesystem::path &param_path, const Waifu2x::stInfo &info, const std::string &process);
int GetInputPlane() const; int GetInputPlane() const;
int GetInnerScale() const; int GetInnerScale() const;

View File

@ -744,10 +744,6 @@ void stImage::DeconvertFromNetFormat(const int input_plane)
void stImage::ShrinkImage(const Factor scale) void stImage::ShrinkImage(const Factor scale)
{ {
// TODO: scale = 1.0 でも悪影響を及ぼさないか調べる
const int scaleBase = 2; // TODO: モデルの拡大率によって可変できるようにする
const auto Width = scale.MultiNumerator(mOrgSize.width); const auto Width = scale.MultiNumerator(mOrgSize.width);
const auto Height = scale.MultiNumerator(mOrgSize.height); const auto Height = scale.MultiNumerator(mOrgSize.height);
@ -765,12 +761,15 @@ void stImage::ShrinkImage(const Factor scale)
void stImage::ShrinkImage(const int width, const int height) void stImage::ShrinkImage(const int width, const int height)
{ {
// TODO: scale = 1.0 でも悪影響を及ぼさないか調べる
const cv::Size_<int> ns(width, height); const cv::Size_<int> ns(width, height);
if (mEndImage.size().width != ns.width || mEndImage.size().height != ns.height) if (mEndImage.size().width != ns.width || mEndImage.size().height != ns.height)
{ {
const auto scale_width = (float)mEndImage.size().width / (float)ns.width;
const auto scale_height = (float)mEndImage.size().height / (float)ns.height;
int argo = cv::INTER_CUBIC; int argo = cv::INTER_CUBIC;
if (scale_width < 0.5 || scale_height < 0.5)
argo = cv::INTER_AREA;
cv::resize(mEndImage, mEndImage, ns, 0.0, 0.0, argo); cv::resize(mEndImage, mEndImage, ns, 0.0, 0.0, argo);
} }

View File

@ -41,12 +41,14 @@
#pragma comment(lib, "opencv_core" CV_VERSION_STR CV_EXT_STR) #pragma comment(lib, "opencv_core" CV_VERSION_STR CV_EXT_STR)
#pragma comment(lib, "opencv_imgcodecs" CV_VERSION_STR CV_EXT_STR) #pragma comment(lib, "opencv_imgcodecs" CV_VERSION_STR CV_EXT_STR)
#pragma comment(lib, "opencv_imgproc" CV_VERSION_STR CV_EXT_STR) #pragma comment(lib, "opencv_imgproc" CV_VERSION_STR CV_EXT_STR)
//#pragma comment(lib, "IlmImf" CV_EXT_STR) #pragma comment(lib, "IlmImf" CV_EXT_STR)
//#pragma comment(lib, "libjasper" CV_EXT_STR) #pragma comment(lib, "ippicvmt.lib")
//#pragma comment(lib, "libjpeg" CV_EXT_STR) #pragma comment(lib, "libjasper" CV_EXT_STR)
//#pragma comment(lib, "libpng" CV_EXT_STR) #pragma comment(lib, "libjpeg-turbo" CV_EXT_STR)
//#pragma comment(lib, "libtiff" CV_EXT_STR) #pragma comment(lib, "libpng" CV_EXT_STR)
//#pragma comment(lib, "libwebp" CV_EXT_STR) #pragma comment(lib, "libtiff" CV_EXT_STR)
#pragma comment(lib, "libwebp" CV_EXT_STR)
#pragma comment(lib, "zlib" CV_EXT_STR)
#pragma comment(lib, "libopenblas.dll.a") #pragma comment(lib, "libopenblas.dll.a")
#pragma comment(lib, "cudart.lib") #pragma comment(lib, "cudart.lib")
@ -56,32 +58,27 @@
#ifdef _DEBUG #ifdef _DEBUG
#pragma comment(lib, "caffe-d.lib") #pragma comment(lib, "caffe-d.lib")
#pragma comment(lib, "proto-d.lib") #pragma comment(lib, "caffeproto-d.lib")
#pragma comment(lib, "libboost_system-vc120-mt-gd-1_59.lib") #pragma comment(lib, "libprotobufd.lib")
#pragma comment(lib, "libboost_thread-vc120-mt-gd-1_59.lib")
#pragma comment(lib, "libboost_filesystem-vc120-mt-gd-1_59.lib")
#pragma comment(lib, "glogd.lib") #pragma comment(lib, "glogd.lib")
#pragma comment(lib, "gflagsd.lib") #pragma comment(lib, "gflagsd.lib")
#pragma comment(lib, "libprotobufd.lib") #pragma comment(lib, "libboost_system-vc140-mt-gd-1_61.lib")
#pragma comment(lib, "libhdf5_hl_D.lib") #pragma comment(lib, "boost_thread-vc140-mt-gd-1_61.lib")
#pragma comment(lib, "libhdf5_D.lib") #pragma comment(lib, "boost_filesystem-vc140-mt-gd-1_61.lib")
#pragma comment(lib, "zlibstaticd.lib") #pragma comment(lib, "boost_iostreams-vc140-mt-gd-1_61.lib")
//#pragma comment(lib, "zlibstaticd.lib")
#pragma comment(lib, "libboost_iostreams-vc120-mt-gd-1_59.lib")
#else #else
#pragma comment(lib, "caffe.lib") #pragma comment(lib, "caffe.lib")
#pragma comment(lib, "proto.lib") #pragma comment(lib, "caffeproto.lib")
#pragma comment(lib, "libboost_system-vc120-mt-1_59.lib") #pragma comment(lib, "libprotobuf.lib")
#pragma comment(lib, "libboost_thread-vc120-mt-1_59.lib")
#pragma comment(lib, "libboost_filesystem-vc120-mt-1_59.lib")
#pragma comment(lib, "glog.lib") #pragma comment(lib, "glog.lib")
#pragma comment(lib, "gflags.lib") #pragma comment(lib, "gflags.lib")
#pragma comment(lib, "libprotobuf.lib") #pragma comment(lib, "libboost_system-vc140-mt-1_61.lib")
#pragma comment(lib, "libhdf5_hl.lib") #pragma comment(lib, "boost_thread-vc140-mt-1_61.lib")
#pragma comment(lib, "libhdf5.lib") #pragma comment(lib, "boost_filesystem-vc140-mt-1_61.lib")
#pragma comment(lib, "zlibstatic.lib") #pragma comment(lib, "boost_iostreams-vc140-mt-1_61.lib")
#pragma comment(lib, "libboost_iostreams-vc120-mt-1_59.lib")
#endif #endif
#endif #endif
@ -434,7 +431,7 @@ Waifu2x::eWaifu2xCudaError Waifu2x::can_use_CUDA()
{ {
cudaDeviceProp prop; cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, 0); cudaGetDeviceProperties(&prop, 0);
if (prop.major >= 2) if (prop.major >= 3 && prop.minor >= 5 || prop.major >= 4)
CudaFlag = eWaifu2xCudaError_OK; CudaFlag = eWaifu2xCudaError_OK;
else else
CudaFlag = eWaifu2xCudaError_OldDevice; CudaFlag = eWaifu2xCudaError_OldDevice;
@ -465,24 +462,37 @@ Waifu2x::eWaifu2xcuDNNError Waifu2x::can_use_cuDNN()
HMODULE hModule = LoadLibrary(TEXT(CUDNN_DLL_NAME)); HMODULE hModule = LoadLibrary(TEXT(CUDNN_DLL_NAME));
if (hModule != NULL) if (hModule != NULL)
{ {
typedef cudnnStatus_t(__stdcall * cudnnCreateType)(cudnnHandle_t *); typedef cudnnStatus_t(CUDNNWINAPI* cudnnCreateType)(cudnnHandle_t *);
typedef cudnnStatus_t(__stdcall * cudnnDestroyType)(cudnnHandle_t); typedef cudnnStatus_t(CUDNNWINAPI* cudnnDestroyType)(cudnnHandle_t);
typedef uint64_t(__stdcall * cudnnGetVersionType)(); typedef size_t(CUDNNWINAPI* cudnnGetVersionType)();
typedef size_t(CUDNNWINAPI* cudnnGetCudartVersionType)();
cudnnCreateType cudnnCreateFunc = (cudnnCreateType)GetProcAddress(hModule, "cudnnCreate"); cudnnCreateType cudnnCreateFunc = (cudnnCreateType)GetProcAddress(hModule, "cudnnCreate");
cudnnDestroyType cudnnDestroyFunc = (cudnnDestroyType)GetProcAddress(hModule, "cudnnDestroy"); cudnnDestroyType cudnnDestroyFunc = (cudnnDestroyType)GetProcAddress(hModule, "cudnnDestroy");
cudnnGetVersionType cudnnGetVersionFunc = (cudnnGetVersionType)GetProcAddress(hModule, "cudnnGetVersion"); cudnnGetVersionType cudnnGetVersionFunc = (cudnnGetVersionType)GetProcAddress(hModule, "cudnnGetVersion");
if (cudnnCreateFunc != nullptr && cudnnDestroyFunc != nullptr && cudnnGetVersionFunc != nullptr) cudnnGetCudartVersionType cudnnGetCudartVersionFunc = (cudnnGetCudartVersionType)GetProcAddress(hModule, "cudnnGetCudartVersion");
if (cudnnCreateFunc != nullptr && cudnnDestroyFunc != nullptr && cudnnGetVersionFunc != nullptr && cudnnGetCudartVersionFunc != nullptr)
{ {
if (cudnnGetVersionFunc() >= 3000) if (cudnnGetVersionFunc() >= CUDNN_REQUIRE_VERION)
{ {
cudnnHandle_t h; int runtimeVersion;
if (cudnnCreateFunc(&h) == CUDNN_STATUS_SUCCESS) if (cudaRuntimeGetVersion(&runtimeVersion) == cudaSuccess)
{ {
if (cudnnDestroyFunc(h) == CUDNN_STATUS_SUCCESS) if (cudnnGetCudartVersionFunc() >= runtimeVersion)
cuDNNFlag = eWaifu2xcuDNNError_OK; {
cudnnHandle_t h;
if (cudnnCreateFunc(&h) == CUDNN_STATUS_SUCCESS)
{
if (cudnnDestroyFunc(h) == CUDNN_STATUS_SUCCESS)
cuDNNFlag = eWaifu2xcuDNNError_OK;
else
cuDNNFlag = eWaifu2xcuDNNError_CannotCreate;
}
else
cuDNNFlag = eWaifu2xcuDNNError_CannotCreate;
}
else else
cuDNNFlag = eWaifu2xcuDNNError_CannotCreate; cuDNNFlag = eWaifu2xcuDNNError_OldCudaVersion;
} }
else else
cuDNNFlag = eWaifu2xcuDNNError_CannotCreate; cuDNNFlag = eWaifu2xcuDNNError_CannotCreate;
@ -658,9 +668,12 @@ Waifu2x::eWaifu2xError Waifu2x::Init(const eWaifu2xModelType mode, const int noi
if (ret != Waifu2x::eWaifu2xError_OK) if (ret != Waifu2x::eWaifu2xError_OK)
return ret; return ret;
mHasNoiseScale = info.has_noise_scale; mHasNoiseScaleOnly = info.has_noise_scale;
mInputPlane = info.channels; mInputPlane = info.channels;
if (mode == eWaifu2xModelTypeNoise && info.has_noise_only) // ノイズ除去だけかつノイズ除去モデルが存在するのであればノイズ除去スケールモデルは使わないようにする
mHasNoiseScaleOnly = false;
if (mode == eWaifu2xModelTypeNoise || mode == eWaifu2xModelTypeNoiseScale || mode == eWaifu2xModelTypeAutoScale) if (mode == eWaifu2xModelTypeNoise || mode == eWaifu2xModelTypeNoiseScale || mode == eWaifu2xModelTypeAutoScale)
{ {
std::string base_name; std::string base_name;
@ -668,7 +681,7 @@ Waifu2x::eWaifu2xError Waifu2x::Init(const eWaifu2xModelType mode, const int noi
mNoiseNet.reset(new cNet); mNoiseNet.reset(new cNet);
eWaifu2xModelType Mode = mode; eWaifu2xModelType Mode = mode;
if (info.has_noise_scale) // ノイズ除去と拡大を同時に行う if (mHasNoiseScaleOnly) // ノイズ除去と拡大を同時に行う
{ {
// イズ除去拡大ネットの構築はeWaifu2xModelTypeNoiseScaleを指定する必要がある // イズ除去拡大ネットの構築はeWaifu2xModelTypeNoiseScaleを指定する必要がある
Mode = eWaifu2xModelTypeNoiseScale; Mode = eWaifu2xModelTypeNoiseScale;
@ -690,8 +703,8 @@ Waifu2x::eWaifu2xError Waifu2x::Init(const eWaifu2xModelType mode, const int noi
mMaxNetOffset = mNoiseNet->GetNetOffset(); mMaxNetOffset = mNoiseNet->GetNetOffset();
} }
// noise_scaleを持っている場合はαチャンネルの拡大のためにmScaleNetも構築する必要がある // 拡大が必要な場合はαチャンネルの拡大のためにmScaleNetも構築する必要がある
if (info.has_noise_scale || mode == eWaifu2xModelTypeScale || mode == eWaifu2xModelTypeNoiseScale || mode == eWaifu2xModelTypeAutoScale) if (mode == eWaifu2xModelTypeScale || mode == eWaifu2xModelTypeNoiseScale || mode == eWaifu2xModelTypeAutoScale)
{ {
const std::string base_name = "scale2.0x_model"; const std::string base_name = "scale2.0x_model";
@ -908,7 +921,7 @@ Waifu2x::eWaifu2xError Waifu2x::ReconstructImage(const Factor factor, const int
if (isReconstructNoise) if (isReconstructNoise)
{ {
if (!mHasNoiseScale) // ノイズ除去だけ if (!mHasNoiseScaleOnly) // ノイズ除去だけ
{ {
cv::Mat im; cv::Mat im;
cv::Size_<int> size; cv::Size_<int> size;
@ -1152,3 +1165,14 @@ std::string Waifu2x::GetModelName(const boost::filesystem::path & model_dir)
return cNet::GetModelName(info_path); return cNet::GetModelName(info_path);
} }
bool Waifu2x::GetInfo(const boost::filesystem::path &model_dir, stInfo &info)
{
const boost::filesystem::path mode_dir_path(GetModeDirPath(model_dir));
if (!boost::filesystem::exists(mode_dir_path))
return false;
const boost::filesystem::path info_path = mode_dir_path / "info.json";
return cNet::GetInfo(info_path, info) == Waifu2x::eWaifu2xError_OK;
}

View File

@ -10,8 +10,9 @@
#include <boost/optional.hpp> #include <boost/optional.hpp>
#include <opencv2/core.hpp> #include <opencv2/core.hpp>
#define CUDNN_DLL_NAME "cudnn64_6.dll" #define CUDNN_DLL_NAME "cudnn64_8.dll"
#define CUDNN_REQUIRE_VERION_TEXT "v6" #define CUDNN_REQUIRE_VERION_TEXT "v8.0.3"
#define CUDNN_REQUIRE_VERION 8003
namespace caffe namespace caffe
@ -59,6 +60,29 @@ public:
class Waifu2x class Waifu2x
{ {
public: public:
struct stInfo
{
struct stParam
{
int scale_factor;
int offset;
int recommended_crop_size;
stParam() : scale_factor(1), offset(0), recommended_crop_size(-1) {}
};
std::string name;
std::string arch_name;
bool has_noise_scale;
bool has_noise_only;
int channels;
int force_divisible_crop_size;
stParam noise;
stParam scale;
stParam noise_scale;
};
enum eWaifu2xModelType enum eWaifu2xModelType
{ {
eWaifu2xModelTypeNoise = 0, eWaifu2xModelTypeNoise = 0,
@ -98,6 +122,7 @@ public:
eWaifu2xcuDNNError_NotFind, eWaifu2xcuDNNError_NotFind,
eWaifu2xcuDNNError_OldVersion, eWaifu2xcuDNNError_OldVersion,
eWaifu2xcuDNNError_CannotCreate, eWaifu2xcuDNNError_CannotCreate,
eWaifu2xcuDNNError_OldCudaVersion,
}; };
typedef std::function<bool()> waifu2xCancelFunc; typedef std::function<bool()> waifu2xCancelFunc;
@ -119,7 +144,7 @@ private:
int mInputPlane; // ネットへの入力チャンネル数 int mInputPlane; // ネットへの入力チャンネル数
int mMaxNetOffset; // ネットに入力するとどれくらい削れるか int mMaxNetOffset; // ネットに入力するとどれくらい削れるか
bool mHasNoiseScale; bool mHasNoiseScaleOnly;
float *mOutputBlock; float *mOutputBlock;
size_t mOutputBlockSize; size_t mOutputBlockSize;
@ -183,4 +208,5 @@ public:
const std::string& used_process() const; const std::string& used_process() const;
static std::string GetModelName(const boost::filesystem::path &model_dir); static std::string GetModelName(const boost::filesystem::path &model_dir);
static bool GetInfo(const boost::filesystem::path &model_dir, stInfo &info);
}; };

1
opencv Submodule

@ -0,0 +1 @@
Subproject commit b38c50b3d0c31e82294315ec44b54b7ef559ef12

46
opencv_build.bat Normal file
View File

@ -0,0 +1,46 @@
@echo off
cd opencv
mkdir build
cd build
cmake .. -G "Visual Studio 15 Win64" ^
-DCMAKE_INSTALL_PREFIX=..\..\lib ^
-DBUILD_WITH_STATIC_CRT=OFF ^
-DBUILD_IPP_IW=OFF ^
-DBUILD_ITT=OFF ^
-DBUILD_JAVA=OFF ^
-DBUILD_SHARED_LIBS=OFF ^
-DBUILD_TESTS=OFF ^
-DBUILD_opencv_calib3d=OFF ^
-DBUILD_opencv_dnn=OFF ^
-DBUILD_opencv_features2d=OFF ^
-DBUILD_opencv_flann=OFF ^
-DBUILD_opencv_highgui=OFF ^
-DBUILD_opencv_ml=OFF ^
-DBUILD_opencv_objdetect=OFF ^
-DBUILD_opencv_photo=OFF ^
-DBUILD_opencv_video=OFF ^
-DBUILD_opencv_videoio=OFF ^
-DBUILD_opencv_videostab=OFF ^
-DBUILD_opencv_java_bindings_generator=OFF ^
-DBUILD_opencv_python_bindings_generator=OFF ^
-DWITH_1394=OFF ^
-DWITH_CUDA=OFF ^
-DWITH_CUFFT=OFF ^
-DWITH_DIRECTX=OFF ^
-DWITH_DSHOW=OFF ^
-DWITH_EIGEN=OFF ^
-DWITH_FFMPEG=OFF ^
-DWITH_GSTREAMER=OFF ^
-DWITH_OPENCL=OFF ^
-DWITH_OPENCAMDBALSL=OFF ^
-DWITH_OPENCLAMDFFT=OFF ^
-DWITH_OPENCL_SVM=OFF ^
-DWITH_PROTOBUF=OFF ^
-DWITH_VFW=OFF ^
-DWITH_VTK=OFF ^
-DWITH_WIN32UI=OFF
rem cmake --build . --config Debug --target install
cmake --build . --config Release --target install

View File

@ -14,18 +14,19 @@
<ProjectGuid>{DFF94FEB-78AB-41B1-9B92-4D8B7D799E04}</ProjectGuid> <ProjectGuid>{DFF94FEB-78AB-41B1-9B92-4D8B7D799E04}</ProjectGuid>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<RootNamespace>waifu2x-caffe-dll</RootNamespace> <RootNamespace>waifu2x-caffe-dll</RootNamespace>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset> <PlatformToolset>v140</PlatformToolset>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset> <PlatformToolset>v140</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
@ -41,15 +42,15 @@
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
<IncludePath>D:\caffe-build\install\include;D:\caffe-build\install\include\boost-1_59;$(CUDA_PATH_V8_0)\include;D:\opencv310\build_vc\install\include;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath> <IncludePath>$(CUDA_PATH_V11_0)\include;$(SolutionDir)lib\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include\boost-1_61;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath>
<LibraryPath>D:\opencv310\build_vc\install\x64\vc12\lib;D:\caffe-build\install\lib;$(CUDA_PATH_V8_0)\lib\$(PlatformName);D:\program\boost_1_59_0\stage\x64\lib;$(LibraryPath)</LibraryPath> <LibraryPath>$(CUDA_PATH_V11_0)\lib\$(PlatformName);$(SolutionDir)lib\$(PlatformName)\vc15\staticlib;$(SolutionDir)lib\lib;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\lib;$(LibraryPath)</LibraryPath>
<OutDir>$(SolutionDir)bin\</OutDir> <OutDir>$(SolutionDir)bin\</OutDir>
<TargetName>$(ProjectName)d</TargetName> <TargetName>$(ProjectName)d</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<IncludePath>D:\caffe-build\install\include;D:\caffe-build\install\include\boost-1_59;$(CUDA_PATH_V8_0)\include;D:\opencv310\build_vc\install\include;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath> <IncludePath>$(CUDA_PATH_V11_0)\include;$(SolutionDir)lib\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include\boost-1_61;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath>
<LibraryPath>D:\opencv310\build_vc\install\x64\vc12\lib;D:\caffe-build\install\lib;$(CUDA_PATH_V8_0)\lib\$(PlatformName);D:\program\boost_1_59_0\stage\x64\lib;$(LibraryPath)</LibraryPath> <LibraryPath>$(CUDA_PATH_V11_0)\lib\$(PlatformName);$(SolutionDir)lib\$(PlatformName)\vc15\staticlib;$(SolutionDir)lib\lib;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\lib;$(LibraryPath)</LibraryPath>
<OutDir>$(SolutionDir)bin\</OutDir> <OutDir>$(SolutionDir)bin\</OutDir>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -58,13 +59,13 @@
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>BOOST_ALL_NO_LIB;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<DelayLoadDLLs>cudnn64_6.dll;%(DelayLoadDLLs)</DelayLoadDLLs> <DelayLoadDLLs>cudnn64_8.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
@ -76,7 +77,7 @@
<Optimization>MaxSpeed</Optimization> <Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>BOOST_ALL_NO_LIB;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
@ -84,7 +85,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<DelayLoadDLLs>cudnn64_6.dll;%(DelayLoadDLLs)</DelayLoadDLLs> <DelayLoadDLLs>cudnn64_8.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>

View File

@ -94,7 +94,8 @@ private:
if (LangList.size() > 0) if (LangList.size() > 0)
return LangList[0]; return LangList[0];
return stLangSetting(); static stLangSetting empty;
return empty;
} }
void ReadLangFile(const stLangSetting &lang, std::unordered_map<std::wstring, std::wstring> &langStringMap) const void ReadLangFile(const stLangSetting &lang, std::unordered_map<std::wstring, std::wstring> &langStringMap) const

View File

@ -25,6 +25,8 @@
const size_t AR_PATH_MAX(1024); const size_t AR_PATH_MAX(1024);
const int MaxBatchSizeList = 20;
const int MinCommonDivisor = 50; const int MinCommonDivisor = 50;
const int DefaultCommonDivisor = 128; const int DefaultCommonDivisor = 128;
const std::pair<int, int> DefaultCommonDivisorRange = {90, 140}; const std::pair<int, int> DefaultCommonDivisorRange = {90, 140};
@ -38,6 +40,7 @@ const TCHAR * const MultiFileStr = TEXT("(Multi File)");
const UINT_PTR nIDEventTimeLeft = 1000; const UINT_PTR nIDEventTimeLeft = 1000;
LangStringList DialogEvent::langStringList; LangStringList DialogEvent::langStringList;
HWND DialogEvent::dh; HWND DialogEvent::dh;
@ -370,35 +373,13 @@ bool DialogEvent::SyncMember(const bool NotSyncCropSize, const bool silent)
{ {
const int cur = SendMessage(GetDlgItem(dh, IDC_COMBO_MODEL), CB_GETCURSEL, 0, 0); const int cur = SendMessage(GetDlgItem(dh, IDC_COMBO_MODEL), CB_GETCURSEL, 0, 0);
switch (cur) for (int i = 0; i < eModelTypeEnd; i++)
{ {
case 0: if (cur == i)
model_dir = TEXT("models/upconv_7_anime_style_art_rgb"); {
modelType = eModelTypeUpConvRGB; model_dir = ModelPathList[i];
break; modelType = (eModelType)i;
}
case 1:
model_dir = TEXT("models/upconv_7_photo");
modelType = eModelTypeUpConvPhoto;
break;
case 2:
model_dir = TEXT("models/anime_style_art_rgb");
modelType = eModelTypeRGB;
break;
case 3:
model_dir = TEXT("models/photo");
modelType = eModelTypePhoto;
break;
case 4:
model_dir = TEXT("models/anime_style_art");
modelType = eModelTypeY;
break;
default:
break;
} }
} }
@ -472,6 +453,10 @@ bool DialogEvent::SyncMember(const bool NotSyncCropSize, const bool silent)
GetWindowText(GetDlgItem(dh, IDC_COMBO_CROP_SIZE), buf, _countof(buf)); GetWindowText(GetDlgItem(dh, IDC_COMBO_CROP_SIZE), buf, _countof(buf));
buf[_countof(buf) - 1] = TEXT('\0'); buf[_countof(buf) - 1] = TEXT('\0');
Waifu2x::stInfo info;
if (!Waifu2x::GetInfo(model_dir, info))
info.force_divisible_crop_size = 1;
TCHAR *ptr = nullptr; TCHAR *ptr = nullptr;
crop_size = _tcstol(buf, &ptr, 10); crop_size = _tcstol(buf, &ptr, 10);
if (!ptr || *ptr != '\0' || crop_size <= 0) if (!ptr || *ptr != '\0' || crop_size <= 0)
@ -481,6 +466,30 @@ bool DialogEvent::SyncMember(const bool NotSyncCropSize, const bool silent)
MessageBox(dh, langStringList.GetString(L"MessageCropSizeCheckError").c_str(), langStringList.GetString(L"MessageTitleError").c_str(), MB_OK | MB_ICONERROR); MessageBox(dh, langStringList.GetString(L"MessageCropSizeCheckError").c_str(), langStringList.GetString(L"MessageTitleError").c_str(), MB_OK | MB_ICONERROR);
} }
else if (crop_size % info.force_divisible_crop_size != 0) // このモデルでは設定できないCropSize
{
wchar_t buf[1024] = { TEXT('\0') };
swprintf(buf, langStringList.GetString(L"MessageCropSizeDivisibleCheckError").c_str(), info.force_divisible_crop_size);
ret = false;
MessageBoxW(dh, buf, langStringList.GetString(L"MessageTitleError").c_str(), MB_OK | MB_ICONERROR);
}
}
{
TCHAR buf[AR_PATH_MAX] = TEXT("");
GetWindowText(GetDlgItem(dh, IDC_COMBO_BATCH_SIZE), buf, _countof(buf));
buf[_countof(buf) - 1] = TEXT('\0');
TCHAR *ptr = nullptr;
batch_size = _tcstol(buf, &ptr, 10);
if (!ptr || *ptr != '\0' || batch_size <= 0)
{
batch_size = 1;
ret = false;
MessageBox(dh, langStringList.GetString(L"MessageBatchSizeCheckError").c_str(), langStringList.GetString(L"MessageTitleError").c_str(), MB_OK | MB_ICONERROR);
}
} }
use_tta = SendMessage(GetDlgItem(dh, IDC_CHECK_TTA), BM_GETCHECK, 0, 0) == BST_CHECKED; use_tta = SendMessage(GetDlgItem(dh, IDC_CHECK_TTA), BM_GETCHECK, 0, 0) == BST_CHECKED;
@ -522,20 +531,55 @@ void DialogEvent::SetCropSizeList(const boost::filesystem::path & input_path)
} }
), list.end()); ), list.end());
bool isRecommendedCropSize = false;
Waifu2x::stInfo info;
if (Waifu2x::GetInfo(model_dir, info))
{
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)
SendMessage(hcrop, CB_ADDSTRING, 0, (LPARAM)TEXT("-----------------------"));
int mindiff = INT_MAX; int mindiff = INT_MAX;
int defaultIndex = -1; int defaultIndex = -1;
for (int i = 0; i < list.size(); i++) for (int i = 0; i < list.size(); i++)
{ {
const int n = list[i]; const int n = list[i];
if (n % info.force_divisible_crop_size != 0) // このモデルでは設定できないCropSize
continue;
tstring str(to_tstring(n)); tstring str(to_tstring(n));
SendMessage(hcrop, CB_ADDSTRING, 0, (LPARAM)str.c_str()); const int index = SendMessage(hcrop, CB_ADDSTRING, 0, (LPARAM)str.c_str());
const int diff = abs(DefaultCommonDivisor - n); const int diff = abs(DefaultCommonDivisor - n);
if (DefaultCommonDivisorRange.first <= n && n <= DefaultCommonDivisorRange.second && diff < mindiff) if (DefaultCommonDivisorRange.first <= n && n <= DefaultCommonDivisorRange.second && diff < mindiff)
{ {
mindiff = diff; mindiff = diff;
defaultIndex = i; defaultIndex = index;
} }
} }
@ -546,6 +590,9 @@ void DialogEvent::SetCropSizeList(const boost::filesystem::path & input_path)
int defaultListIndex = -1; int defaultListIndex = -1;
for (const auto n : CropSizeList) for (const auto n : CropSizeList)
{ {
if (n % info.force_divisible_crop_size != 0) // このモデルでは設定できないCropSize
continue;
tstring str(to_tstring(n)); tstring str(to_tstring(n));
const int index = SendMessage(hcrop, CB_ADDSTRING, 0, (LPARAM)str.c_str()); const int index = SendMessage(hcrop, CB_ADDSTRING, 0, (LPARAM)str.c_str());
@ -560,6 +607,9 @@ void DialogEvent::SetCropSizeList(const boost::filesystem::path & input_path)
if (defaultIndex == -1) if (defaultIndex == -1)
defaultIndex = defaultListIndex; defaultIndex = defaultListIndex;
if(isRecommendedCropSize)
defaultIndex = 0;
if (GetWindowTextLength(hcrop) == 0) if (GetWindowTextLength(hcrop) == 0)
SendMessage(hcrop, CB_SETCURSEL, defaultIndex, 0); SendMessage(hcrop, CB_SETCURSEL, defaultIndex, 0);
} }
@ -839,7 +889,7 @@ void DialogEvent::ProcessWaifu2x()
ret = w.waifu2x(p.first, p.second, ScaleRatio, ScaleWidth, ScaleHeight, [this]() ret = w.waifu2x(p.first, p.second, ScaleRatio, ScaleWidth, ScaleHeight, [this]()
{ {
return cancelFlag; return cancelFlag.load();
}, crop_size, crop_size, output_quality, output_depth, use_tta, batch_size); }, crop_size, crop_size, output_quality, output_depth, use_tta, batch_size);
num++; num++;
@ -1096,6 +1146,8 @@ void DialogEvent::SaveIni(const bool isSyncMember)
WritePrivateProfileString(TEXT("Setting"), TEXT("LastInputDirFix"), tInputDirFix.c_str(), getTString(SettingFilePath).c_str()); WritePrivateProfileString(TEXT("Setting"), TEXT("LastInputDirFix"), tInputDirFix.c_str(), getTString(SettingFilePath).c_str());
WritePrivateProfileString(TEXT("Setting"), TEXT("LastOutputDirFix"), tOutputDirFix.c_str(), getTString(SettingFilePath).c_str()); WritePrivateProfileString(TEXT("Setting"), TEXT("LastOutputDirFix"), tOutputDirFix.c_str(), getTString(SettingFilePath).c_str());
WritePrivateProfileString(TEXT("Setting"), TEXT("LastBatchSize"), to_tstring(batch_size).c_str(), getTString(SettingFilePath).c_str());
} }
struct stFindParam struct stFindParam
@ -1576,6 +1628,7 @@ void DialogEvent::SetWindowTextLang()
SET_WINDOW_TEXT(IDC_BUTTON_OUTPUT_REF); SET_WINDOW_TEXT(IDC_BUTTON_OUTPUT_REF);
SET_WINDOW_TEXT(IDC_BUTTON_APP_SETTING); SET_WINDOW_TEXT(IDC_BUTTON_APP_SETTING);
SET_WINDOW_TEXT(IDC_BUTTON_CLEAR_OUTPUT_DIR); SET_WINDOW_TEXT(IDC_BUTTON_CLEAR_OUTPUT_DIR);
SET_WINDOW_TEXT(IDC_STATIC_BATCH_SIZE);
#undef SET_WINDOW_TEXT #undef SET_WINDOW_TEXT
@ -1587,11 +1640,10 @@ void DialogEvent::SetWindowTextLang()
SendMessage(hwndCombo, CB_DELETESTRING, 0, 0); SendMessage(hwndCombo, CB_DELETESTRING, 0, 0);
} }
SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM)langStringList.GetString(L"IDC_RADIO_MODEL_UPCONV_RGB").c_str()); for (int i = 0; i < eModelTypeEnd; i++)
SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM)langStringList.GetString(L"IDC_RADIO_MODEL_UPCONV_PHOTO").c_str()); {
SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM)langStringList.GetString(L"IDC_RADIO_MODEL_RGB").c_str()); SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM)langStringList.GetString(ModelTitleLangKeyList[i].c_str()).c_str());
SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM)langStringList.GetString(L"IDC_RADIO_MODEL_PHOTO").c_str()); }
SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM)langStringList.GetString(L"IDC_RADIO_MODEL_Y").c_str());
SendMessage(GetDlgItem(dh, IDC_COMBO_MODEL), CB_SETCURSEL, cur, 0); SendMessage(GetDlgItem(dh, IDC_COMBO_MODEL), CB_SETCURSEL, cur, 0);
} }
@ -1774,28 +1826,18 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
} }
{ {
HWND hcrop = GetDlgItem(dh, IDC_COMBO_CROP_SIZE); HWND hbatch = GetDlgItem(dh, IDC_COMBO_BATCH_SIZE);
SendMessage(hcrop, CB_ADDSTRING, 0, (LPARAM)TEXT("-----------------------")); // バッチサイズリストに数列を突っ込んでいく
// CropSizeListÌlðljÁµÄ¢­
int mindiff = INT_MAX; int mindiff = INT_MAX;
int defaultListIndex = -1; int defaultListIndex = -1;
for (const auto n : CropSizeList) for(int i = 1; i <= MaxBatchSizeList; i++)
{ {
tstring str(to_tstring(n)); tstring str(to_tstring(i));
const int index = SendMessage(hcrop, CB_ADDSTRING, 0, (LPARAM)str.c_str()); SendMessage(hbatch, CB_ADDSTRING, 0, (LPARAM)str.c_str());
const int diff = abs(DefaultCommonDivisor - n);
if (DefaultCommonDivisorRange.first <= n && n <= DefaultCommonDivisorRange.second && diff < mindiff)
{
mindiff = diff;
defaultListIndex = index;
}
} }
if (GetWindowTextLength(hcrop) == 0) SendMessage(hbatch, CB_SETCURSEL, 0, 0);
SendMessage(hcrop, CB_SETCURSEL, defaultListIndex, 0);
} }
tstring tScaleRatio; tstring tScaleRatio;
@ -1847,7 +1889,7 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
tmp[_countof(tmp) - 1] = TEXT('\0'); tmp[_countof(tmp) - 1] = TEXT('\0');
tprcess = tmp; tprcess = tmp;
modelType = (eModelType)GetPrivateProfileInt(TEXT("Setting"), TEXT("LastModel"), 0, getTString(SettingFilePath).c_str()); modelType = (eModelType)GetPrivateProfileInt(TEXT("Setting"), TEXT("LastModel"), DefaultModel, getTString(SettingFilePath).c_str());
use_tta = GetPrivateProfileInt(TEXT("Setting"), TEXT("LastUseTTA"), 0, getTString(SettingFilePath).c_str()) != 0; use_tta = GetPrivateProfileInt(TEXT("Setting"), TEXT("LastUseTTA"), 0, getTString(SettingFilePath).c_str()) != 0;
@ -1875,6 +1917,8 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
GetPrivateProfileString(TEXT("Setting"), TEXT("LastOutputDirFix"), TEXT(""), tmp, _countof(tmp), getTString(SettingFilePath).c_str()); GetPrivateProfileString(TEXT("Setting"), TEXT("LastOutputDirFix"), TEXT(""), tmp, _countof(tmp), getTString(SettingFilePath).c_str());
tmp[_countof(tmp) - 1] = TEXT('\0'); tmp[_countof(tmp) - 1] = TEXT('\0');
tOutputDirFix = tmp; tOutputDirFix = tmp;
batch_size = GetPrivateProfileInt(TEXT("Setting"), TEXT("LastBatchSize"), 1, getTString(SettingFilePath).c_str());
} }
TCHAR *ptr = nullptr; TCHAR *ptr = nullptr;
@ -2026,26 +2070,61 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
} }
int index = 0; int index = 0;
if (modelType == eModelTypeUpConvRGB) for (int i = 0; i < eModelTypeEnd; i++)
index = 0; {
else if (modelType == eModelTypeUpConvPhoto) if (modelType == i)
index = 1; {
else if (modelType == eModelTypeRGB) index = i;
index = 2; break;
else if (modelType == eModelTypePhoto) }
index = 3; }
else if (modelType == eModelTypeY)
index = 4;
else
index = 0;
SendMessage(GetDlgItem(dh, IDC_COMBO_MODEL), CB_SETCURSEL, index, 0); SendMessage(GetDlgItem(dh, IDC_COMBO_MODEL), CB_SETCURSEL, index, 0);
{
HWND hcrop = GetDlgItem(dh, IDC_COMBO_CROP_SIZE);
SendMessage(hcrop, CB_ADDSTRING, 0, (LPARAM)TEXT("-----------------------"));
const auto model_dir = ModelPathList[index];
Waifu2x::stInfo info;
if (!Waifu2x::GetInfo(model_dir, info))
info.force_divisible_crop_size = 1;
// CropSizeListの値を追加していく
int mindiff = INT_MAX;
int defaultListIndex = -1;
for (const auto n : CropSizeList)
{
if (n % info.force_divisible_crop_size != 0) // このモデルでは設定できないCropSize
continue;
tstring str(to_tstring(n));
const int index = SendMessage(hcrop, CB_ADDSTRING, 0, (LPARAM)str.c_str());
const int diff = abs(DefaultCommonDivisor - n);
if (DefaultCommonDivisorRange.first <= n && n <= DefaultCommonDivisorRange.second && diff < mindiff)
{
mindiff = diff;
defaultListIndex = index;
}
}
if (GetWindowTextLength(hcrop) == 0)
SendMessage(hcrop, CB_SETCURSEL, defaultListIndex, 0);
}
if (use_tta) if (use_tta)
SendMessage(GetDlgItem(hWnd, IDC_CHECK_TTA), BM_SETCHECK, BST_CHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_CHECK_TTA), BM_SETCHECK, BST_CHECKED, 0);
else else
SendMessage(GetDlgItem(hWnd, IDC_CHECK_TTA), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_CHECK_TTA), BM_SETCHECK, BST_UNCHECKED, 0);
if (1 <= batch_size && batch_size <= MaxBatchSizeList)
{
SendMessage(GetDlgItem(dh, IDC_COMBO_BATCH_SIZE), CB_SETCURSEL, batch_size - 1, 0);
}
SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_RATIO), tScaleRatio.c_str()); SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_RATIO), tScaleRatio.c_str());
SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_WIDTH), tScaleWidth.c_str()); SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_WIDTH), tScaleWidth.c_str());
SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_HEIGHT), tScaleHeight.c_str()); SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_HEIGHT), tScaleHeight.c_str());
@ -2190,14 +2269,13 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
false, 0, &cmdNoOverwriteConstraint, cmd); false, 0, &cmdNoOverwriteConstraint, cmd);
std::vector<std::wstring> cmdModelTypeConstraintV; std::vector<std::wstring> cmdModelTypeConstraintV;
cmdModelTypeConstraintV.push_back(L"upconv_7_anime_style_art_rgb"); for (int i = 0; i < eModelTypeEnd; i++)
cmdModelTypeConstraintV.push_back(L"upconv_7_photo"); {
cmdModelTypeConstraintV.push_back(L"anime_style_art_rgb"); cmdModelTypeConstraintV.push_back(ModelTypeList[i]);
cmdModelTypeConstraintV.push_back(L"photo"); }
cmdModelTypeConstraintV.push_back(L"anime_style_art_y");
TCLAPW::ValuesConstraint<std::wstring> cmdModelTypeConstraint(cmdModelTypeConstraintV); TCLAPW::ValuesConstraint<std::wstring> cmdModelTypeConstraint(cmdModelTypeConstraintV);
TCLAPW::ValueArg<std::wstring> cmdModelType(L"y", L"model_type", L"model type", TCLAPW::ValueArg<std::wstring> cmdModelType(L"y", L"model_type", L"model type",
false, L"upconv_7_anime_style_art_rgb", &cmdModelTypeConstraint, cmd); false, DefaultModelType, &cmdModelTypeConstraint, cmd);
// definition of command line argument : end // definition of command line argument : end
@ -2416,7 +2494,8 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
if (cmdBatchSizeFile.isSet()) if (cmdBatchSizeFile.isSet())
{ {
batch_size = cmdBatchSizeFile.getValue(); SetWindowText(GetDlgItem(dh, IDC_COMBO_CROP_SIZE), to_tstring(cmdCropSizeFile.getValue()).c_str());
//batch_size = cmdBatchSizeFile.getValue();
isSetParam = true; isSetParam = true;
} }
@ -2452,18 +2531,14 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
if (cmdModelType.isSet()) if (cmdModelType.isSet())
{ {
int index = 0; int index = 0;
if (cmdModelType.getValue() == L"upconv_7_anime_style_art_rgb") for (int i = 0; i < eModelTypeEnd; i++)
index = 0; {
else if (cmdModelType.getValue() == L"upconv_7_photo") if (cmdModelType.getValue() == ModelTypeList[i])
index = 1; {
else if (cmdModelType.getValue() == L"anime_style_art_rgb") index = i;
index = 2; break;
else if (cmdModelType.getValue() == L"photo") }
index = 3; }
else if (cmdModelType.getValue() == L"anime_style_art_y")
index = 4;
else
index = 0;
SendMessage(GetDlgItem(dh, IDC_COMBO_MODEL), CB_SETCURSEL, index, 0); SendMessage(GetDlgItem(dh, IDC_COMBO_MODEL), CB_SETCURSEL, index, 0);
@ -2662,11 +2737,23 @@ void DialogEvent::CheckCUDNN(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpD
case Waifu2x::eWaifu2xcuDNNError_CannotCreate: case Waifu2x::eWaifu2xcuDNNError_CannotCreate:
MessageBox(dh, langStringList.GetString(L"MessagecuDNNCannotCreateError").c_str(), langStringList.GetString(L"MessageTitleResult").c_str(), MB_OK | MB_ICONERROR); MessageBox(dh, langStringList.GetString(L"MessagecuDNNCannotCreateError").c_str(), langStringList.GetString(L"MessageTitleResult").c_str(), MB_OK | MB_ICONERROR);
break; break;
case Waifu2x::eWaifu2xcuDNNError_OldCudaVersion:
MessageBox(dh, langStringList.GetString(L"MessageCudaOldVersionError").c_str(), langStringList.GetString(L"MessageTitleResult").c_str(), MB_OK | MB_ICONERROR);
break;
default: default:
MessageBox(dh, langStringList.GetString(L"MessagecuDNNDefautlError").c_str(), langStringList.GetString(L"MessageTitleResult").c_str(), MB_OK | MB_ICONERROR); MessageBox(dh, langStringList.GetString(L"MessagecuDNNDefautlError").c_str(), langStringList.GetString(L"MessageTitleResult").c_str(), MB_OK | MB_ICONERROR);
} }
} }
void DialogEvent::OnModelChange(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
{
if (HIWORD(wParam) == CBN_SELCHANGE)
{
OnSetInputFilePath();
UpdateAddString(hWnd, wParam, lParam, lpData);
}
}
LRESULT DialogEvent::OnSetInputFilePath(const TCHAR * tPath) LRESULT DialogEvent::OnSetInputFilePath(const TCHAR * tPath)
{ {
HWND hWnd = GetDlgItem(dh, IDC_EDIT_INPUT); HWND hWnd = GetDlgItem(dh, IDC_EDIT_INPUT);

View File

@ -22,6 +22,53 @@
#define WM_END_THREAD (WM_APP + 7) #define WM_END_THREAD (WM_APP + 7)
enum eModelType
{
eModelTypeUpConvRGB,
eModelTypeUpConvPhoto,
eModelTypeRGB,
eModelTypePhoto,
eModelTypeY,
eModelTypeUpResNet10,
eModelTypeCunet,
eModelTypeEnd,
};
const int DefaultModel = eModelTypeCunet;
const tstring ModelPathList[eModelTypeEnd] = {
TEXT("models/upconv_7_anime_style_art_rgb"),
TEXT("models/upconv_7_photo"),
TEXT("models/anime_style_art_rgb"),
TEXT("models/photo"),
TEXT("models/anime_style_art"),
TEXT("models/upresnet10"),
TEXT("models/cunet"),
};
const std::wstring ModelTypeList[eModelTypeEnd] = {
L"upconv_7_anime_style_art_rgb",
L"upconv_7_photo",
L"anime_style_art_rgb",
L"photo",
L"anime_style_art_y",
L"upresnet10",
L"cunet",
};
const std::wstring DefaultModelType = ModelTypeList[DefaultModel];
const std::wstring ModelTitleLangKeyList[eModelTypeEnd] = {
L"IDC_RADIO_MODEL_UPCONV_RGB",
L"IDC_RADIO_MODEL_UPCONV_PHOTO",
L"IDC_RADIO_MODEL_RGB",
L"IDC_RADIO_MODEL_PHOTO",
L"IDC_RADIO_MODEL_Y",
L"IDC_RADIO_MODEL_UpResNet10",
L"IDC_RADIO_MODEL_CUNET",
};
// ダイアログ用 // ダイアログ用
class DialogEvent class DialogEvent
{ {
@ -85,16 +132,6 @@ private:
eScaleType scaleType; eScaleType scaleType;
enum eModelType
{
eModelTypeRGB,
eModelTypePhoto,
eModelTypeY,
eModelTypeUpConvRGB,
eModelTypeUpConvPhoto,
eModelTypeEnd,
};
eModelType modelType; eModelType modelType;
std::wstring LangName; std::wstring LangName;
@ -192,6 +229,8 @@ public:
void CheckCUDNN(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData); void CheckCUDNN(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void OnModelChange(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
LRESULT OnSetInputFilePath(const TCHAR *tPath); LRESULT OnSetInputFilePath(const TCHAR *tPath);
LRESULT OnSetInputFilePath(); LRESULT OnSetInputFilePath();

Binary file not shown.

View File

@ -80,7 +80,6 @@ int WINAPI WinMain(HINSTANCE hInstance,
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL1); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL1);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL2); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL2);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL3); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL3);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_COMBO_MODEL);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_CHECK_TTA); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_CHECK_TTA);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_COMBO_OUTPUT_DEPTH); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_COMBO_OUTPUT_DEPTH);
@ -93,6 +92,8 @@ int WINAPI WinMain(HINSTANCE hInstance,
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::LangChange, &cDialogEvent), NULL, IDC_COMBO_LANG); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::LangChange, &cDialogEvent), NULL, IDC_COMBO_LANG);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OutExtChange, &cDialogEvent), NULL, IDC_COMBO_OUT_EXT); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OutExtChange, &cDialogEvent), NULL, IDC_COMBO_OUT_EXT);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModelChange, &cDialogEvent), NULL, IDC_COMBO_MODEL);
// ダイアログのイベントで実行する関数の登録 // ダイアログのイベントで実行する関数の登録
cDialog.SetEventCallBack(SetClassFunc(DialogEvent::Create, &cDialogEvent), NULL, WM_INITDIALOG); cDialog.SetEventCallBack(SetClassFunc(DialogEvent::Create, &cDialogEvent), NULL, WM_INITDIALOG);
cDialog.SetEventCallBack(SetClassFunc(DialogEvent::OnDialogEnd, &cDialogEvent), NULL, WM_CLOSE); cDialog.SetEventCallBack(SetClassFunc(DialogEvent::OnDialogEnd, &cDialogEvent), NULL, WM_CLOSE);

Binary file not shown.

View File

@ -14,18 +14,19 @@
<ProjectGuid>{63FB3EFC-63B0-401C-BB54-F3A984DC233F}</ProjectGuid> <ProjectGuid>{63FB3EFC-63B0-401C-BB54-F3A984DC233F}</ProjectGuid>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<RootNamespace>waifu2xcaffegui</RootNamespace> <RootNamespace>waifu2xcaffegui</RootNamespace>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset> <PlatformToolset>v140</PlatformToolset>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset> <PlatformToolset>v140</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
@ -41,15 +42,15 @@
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
<IncludePath>D:\caffe-build\install\include;D:\caffe-build\install\include\boost-1_59;$(CUDA_PATH_V8_0)\include;D:\opencv310\build_vc\install\include;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath> <IncludePath>$(CUDA_PATH_V11_0)\include;$(SolutionDir)lib\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include\boost-1_61;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath>
<LibraryPath>D:\opencv310\build_vc\install\x64\vc12\lib;D:\caffe-build\install\lib;$(CUDA_PATH_V8_0)\lib\$(PlatformName);D:\program\boost_1_59_0\stage\x64\lib;$(LibraryPath)</LibraryPath> <LibraryPath>$(CUDA_PATH_V11_0)\lib\$(PlatformName);$(SolutionDir)lib\$(PlatformName)\vc15\staticlib;$(SolutionDir)lib\lib;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\lib;$(LibraryPath)</LibraryPath>
<OutDir>$(SolutionDir)bin\</OutDir> <OutDir>$(SolutionDir)bin\</OutDir>
<TargetName>$(ProjectName)d</TargetName> <TargetName>$(ProjectName)d</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<IncludePath>D:\caffe-build\install\include;D:\caffe-build\install\include\boost-1_59;$(CUDA_PATH_V8_0)\include;D:\opencv310\build_vc\install\include;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath> <IncludePath>$(CUDA_PATH_V11_0)\include;$(SolutionDir)lib\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include\boost-1_61;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath>
<LibraryPath>D:\opencv310\build_vc\install\x64\vc12\lib;D:\caffe-build\install\lib;$(CUDA_PATH_V8_0)\lib\$(PlatformName);D:\program\boost_1_59_0\stage\x64\lib;$(LibraryPath)</LibraryPath> <LibraryPath>$(CUDA_PATH_V11_0)\lib\$(PlatformName);$(SolutionDir)lib\$(PlatformName)\vc15\staticlib;$(SolutionDir)lib\lib;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\lib;$(LibraryPath)</LibraryPath>
<OutDir>$(SolutionDir)bin\</OutDir> <OutDir>$(SolutionDir)bin\</OutDir>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -58,13 +59,13 @@
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>BOOST_ALL_NO_LIB;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<DelayLoadDLLs>cudnn64_6.dll;%(DelayLoadDLLs)</DelayLoadDLLs> <DelayLoadDLLs>cudnn64_8.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
<Manifest> <Manifest>
@ -79,7 +80,7 @@
<Optimization>MaxSpeed</Optimization> <Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>BOOST_ALL_NO_LIB;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
@ -87,7 +88,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<DelayLoadDLLs>cudnn64_6.dll;%(DelayLoadDLLs)</DelayLoadDLLs> <DelayLoadDLLs>cudnn64_8.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
<Manifest> <Manifest>

View File

@ -155,7 +155,7 @@ int main(int argc, char** argv)
ValueArg<tstring> cmdModelPath(TEXT(""), TEXT("model_dir"), ValueArg<tstring> cmdModelPath(TEXT(""), TEXT("model_dir"),
TEXT("path to custom model directory (don't append last / )"), false, TEXT("path to custom model directory (don't append last / )"), false,
TEXT("models/upconv_7_anime_style_art_rgb"), TEXT("string"), cmd); TEXT("models/cunet"), TEXT("string"), cmd);
std::vector<tstring> cmdProcessConstraintV; std::vector<tstring> cmdProcessConstraintV;
cmdProcessConstraintV.push_back(TEXT("cpu")); cmdProcessConstraintV.push_back(TEXT("cpu"));

View File

@ -14,18 +14,19 @@
<ProjectGuid>{7C406EE4-2309-4D4C-98BB-CB7BA865FC41}</ProjectGuid> <ProjectGuid>{7C406EE4-2309-4D4C-98BB-CB7BA865FC41}</ProjectGuid>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<RootNamespace>waifu2x-caffe</RootNamespace> <RootNamespace>waifu2x-caffe</RootNamespace>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset> <PlatformToolset>v140</PlatformToolset>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset> <PlatformToolset>v140</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
@ -41,15 +42,15 @@
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
<IncludePath>D:\caffe-build\install\include;D:\caffe-build\install\include\boost-1_59;$(CUDA_PATH_V8_0)\include;D:\opencv310\build_vc\install\include;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath> <IncludePath>$(CUDA_PATH_V11_0)\include;$(SolutionDir)lib\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include\boost-1_61;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath>
<LibraryPath>D:\opencv310\build_vc\install\x64\vc12\lib;D:\caffe-build\install\lib;$(CUDA_PATH_V8_0)\lib\$(PlatformName);D:\program\boost_1_59_0\stage\x64\lib;$(LibraryPath)</LibraryPath> <LibraryPath>$(CUDA_PATH_V11_0)\lib\$(PlatformName);$(SolutionDir)lib\$(PlatformName)\vc15\staticlib;$(SolutionDir)lib\lib;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\lib;$(LibraryPath)</LibraryPath>
<OutDir>$(SolutionDir)bin\</OutDir> <OutDir>$(SolutionDir)bin\</OutDir>
<TargetName>$(ProjectName)d</TargetName> <TargetName>$(ProjectName)d</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<IncludePath>D:\caffe-build\install\include;D:\caffe-build\install\include\boost-1_59;$(CUDA_PATH_V8_0)\include;D:\opencv310\build_vc\install\include;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath> <IncludePath>$(CUDA_PATH_V11_0)\include;$(SolutionDir)lib\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include\boost-1_61;$(SolutionDir)rapidjson\include;$(SolutionDir)stb;$(SolutionDir)include;$(SolutionDir)msgpack-c\include;$(IncludePath)</IncludePath>
<LibraryPath>D:\opencv310\build_vc\install\x64\vc12\lib;D:\caffe-build\install\lib;$(CUDA_PATH_V8_0)\lib\$(PlatformName);D:\program\boost_1_59_0\stage\x64\lib;$(LibraryPath)</LibraryPath> <LibraryPath>$(CUDA_PATH_V11_0)\lib\$(PlatformName);$(SolutionDir)lib\$(PlatformName)\vc15\staticlib;$(SolutionDir)lib\lib;$(USERPROFILE)\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\lib;$(LibraryPath)</LibraryPath>
<OutDir>$(SolutionDir)bin\</OutDir> <OutDir>$(SolutionDir)bin\</OutDir>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -58,13 +59,13 @@
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>BOOST_ALL_NO_LIB;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<DelayLoadDLLs>cudnn64_6.dll;%(DelayLoadDLLs)</DelayLoadDLLs> <DelayLoadDLLs>cudnn64_8.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
@ -76,7 +77,7 @@
<Optimization>MaxSpeed</Optimization> <Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>BOOST_ALL_NO_LIB;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
@ -84,7 +85,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<DelayLoadDLLs>cudnn64_6.dll;%(DelayLoadDLLs)</DelayLoadDLLs> <DelayLoadDLLs>cudnn64_8.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>