代码链接如下:
code/opt模块model_test.py和code模块model_test.py学习
1,skimage版本不同导致两者之间的差异。
code模块model_test.py
import skimage
该模块对应如下应用:
MSE[t] += skimage.measure.compare_mse(origin_, pred_) / test_size # 均方误差
PSNR[t] += skimage.measure.compare_psnr(origin_, pred_) / test_size # 峰值信噪比
SSIM[t] += skimage.measure.compare_ssim(origin_, pred_,
multichannel=(args.img_channels > 1)) / test_size # 结构相似性
code/opt模块model_test.py
import skimage.metrics
对应如下内容:
MSE_[t] += skimage.metrics.mean_squared_error(origin_, pred_) # 均方误差
PSNR_[t] += skimage.metrics.peak_signal_noise_ratio(origin_, pred_) # 峰值信噪比
SSIM_[t] += skimage.metrics.structural_similarity(origin_, pred_,
multichannel=args.img_channels > 1) # 结构相似性
2,为什么args可以引用一些操作,它代表什么?
首先解析如下代码含义
第一,了解argparse库
argparse是一个Python模块:命令行选项、参数和子命令解析器。
使用流程:
主要有三个步骤:
- 创建 ArgumentParser() 对象。
- 调用 add_argument() 方法添加参数,定义操作的名称,随后可以采用对象调用。等其他参数。
参数说明: class argparse.ArgumentParser( prog=None, # 设定程序名称 (defaul: sys.argv[0]) usage=None, # 替换默认的Usage信息 description=None, # 程序简要信息说明(参数说明前) epilog=None, # 附加信息说明(参数说明后) parents=[], # 继承父解析器(parser) formatter_class=argparse.HelpFormatter, # 自定义帮忙信息显示格式(4种) prefix_chars='-', # 参数前缀符号(默认为-,如:-h/--help) fromfile_prefix_chars=None, # 从文件中引用参数(与在命令行直接写作用一致,解决参数过多的情况) argument_default=None, # 可设置argparse.SUPPRESS阻止默认参数默认值 conflict_handler='error', # 参数冲突处理 add_help=True, # 帮助信息中默认添加"-h, --help"描述 allow_abbrev=True # 允许参数缩写 )
- 使用 parse_args() 解析添加的参数。
- 如下实例直接明了
from argparse import ArgumentParser def get_args(): parser = ArgumentParser(description="Implementation of SSD") parser.add_argument("--data-path", type=str, default="coco", help="the root folder of dataset") parser.add_argument("--save-folder", type=str, default="trained_models", help="path to folder containing model checkpoint file") parser.add_argument("--log-path", type=str,default="47") args = parser.parse_args() return args args = get_args() print(args) print(args.log_path)
由上可知:args是ArgumentParser的一个对象,所以可以调用ArgumentParser定义的操作