본문으로 건너뛰기

D/L 기반 Defect 분류 실습

개요

  • Cat vs Dog 이미지를 통해 클래스를 분류하여 D/L기반 분류 실습 진행합니다.

학습/검증 데이터 준비

  • 샘플 파일 다운로드
  • 샘플 파일 구성
    • 강아지 및 고양이 이미지가 분류 안되어 있다고 가정합니다.
    • 검증을 위한 이미지를 임의로 분리합니다. (학습 8000장, 테스트 2000장)
      • Cat and Dog Images
  • 데이터 셋 등록
    • Client에 데이터를 등록합니다.
      • Regist Dataset
      • Dataset Upload Complete
  • ClassCodeSet 등록
    • CAT_DOG ClassCodeSet 등록
      • Create Class Code Set
    • CAT, DOG의 ClassCode 등록
      • Create Class Codes



학습 데이터 labling 작업

  • 학습 데이터셋에서 추가한 데이터셋을 복제
    • Create Class Codes
  • Labeling 진행
    • Dataset Labeling
    • 라벨링에 대한 더 자세한 내용은 이미지 분류 메뉴얼을 참조하시기 바랍니다.
  • 라벨링 완료
    • 라벨링 완료 화면을 확인합니다.
      • Labeling Complete



Classification 학습 진행 및 모델 배포 작업

📜 inception_builder_handler.py 예시 코드 보기
import itertools
import shutil
from urllib.parse import urlparse
import uuid
import random
import os
import io
import logging
import time
import json
import grpc
import cv2
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
import torch
import torchvision
from torchvision import transforms
import torch.nn as nn
from torch.utils.data import Dataset
import torch.optim as optim
from google.protobuf.wrappers_pb2 import StringValue
import mpp
from mpp.daq import protos
from PIL import Image

##!--{"Name":"hyperparameter","Type":"epoch","Key":"epoch","Value":"","Category":""}
##!--{"Name":"hyperparameter","Type":"batch_size","Key":"batch_size","Value":"","Category":""}
##!--{"Name":"result","Type":"result","Key":"id","Value":"","Category":""}
##!--{"Name":"authentication","Type":"system_address","Key":"operation_service_address","Value":"","Category":""}
##!--{"Name":"authentication","Type":"access_token","Key":"access_token","Value":"","Category":""}
##!--{"Name":"gt_dataset","Type":"gt_dataset","Key":"gt_dataset_id","Value":"","Category":""}

##$--
parameters = '''{
"hyperparameter":{
"epoch" : 20,
"save_epoch" : 1,
"batch_size" : 16,
"lr" : 1e-3,
"optimizer_name" : "Adam",
"input_size" : 299,
"normalize_mean" : 0.5,
"normalize_stdev" : 0.5,
"using_gpu" : true,
"using_amp" : true,
"train_ratio" : 0.8,
"validation_save_random" : false
},
"authentication": {
"operation_service_address": "",
"access_token" : ""
},
"result":{
"id":"",
"volume_id":"default"
},
"gt_dataset":{
"gt_dataset_id" : ""
},
"chunk_size" : 100000
}'''
##$--

logger = globals().get('JOB_LOGGER', logging.getLogger())
logger.setLevel(logging.INFO)
logging.basicConfig(level=logging.INFO, format='%(message)s')

def RecipeRun(**kwargs):

operation_builder = Operation_Builder(**kwargs)
operation_config = operation_builder \
.initialize() \
.build()

hyperparameter_builder = HyperparameterBuilder(operation_config['hyperparameter']) \
.initialize() \
.build()

dataset_builder = Classification_Dataset_Builder(operation_config['gt_dataset'])
result = dataset_builder \
.initialize() \
.init_label_data(
operation_channel= operation_builder.get_operation_channel(),
access_token= operation_builder.get_access_token()
) \
.init_dataset_gts(
operation_channel= operation_builder.get_operation_channel(),
access_token= operation_builder.get_access_token()
) \
.create_train_dataset(
operation_channel= operation_builder.get_operation_channel(),
access_token= operation_builder.get_access_token(),
train_ratio= hyperparameter_builder.get_train_ratio(),
transform= hyperparameter_builder.get_transform(),
batch_size= hyperparameter_builder.get_batch_size(),
validation_save_random= hyperparameter_builder.get_validation_save_random()
) \
.build()

if result is False:
logger.error(f"Dataset Build Failed")
dataset_builder.temp_folder_delete()
return None

try:
save_builder = Save_Builder() \
.initialize(
operation_builder,
num_classes=dataset_builder.get_num_classes(),
label_info=dataset_builder.get_label_info()
) \
.init_inference_info(
input_size=hyperparameter_builder.get_input_size()
) \
.build()

model_builder = Torch_Model_Builder()
model_builder \
.initialize(
epoch_total=hyperparameter_builder.get_epoch(),
save_epoch=hyperparameter_builder.get_save_epoch(),
save_builder=save_builder
) \
.init_model(
num_classes=dataset_builder.get_num_classes(),
device=operation_builder.get_device()
) \
.init_optimizer(
optimizer_name=hyperparameter_builder.get_optimizer(),
lr=hyperparameter_builder.get_learning_rate()
) \
.init_criterion(
criterion_name=hyperparameter_builder.get_criterion()
) \
.build()

model_builder.train(
dataset_builder.get_train_loader(),
dataset_builder.get_validation_loader(),
operation_builder.get_device(),
hyperparameter_builder.get_using_amp()
)

except Exception as e:
logger.error(f"Error Message : {e}")
raise Exception(f"Train Failed, Error Message : {e}")

finally:
dataset_builder.temp_folder_delete()

class Operation_Builder:
def __init__(self, **keyword_arguments):
self.__keyword_arguments = keyword_arguments
self.__operation_channel = None
self.__access_token = None
self.__bucket_url = None
self.__chunk_size = None
self.__device = None

def initialize(self):
self.__init_device()
self.__init_access_token()
self.__init_operation_channel()
self.__init_bucket_url()
self.__init_chunk_size()
return self

def __init_device(self):
device = self.__keyword_arguments['hyperparameter']['using_gpu']
if device and not torch.cuda.is_available():
raise Exception("GPU is not available")
self.__device = 'cuda' if device else 'cpu'

def __init_operation_channel(self):
address = self.__keyword_arguments['authentication']['operation_service_address']
selected_address = random.choice(address.split(","))
if not address or not selected_address:
raise Exception("Address is required")
self.__operation_channel = grpc.insecure_channel(selected_address)

def __init_access_token(self):
access_token = self.__keyword_arguments['authentication']['access_token']
if not access_token:
raise Exception("Access token is required")
self.__access_token = access_token

def __init_bucket_url(self):
bucket_id = self.__keyword_arguments['result']['id']
volume_id = self.__keyword_arguments['result']['volume_id']

if not bucket_id:
raise Exception("Bucket URL is required")
if urlparse(bucket_id).scheme == '':
self.__create_bucket(bucket_id, bucket_id+"_title", volume_id)
self.__bucket_url = f"object:///{bucket_id}"
else:
self.__bucket_url = bucket_id

def __create_bucket(self, bucket_id, bucket_title, bucket_volume_id, properties=None):
if properties:
properties = StringValue(value=json.dumps(properties))

stub = protos.daq_object_object_api_v1_pb2_grpc.ObjectServiceStub(self.__operation_channel)
stub.CreateBucket(request=protos.daq_object_object_api_v1_pb2.CreateBucketRequest(
id=bucket_id, title=bucket_title, properties=properties, description=None, volume_id=bucket_volume_id
),metadata=[('authorization', f'Bearer {self.__access_token}')])

def __init_chunk_size(self):
chunk_size = self.__keyword_arguments['chunk_size']
if not chunk_size:
raise Exception("Chunk size is required")
if chunk_size <= 0:
raise Exception("Chunk size must be greater than 0")
self.__chunk_size = chunk_size

def get_operation_channel(self):
return self.__operation_channel

def get_access_token(self):
return self.__access_token

def get_device(self):
return self.__device

def get_bucket_url(self):
return self.__bucket_url

def get_chunk_size(self):
return self.__chunk_size

def build(self):
return self.__keyword_arguments

class HyperparameterBuilder:
def __init__(self, keyword_arguments):
self.__hyperparams = keyword_arguments

def initialize(self):
self.__hyperparams['epoch'] = int(self.__hyperparams['epoch'])
self.__hyperparams['batch_size'] = int(self.__hyperparams['batch_size'])
return self

def get_train_ratio(self):
return self.__hyperparams['train_ratio']

def get_transform(self):
input_size = self.__hyperparams['input_size']
mean = self.__hyperparams['normalize_mean']
stdev = self.__hyperparams['normalize_stdev']

transform = transforms.Compose([
transforms.Lambda(lambda img: Image.fromarray(img).convert("RGB")),
transforms.ToTensor(),
transforms.Resize((input_size, input_size)),
transforms.Normalize((mean, mean, mean), (stdev, stdev, stdev))
])
return transform

def get_batch_size(self):
return self.__hyperparams['batch_size']

def get_validation_save_random(self):
return self.__hyperparams.get('validation_save_random', False)

def get_optimizer(self):
keys = ['optimizer', 'optimizer_name']
for key in keys:
if key in self.__hyperparams:
return self.__hyperparams[key]

raise KeyError(f"Optimizer not found. Tried keys: {', '.join(keys)}")

def get_learning_rate(self):
keys = ['lr', 'learningRate', 'LearningRate', 'Learningrate']
for key in keys:
if key in self.__hyperparams:
return self.__hyperparams[key]

raise KeyError(f"Learning rate not found. Tried keys: {', '.join(keys)}")

def get_input_size(self):
return self.__hyperparams['input_size']

def get_epoch(self):
return self.__hyperparams['epoch']

def get_save_epoch(self):
return self.__hyperparams['save_epoch']

def get_using_amp(self):
return self.__hyperparams.get('using_amp', True)

def get_early_stop_patience(self):
keys = ['earlyStopPatience']
for key in keys:
if key in self.__hyperparams:
return self.__hyperparams[key]
return 0

def get_reduce_learning_rate_patience(self):
keys = ['reduceLRPatience']
for key in keys:
if key in self.__hyperparams:
return self.__hyperparams[key]
return 0

def get_criterion(self):
keys = ['criterion', 'loss']
for key in keys:
if key in self.__hyperparams:
return self.__hyperparams[key]

return 'CrossEntropyLoss'

def build(self):
return self

class Classification_Dataset_Builder:
def __init__(self, keyword_arguments):
self.__gt_dataset_id = keyword_arguments['gt_dataset_id']
self.__local_download_path = None
self.__train_data_loader = None
self.__validation_data_loader = None
self.__classification_gts = None
self.__label_info = None
self.__class_code_info = None
self.__num_classes = None

def initialize(self):
self.__local_download_path = os.path.join(f"/temp/{uuid.uuid4()}")
return self

def init_label_data(self, operation_channel, access_token):
if operation_channel:
stub = protos.daq_dataset_classification_gt_dataset_api_v1_pb2_grpc.ClassificationGtDatasetServiceStub(operation_channel)
classification_gt_dataset = stub.GetClassificationGtDataset(request=protos.daq_dataset_classification_gt_dataset_api_v1_pb2.GetClassificationGtDatasetRequest(
id=self.__gt_dataset_id), metadata=[('authorization', f'Bearer {access_token}')])
class_code_set_id = classification_gt_dataset.class_code_set_id
else:
class_code_set_id = self.__gt_dataset_id

if operation_channel:
stub = protos.daq_dataset_class_code_api_v1_pb2_grpc.ClassCodeServiceStub(operation_channel)
query_parameter = protos.daq_common_pb2.QueryParameter(
page_index=0,
page_size=-1,
where=StringValue(value=f"Id=\"{class_code_set_id}\""),
order_by=None)

response = stub.ListClassCodeSets(request=protos.daq_dataset_class_code_api_v1_pb2.ListClassCodeSetsRequest(
query_parameter=query_parameter), metadata=[('authorization', f'Bearer {access_token}')])

