From 5c7a139d0207e47b5074651ebbef9a692639ee94 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E6=B4=8B=E6=B4=8B?= <584244991@qq.com>
Date: Fri, 12 Aug 2022 09:20:25 +0000
Subject: [PATCH 1/4] add
TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: 张洋洋 <584244991@qq.com>
---
.../cv/FQ-GAN_ID1117_for_TensorFlow/README.md | 205 ++++++++++++++++++
1 file changed, 205 insertions(+)
create mode 100644 TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md
diff --git a/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md b/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md
new file mode 100644
index 000000000..725872ccd
--- /dev/null
+++ b/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md
@@ -0,0 +1,205 @@
+- [基本信息](#基本信息.md)
+- [概述](#概述.md)
+- [训练环境准备](#训练环境准备.md)
+- [快速上手](#快速上手.md)
+- [迁移学习指导](#迁移学习指导.md)
+- [高级参考](#高级参考.md)
+
基本信息
+
+**发布者(Publisher):Huawei**
+
+**应用领域(Application Domain):Object Detection**
+
+**版本(Version):1.1**
+
+**修改时间(Modified) :2022.8.11**
+
+**大小(Size):35928088**
+
+**框架(Framework):TensorFlow_1.15**
+
+**模型格式(Model Format):ckpt**
+
+**精度(Precision):FP32**
+
+**处理器(Processor):昇腾910**
+
+**应用级别(Categories):Official**
+
+**描述(Description):基于TensorFlow框架的卷积长短期记忆实现视觉里程计训练代码**
+
+概述
+
+## 简述
+
+ConvLSTM最早由香港科技大学的团队提出,解决序列图片的时空预测问题。本网络的ConvLSTM结构用于处理车载摄像头序列图片,实现一个视觉里程计
+
+- 参考论文:
+
+ [https://arxiv.org/abs/1709.08429](Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting)
+
+- 参考实现:
+
+ https://github.com/giserh/ConvLSTM-2
+ https://github.com/Kallaf/Visual-Odometry/blob/master/VisualOdometry.ipynb
+
+- 适配昇腾 AI 处理器的实现:
+
+ https://gitee.com/ascend/ModelZoo-TensorFlow/tree/master/TensorFlow/contrib/cv/ConvLSTM_ID2358_for_TensorFlow
+
+- 通过Git获取对应commit\_id的代码方法如下:
+
+ git clone {repository_url} # 克隆仓库的代码
+ cd {repository_name} # 切换到模型的代码仓目录
+ git checkout {branch} # 切换到对应分支
+ git reset --hard {commit_id} # 代码设置到对应的commit_id
+ cd {code_path} # 切换到模型代码所在路径,若仓库下只有该模型,则无需切换
+
+
+## 默认配置
+
+- 训练超参(单卡):
+ - Batch size: 32
+ - learing_rata: 0.0001
+ - train_iter 300
+ - datapath
+ - outputpath
+
+
+## 支持特性
+
+| 特性列表 | 是否支持 |
+| ---------- | -------- |
+| 分布式训练 | 否 |
+| 混合精度 | 否 |
+| 数据并行 | 是 |
+
+
+## 混合精度训练
+
+昇腾910 AI处理器提供自动混合精度功能,可以针对全网中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。
+
+## 开启混合精度
+
+拉起脚本中,
+
+```
+ ./train_full_1p.sh --help
+
+parameter explain:
+ --precision_mode #precision mode(allow_fp32_to_fp16/force_fp16/must_keep_origin_dtype/allow_mix_precision)
+ --data_path # dataset of training
+ --output_path # output of training
+ --train_steps # max_step for training
+ --train_epochs # max_epoch for training
+ --batch_size # batch size
+ -h/--help show help message
+```
+
+混合精度相关代码示例:
+
+ ```
+ precision_mode="allow_mix_precision"
+
+ ```
+
+训练环境准备
+
+- 硬件环境和运行环境准备请参见《[CANN软件安装指南](https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373?category=installation-update)》
+- 运行以下命令安装依赖。
+```
+pip3 install requirements.txt
+```
+说明:依赖配置文件requirements.txt文件位于模型的根目录
+
+快速上手
+
+## 数据集准备
+
+1、模型训练使用KITTI Visual Odometry/SLAM benchmark数据集,数据集请用户自行获取
+
+2、ConvLSTM训练的模型及数据集可以参考"简述 -> 参考实现"
+
+
+## 模型训练
+
+- 单击“立即下载”,并选择合适的下载方式下载源码包。
+- 开始训练。
+
+ - 启动训练之前,首先要配置程序运行相关环境变量。
+
+ 环境变量配置信息参见:
+
+ [Ascend 910训练平台环境变量设置](https://gitee.com/ascend/modelzoo/wikis/Ascend%20910%E8%AE%AD%E7%BB%83%E5%B9%B3%E5%8F%B0%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E8%AE%BE%E7%BD%AE?sort_id=3148819)
+
+ - 单卡训练
+
+
+ 1. 配置训练参数。
+
+ 训练参数已经默认在脚本中设置,需要在启动训练时指定数据集路径和输出路径
+
+ ```
+ parser.add_argument('--datapath')
+ parser.add_argument('--outputpath')
+ parser.add_argument('--bsize', default=32)
+ parser.add_argument('--trajectory_length', default=4)
+ parser.add_argument('--lr', default=0.0001)
+ parser.add_argument('--train_iter', default=300)
+ parser.add_argument('--time_steps', default=1)
+ ```
+
+ 2. 启动训练。
+
+ ```
+ python3.7 NPUTruemain.py
+ ```
+
+ 3. 启动测试。
+
+ 生成测试初始相对位姿文件
+
+ ```
+ python3 NPUTrueTest.py
+ ```
+ 转化测试绝对位姿文件
+
+ ```
+ python3 pose_process.py
+ ```
+ 利用evo工具进行误差计算绘制
+
+ ```
+ evo_ape kitti output_12D_file.txt estimated_12D_file.txt -r full -va --plot --plot_mode xz --save_results results/ConvLSTM.zip
+ ```
+
+
+高级参考
+
+## 脚本和示例代码
+
+```
+├── Truemain.py //网络训练与测试代码
+├── README.md //代码说明文档
+├── cell.py //convlstm核
+├── NPUTruemain.py //NPU裸机上的网络训练代码
+├── NPUTrueTest.py //NPU裸机上的网络测试代码
+├── pose_process.py //相对位姿转绝对位姿代码
+├── requirements.txt //训练python依赖列表
+│ ├──modelarts_entry_acc.py //modelarts训练验证精度脚本
+│ ├──modelarts_entry_perf.py //modelarts训练验证性能脚本
+```
+
+## 脚本参数
+
+```
+--data_path 数据集路径
+--batch_size 每个NPU的batch size,默认:32
+--learing_rata 初始学习率,默认:0.0001
+--steps 数据集图片跨越步数,默认:1
+--train_iter 训练epcoh数量,默认:300
+```
+
+## 训练过程
+
+通过“模型训练”中的训练指令启动单卡或者多卡训练。单卡和多卡通过运行不同脚本,支持单卡。模型存储路径为${cur_path}/output/$ASCEND_DEVICE_ID,包括训练的log以及checkpoints文件。以1卡训练为例,loss信息在文件${cur_path}/output/${ASCEND_DEVICE_ID}/train_${ASCEND_DEVICE_ID}.log中。
\ No newline at end of file
--
Gitee
From 35730c515f1eca210e2748d8e46a91596bc1c232 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E6=B4=8B=E6=B4=8B?= <584244991@qq.com>
Date: Fri, 12 Aug 2022 09:36:00 +0000
Subject: [PATCH 2/4] update
TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: 张洋洋 <584244991@qq.com>
---
.../cv/FQ-GAN_ID1117_for_TensorFlow/README.md | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md b/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md
index 725872ccd..f11cf2f5f 100644
--- a/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md
+++ b/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md
@@ -12,9 +12,9 @@
**版本(Version):1.1**
-**修改时间(Modified) :2022.8.11**
+**修改时间(Modified) :2022.8.12**
-**大小(Size):35928088**
+**大小(Size):416020KB**
**框架(Framework):TensorFlow_1.15**
@@ -26,26 +26,25 @@
**应用级别(Categories):Official**
-**描述(Description):基于TensorFlow框架的卷积长短期记忆实现视觉里程计训练代码**
+**描述(Description):基于TensorFlow框架的特征量化提升GAN训练代码**
概述
## 简述
-ConvLSTM最早由香港科技大学的团队提出,解决序列图片的时空预测问题。本网络的ConvLSTM结构用于处理车载摄像头序列图片,实现一个视觉里程计
+特征量化(FQ),将真数据样本和假数据样本嵌入到共享离散空间中。FQ的量化值被构造为一个进化词典,与最近分布历史的特征统计一致。因此,FQ隐式地在紧凑空间中实现了鲁棒的特征匹配。我们的方法可以很容易地插入现有的GAN模型中,在训练中几乎没有计算开销。
- 参考论文:
- [https://arxiv.org/abs/1709.08429](Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting)
+ [https://arxiv.org/abs/2004.02088](Feature Quantization Improves GAN Training)
- 参考实现:
- https://github.com/giserh/ConvLSTM-2
- https://github.com/Kallaf/Visual-Odometry/blob/master/VisualOdometry.ipynb
+ https://github.com/YangNaruto/FQ-GAN
- 适配昇腾 AI 处理器的实现:
- https://gitee.com/ascend/ModelZoo-TensorFlow/tree/master/TensorFlow/contrib/cv/ConvLSTM_ID2358_for_TensorFlow
+ https://gitee.com/ascend/ModelZoo-TensorFlow/tree/master/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow
- 通过Git获取对应commit\_id的代码方法如下:
--
Gitee
From 70c05a55a3600e9d824cbed3e25f78a4e9ce22b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E6=B4=8B=E6=B4=8B?= <584244991@qq.com>
Date: Sun, 14 Aug 2022 05:56:32 +0000
Subject: [PATCH 3/4] update
TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: 张洋洋 <584244991@qq.com>
---
.../cv/FQ-GAN_ID1117_for_TensorFlow/README.md | 112 +++++++++++-------
1 file changed, 66 insertions(+), 46 deletions(-)
diff --git a/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md b/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md
index f11cf2f5f..12ce14814 100644
--- a/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md
+++ b/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/README.md
@@ -58,18 +58,24 @@
## 默认配置
- 训练超参(单卡):
- - Batch size: 32
- - learing_rata: 0.0001
- - train_iter 300
- - datapath
- - outputpath
+ - Batch size: 1
+ - dataset=${data_path}/dataset/selfie2anime
+ - phase='train'
+ - test_train=True
+ - quant=True
+ - checkpoint_dir=${output_path}/checkpoint
+ - result_dir=${output_path}/results
+ - log_dir=${output_path}/logs
+ - sample_dir=${output_path}/samples
+ - epoch=1
+ --iteration=10000
## 支持特性
| 特性列表 | 是否支持 |
| ---------- | -------- |
-| 分布式训练 | 否 |
+| 分布式训练 | 是 |
| 混合精度 | 否 |
| 数据并行 | 是 |
@@ -115,9 +121,9 @@ pip3 install requirements.txt
## 数据集准备
-1、模型训练使用KITTI Visual Odometry/SLAM benchmark数据集,数据集请用户自行获取
+1、模型训练使用selfie2anime数据集,数据集请用户自行获取https://github.com/taki0112/UGATIT
-2、ConvLSTM训练的模型及数据集可以参考"简述 -> 参考实现"
+2、FQ训练的模型及数据集可以参考"简述 -> 参考实现"
## 模型训练
@@ -139,38 +145,45 @@ pip3 install requirements.txt
训练参数已经默认在脚本中设置,需要在启动训练时指定数据集路径和输出路径
```
- parser.add_argument('--datapath')
- parser.add_argument('--outputpath')
- parser.add_argument('--bsize', default=32)
- parser.add_argument('--trajectory_length', default=4)
- parser.add_argument('--lr', default=0.0001)
- parser.add_argument('--train_iter', default=300)
- parser.add_argument('--time_steps', default=1)
+ parser.add_argument('--dataset', type=str, default='selfie2anime', help='dataset_name')
+
+ parser.add_argument('--epoch', type=int, default=101, help='The number of epochs to run')
+ parser.add_argument('--iteration', type=int, default=10000, help='The number of training '
+ 'iterations')
+ parser.add_argument('--batch_size', type=int, default=1, help='The size of batch size')
+ parser.add_argument('--print_freq', type=int, default=10, help='The number of '
+ 'image_print_freq')
+ parser.add_argument('--save_freq', type=int, default=10, help='The number of ckpt_save_freq')
+ parser.add_argument('--decay_flag', type=str2bool, default=True, help='The decay_flag')
+ parser.add_argument('--decay_epoch', type=int, default=50, help='decay epoch')
+
+ parser.add_argument('--lr', type=float, default=0.0001, help='The learning rate')
+ parser.add_argument('--GP_ld', type=int, default=10, help='The gradient penalty lambda')
+ parser.add_argument('--adv_weight', type=int, default=1, help='Weight about GAN')
+ parser.add_argument('--cycle_weight', type=int, default=10, help='Weight about Cycle')
+ parser.add_argument('--identity_weight', type=int, default=10, help='Weight about Identity')
+ parser.add_argument('--cam_weight', type=int, default=1000, help='Weight about CAM')
+ parser.add_argument('--smoothing', type=str2bool, default=True, help='AdaLIN smoothing effect')
+ parser.add_argument('--ch', type=int, default=64, help='base channel number per layer')
+ parser.add_argument('--n_res', type=int, default=4, help='The number of resblock')
+ parser.add_argument('--n_dis', type=int, default=6, help='The number of discriminator layer')
+ parser.add_argument('--n_critic', type=int, default=1, help='The number of critic')
+ parser.add_argument('--sn', type=str2bool, default=True, help='using spectral norm')
+ parser.add_argument('--img_size', type=int, default=256, help='The size of image')
+ parser.add_argument('--img_ch', type=int, default=3, help='The size of image channel')
+ parser.add_argument('--augment_flag', type=str2bool, default=True, help='Image augmentation use or not')
+ parser.add_argument('--checkpoint_dir', type=str, default='checkpoint')
+ parser.add_argument('--result_dir', type=str, default='/cache/results')
+ parser.add_argument('--log_dir', type=str, default='logs')
+ parser.add_argument('--sample_dir', type=str, default='/cache/samples')
```
2. 启动训练。
```
- python3.7 NPUTruemain.py
- ```
-
- 3. 启动测试。
-
- 生成测试初始相对位姿文件
-
- ```
- python3 NPUTrueTest.py
- ```
- 转化测试绝对位姿文件
-
- ```
- python3 pose_process.py
+ python3.7 UGATIT.py
```
- 利用evo工具进行误差计算绘制
- ```
- evo_ape kitti output_12D_file.txt estimated_12D_file.txt -r full -va --plot --plot_mode xz --save_results results/ConvLSTM.zip
- ```
高级参考
@@ -178,25 +191,32 @@ pip3 install requirements.txt
## 脚本和示例代码
```
-├── Truemain.py //网络训练与测试代码
+├── UGATIT.py //网络训练与测试代码
├── README.md //代码说明文档
-├── cell.py //convlstm核
-├── NPUTruemain.py //NPU裸机上的网络训练代码
-├── NPUTrueTest.py //NPU裸机上的网络测试代码
-├── pose_process.py //相对位姿转绝对位姿代码
-├── requirements.txt //训练python依赖列表
-│ ├──modelarts_entry_acc.py //modelarts训练验证精度脚本
-│ ├──modelarts_entry_perf.py //modelarts训练验证性能脚本
+├── logger.py
+├── main.py
+├── modelarts_entry_acc.py
+├── ops.py
+├── test
+│ ├──train_full_1p.sh //训练验证full脚本
+│ ├──train_performance_1p.sh //训练验证perf性能脚本
+├──requirements.txt
```
## 脚本参数
```
---data_path 数据集路径
---batch_size 每个NPU的batch size,默认:32
---learing_rata 初始学习率,默认:0.0001
---steps 数据集图片跨越步数,默认:1
---train_iter 训练epcoh数量,默认:300
+-- Batch size: 1
+-- dataset=${data_path}/dataset/selfie2anime
+-- phase='train'
+-- test_train=True
+-- quant=True
+-- checkpoint_dir=${output_path}/checkpoint
+-- result_dir=${output_path}/results
+-- log_dir=${output_path}/logs
+-- sample_dir=${output_path}/samples
+-- epoch=1
+--iteration=10000
```
## 训练过程
--
Gitee
From f6b70a997876f83cb335715c363de29c98be0e30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E6=B4=8B=E6=B4=8B?= <584244991@qq.com>
Date: Sun, 14 Aug 2022 05:57:05 +0000
Subject: [PATCH 4/4] requirement.txt to
TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/requirements.txt.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: 张洋洋 <584244991@qq.com>
---
.../{requirement.txt => requirements.txt} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/{requirement.txt => requirements.txt} (100%)
diff --git a/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/requirement.txt b/TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/requirements.txt
similarity index 100%
rename from TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/requirement.txt
rename to TensorFlow/contrib/cv/FQ-GAN_ID1117_for_TensorFlow/requirements.txt
--
Gitee