예제 #1
0
        public void GenerateAzureRemoteImageOutput()
        {
            // Get Namespace
            var  namespaceValue  = Utils.Normalize(_settings.OutputName);
            var  labelType       = _columnInferenceResult.TextLoaderOptions.Columns.Where(t => t.Name == _settings.LabelName).First().DataKind;
            Type labelTypeCsharp = Utils.GetCSharpType(labelType);

            // Generate Model Project
            var modelProjectContents = GenerateAzureAttachImageModelProjectContents(namespaceValue);

            var modelProjectDir  = Path.Combine(_settings.OutputBaseDir, $"{_settings.OutputName}.Model");
            var modelProjectName = $"{_settings.OutputName}.Model.csproj";

            // Get Normalize Mapping
            var normalizeContent = new NormalizeMapping()
            {
                Namespace = namespaceValue,
                Target    = _settings.Target,
            }.TransformText();

            normalizeContent = Utils.FormatCode(normalizeContent);

            // Write files to disk
            Utils.WriteOutputToFiles(modelProjectContents.ModelInputCSFileContent, "ModelInput.cs", modelProjectDir);
            Utils.WriteOutputToFiles(modelProjectContents.ModelOutputCSFileContent, "ModelOutput.cs", modelProjectDir);
            Utils.WriteOutputToFiles(modelProjectContents.ConsumeModelCSFileContent, "ConsumeModel.cs", modelProjectDir);
            Utils.WriteOutputToFiles(modelProjectContents.ModelProjectFileContent, modelProjectName, modelProjectDir);
            Utils.WriteOutputToFiles(normalizeContent, "NormalizeMapping.cs", modelProjectDir);

            // Generate ConsoleApp Project
            var consoleAppProjectContents = GenerateConsoleAppProjectContents(namespaceValue, labelTypeCsharp,
                                                                              false, false, false, true, false, false, true, true);

            // Write files to disk.
            var consoleAppProjectDir  = Path.Combine(_settings.OutputBaseDir, $"{_settings.OutputName}.ConsoleApp");
            var consoleAppProjectName = $"{_settings.OutputName}.ConsoleApp.csproj";

            Utils.WriteOutputToFiles(consoleAppProjectContents.ConsoleAppProgramCSFileContent, "Program.cs", consoleAppProjectDir);
            Utils.WriteOutputToFiles(consoleAppProjectContents.modelBuilderCSFileContent, "ModelBuilder.cs", consoleAppProjectDir);
            Utils.WriteOutputToFiles(consoleAppProjectContents.ConsoleAppProjectFileContent, consoleAppProjectName, consoleAppProjectDir);

            // New solution file.
            Utils.CreateSolutionFile(_settings.OutputName, _settings.OutputBaseDir);

            // Add projects to solution
            var solutionPath = Path.Combine(_settings.OutputBaseDir, $"{_settings.OutputName}.sln");

            Utils.AddProjectsToSolution(modelProjectDir, modelProjectName, consoleAppProjectDir, consoleAppProjectName, solutionPath);
        }
예제 #2
0
        public static IEstimator <ITransformer> BuildPipeline(MLContext mlContext)
        {
            // Data process configuration with pipeline data transformations
            var pipeline = mlContext.Transforms.LoadImages("ImageSource_featurized", null, "ImageSource")
                           .Append(mlContext.Transforms.ResizeImages("ImageSource_featurized", 224, 224, "ImageSource_featurized"))
                           .Append(mlContext.Transforms.ExtractPixels("ImageSource_featurized", "ImageSource_featurized"))
                           .Append(mlContext.Transforms.CustomMapping <NormalizeInput, NormalizeOutput>(
                                       (input, output) => NormalizeMapping.Mapping(input, output),
                                       contractName: nameof(NormalizeMapping)))
                           .Append(mlContext.Transforms.ApplyOnnxModel(modelFile: ONNX_MODEL))
                           .Append(mlContext.Transforms.CustomMapping <LabelMappingInput, LabelMappingOutput>(
                                       (input, output) => LabelMapping.Mapping(input, output),
                                       contractName: nameof(LabelMapping)));

            return(pipeline);
        }