class_info = response.class_code_sets[0].class_codes
num_classes = len(class_info)
label_info = {"label_count" : num_classes}
class_code_info = dict()

for i, class_code in enumerate(class_info):
label_info[f'label_{i}'] = {"code" : class_code.code, "name" : class_code.name}
class_code_info[class_code.code] = i
else:
class_info = os.listdir(class_code_set_id)
num_classes = len(class_info)
label_info = {"label_count" : num_classes}
class_code_info = dict()

for i, class_code in enumerate(class_info):
label_info[f'label_{i}'] = {"code" : i, "name" : class_code}
class_code_info[i] = i

self.__label_info = label_info
self.__class_code_info = class_code_info
self.__num_classes = num_classes
return self

def init_dataset_gts(self, operation_channel, access_token):
if operation_channel:
stub = protos.daq_dataset_classification_gt_dataset_api_v1_pb2_grpc.ClassificationGtDatasetServiceStub(operation_channel)
query_parameter = protos.daq_common_pb2.QueryParameter(
page_index=0,
page_size=-1,
where=StringValue(value=f"GtDatasetId=\"{self.__gt_dataset_id}\""),
order_by=None)

response = stub.ListClassificationGts(request=protos.daq_dataset_classification_gt_dataset_api_v1_pb2.ListClassificationGtsRequest(
query_parameter=query_parameter, with_image=False), metadata=[('authorization', f'Bearer {access_token}')])

self.__classification_gts = response.classification_gts
else:
self.__classification_gts = self.__gt_dataset_id

return self

def create_train_dataset(self, operation_channel, access_token, train_ratio, transform, batch_size, validation_save_random):
logger.info("Create Train Dataset")
try:
train_data_info, validation_data_info = self.data_download(train_ratio,
self.__local_download_path,
self.__classification_gts,
self.__class_code_info,
operation_channel,
access_token)

train_dataset = ClassificationDataset(train_data_info, transform)
train_data_loader = torch.utils.data.DataLoader(train_dataset,
batch_size,
shuffle=True,
num_workers=0,
drop_last=True)

valid_flag = False
if len(validation_data_info[0]) > 0:
valid_flag = True
validation_dataset = ClassificationDataset(validation_data_info, transform)
validation_data_loader = torch.utils.data.DataLoader(validation_dataset,
batch_size=1,
shuffle=validation_save_random,
num_workers=0,
drop_last=False)

self.__train_data_loader = train_data_loader
self.__validation_data_loader = validation_data_loader if valid_flag else None

except Exception as e:
logger.error(f"Error Message : {e}")
raise Exception(f"Create Train Dataset Failed, Error Message : {e}")

return self

def get_label_info(self):
return self.__label_info

def get_class_code_info(self):
return self.__class_code_info

def get_num_classes(self):
return self.__num_classes

def data_download(self, train_ratio, local_download_path, classification_gts, class_code_info, operation_channel, access_token):
train_ratio = min(1, train_ratio)

train_uri_list = list()
train_label_list = list()

validation_uri_list = list()
validation_label_list = list()
if operation_channel:
validation_len = int(len(classification_gts) * (1-train_ratio))
for i in range(len(classification_gts)):
image_id = classification_gts[i].image_id
class_code = classification_gts[i].class_code.value

uri = f"dataset:///?image_id={image_id}"
image = mpp.daq.intel64.load(uri, False, channel=operation_channel, access_token=access_token)
download_path = os.path.join(local_download_path, f"{image_id}.png")
mpp.intel64.save(image, download_path)

train_uri_list.append(download_path)
train_label_list.append(class_code_info[class_code])
else:
validation_len = int(len(train_uri_list) * (1-train_ratio))
class_code_list = os.listdir(classification_gts)
for index in range(len(class_code_list)):
file_list = os.listdir(os.path.join(classification_gts, class_code_list[index]))
for filename in file_list:
image_path = os.path.join(classification_gts, class_code_list[index], filename)
train_uri_list.append(image_path)
train_label_list.append(class_code_info[index])

for _ in range(validation_len):
random_index = random.randrange(len(train_uri_list))

valid_uri = train_uri_list.pop(random_index)
valid_label = train_label_list.pop(random_index)

validation_uri_list.append(valid_uri)
validation_label_list.append(valid_label)

return (train_uri_list, train_label_list), (validation_uri_list, validation_label_list)

def get_train_loader(self):
return self.__train_data_loader

def get_validation_loader(self):
return self.__validation_data_loader

def temp_folder_delete(self):
if os.path.exists(self.__local_download_path):
shutil.rmtree(self.__local_download_path)
logger.info("Temp Folder Delete")

def build(self):
return self.__train_data_loader is not None and self.__validation_data_loader is not None

class Torch_Model_Builder:
def __init__(self):
self.__model = None
self.__optimizer = None
self.__criterion = None
self.__iteration_start_time = None
self.__epoch_start_time = None
self.__epoch_total = None
self.__save_epoch = None
self.__save_builder =None

def initialize(self, epoch_total, save_epoch, save_builder):
self.__epoch_total = epoch_total
self.__save_epoch = save_epoch
self.__save_builder = save_builder
return self

def init_model(self, num_classes, device):
model = torchvision.models.inception_v3(num_classes=num_classes, init_weights=False)
model.to(device)
self.__model = model
return self

def init_optimizer(self, optimizer_name, lr):
if optimizer_name.lower() == "adam":
self.__optimizer = optim.Adam(self.__model.parameters(), lr=lr)
elif optimizer_name.lower() == "sgd":
self.__optimizer = optim.SGD(self.__model.parameters(), lr=lr)
elif optimizer_name.lower() == "adagrad":
self.__optimizer = optim.Adagrad(self.__model.parameters(), lr=lr)
else:
raise Exception("Invalid Optimizer Option")
return self

def init_criterion(self, criterion_name):
if criterion_name.lower() == "crossentropyloss":
criterion = nn.CrossEntropyLoss()
elif criterion_name.lower() == "bcewithlogitsloss":
criterion = nn.BCEWithLogitsLoss()
elif criterion_name.lower() == "focalloss":
criterion = nn.BCEWithLogitsLoss()
elif criterion_name.lower() == "mse":
criterion = nn.MSELoss()

self.__criterion = criterion
return self

def train(self, train_data_loader, valid_data_loader, device, using_amp):
total_iteration = len(train_data_loader)
if total_iteration == 0:
raise RuntimeError("No training data: train_data_loader is empty.")

self.__iteration_start_time = time.time()
for epoch in range(1, self.__epoch_total + 1):
self.__epoch_start_time = time.time()
logger.info(f"Epoch : {epoch:4d}/{self.__epoch_total:4d}")

train_epoch_loss = 0.0

for n_epoch, batch in enumerate(train_data_loader, 1):
train_inputs, loss = self.train_step(batch, device, using_amp)

