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"); } }
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")); } }