Example #1
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] ODWorkspaceOwner owner,
            ILogger log)
        {
            log.LogInformation("HTTP triggered (SaveODWorkspace) function");

            var workspaceManager = await ODWorkspaceManagerHelper.SetWorkspaceManager(owner.OwnerId, owner.CreateIfNotExists);

            var workspace = await workspaceManager.GetWorkspaceAsync(owner.OwnerId, true);

            try
            {
                //Upload data to custom vision adhoc project
                await workspaceManager.PrepareWorkspaceForTraining();

                //create new training iteration, generate the offline models and upload them to storage
                await workspaceManager.TrainPreparedWorkspace();

                return(new OkObjectResult("Training completed successfully"));
            }
            catch (Exception ex)
            {
                log.LogError($"FAILED: {ex.Message}");
                return(new BadRequestObjectResult($"Addition of the file failed"));
            }
        }
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] ODWorkspaceOwner owner,
            ILogger log)
        {
            log.LogInformation("HTTP triggered (GetOrCreateODWorkspace) function");

            try
            {
                var workspaceManager = await ODWorkspaceManagerHelper.SetWorkspaceManager(owner.OwnerId, owner.CreateIfNotExists);

                ODMWorkspace workspace;

                if (owner != null)
                    workspace = await workspaceManager.GetWorkspaceAsync(owner.OwnerId, true);
                else
                    return new BadRequestObjectResult("Owner was not found. You should submit owner in the request body");

                if (workspace != null)
                    return new OkObjectResult(workspace);
                else
                    return new BadRequestObjectResult("Workspace could not be found or created");
            }
            catch (Exception ex)
            {
                log.LogError($"FAILED: {ex.Message}");
                return new BadRequestObjectResult("Workspace could not be found or created");
            }
        }
Example #3
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] DownloadModelRequest modelReq,
            ILogger log)
        {
            if (!modelReq.Platform.Contains(OfflineModelType.CoreML.ToString()) || !modelReq.Platform.Contains(OfflineModelType.TensorFlow.ToString()) || !modelReq.Platform.Contains(OfflineModelType.ONNX.ToString()))
            {
                return(new BadRequestObjectResult("Invalid platform"));
            }
            try
            {
                var workspaceManager = await ODWorkspaceManagerHelper.SetWorkspaceManager(modelReq.OwnerId, true);

                var workspace = await workspaceManager.GetWorkspaceAsync(modelReq.OwnerId, true);

                if (workspace.LastTrainingDate != null)
                {
                    return(new OkObjectResult(workspaceManager.GetModelDownloadUri(Enum.Parse <OfflineModelType>(modelReq.Platform))));
                }

                return(new BadRequestObjectResult("Workspace must be trained first before download"));
            }
            catch (Exception ex)
            {
                return(new BadRequestObjectResult("Failed to generate the download link"));
            }
        }
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage req,
            ILogger log)
        {
            log.LogInformation("HTTP triggered (SaveODWorkspace) function");

            try
            {
                var provider = new MultipartMemoryStreamProvider();
                await req.Content.ReadAsMultipartAsync(provider);

                //Get training file attributes (name and regions)
                var trainingFileInfo = provider.Contents[0];
                var trainingFileJson = await trainingFileInfo.ReadAsStringAsync();

                var trainingFileDTO = JsonConvert.DeserializeObject <DTOTrainingFile>(trainingFileJson);

                //Get training file bytes
                var trainingFileData  = provider.Contents[1];
                var trainingFileBytes = await trainingFileData.ReadAsByteArrayAsync();

                var workspaceManager = await ODWorkspaceManagerHelper.SetWorkspaceManager(trainingFileDTO.OwnerId, false);

                var workspace = await workspaceManager.GetWorkspaceAsync(trainingFileDTO.OwnerId, true);

                var newFileName = workspaceManager.AddTrainingFile(trainingFileDTO.FileName, trainingFileBytes, Mapper.Map <List <ObjectRegion> >(trainingFileDTO.Regions));

                await workspaceManager.ValidateAndSaveWorkspace();

                return(new CreatedResult(newFileName, null));
            }
            catch (Exception ex)
            {
                log.LogError($"FAILED: {ex.Message}");
                return(new BadRequestObjectResult($"Addition of the file failed"));
            }
        }