train_epoch_loss += loss.item()
if n_epoch % max(1, total_iteration // 10) == 0 or n_epoch == total_iteration:
iteration_elapsed_time = time.time() - self.__iteration_start_time
logger.info(f"Epoch : {epoch:4d}, Iterations : {n_epoch:4d}/{total_iteration:4d}, Loss : {loss : 4.4f}, Time : {iteration_elapsed_time : 4.4f}")
self.__iteration_start_time = time.time()

self.__save_builder.append_train_loss(train_epoch_loss / n_epoch)
self.__save_builder.append_train_acc(100.0 - (train_epoch_loss / n_epoch))
self.__save_builder.set_hierarchy_root(f"epoch_{epoch}")

valid_epoch_loss = 0.0
if valid_data_loader:
predict_list = np.array([])
label_list = np.array([])
with torch.no_grad():
self.__model.eval()
for _, valid_batch in enumerate(valid_data_loader, 1):

valid_inputs = valid_batch[0].to(device)
valid_labels = valid_batch[1].to(device)

with torch.cuda.amp.autocast(enabled=using_amp):
valid_outputs = self.__model(valid_inputs)
valid_loss = self.__criterion(valid_outputs, valid_labels)

valid_epoch_loss += valid_loss.item()
predict_list = np.concatenate([predict_list, valid_outputs.argmax(dim=1).cpu().numpy()], 0)
label_list = np.concatenate([label_list, valid_labels.cpu().numpy()], 0)
self.__model.train()

self.__save_builder.append_valid_loss(valid_epoch_loss / n_epoch)
self.__save_builder.append_valid_acc(100.0 - (valid_epoch_loss / n_epoch))
self.__save_builder.save_validateion(epoch, label_list, predict_list)

epoch_valid_loss_mean = valid_epoch_loss/len(valid_data_loader) if valid_data_loader else 0
self.__save_builder.save_training(self.__model, epoch, self.__save_epoch, train_inputs)

self.__save_builder.save_train_valid_csv()

train_loss = train_epoch_loss/total_iteration
self.monitoring(epoch, epoch_valid_loss_mean, train_loss)

return self

def train_step(self, batch, device, using_amp):
inputs = batch[0].to(device)
labels = batch[1].to(device)
with torch.cuda.amp.autocast(enabled=using_amp):
output, _ = self.__model(inputs)
loss = self.__criterion(output, labels)
self.__optimizer.zero_grad()
loss.backward()
self.__optimizer.step()
return inputs, loss

def monitoring(self, epoch, valid_loss, train_loss):
epoch_elapsed_time = time.time() - self.__epoch_start_time

remaining_epochs = self.__epoch_total - epoch
estimated_time_per_epoch = epoch_elapsed_time if epoch > 1 else 0 # 첫 번째 epoch의 경우 시간을 0으로 설정
estimated_remaining_time = remaining_epochs * estimated_time_per_epoch
logger.info("MonitoringData:"
f"Epoch:[{epoch:4d}/{self.__epoch_total:4d}], "
f"Train Loss: {train_loss:4.4f}, "
f"Valid Loss : {valid_loss:4.4f}, "
f"Time: {epoch_elapsed_time:4.2f}s, "
f"Estimated Remaining Time: {estimated_remaining_time / 60:.2f} minutes")

def build(self):
return self.__model

class Save_Builder:
def __init__(self):
self.__train_loss_list = list()
self.__valid_loss_list = list()
self.__train_acc_list = list()
self.__valid_acc_list = list()
self.__inference_info = None
self.__hierarchy_root = None
self.__label_info = None
self.__operation_builder = None
self.__num_classes = None

def initialize(self, operation_builder, num_classes, label_info):
self.__operation_builder = operation_builder
self.__num_classes = num_classes
self.__label_info = label_info
return self

def init_inference_info(self, input_size):
self.__inference_info = {'inference_info' : json.dumps({"input_size": input_size, "label_info": self.__label_info})}
return self

def append_train_loss(self, loss):
self.__train_loss_list.append(loss)
return self

def append_valid_loss(self, loss):
self.__valid_loss_list.append(loss)
return self

def append_train_acc(self, loss):
self.__train_acc_list.append(loss)
return self

def append_valid_acc(self, loss):
self.__valid_acc_list.append(loss)
return self

def set_hierarchy_root(self, hierarchy_root):
self.__hierarchy_root = hierarchy_root
return self

def save_training(self, model, epoch, save_epoch, inputs):
train_loss_image = self.score_list_graph_image(epoch, self.__train_loss_list, self.__train_loss_list[0], "Train Loss Graph", 'r')
self.save_file(train_loss_image, "train_loss/train_loss_image.png")

train_loss_csv = self.score_list_csv(self.__train_loss_list)
self.save_csv(train_loss_csv, "train_loss/train_loss_csv.csv")

if epoch % save_epoch == 0 or epoch == epoch:
self.upload_model(model, "model/model.pth", inputs)

def save_validateion(self, epoch, label_list, predict_list):
valid_loss_image = self.score_list_graph_image(epoch, self.__valid_loss_list, self.__valid_loss_list[0], "Valid Loss Graph", 'g')
self.save_file(valid_loss_image, "valid_loss/valid_loss_graph.png")

valid_loss_csv = self.score_list_csv(self.__valid_loss_list)
self.save_csv(valid_loss_csv, "valid_loss/valid_loss_csv.csv")

confusion_matrix = self.confusion_matrix_image(label_list, predict_list, labels=[self.__label_info[f'label_{i}']['name'] for i in range(self.__num_classes)])
self.save_file(confusion_matrix, "confusion_matrix/confusion_matrix.png")

def save_train_valid_csv(self):
data = self.create_csv()
self.save_csv(data, "train_loss_csv/train_loss_csv.csv")

def create_csv(self):
has_valid = self.__valid_loss_list is not None

if has_valid:
result = [['Epoch', 'Train Loss', 'Valid Loss', 'Train Accuracy', 'Valid Accuracy']]
max_length = max(len(self.__train_loss_list), len(self.__valid_loss_list))
else:
result = [['Epoch', 'Train Loss', 'Train Accuracy']]
max_length = len(self.__train_loss_list)

for epoch in range(max_length):
train_loss = self.__train_loss_list[epoch] if epoch < len(self.__train_loss_list) else None
train_acc = self.__train_acc_list[epoch] if epoch < len(self.__train_acc_list) else None

if has_valid:
valid_loss = self.__valid_loss_list[epoch] if epoch < len(self.__valid_loss_list) else None
valid_acc = self.__valid_acc_list[epoch] if epoch < len(self.__valid_acc_list) else None
result.append([epoch + 1, train_loss, valid_loss, train_acc, valid_acc])
else:
result.append([epoch + 1, train_loss, train_acc])

return result

def save_csv(self, csv, path):
save_uri = f"{self.__operation_builder.get_bucket_url()}/{self.__hierarchy_root}/{path}"
mpp.intel64.save_csv(csv, save_uri, channel=self.__operation_builder.get_operation_channel(), access_token=self.__operation_builder.get_access_token(), chunk_size=self.__operation_builder.get_chunk_size())
return self

def save_file(self, file, path):
save_uri = f"{self.__operation_builder.get_bucket_url()}/{self.__hierarchy_root}/{path}"
mpp.intel64.save(file, save_uri, channel=self.__operation_builder.get_operation_channel(), access_token=self.__operation_builder.get_access_token(), chunk_size=self.__operation_builder.get_chunk_size())
return self

def upload_model(self, model, path, inputs):
model_save_uri = f"{self.__operation_builder.get_bucket_url()}/{self.__hierarchy_root}/{path}"
mpp.daq.object_service.upload_model(model, uri=model_save_uri, inference_info=self.__inference_info, example=inputs, channel=self.__operation_builder.get_operation_channel(), access_token=self.__operation_builder.get_access_token(), chunk_size=self.__operation_builder.get_chunk_size())
return self

def score_list_graph_image(self, total_epoch, loss_list, y_max=None, title="", color='r'):
y_section = 100
if 0<=y_max<3: y_section = 0.1
elif 3<=y_max<10 : y_section = 1
elif 10<=y_max<50 : y_section = 5
elif 50<=y_max<100 : y_section = 10
elif 100<=y_max<500 : y_section = 50
elif 500<=y_max<1000 : y_section = 100
elif 1000<=y_max<5000 : y_section = 500
elif 5000<=y_max<10000 : y_section = 1000
elif 10000<=y_max : y_section = 5000

x_section = 10
if 1<=total_epoch<=10: x_section = 1
elif 10<total_epoch<=50: x_section = 5
elif 50<total_epoch<=100: x_section = 10
elif 100<total_epoch<=500 : x_section = 50
elif 500<total_epoch : x_section = 100

axes = plt.axes()
axes.set_xlim([1, total_epoch])
axes.set_ylim([0, y_max])

x_axis = list(range(0, total_epoch+1, x_section))
x_axis[0] = 1
plt.xticks(x_axis)
plt.yticks(list(np.arange(0, y_max, y_section)))
plt.plot(range(1, len(loss_list)+1), loss_list, color, label=title)

plt.ylabel("loss")
plt.xlabel("Epoch")
plt.legend()

loss_image_buffer = io.BytesIO()
plt.savefig(loss_image_buffer, format='png')

img_arr = np.frombuffer(loss_image_buffer.getvalue(), dtype=np.uint8)
img = cv2.imdecode(img_arr, 1)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.clf()
plt.close()

return img

def confusion_matrix_image(self, true_list, pred_list, labels):
matrix = confusion_matrix(true_list, pred_list, labels=[x for x in range(len(labels))])
plt.figure(figsize=(9,9))
plt.imshow(matrix, interpolation='nearest', cmap=plt.cm.get_cmap('Blues'))
plt.title("Confusion Matrix")
plt.colorbar()
marks = np.arange(len(labels))
nlabels = []
for k in range(len(matrix)):
nlabel = f'{labels[k]}'
nlabels.append(nlabel)

plt.xticks(marks, labels, rotation=45)
plt.yticks(marks, nlabels, rotation=45)

for i, j in itertools.product(range(matrix.shape[0]), range(matrix.shape[1])):
plt.text(j, i, matrix[i, j], horizontalalignment="center", color="black")

plt.ylabel('True label')
plt.xlabel('Predicted label')

matrix_buffer = io.BytesIO()
plt.savefig(matrix_buffer, format='png')

img_arr = np.frombuffer(matrix_buffer.getvalue(), dtype=np.uint8)
img = cv2.imdecode(img_arr, 1)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.clf()
plt.close()

return img

def score_list_csv(self, score_list, header='Loss'):
result = [['Epoch', header]] + [[epoch, score] for epoch, score in enumerate(score_list, 1)]
return result

def build(self):
return self

class ClassificationDataset(Dataset):
def __init__(self, train_dataset, transform):
self.__uri_list = train_dataset[0]
self.__label_list = train_dataset[1]
self.__trainform = transform

def __len__(self):
return len(self.__uri_list)

def __getitem__(self, index):
uri = self.__uri_list[index]

image = mpp.intel64.load(uri, False)
image = self.__trainform(image)
label = self.__label_list[index]

return image, label

if __name__ =="__main__":
kwargs = json.loads(parameters)
kwargs['authentication']['operation_service_address'] = ""
kwargs['authentication']['access_token'] = ""
kwargs['gt_dataset']['gt_dataset_id'] = r""
kwargs['result']['id'] = r""

RecipeRun(**kwargs)
  • 학습 진행
    • 학습 진행시 등록한 학습 레시피를 선택한 뒤 실행합니다.
    • Run Training
  • 모델 다운로드
    • 특정 모델을 *.pth 다운로드합니다.
    • Model Download
  • 추론 모델 등록
    • 다음과 같은 구조로 추론 모델을 등록합니다.
    • Model Handler Directory
    model_handler/
    ├─ data/
    │ ├─ model.pth
    │ └─ inference.json
    ├─ model_handler.py
    └─ model.json
  • inference.json
    • {
      "label": {
      "0": "DOG",
      "1": "CAT"
      }
      }
  • model.json
    • {
      "model_file": "model.pth",
      "device": "cuda"
      }
📜 model_handler.py 예시 코드 보기
import os
import pickle
import numpy as np
import torch
import torchvision.transforms as transforms
import torch.nn as nn
import torchvision.models as models
import cv2

import tensorflow as tf
import json

## Gpu Memory 제한
memory_limit = 3
gpus = tf.config.list_physical_devices('GPU')
if gpus :
try :
for gpu in gpus :
tf.config.experimental.set_virtual_device_configuration(gpu,[tf.config.experimental.VirtualDeviceConfiguration(memory_limit=memory_limit*1024)])
except RuntimeError as e :
print(e)
pass


class ModelHandler:
def __init__(self, data=None, context=None):
base_path = os.path.dirname(os.path.abspath(__file__))
model_path = os.path.join(base_path, "data", "model.pth")
infer_path = os.path.join(base_path, "data", "inference.json")
with open(infer_path, "r", encoding="utf-8") as f:
infer_cfg = json.load(f)
raw_map = infer_cfg.get("label", {})
self.label_map = {int(k): v for k, v in raw_map.items()}

# TorchScript JIT 모델 로드
self.model = torch.jit.load(model_path, map_location='cpu')
self.model.eval()

self.input_size = 299
self.transform = transforms.Compose([
transforms.ToPILImage(),
transforms.Resize((self.input_size, self.input_size)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])
])

def __call__(self, data, context):
# 데이터 역직렬화 및 전처리
image_np = pickle.loads(data) # H x W x 3
image_tensor = self.transform(image_np).unsqueeze(0) # (1, 3, 299, 299)

# 추론
with torch.no_grad():
outputs = self.model(image_tensor)
preds = torch.softmax(outputs, dim=1)
pred_idx = torch.argmax(preds, dim=1).item()
score = preds[0][pred_idx].item()

result = {
'result_code': self.label_map.get(pred_idx, str(pred_idx)),
'score': score
}

return pickle.dumps(result), context

if __name__ == "__main__":
handler = ModelHandler()
test_image = cv2.imread("test_image.png")
test_image = cv2.resize(test_image, (299, 299))
data = pickle.dumps(test_image)
output, _ = handler(data, context={})
result = pickle.loads(output)
print(result)
  • 추론 모델 등록
    • 추론 모델에서 모델을 추가합니다.
      • Regist Inference Model
    • 추론 모델 버전을 추가합니다.
      • Regist Model Version
  • 모델 배포
    • 모델 배포 합니다.
      • Model Deploy
    • 모델 배포 상태 확인합니다.
      • Deploy Check



Predict 모듈 사용

  • Inference Recipe
📜 inference_sample 레시피 예시 코드 보기
###
### Created By [MPP v25.06.002]/[RC v25.8.1.0]
###

