|
from .base_options import BaseOptions |
|
|
|
|
|
class TestOptions(BaseOptions): |
|
"""This class includes test options. |
|
|
|
It also includes shared options defined in BaseOptions. |
|
""" |
|
|
|
def initialize(self, parser): |
|
parser = BaseOptions.initialize(self, parser) |
|
parser.add_argument('--image_path', type=str, help='path to image for generate.') |
|
parser.add_argument('--ntest', type=int, default=float("inf"), help='# of test examples.') |
|
parser.add_argument('--aspect_ratio', type=float, default=1.0, help='aspect ratio of result images') |
|
parser.add_argument('--phase', type=str, default='test', help='train, val, test, etc') |
|
parser.add_argument('--which_epoch', type=str, default='latest', help='which epoch to load? set to latest to use latest cached model') |
|
parser.add_argument('--how_many', type=int, default=50, help='how many test images to run') |
|
parser.add_argument('--results_dir', type=str, default='./results/', help='saves results here.') |
|
|
|
parser.add_argument('--eval', action='store_true', help='use eval mode during test time.') |
|
parser.add_argument('--num_test', type=int, default=50, help='how many test images to run') |
|
|
|
|
|
parser.set_defaults(load_size=parser.get_default('crop_size')) |
|
self.isTrain = False |
|
return parser |
|
|
|
|
|
|
|
def generate(): |
|
""" |
|
generate single image specific by image path, and show the after generated image |
|
:return: |
|
""" |
|
image_path = opt.image_path |
|
print('generate from {}'.format(image_path)) |
|
|
|
data = load_image_for_prediction(opt, image_path) |
|
|
|
model = OneDirectionTestModel() |
|
model.initialize(opt=opt) |
|
model.set_input(data) |
|
model.test() |
|
|
|
visuals = model.get_current_visuals() |
|
generated_a = visuals['fake_B'] |
|
|
|
image_generated = Image.fromarray(generated_a) |
|
image_generated.save(str(os.path.basename(image_path).split('.')[0]) + '_fake_b.jpg') |
|
|
|
combined_result = np.concatenate([img for _, img in visuals.items()], 1) |
|
image_combined = Image.fromarray(combined_result) |
|
image_combined.save(str(os.path.basename(image_path).split('.')[0]) + '_combined.jpg') |
|
image_combined.show() |
|
print('generated image saved.') |
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
generate() |
|
|
|
def parse(self): |
|
if not self.initialized: |
|
self.initialize() |
|
self.opt = self.parser.parse_args() |
|
self.opt.isTrain = self.isTrain |
|
|
|
str_ids = self.opt.gpu_ids.split(',') |
|
self.opt.gpu_ids = [] |
|
for str_id in str_ids: |
|
id = int(str_id) |
|
if id >= 0: |
|
self.opt.gpu_ids.append(id) |
|
|
|
args = vars(self.opt) |
|
|
|
print('------------ Options -------------') |
|
for k, v in sorted(args.items()): |
|
print('%s: %s' % (str(k), str(v))) |
|
print('-------------- End ----------------') |
|
|
|
|
|
expr_dir = os.path.join(self.opt.checkpoints_dir, self.opt.name) |
|
util.mkdirs(expr_dir) |
|
file_name = os.path.join(expr_dir, 'opt.txt') |
|
with open(file_name, 'wt') as opt_file: |
|
opt_file.write('------------ Options -------------\n') |
|
for k, v in sorted(args.items()): |
|
opt_file.write('%s: %s\n' % (str(k), str(v))) |
|
opt_file.write('-------------- End ----------------\n') |
|
return self.opt |
|
|
|
|