##!--{"Name":"__mainfunction__","Type":"string","Key":"","Value":"resultdata = RecipeRun(gs_semimage1, gs_semimage2, gs_semimage3, gs_semimage4, gs_semimage5, gs_semimage6, gs_semimage7, gs_semimage8, gs_semimage9, gs_semimage10, gs_semimage11, gs_semimage12, gs_semimage13, gs_semimage14, gs_semimage15, gs_semimage16, gs_semimage17, gs_semimage18, gs_semimage19, gs_semimage20, gs_layercount, gs_layerimage1, gs_layerindex1, gs_refimage1, gs_refvector1, gs_layerimage2, gs_layerindex2, gs_refimage2, gs_refvector2, gs_layerimage3, gs_layerindex3, gs_refimage3, gs_refvector3, gs_layerimage4, gs_layerindex4, gs_refimage4, gs_refvector4, gs_layerimage5, gs_layerindex5, gs_refimage5, gs_refvector5, gs_layerimage6, gs_layerindex6, gs_refimage6, gs_refvector6, gs_layerimage7, gs_layerindex7, gs_refimage7, gs_refvector7, gs_layerimage8, gs_layerindex8, gs_refimage8, gs_refvector8, gs_layerimage9, gs_layerindex9, gs_refimage9, gs_refvector9, gs_layerimage10, gs_layerindex10, gs_refimage10, gs_refvector10, gs_layerimage11, gs_layerindex11, gs_refimage11, gs_refvector11, gs_layerimage12, gs_layerindex12, gs_refimage12, gs_refvector12, gs_layerimage13, gs_layerindex13, gs_refimage13, gs_refvector13, gs_layerimage14, gs_layerindex14, gs_refimage14, gs_refvector14, gs_layerimage15, gs_layerindex15, gs_refimage15, gs_refvector15, gs_layerimage16, gs_layerindex16, gs_refimage16, gs_refvector16, gs_layerimage17, gs_layerindex17, gs_refimage17, gs_refvector17, gs_layerimage18, gs_layerindex18, gs_refimage18, gs_refvector18, gs_layerimage19, gs_layerindex19, gs_refimage19, gs_refvector19, gs_layerimage20, gs_layerindex20, gs_refimage20, gs_refvector20, gs_resultimageurl, gs_resultdataurl, gs_resultimageextension, gs_waferid, gs_defectid, gs_xreal, gs_yreal, gs_scale, gs_xindex, gs_yindex, gs_particlecode, gs_angle, gs_clipimagewidth, gs_clipimageheight, gs_imagefov, gs_templateimage1, gs_templateimage2, gs_templateimage3, gs_templateimage4, gs_templateimage5, gs_templateimage6, gs_templateimage7, gs_templateimage8, gs_templateimage9, gs_templateimage10, gs_templateimage11, gs_templateimage12, gs_templateimage13, gs_templateimage14, gs_templateimage15, gs_templateimage16, gs_templateimage17, gs_templateimage18, gs_templateimage19, gs_templateimage20, gs_floor_plan_deploy_id_1, gs_floor_plan_deploy_id_2, gs_floor_plan_deploy_id_3, gs_floor_plan_deploy_id_4, gs_floor_plan_deploy_id_5, gs_floor_plan_deploy_id_6, gs_floor_plan_deploy_id_7, gs_floor_plan_deploy_id_8, gs_floor_plan_deploy_id_9, gs_floor_plan_deploy_id_10, gs_model_deploy_id_1, gs_model_deploy_id_2, gs_model_deploy_id_3, gs_model_deploy_id_4, gs_model_deploy_id_5, gs_model_deploy_id_6, gs_model_deploy_id_7, gs_model_deploy_id_8, gs_model_deploy_id_9, gs_model_deploy_id_10, gs_model_deploy_id_11, gs_model_deploy_id_12, gs_model_deploy_id_13, gs_model_deploy_id_14, gs_model_deploy_id_15, gs_model_deploy_id_16, gs_model_deploy_id_17, gs_model_deploy_id_18, gs_model_deploy_id_19, gs_model_deploy_id_20, gs_access_token, gs_system_address)","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"__templatename__","Type":"string","Key":"","Value":"daq_3_1","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage1","Type":"image","Key":"","Value":"D:\\dog.4011.jpg","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage2","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage3","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage4","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage5","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage6","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage7","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage8","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage9","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage10","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage11","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage12","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage13","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage14","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage15","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage16","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage17","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage18","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage19","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_semimage20","Type":"image","Key":"","Value":"","Category":"gs_semimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage1","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage2","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage3","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage4","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage5","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage6","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage7","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage8","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage9","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage10","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage11","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage12","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage13","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage14","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage15","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage16","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage17","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage18","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage19","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_templateimage20","Type":"image","Key":"","Value":"","Category":"gs_templateimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage1","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage2","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage3","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage4","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage5","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage6","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage7","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage8","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage9","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage10","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage11","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage12","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage13","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage14","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage15","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage16","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage17","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage18","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage19","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerimage20","Type":"image","Key":"","Value":"","Category":"gs_layerimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex1","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex2","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex3","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex4","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex5","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex6","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex7","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex8","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex9","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex10","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex11","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex12","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex13","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex14","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex15","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex16","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex17","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex18","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex19","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layerindex20","Type":"string","Key":"","Value":"","Category":"gs_layerindex","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage1","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage2","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage3","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage4","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage5","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage6","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage7","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage8","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage9","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage10","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage11","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage12","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage13","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage14","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage15","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage16","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage17","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage18","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage19","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refimage20","Type":"image","Key":"","Value":"","Category":"gs_refimage","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector1","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector2","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector3","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector4","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector5","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector6","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector7","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector8","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector9","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector10","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector11","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector12","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector13","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector14","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector15","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector16","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector17","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector18","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector19","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_refvector20","Type":"file","Key":"","Value":"","Category":"gs_refvector","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_layercount","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_resultimageurl","Type":"directory","Key":"","Value":"D:\\WorkSpace\\튜토리얼 문서\\result","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_resultdataurl","Type":"directory","Key":"","Value":"D:\\WorkSpace\\튜토리얼 문서\\result","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_resultimageextension","Type":"string","Key":"","Value":"jpg","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_waferid","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_defectid","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_xreal","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_yreal","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_scale","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_xindex","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_yindex","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_sample_center_location_x","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_sample_center_location_y","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_sample_size","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_die_pitch_x","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_die_pitch_y","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_defect_absolute_x","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_defect_absolute_y","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_defect_absolute_ratio","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_xsize","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_ysize","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_particlecode","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_angle","Type":"string","Key":"","Value":"0","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_imagefov","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_clipimagewidth","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_clipimageheight","Type":"string","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_floor_plan_deploy_id_1","Type":"floor_plan","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_floor_plan_deploy_id_2","Type":"floor_plan","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_floor_plan_deploy_id_3","Type":"floor_plan","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_floor_plan_deploy_id_4","Type":"floor_plan","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_floor_plan_deploy_id_5","Type":"floor_plan","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_floor_plan_deploy_id_6","Type":"floor_plan","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_floor_plan_deploy_id_7","Type":"floor_plan","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_floor_plan_deploy_id_8","Type":"floor_plan","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_floor_plan_deploy_id_9","Type":"floor_plan","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_floor_plan_deploy_id_10","Type":"floor_plan","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_1","Type":"model","Key":"","Value":"inference:///?model_id=DogCatInferenceSample;title=DogCatInferenceSample;version=1;deploy_id=DogCatInferenceSample","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_2","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_3","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_4","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_5","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_6","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_7","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_8","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_9","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_10","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_11","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_12","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_13","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_14","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_15","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_16","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_17","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_18","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_19","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_model_deploy_id_20","Type":"model","Key":"","Value":"","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_access_token","Type":"access_token","Key":"","Value":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbmlzdHJhdG9yIiwibmFtZSI6Iuq0gOumrOyekCIsInJvbGUiOiJzdXBlcl9hZG1pbmlzdHJhdG9yIiwiZ3JvdXBzaWQiOiJkZWZhdWx0IiwibG9nX2luX3Byb3ZpZGVyIjoiZGFxIiwicHJpdmlsZWdlcyI6WyJhY2NvdW50X2dyb3VwX2NyZWF0ZSIsImFjY291bnRfZ3JvdXBfcmVhZCIsImFjY291bnRfZ3JvdXBfdXBkYXRlIiwiYWNjb3VudF9ncm91cF9kZWxldGUiLCJhY2NvdW50X2dyb3VwX3JlYWRfYW55IiwiYWNjb3VudF9ncm91cF91cGRhdGVfYW55IiwiYWNjb3VudF9ncm91cF9kZWxldGVfYW55IiwiYWNjb3VudF91c2VyX2NyZWF0ZSIsImFjY291bnRfdXNlcl9yZWFkIiwiYWNjb3VudF91c2VyX3VwZGF0ZSIsImFjY291bnRfdXNlcl9kZWxldGUiLCJhY2NvdW50X3VzZXJfcmVhZF9hbnkiLCJhY2NvdW50X3VzZXJfdXBkYXRlX2FueSIsImFjY291bnRfdXNlcl9kZWxldGVfYW55IiwiZGF0YXNldF92b2x1bWVfY3JlYXRlIiwiZGF0YXNldF92b2x1bWVfcmVhZCIsImRhdGFzZXRfdm9sdW1lX3VwZGF0ZSIsImRhdGFzZXRfdm9sdW1lX2RlbGV0ZSIsImRhdGFzZXRfdm9sdW1lX3JlYWRfYW55IiwiZGF0YXNldF92b2x1bWVfdXBkYXRlX2FueSIsImRhdGFzZXRfdm9sdW1lX2RlbGV0ZV9hbnkiLCJkYXRhc2V0X2NsYXNzX2NvZGVfY3JlYXRlIiwiZGF0YXNldF9jbGFzc19jb2RlX3JlYWQiLCJkYXRhc2V0X2NsYXNzX2NvZGVfdXBkYXRlIiwiZGF0YXNldF9jbGFzc19jb2RlX2RlbGV0ZSIsImRhdGFzZXRfY2xhc3NfY29kZV9yZWFkX2FueSIsImRhdGFzZXRfY2xhc3NfY29kZV91cGRhdGVfYW55IiwiZGF0YXNldF9jbGFzc19jb2RlX2RlbGV0ZV9hbnkiLCJkYXRhc2V0X2d0X2RhdGFzZXRfY3JlYXRlIiwiZGF0YXNldF9ndF9kYXRhc2V0X3JlYWQiLCJkYXRhc2V0X2d0X2RhdGFzZXRfdXBkYXRlIiwiZGF0YXNldF9ndF9kYXRhc2V0X2RlbGV0ZSIsImRhdGFzZXRfZ3RfZGF0YXNldF9yZWFkX2FueSIsImRhdGFzZXRfZ3RfZGF0YXNldF91cGRhdGVfYW55IiwiZGF0YXNldF9ndF9kYXRhc2V0X2RlbGV0ZV9hbnkiLCJkYXRhc2V0X2NsYXNzaWZpY2F0aW9uX2d0X2RhdGFzZXRfY3JlYXRlIiwiZGF0YXNldF9jbGFzc2lmaWNhdGlvbl9ndF9kYXRhc2V0X3JlYWQiLCJkYXRhc2V0X2NsYXNzaWZpY2F0aW9uX2d0X2RhdGFzZXRfdXBkYXRlIiwiZGF0YXNldF9jbGFzc2lmaWNhdGlvbl9ndF9kYXRhc2V0X2RlbGV0ZSIsImRhdGFzZXRfY2xhc3NpZmljYXRpb25fZ3RfZGF0YXNldF9yZWFkX2FueSIsImRhdGFzZXRfY2xhc3NpZmljYXRpb25fZ3RfZGF0YXNldF91cGRhdGVfYW55IiwiZGF0YXNldF9jbGFzc2lmaWNhdGlvbl9ndF9kYXRhc2V0X2RlbGV0ZV9hbnkiLCJkYXRhc2V0X3NlZ21lbnRhdGlvbl9ndF9kYXRhc2V0X2NyZWF0ZSIsImRhdGFzZXRfc2VnbWVudGF0aW9uX2d0X2RhdGFzZXRfcmVhZCIsImRhdGFzZXRfc2VnbWVudGF0aW9uX2d0X2RhdGFzZXRfdXBkYXRlIiwiZGF0YXNldF9zZWdtZW50YXRpb25fZ3RfZGF0YXNldF9kZWxldGUiLCJkYXRhc2V0X3NlZ21lbnRhdGlvbl9ndF9kYXRhc2V0X3JlYWRfYW55IiwiZGF0YXNldF9zZWdtZW50YXRpb25fZ3RfZGF0YXNldF91cGRhdGVfYW55IiwiZGF0YXNldF9zZWdtZW50YXRpb25fZ3RfZGF0YXNldF9kZWxldGVfYW55IiwiZGF0YXNldF9pbWFnZV9kYXRhc2V0X2NyZWF0ZSIsImRhdGFzZXRfaW1hZ2VfZGF0YXNldF9yZWFkIiwiZGF0YXNldF9pbWFnZV9kYXRhc2V0X3VwZGF0ZSIsImRhdGFzZXRfaW1hZ2VfZGF0YXNldF9kZWxldGUiLCJkYXRhc2V0X2ltYWdlX2RhdGFzZXRfcmVhZF9hbnkiLCJkYXRhc2V0X2ltYWdlX2RhdGFzZXRfdXBkYXRlX2FueSIsImRhdGFzZXRfaW1hZ2VfZGF0YXNldF9kZWxldGVfYW55IiwiZGVmZWN0X2RlZmVjdF9kYXRhX2NyZWF0ZSIsImRlZmVjdF9kZWZlY3RfZGF0YV9yZWFkIiwiZGVmZWN0X2RlZmVjdF9kYXRhX3VwZGF0ZSIsImRlZmVjdF9kZWZlY3RfZGF0YV9kZWxldGUiLCJkZWZlY3RfZGVmZWN0X2RhdGFfcmVhZF9hbnkiLCJkZWZlY3RfZGVmZWN0X2RhdGFfdXBkYXRlX2FueSIsImRlZmVjdF9kZWZlY3RfZGF0YV9kZWxldGVfYW55IiwiZGVmZWN0X21hc3Rlcl9kYXRhX2ZpZWxkX2NyZWF0ZSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9maWVsZF9yZWFkIiwiZGVmZWN0X21hc3Rlcl9kYXRhX2ZpZWxkX3VwZGF0ZSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9maWVsZF9kZWxldGUiLCJkZWZlY3RfbWFzdGVyX2RhdGFfZmllbGRfcmVhZF9hbnkiLCJkZWZlY3RfbWFzdGVyX2RhdGFfZmllbGRfdXBkYXRlX2FueSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9maWVsZF9kZWxldGVfYW55IiwiZGVmZWN0X21hc3Rlcl9kYXRhX3NldF9jcmVhdGUiLCJkZWZlY3RfbWFzdGVyX2RhdGFfc2V0X3JlYWQiLCJkZWZlY3RfbWFzdGVyX2RhdGFfc2V0X3VwZGF0ZSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9zZXRfZGVsZXRlIiwiZGVmZWN0X21hc3Rlcl9kYXRhX3NldF9yZWFkX2FueSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9zZXRfdXBkYXRlX2FueSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9zZXRfZGVsZXRlX2FueSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9oaXN0b3J5X2NyZWF0ZSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9oaXN0b3J5X3JlYWQiLCJkZWZlY3RfbWFzdGVyX2RhdGFfaGlzdG9yeV91cGRhdGUiLCJkZWZlY3RfbWFzdGVyX2RhdGFfaGlzdG9yeV9kZWxldGUiLCJkZWZlY3RfbWFzdGVyX2RhdGFfaGlzdG9yeV9yZWFkX2FueSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9oaXN0b3J5X3VwZGF0ZV9hbnkiLCJkZWZlY3RfbWFzdGVyX2RhdGFfaGlzdG9yeV9kZWxldGVfYW55IiwiZGVmZWN0X21hc3Rlcl9kYXRhX2ZpZWxkX2dyb3VwX2hpc3RvcnlfY3JlYXRlIiwiZGVmZWN0X21hc3Rlcl9kYXRhX2ZpZWxkX2dyb3VwX2hpc3RvcnlfcmVhZCIsImRlZmVjdF9tYXN0ZXJfZGF0YV9maWVsZF9ncm91cF9oaXN0b3J5X3VwZGF0ZSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9maWVsZF9ncm91cF9oaXN0b3J5X2RlbGV0ZSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9maWVsZF9ncm91cF9oaXN0b3J5X3JlYWRfYW55IiwiZGVmZWN0X21hc3Rlcl9kYXRhX2ZpZWxkX2dyb3VwX2hpc3RvcnlfdXBkYXRlX2FueSIsImRlZmVjdF9tYXN0ZXJfZGF0YV9maWVsZF9ncm91cF9oaXN0b3J5X2RlbGV0ZV9hbnkiLCJnZHNfY2xpcF9jcmVhdGUiLCJnZHNfY2xpcF9yZWFkIiwiZ2RzX2NsaXBfdXBkYXRlIiwiZ2RzX2NsaXBfZGVsZXRlIiwiZ2RzX2NsaXBfcmVhZF9hbnkiLCJnZHNfY2xpcF91cGRhdGVfYW55IiwiZ2RzX2NsaXBfZGVsZXRlX2FueSIsImdkc19leHBvcnRfY3JlYXRlIiwiZ2RzX2V4cG9ydF9yZWFkIiwiZ2RzX2V4cG9ydF91cGRhdGUiLCJnZHNfZXhwb3J0X2RlbGV0ZSIsImdkc19leHBvcnRfcmVhZF9hbnkiLCJnZHNfZXhwb3J0X3VwZGF0ZV9hbnkiLCJnZHNfZXhwb3J0X2RlbGV0ZV9hbnkiLCJnZHNfZ2RzX2NyZWF0ZSIsImdkc19nZHNfcmVhZCIsImdkc19nZHNfdXBkYXRlIiwiZ2RzX2dkc19kZWxldGUiLCJnZHNfZ2RzX3JlYWRfYW55IiwiZ2RzX2dkc191cGRhdGVfYW55IiwiZ2RzX2dkc19kZWxldGVfYW55IiwiZ2RzX3NlcnZlcl9jcmVhdGUiLCJnZHNfc2VydmVyX3JlYWQiLCJnZHNfc2VydmVyX3VwZGF0ZSIsImdkc19zZXJ2ZXJfZGVsZXRlIiwiZ2RzX3NlcnZlcl9yZWFkX2FueSIsImdkc19zZXJ2ZXJfdXBkYXRlX2FueSIsImdkc19zZXJ2ZXJfZGVsZXRlX2FueSIsImdkc192b2x1bWVfY3JlYXRlIiwiZ2RzX3ZvbHVtZV9yZWFkIiwiZ2RzX3ZvbHVtZV91cGRhdGUiLCJnZHNfdm9sdW1lX2RlbGV0ZSIsImdkc192b2x1bWVfcmVhZF9hbnkiLCJnZHNfdm9sdW1lX3VwZGF0ZV9hbnkiLCJnZHNfdm9sdW1lX2RlbGV0ZV9hbnkiLCJpbmZlcmVuY2VfaW5mZXJlbmNlX2NyZWF0ZSIsImluZmVyZW5jZV9pbmZlcmVuY2VfcmVhZCIsImluZmVyZW5jZV9pbmZlcmVuY2VfdXBkYXRlIiwiaW5mZXJlbmNlX2luZmVyZW5jZV9kZWxldGUiLCJpbmZlcmVuY2VfaW5mZXJlbmNlX3JlYWRfYW55IiwiaW5mZXJlbmNlX2luZmVyZW5jZV91cGRhdGVfYW55IiwiaW5mZXJlbmNlX2luZmVyZW5jZV9kZWxldGVfYW55IiwiaW5mZXJlbmNlX21vZGVsX2NyZWF0ZSIsImluZmVyZW5jZV9tb2RlbF9yZWFkIiwiaW5mZXJlbmNlX21vZGVsX3VwZGF0ZSIsImluZmVyZW5jZV9tb2RlbF9kZWxldGUiLCJpbmZlcmVuY2VfbW9kZWxfcmVhZF9hbnkiLCJpbmZlcmVuY2VfbW9kZWxfdXBkYXRlX2FueSIsImluZmVyZW5jZV9tb2RlbF9kZWxldGVfYW55IiwiaW5mZXJlbmNlX3NlcnZlcl9jcmVhdGUiLCJpbmZlcmVuY2Vfc2VydmVyX3JlYWQiLCJpbmZlcmVuY2Vfc2VydmVyX3VwZGF0ZSIsImluZmVyZW5jZV9zZXJ2ZXJfZGVsZXRlIiwiaW5mZXJlbmNlX3NlcnZlcl9yZWFkX2FueSIsImluZmVyZW5jZV9zZXJ2ZXJfdXBkYXRlX2FueSIsImluZmVyZW5jZV9zZXJ2ZXJfZGVsZXRlX2FueSIsImluZmVyZW5jZV92b2x1bWVfY3JlYXRlIiwiaW5mZXJlbmNlX3ZvbHVtZV9yZWFkIiwiaW5mZXJlbmNlX3ZvbHVtZV91cGRhdGUiLCJpbmZlcmVuY2Vfdm9sdW1lX2RlbGV0ZSIsImluZmVyZW5jZV92b2x1bWVfcmVhZF9hbnkiLCJpbmZlcmVuY2Vfdm9sdW1lX3VwZGF0ZV9hbnkiLCJpbmZlcmVuY2Vfdm9sdW1lX2RlbGV0ZV9hbnkiLCJ1cGRhdGVfbXBwX2NyZWF0ZSIsInVwZGF0ZV9tcHBfcmVhZCIsInVwZGF0ZV9tcHBfdXBkYXRlIiwidXBkYXRlX21wcF9kZWxldGUiLCJ1cGRhdGVfbXBwX3JlYWRfYW55IiwidXBkYXRlX21wcF91cGRhdGVfYW55IiwidXBkYXRlX21wcF9kZWxldGVfYW55IiwidXBkYXRlX3JjX2NyZWF0ZSIsInVwZGF0ZV9yY19yZWFkIiwidXBkYXRlX3JjX3VwZGF0ZSIsInVwZGF0ZV9yY19kZWxldGUiLCJ1cGRhdGVfcmNfcmVhZF9hbnkiLCJ1cGRhdGVfcmNfdXBkYXRlX2FueSIsInVwZGF0ZV9yY19kZWxldGVfYW55Iiwid29ya2Zsb3dfam9iX2NyZWF0ZSIsIndvcmtmbG93X2pvYl9yZWFkIiwid29ya2Zsb3dfam9iX3VwZGF0ZSIsIndvcmtmbG93X2pvYl9kZWxldGUiLCJ3b3JrZmxvd19qb2JfcmVhZF9hbnkiLCJ3b3JrZmxvd19qb2JfdXBkYXRlX2FueSIsIndvcmtmbG93X2pvYl9kZWxldGVfYW55Iiwid29ya2Zsb3dfc2VydmVyX2NyZWF0ZSIsIndvcmtmbG93X3NlcnZlcl9yZWFkIiwid29ya2Zsb3dfc2VydmVyX3VwZGF0ZSIsIndvcmtmbG93X3NlcnZlcl9kZWxldGUiLCJ3b3JrZmxvd19zZXJ2ZXJfcmVhZF9hbnkiLCJ3b3JrZmxvd19zZXJ2ZXJfdXBkYXRlX2FueSIsIndvcmtmbG93X3NlcnZlcl9kZWxldGVfYW55Iiwid29ya2Zsb3dfdm9sdW1lX2NyZWF0ZSIsIndvcmtmbG93X3ZvbHVtZV9yZWFkIiwid29ya2Zsb3dfdm9sdW1lX3VwZGF0ZSIsIndvcmtmbG93X3ZvbHVtZV9kZWxldGUiLCJ3b3JrZmxvd192b2x1bWVfcmVhZF9hbnkiLCJ3b3JrZmxvd192b2x1bWVfdXBkYXRlX2FueSIsIndvcmtmbG93X3ZvbHVtZV9kZWxldGVfYW55Iiwid29ya2Zsb3dfd29ya2VyX2NyZWF0ZSIsIndvcmtmbG93X3dvcmtlcl9yZWFkIiwid29ya2Zsb3dfd29ya2VyX3VwZGF0ZSIsIndvcmtmbG93X3dvcmtlcl9kZWxldGUiLCJ3b3JrZmxvd193b3JrZXJfcmVhZF9hbnkiLCJ3b3JrZmxvd193b3JrZXJfdXBkYXRlX2FueSIsIndvcmtmbG93X3dvcmtlcl9kZWxldGVfYW55Iiwid29ya2Zsb3dfd29ya2Zsb3dfY3JlYXRlIiwid29ya2Zsb3dfd29ya2Zsb3dfcmVhZCIsIndvcmtmbG93X3dvcmtmbG93X3VwZGF0ZSIsIndvcmtmbG93X3dvcmtmbG93X2RlbGV0ZSIsIndvcmtmbG93X3dvcmtmbG93X3JlYWRfYW55Iiwid29ya2Zsb3dfd29ya2Zsb3dfdXBkYXRlX2FueSIsIndvcmtmbG93X3dvcmtmbG93X2RlbGV0ZV9hbnkiLCJvYmplY3Rfb2JqZWN0X2NyZWF0ZSIsIm9iamVjdF9vYmplY3RfcmVhZCIsIm9iamVjdF9vYmplY3RfdXBkYXRlIiwib2JqZWN0X29iamVjdF9kZWxldGUiLCJvYmplY3Rfb2JqZWN0X3JlYWRfYW55Iiwib2JqZWN0X29iamVjdF91cGRhdGVfYW55Iiwib2JqZWN0X29iamVjdF9kZWxldGVfYW55Iiwib2JqZWN0X3ZvbHVtZV9jcmVhdGUiLCJvYmplY3Rfdm9sdW1lX3JlYWQiLCJvYmplY3Rfdm9sdW1lX3VwZGF0ZSIsIm9iamVjdF92b2x1bWVfZGVsZXRlIiwib2JqZWN0X3ZvbHVtZV9yZWFkX2FueSIsIm9iamVjdF92b2x1bWVfdXBkYXRlX2FueSIsIm9iamVjdF92b2x1bWVfZGVsZXRlX2FueSIsInNjaGVkdWxlcl9jb25kaXRpb25fY3JlYXRlIiwic2NoZWR1bGVyX2NvbmRpdGlvbl9yZWFkIiwic2NoZWR1bGVyX2NvbmRpdGlvbl91cGRhdGUiLCJzY2hlZHVsZXJfY29uZGl0aW9uX2RlbGV0ZSIsInNjaGVkdWxlcl9jb25kaXRpb25fcmVhZF9hbnkiLCJzY2hlZHVsZXJfY29uZGl0aW9uX3VwZGF0ZV9hbnkiLCJzY2hlZHVsZXJfY29uZGl0aW9uX2RlbGV0ZV9hbnkiLCJzY2hlZHVsZXJfZXZlbnRfaGlzdG9yeV9jcmVhdGUiLCJzY2hlZHVsZXJfZXZlbnRfaGlzdG9yeV9yZWFkIiwic2NoZWR1bGVyX2V2ZW50X2hpc3RvcnlfdXBkYXRlIiwic2NoZWR1bGVyX2V2ZW50X2hpc3RvcnlfZGVsZXRlIiwic2NoZWR1bGVyX2V2ZW50X2hpc3RvcnlfcmVhZF9hbnkiLCJzY2hlZHVsZXJfZXZlbnRfaGlzdG9yeV91cGRhdGVfYW55Iiwic2NoZWR1bGVyX2V2ZW50X2hpc3RvcnlfZGVsZXRlX2FueSIsImRhdGFzZXRfY2xhc3NfY29kZV9tYXBfY3JlYXRlIiwiZGF0YXNldF9jbGFzc19jb2RlX21hcF9yZWFkIiwiZGF0YXNldF9jbGFzc19jb2RlX21hcF91cGRhdGUiLCJkYXRhc2V0X2NsYXNzX2NvZGVfbWFwX2RlbGV0ZSIsImRhdGFzZXRfY2xhc3NfY29kZV9tYXBfcmVhZF9hbnkiLCJkYXRhc2V0X2NsYXNzX2NvZGVfbWFwX3VwZGF0ZV9hbnkiLCJkYXRhc2V0X2NsYXNzX2NvZGVfbWFwX2RlbGV0ZV9hbnkiLCJwdWJsaWNfc2V0dGluZ3NfY3JlYXRlIiwicHVibGljX3NldHRpbmdzX3JlYWQiLCJwdWJsaWNfc2V0dGluZ3NfdXBkYXRlIiwicHVibGljX3NldHRpbmdzX2RlbGV0ZSIsInB1YmxpY19zZXR0aW5nc19yZWFkX2FueSIsInB1YmxpY19zZXR0aW5nc191cGRhdGVfYW55IiwicHVibGljX3NldHRpbmdzX2RlbGV0ZV9hbnkiLCJpbmZlcmVuY2VfbW9kZWxfcG9saWN5X2NoYW5nZSJdLCJncm91cF9zeXN0ZW1zIjpbIi5uZXQ4LWdycGMtdGVzdC1zZXJ2ZXIiLCJsb2NhbCIsIm1pcmVyby1pZGMtaW4tbGluZSIsIm1pcmVyby1pZGMtb2ZmLWxpbmUiXSwiZ3JvdXBfZmVhdHVyZXMiOlsicmNfcmVjaXBlX2RldmVsb3BtZW50IiwicmNfcmVjaXBlX2ltYWdlX2FuYWx5emVyIiwicmNfcmVjaXBlX21hbmFnZW1lbnQiLCJyY19kYXRhc2V0X21hbmFnZW1lbnQiLCJyY193b3JrZmxvd19tYW5hZ2VtZW50IiwicmNfd29ya2Zsb3dfbW9uaXRvcmluZyIsInJjX21hY2hpbmVfbGVhcm5pbmdfY2xhc3NfY29kZSIsInJjX21hY2hpbmVfbGVhcm5pbmdfbW9kZWxfbWFuYWdlbWVudCIsInJjX2dkc19tYW5hZ2VtZW50IiwicmNfZ2RzX2Zsb29yX3BsYW5fbWFuYWdlbWVudCIsInJjX29wZXJhdGlvbl9kZWZlY3RfZGF0YV9tYW5hZ2VtZW50IiwicmNfb3BlcmF0aW9uX3NjaGVkdWxlcl9tYW5hZ2VtZW50IiwicmNfb3BlcmF0aW9uX3N0YXR1cyIsInJjX29wZXJhdGlvbl9tb25pdG9yaW5nIiwicmNfbWFzdGVyZGF0YXNldF9tYW5hZ2VtZW50IiwicmNfZGVmZWN0X2NvbGxlY3Rpb24iLCJyY19jbGFzc19jb2RlX21hcF9tYW5hZ2VtZW50Il0sImp0aSI6IjRkNWQ4OWM2LTNiZWItNGIxYy1hNWMyLTQ3YWY4MTBhMDJjMiIsImlhdCI6MTc0NzE5Nzc2MCwibmJmIjoxNzQ3MTk3NzYwLCJleHAiOjE3NDg0MDczNjAsImlzcyI6ImRhcSIsImF1ZCI6ImRhcV91c2VyIn0.4THRPScUHbuqpVhR619ORoiwDxGnK2GH-wAJKGumuGE","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##!--{"Name":"gs_system_address","Type":"system_address","Key":"","Value":"192.168.70.101:5120","Category":"Others","Control":"TextBox","ModulePropertyInfo":{"Name":"","Alias":"","Type":"","Items":[],"MinValue":"","MaxValue":"","ModuleName":"","IsNotUseTrackbar":true},"ParentGroup":"","ChildGroup":"","GroupParameterName":"","Description":"","IsActive":false,"InputVariable":"","DescriptionImage":""}
##[--{"OutputProperty":{"Name":"output","Alias":"Output","Type":"NdArray","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"Load_output","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},"InputProperty":{"Name":"","Alias":"","Type":"","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"5760346357","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},"OutputModule":{"Name":"","Description":"","Inputs":[],"Outputs":[],"Category":"","Module":"","Key":"Load","X":0,"Y":0,"Width":0,"Height":0,"Code":"","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""},"InputModule":{"Name":"","Description":"","Inputs":[],"Outputs":[],"Category":"","Module":"","Key":"GrayToRGB","X":0,"Y":0,"Width":0,"Height":0,"Code":"","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""}}
##[--{"OutputProperty":{"Name":"output","Alias":"Output","Type":"NdArray","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"GrayToRGB_output","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},"InputProperty":{"Name":"","Alias":"","Type":"","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"6725827858","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},"OutputModule":{"Name":"","Description":"","Inputs":[],"Outputs":[],"Category":"","Module":"","Key":"GrayToRGB","X":0,"Y":0,"Width":0,"Height":0,"Code":"","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""},"InputModule":{"Name":"","Description":"","Inputs":[],"Outputs":[],"Category":"","Module":"","Key":"Resize","X":0,"Y":0,"Width":0,"Height":0,"Code":"","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""}}
##[--{"OutputProperty":{"Name":"output","Alias":"Output","Type":"NdArray","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"Resize_output","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},"InputProperty":{"Name":"","Alias":"","Type":"","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"3562637217","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},"OutputModule":{"Name":"","Description":"","Inputs":[],"Outputs":[],"Category":"","Module":"","Key":"Resize","X":0,"Y":0,"Width":0,"Height":0,"Code":"","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""},"InputModule":{"Name":"","Description":"","Inputs":[],"Outputs":[],"Category":"","Module":"","Key":"DMDcollTemplate","X":0,"Y":0,"Width":0,"Height":0,"Code":"","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""}}
##[--{"OutputProperty":{"Name":"","Alias":"","Type":"","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"Resize_output","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},"InputProperty":{"Name":"","Alias":"","Type":"","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"4064238097","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},"OutputModule":{"Name":"","Description":"","Inputs":[],"Outputs":[],"Category":"","Module":"","Key":"Resize","X":0,"Y":0,"Width":0,"Height":0,"Code":"","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""},"InputModule":{"Name":"","Description":"","Inputs":[],"Outputs":[],"Category":"","Module":"","Key":"PredictClass","X":0,"Y":0,"Width":0,"Height":0,"Code":"","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""}}
##[--{"OutputProperty":{"Name":"output","Alias":"Output","Type":"List","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"PredictClass_output","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},"InputProperty":{"Name":"","Alias":"","Type":"","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"3562637218","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},"OutputModule":{"Name":"","Description":"","Inputs":[],"Outputs":[],"Category":"","Module":"","Key":"PredictClass","X":0,"Y":0,"Width":0,"Height":0,"Code":"","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""},"InputModule":{"Name":"","Description":"","Inputs":[],"Outputs":[],"Category":"","Module":"","Key":"DMDcollTemplate","X":0,"Y":0,"Width":0,"Height":0,"Code":"","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""}}
##{--
#region import
import os
import sys
import mpp
import cv2
import numpy as np
import Core
import DAQ
import iDAQ
from Core._branch_node import branch_node_context
#endregion

def DMDcollTemplate(input1, input2, input3, input4, input5):
import mpp
import os

result_image = input1
result_data = input2
print(input2)
global_items = input5
defect_id = global_items['gs_defectid']

#### Result Uri
summary_file_uri = os.path.join(global_items['gs_resultdataurl'].strip(), f'{defect_id}_Summary.csv')

#### Summary Data
summary_data = list()
summary_data.append(['DEFECTID', 'Label', 'Score'])
summary_data.append([defect_id, result_data['result_code'], result_data['score'] ])

#### Save Result
mpp.intel64.save_csv(summary_data, summary_file_uri)

return None, None, None, None, None
##}--
def RecipeRun(gs_semimage1=None, gs_semimage2=None, gs_semimage3=None, gs_semimage4=None, gs_semimage5=None, gs_semimage6=None, gs_semimage7=None, gs_semimage8=None, gs_semimage9=None, gs_semimage10=None, gs_semimage11=None, gs_semimage12=None, gs_semimage13=None, gs_semimage14=None, gs_semimage15=None, gs_semimage16=None, gs_semimage17=None, gs_semimage18=None, gs_semimage19=None, gs_semimage20=None, gs_layercount=None, gs_layerimage1=None, gs_layerindex1=None, gs_refimage1=None, gs_refvector1=None, gs_layerimage2=None, gs_layerindex2=None, gs_refimage2=None, gs_refvector2=None, gs_layerimage3=None, gs_layerindex3=None, gs_refimage3=None, gs_refvector3=None, gs_layerimage4=None, gs_layerindex4=None, gs_refimage4=None, gs_refvector4=None, gs_layerimage5=None, gs_layerindex5=None, gs_refimage5=None, gs_refvector5=None, gs_layerimage6=None, gs_layerindex6=None, gs_refimage6=None, gs_refvector6=None, gs_layerimage7=None, gs_layerindex7=None, gs_refimage7=None, gs_refvector7=None, gs_layerimage8=None, gs_layerindex8=None, gs_refimage8=None, gs_refvector8=None, gs_layerimage9=None, gs_layerindex9=None, gs_refimage9=None, gs_refvector9=None, gs_layerimage10=None, gs_layerindex10=None, gs_refimage10=None, gs_refvector10=None, gs_layerimage11=None, gs_layerindex11=None, gs_refimage11=None, gs_refvector11=None, gs_layerimage12=None, gs_layerindex12=None, gs_refimage12=None, gs_refvector12=None, gs_layerimage13=None, gs_layerindex13=None, gs_refimage13=None, gs_refvector13=None, gs_layerimage14=None, gs_layerindex14=None, gs_refimage14=None, gs_refvector14=None, gs_layerimage15=None, gs_layerindex15=None, gs_refimage15=None, gs_refvector15=None, gs_layerimage16=None, gs_layerindex16=None, gs_refimage16=None, gs_refvector16=None, gs_layerimage17=None, gs_layerindex17=None, gs_refimage17=None, gs_refvector17=None, gs_layerimage18=None, gs_layerindex18=None, gs_refimage18=None, gs_refvector18=None, gs_layerimage19=None, gs_layerindex19=None, gs_refimage19=None, gs_refvector19=None, gs_layerimage20=None, gs_layerindex20=None, gs_refimage20=None, gs_refvector20=None, gs_resultimageurl=None, gs_resultdataurl=None, gs_resultimageextension=None, gs_waferid=None, gs_defectid=None, gs_xreal=None, gs_yreal=None, gs_scale=None, gs_xindex=None, gs_yindex=None, gs_particlecode=None, gs_angle=None, gs_clipimagewidth=None, gs_clipimageheight=None, gs_imagefov=None, gs_templateimage1=None, gs_templateimage2=None, gs_templateimage3=None, gs_templateimage4=None, gs_templateimage5=None, gs_templateimage6=None, gs_templateimage7=None, gs_templateimage8=None, gs_templateimage9=None, gs_templateimage10=None, gs_templateimage11=None, gs_templateimage12=None, gs_templateimage13=None, gs_templateimage14=None, gs_templateimage15=None, gs_templateimage16=None, gs_templateimage17=None, gs_templateimage18=None, gs_templateimage19=None, gs_templateimage20=None, gs_floor_plan_deploy_id_1=None, gs_floor_plan_deploy_id_2=None, gs_floor_plan_deploy_id_3=None, gs_floor_plan_deploy_id_4=None, gs_floor_plan_deploy_id_5=None, gs_floor_plan_deploy_id_6=None, gs_floor_plan_deploy_id_7=None, gs_floor_plan_deploy_id_8=None, gs_floor_plan_deploy_id_9=None, gs_floor_plan_deploy_id_10=None, gs_model_deploy_id_1=None, gs_model_deploy_id_2=None, gs_model_deploy_id_3=None, gs_model_deploy_id_4=None, gs_model_deploy_id_5=None, gs_model_deploy_id_6=None, gs_model_deploy_id_7=None, gs_model_deploy_id_8=None, gs_model_deploy_id_9=None, gs_model_deploy_id_10=None, gs_model_deploy_id_11=None, gs_model_deploy_id_12=None, gs_model_deploy_id_13=None, gs_model_deploy_id_14=None, gs_model_deploy_id_15=None, gs_model_deploy_id_16=None, gs_model_deploy_id_17=None, gs_model_deploy_id_18=None, gs_model_deploy_id_19=None, gs_model_deploy_id_20=None, gs_access_token=None, gs_system_address=None):
resultdata = None
import Core
import DAQ
##<--{"Name":"Load","Description":"","Inputs":[{"Name":"path","Alias":"Path","Type":"Global","Value":"gs_semimage1","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":true,"Key":"3985706443","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"gray_mode","Alias":"Gray Mode","Type":"Bool","Value":"True","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":true,"Key":"3985706444","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false}],"Outputs":[{"Name":"output","Alias":"Output","Type":"NdArray","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"Load_output","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false}],"Category":"Core","Module":"BasicOperation","Key":"Load","X":8994,"Y":4786,"Width":0,"Height":0,"Code":"def Load(path, gray_mode):\r\n \"\"\"\r\n 입력 경로의 파일에서 이미지 데이터를 읽어온다.\r\n\r\n 이미지는 1채널 이미지와 3채널(R,G,B) 이미지로 읽어올 수 있다.\r\n 읽어오는 방식은 인자 `gray_mode`의 값에 따라 아래와 같이 처리된다.\r\n\r\n - ``True`` : 1채널 이미지로 읽어온다.\r\n - ``False`` : 3채널(R,G,B) 이미지로 읽어온다.\r\n\r\n Parameters\r\n ----------\r\n path : str\r\n 이미지 파일 경로\r\n gray_mode : bool\r\n True 이면 이미지를 1채널 이미지로 읽어온다.(False는 원본 이미지 그대로 읽음)\r\n\r\n Returns\r\n -------\r\n ndarray\r\n 출력 이미지\r\n\r\n See Also\r\n --------\r\n - ``mpp.intel64.load``\r\n \"\"\" \r\n output = mpp.intel64.load(path, gray_mode)\r\n \r\n if output is None:\r\n raise NameError('API Execution Failed')\r\n\r\n return output\r\n","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""}
Load_output = Core.BasicOperation.Load(gs_semimage1, True)
##<--{"Name":"GrayToRGB","Description":null,"Inputs":[{"Name":"input","Alias":"Input","Type":"NdArray","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"5760346357","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false}],"Outputs":[{"Name":"output","Alias":"Output","Type":"NdArray","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"GrayToRGB_output","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false}],"Category":"Core","Module":"BasicOperation","Key":"GrayToRGB","X":8989,"Y":4885,"Width":0,"Height":0,"Code":"def GrayToRGB(input):\r\n \"\"\"\r\n 1채널 이미지를 3채널(R,G,B) 이미지로 변환한다.\r\n\r\n Parameters\r\n ----------\r\n input : ndarray\r\n 1채널 입력 이미지\r\n\r\n Returns\r\n -------\r\n ndarray\r\n 3채널(R,G,B) 출력 이미지\r\n\r\n See Also\r\n --------\r\n - ``mpp.intel64.gray_to_rgb``\r\n \"\"\" \r\n output = mpp.intel64.gray_to_rgb(input)\r\n\r\n return output\r\n","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""}
GrayToRGB_output = Core.BasicOperation.GrayToRGB(Load_output)
##<--{"Name":"Resize","Description":"","Inputs":[{"Name":"input","Alias":"Input","Type":"NdArray","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"6725827858","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"width","Alias":"Width","Type":"Int","Value":"384","MinValue":"1","MaxValue":"1000000","Items":[],"DefaultValue":"","IsUsercontrol":true,"Key":"6725827859","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"height","Alias":"Height","Type":"Int","Value":"384","MinValue":"1","MaxValue":"1000000","Items":[],"DefaultValue":"","IsUsercontrol":true,"Key":"6725827860","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"interpolation","Alias":"Interpolation","Type":"List","Value":"\"linear\"","MinValue":"","MaxValue":"","Items":["\"cubic\"","\"nearest\"","\"linear\"","\"lanczos\"","\"supersampling\""],"DefaultValue":"","IsUsercontrol":true,"Key":"6725827861","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"antialias","Alias":"Antialias","Type":"Bool","Value":"True","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":true,"Key":"6725827862","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false}],"Outputs":[{"Name":"output","Alias":"Output","Type":"NdArray","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"Resize_output","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false}],"Category":"Core","Module":"BasicOperation","Key":"Resize","X":8985,"Y":4995,"Width":0,"Height":0,"Code":"def Resize(input, width, height, interpolation, antialias):\r\n \"\"\"\r\n 입력 이미지의 크기를 입력한 폭과 넓이로 변경한다.\r\n\r\n 보간하는 방식은 인자 `interplation` 인자의 값에 따라 아래와 같이 처리된다.\r\n\r\n - ``cubic`` : 3차회선 보간법(4×4 이웃 픽셀 참조)\r\n - ``lanczos`` : Lanczos 보간법(8×8 이웃 픽셀 참조)\r\n - ``linear`` : 양선형 보간법(2×2 이웃 픽셀 참조)\r\n - ``nearest`` : 최근방 이웃 보간법\r\n - ``supersampling`` : 슈퍼 샘플링 보간법(xFactor<1, yFactor<1)\r\n\r\n Parameters\r\n ----------\r\n input : ndarray\r\n 입력 이미지\r\n width : int\r\n 변경할 이미지의 폭( > 0)\r\n height : int\r\n 변경할 이미지의 넓이( > 0)\r\n interpolation : str \r\n 문자열 값 : `\"cubic\"`, `\"lanczos\"`, `\"linear\"`, `\"nearest\"`, `\"supersampling\"` 중 하나\r\n antialias : bool\r\n 안티엘리어싱 옵션\r\n\r\n Returns\r\n -------\r\n ndarray\r\n 결과 이미지\r\n\r\n See Also\r\n --------\r\n - ``mpp.intel64.resize``\r\n \"\"\" \r\n if input is None:\r\n raise NameError('Source is None')\r\n\r\n output = mpp.intel64.resize(input, width, height, interpolation, antialias)\r\n if output is None:\r\n raise NameError('API Execution Failed')\r\n\r\n return output\r\n","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""}
Resize_output = Core.BasicOperation.Resize(GrayToRGB_output, 384, 384, "linear", True)
##<--{"Name":"PredictClass","Description":"","Inputs":[{"Name":"data","Alias":"Data","Type":"NdArray","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"4064238097","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"context","Alias":"Context","Type":"Object","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"4064238098","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"deploy_id","Alias":"Deploy Id","Type":"Global","Value":"gs_model_deploy_id_1","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":true,"Key":"4064238099","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false}],"Outputs":[{"Name":"output","Alias":"Output","Type":"List","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"PredictClass_output","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"context","Alias":"Context","Type":"Object","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"PredictClass_context","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false}],"Category":"DAQ","Module":"Inference","Key":"PredictClass","X":9045,"Y":5109,"Width":0,"Height":0,"Code":"def PredictClass(data, context, deploy_id):\r\n \"\"\"\r\n `모델 관리` 화면에 등록된 이미지 기반 Classification 모델 중, 배포된 모델에 대하여 Predict를 수행한다.\r\n \r\n Parameters\r\n ----------\r\n data : ndarray\r\n Predict 수행할 이미지\r\n context : Any\r\n Predict 시 필요한 추가 정보\r\n deploy_id : str\r\n 배포된 모델의 Deploy ID\r\n\r\n Returns\r\n -------\r\n Tuple[list, Any]\r\n - 결과 데이터(모델의 model_handler가 반환하는 Classification 정보. 예: class score 별 정렬된 label/score 값 정보 목록)\r\n - Predict 결과 추가 정보(모델의 model_handler가 반환하는 추가 정보)\r\n \"\"\" \r\n output, context = mpp.daq.inference_service.predict(deploy_id=deploy_id, data=data, context=context)\r\n return output, context\r\n","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""}
PredictClass_output, PredictClass_context = DAQ.Inference.PredictClass(Resize_output, None, gs_model_deploy_id_1)
##<--{"Name":"DMDcollTemplate","Description":"","Inputs":[{"Name":"input1","Alias":"input1","Type":"Object","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"3562637217","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"input2","Alias":"input2","Type":"Object","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"3562637218","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"input3","Alias":"input3","Type":"Object","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"3562637219","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"input4","Alias":"input4","Type":"Object","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"3562637220","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"input5","Alias":"input5","Type":"String","Value":"locals()","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":true,"Key":"3562637221","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false}],"Outputs":[{"Name":"output1","Alias":"output1","Type":"Object","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"DMDcollTemplate_output1","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"output2","Alias":"output2","Type":"Object","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"DMDcollTemplate_output2","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"output3","Alias":"output3","Type":"Object","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"DMDcollTemplate_output3","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"output4","Alias":"output4","Type":"Object","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"DMDcollTemplate_output4","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false},{"Name":"output5","Alias":"output5","Type":"Object","Value":"","MinValue":"","MaxValue":"","Items":[],"DefaultValue":"","IsUsercontrol":false,"Key":"DMDcollTemplate_output5","DependentPropertyName":"","DependentPropertyValue":"","IsNotUseTrackbar":true,"IsModuleVariable":false}],"Category":"DAQ","Module":"UserFunction","Key":"DMDcollTemplate","X":8985,"Y":5222,"Width":0,"Height":0,"Code":"def DMDcollTemplate(input1, input2, input3, input4, input5):\r\n\timport mpp\r\n\timport os\r\n\t\r\n\tresult_image = input1\r\n\tresult_data = input2\r\n\tglobal_items = input5\r\n\tdefect_id = global_items['gs_defectid']\r\n\tinput_image_file_name_without_extension = mpp.daq.utilities.get_image_file_name_without_extension(global_items['gs_semimage1'])\r\n\t\r\n\t#### Result Uri\r\n\timage_file_name = f'{defect_id}_result.jpg' if input_image_file_name_without_extension is None else f'{input_image_file_name_without_extension}_result.jpg'\r\n\tresult_image_file_uri = os.path.join(global_items['gs_resultimageurl'].strip(), image_file_name)\r\n\tsummary_file_uri = os.path.join(global_items['gs_resultdataurl'].strip(), f'{defect_id}_Summary.csv')\r\n\tdefect_file_uri = os.path.join(global_items['gs_resultdataurl'].strip(), f'{defect_id}_Defect.csv')\r\n\tdcoll_file_uri = os.path.join(global_items['gs_resultdataurl'].strip(), f'{defect_id}_DColl.csv')\r\n\r\n\t#### Summary Data\r\n\tsummary_data = list()\r\n\tsummary_data.append(['WAFERID','DEFECTID','DIEX','DIEY','XREAL','YREAL','IMAGEWIDTH','IMAGEHEIGHT','ALIGNMENT','MEASUREMENT','DEFECT','EXTENSIONFUNC','RELATIVEPATH','PATH','GDSX','GDSY'])\r\n\tsummary_data.append([global_items['gs_waferid'],global_items['gs_defectid'],global_items['gs_xindex'],global_items['gs_yindex'],global_items['gs_xreal'],global_items['gs_yreal'],'0','0','OK','OK','OK','OK',image_file_name,result_image_file_uri,'0','0'])\r\n\r\n\t#### DCOLL Data\r\n\tdcoll_data = list()\r\n\tdcoll_data.append(['ID', 'TYPE', 'NAME', 'VALUE', 'DESCRIPTION'])\r\n\tdcoll_data.append([defect_id, 'IMG', 'PATH', result_image_file_uri, 'Result Image'])\r\n\tdcoll_data.append([defect_id, 'SMF', 'DEFECTID', defect_id, 'DefectID'])\r\n\r\n\t#### TODO : Change Following Items\r\n\t#### MEASURE -> MESURE : Due to Typo in the SMF File.\r\n\tdcoll_data.append([defect_id, 'SMF', 'MESURE1', float(result_data[0]), 'Measure1'])\r\n\tdcoll_data.append([defect_id, 'SMF', 'MESURE2', float(result_data[1]), 'Measure2'])\r\n\tdcoll_data.append([defect_id, 'SMF', 'MESURE3', float(result_data[2]), 'Measure3'])\r\n\tdcoll_data.append([defect_id, 'SMF', 'MESURE4', float(result_data[3]), 'Measure4'])\r\n\tdcoll_data.append([defect_id, 'SMF', 'MESURE5', float(result_data[4]), 'Measure5'])\r\n\r\n\t#### Save Result\r\n\tmpp.intel64.save(result_image, result_image_file_uri)\r\n\tmpp.intel64.save_csv(summary_data, summary_file_uri)\r\n\tmpp.intel64.save_csv(summary_data, defect_file_uri)\r\n\tmpp.intel64.save_csv(dcoll_data, dcoll_file_uri)\r\n\t\r\n\toutput1 = None\r\n\toutput2 = None\r\n\toutput3 = None\r\n\toutput4 = None\r\n\toutput5 = None\r\n\r\n\treturn output1, output2, output3, output4, output5\r\n","ModuleGroup":null,"Type":"Normal","TargetModuleDataString":""}
DMDcollTemplate_output1, DMDcollTemplate_output2, DMDcollTemplate_output3, DMDcollTemplate_output4, DMDcollTemplate_output5 = DMDcollTemplate(Resize_output, PredictClass_output, None, None, locals())
return resultdata ### _main_return_

if __name__ == "__main__" :
resultdata = RecipeRun(gs_semimage1=gs_semimage1, gs_semimage2=gs_semimage2, gs_semimage3=gs_semimage3, gs_semimage4=gs_semimage4, gs_semimage5=gs_semimage5, gs_semimage6=gs_semimage6, gs_semimage7=gs_semimage7, gs_semimage8=gs_semimage8, gs_semimage9=gs_semimage9, gs_semimage10=gs_semimage10, gs_semimage11=gs_semimage11, gs_semimage12=gs_semimage12, gs_semimage13=gs_semimage13, gs_semimage14=gs_semimage14, gs_semimage15=gs_semimage15, gs_semimage16=gs_semimage16, gs_semimage17=gs_semimage17, gs_semimage18=gs_semimage18, gs_semimage19=gs_semimage19, gs_semimage20=gs_semimage20, gs_layercount=gs_layercount, gs_layerimage1=gs_layerimage1, gs_layerindex1=gs_layerindex1, gs_refimage1=gs_refimage1, gs_refvector1=gs_refvector1, gs_layerimage2=gs_layerimage2, gs_layerindex2=gs_layerindex2, gs_refimage2=gs_refimage2, gs_refvector2=gs_refvector2, gs_layerimage3=gs_layerimage3, gs_layerindex3=gs_layerindex3, gs_refimage3=gs_refimage3, gs_refvector3=gs_refvector3, gs_layerimage4=gs_layerimage4, gs_layerindex4=gs_layerindex4, gs_refimage4=gs_refimage4, gs_refvector4=gs_refvector4, gs_layerimage5=gs_layerimage5, gs_layerindex5=gs_layerindex5, gs_refimage5=gs_refimage5, gs_refvector5=gs_refvector5, gs_layerimage6=gs_layerimage6, gs_layerindex6=gs_layerindex6, gs_refimage6=gs_refimage6, gs_refvector6=gs_refvector6, gs_layerimage7=gs_layerimage7, gs_layerindex7=gs_layerindex7, gs_refimage7=gs_refimage7, gs_refvector7=gs_refvector7, gs_layerimage8=gs_layerimage8, gs_layerindex8=gs_layerindex8, gs_refimage8=gs_refimage8, gs_refvector8=gs_refvector8, gs_layerimage9=gs_layerimage9, gs_layerindex9=gs_layerindex9, gs_refimage9=gs_refimage9, gs_refvector9=gs_refvector9, gs_layerimage10=gs_layerimage10, gs_layerindex10=gs_layerindex10, gs_refimage10=gs_refimage10, gs_refvector10=gs_refvector10, gs_layerimage11=gs_layerimage11, gs_layerindex11=gs_layerindex11, gs_refimage11=gs_refimage11, gs_refvector11=gs_refvector11, gs_layerimage12=gs_layerimage12, gs_layerindex12=gs_layerindex12, gs_refimage12=gs_refimage12, gs_refvector12=gs_refvector12, gs_layerimage13=gs_layerimage13, gs_layerindex13=gs_layerindex13, gs_refimage13=gs_refimage13, gs_refvector13=gs_refvector13, gs_layerimage14=gs_layerimage14, gs_layerindex14=gs_layerindex14, gs_refimage14=gs_refimage14, gs_refvector14=gs_refvector14, gs_layerimage15=gs_layerimage15, gs_layerindex15=gs_layerindex15, gs_refimage15=gs_refimage15, gs_refvector15=gs_refvector15, gs_layerimage16=gs_layerimage16, gs_layerindex16=gs_layerindex16, gs_refimage16=gs_refimage16, gs_refvector16=gs_refvector16, gs_layerimage17=gs_layerimage17, gs_layerindex17=gs_layerindex17, gs_refimage17=gs_refimage17, gs_refvector17=gs_refvector17, gs_layerimage18=gs_layerimage18, gs_layerindex18=gs_layerindex18, gs_refimage18=gs_refimage18, gs_refvector18=gs_refvector18, gs_layerimage19=gs_layerimage19, gs_layerindex19=gs_layerindex19, gs_refimage19=gs_refimage19, gs_refvector19=gs_refvector19, gs_layerimage20=gs_layerimage20, gs_layerindex20=gs_layerindex20, gs_refimage20=gs_refimage20, gs_refvector20=gs_refvector20, gs_resultimageurl=gs_resultimageurl, gs_resultdataurl=gs_resultdataurl, gs_resultimageextension=gs_resultimageextension, gs_waferid=gs_waferid, gs_defectid=gs_defectid, gs_xreal=gs_xreal, gs_yreal=gs_yreal, gs_scale=gs_scale, gs_xindex=gs_xindex, gs_yindex=gs_yindex, gs_particlecode=gs_particlecode, gs_angle=gs_angle, gs_clipimagewidth=gs_clipimagewidth, gs_clipimageheight=gs_clipimageheight, gs_imagefov=gs_imagefov, gs_templateimage1=gs_templateimage1, gs_templateimage2=gs_templateimage2, gs_templateimage3=gs_templateimage3, gs_templateimage4=gs_templateimage4, gs_templateimage5=gs_templateimage5, gs_templateimage6=gs_templateimage6, gs_templateimage7=gs_templateimage7, gs_templateimage8=gs_templateimage8, gs_templateimage9=gs_templateimage9, gs_templateimage10=gs_templateimage10, gs_templateimage11=gs_templateimage11, gs_templateimage12=gs_templateimage12, gs_templateimage13=gs_templateimage13, gs_templateimage14=gs_templateimage14, gs_templateimage15=gs_templateimage15, gs_templateimage16=gs_templateimage16, gs_templateimage17=gs_templateimage17, gs_templateimage18=gs_templateimage18, gs_templateimage19=gs_templateimage19, gs_templateimage20=gs_templateimage20, gs_floor_plan_deploy_id_1=gs_floor_plan_deploy_id_1, gs_floor_plan_deploy_id_2=gs_floor_plan_deploy_id_2, gs_floor_plan_deploy_id_3=gs_floor_plan_deploy_id_3, gs_floor_plan_deploy_id_4=gs_floor_plan_deploy_id_4, gs_floor_plan_deploy_id_5=gs_floor_plan_deploy_id_5, gs_floor_plan_deploy_id_6=gs_floor_plan_deploy_id_6, gs_floor_plan_deploy_id_7=gs_floor_plan_deploy_id_7, gs_floor_plan_deploy_id_8=gs_floor_plan_deploy_id_8, gs_floor_plan_deploy_id_9=gs_floor_plan_deploy_id_9, gs_floor_plan_deploy_id_10=gs_floor_plan_deploy_id_10, gs_model_deploy_id_1=gs_model_deploy_id_1, gs_model_deploy_id_2=gs_model_deploy_id_2, gs_model_deploy_id_3=gs_model_deploy_id_3, gs_model_deploy_id_4=gs_model_deploy_id_4, gs_model_deploy_id_5=gs_model_deploy_id_5, gs_model_deploy_id_6=gs_model_deploy_id_6, gs_model_deploy_id_7=gs_model_deploy_id_7, gs_model_deploy_id_8=gs_model_deploy_id_8, gs_model_deploy_id_9=gs_model_deploy_id_9, gs_model_deploy_id_10=gs_model_deploy_id_10, gs_model_deploy_id_11=gs_model_deploy_id_11, gs_model_deploy_id_12=gs_model_deploy_id_12, gs_model_deploy_id_13=gs_model_deploy_id_13, gs_model_deploy_id_14=gs_model_deploy_id_14, gs_model_deploy_id_15=gs_model_deploy_id_15, gs_model_deploy_id_16=gs_model_deploy_id_16, gs_model_deploy_id_17=gs_model_deploy_id_17, gs_model_deploy_id_18=gs_model_deploy_id_18, gs_model_deploy_id_19=gs_model_deploy_id_19, gs_model_deploy_id_20=gs_model_deploy_id_20, gs_access_token=gs_access_token, gs_system_address=gs_system_address)



D/L 결과 시각화 및 정확도 평가

  • valid data를 등록합니다. (dog, cat 각각)
    • Regist Valid Data
  • 레시피 코드를 불러온 뒤 서버에 레시피 등록합니다.
    • Regist Recipe
  • 레시피 목록에서 시뮬레이션 한 뒤 결과 데이터를 확인합니다.
    • Simulation
    • Simulation