public PagingModel <ClassVersionModel> GetAllClassVersion(int pageIndex, int pageSize, string searchValue = null)
        {
            var url = CommonService.GetUrlApi();

            pageIndex -= 1;
            var result  = new PagingModel <ClassVersionEntity>();
            var offset  = pageIndex * pageSize;
            var client  = new RestClient(url);
            var request = new RestRequest($"versions?version_name={searchValue}&offset={offset}&limit={pageSize}", Method.GET);

            request.AddHeader("Authorization", UserLoginModel.AccessToken);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Charset", "utf-8");
            request.AddHeader("Connection", "close");
            var response = client.Execute(request);

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                string resultContent = response.Content;
                result = JsonConvert.DeserializeObject <PagingModel <ClassVersionEntity> >(resultContent);
            }

            //result = DumbData(offset, pageSize);
            var no          = offset + 1;
            var classModels = result.Data?.Select((a, ix) =>
            {
                var b = _mapper.Map <ClassVersionModel>(a);
                b.No  = (no++).ToString();
                return(b);
            });

            return(new PagingModel <ClassVersionModel>
            {
                Data = classModels?.ToList(), Total = result.Total
            });
        }
Пример #2
0
        public bool Update(string id, bool active)
        {
            var url     = CommonService.GetUrlApi();
            var client  = new RestClient(url);
            var request = new RestRequest($"users/{id}", Method.PUT);

            request.AddHeader("Authorization", UserLoginModel.AccessToken);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Charset", "utf-8");
            request.AddHeader("Connection", "close");
            var body = new JObject {
                { "is_active", active }
            };
            var json = JsonConvert.SerializeObject(body);

            request.AddJsonBody(json);
            var response = client.Put(request);

            if (response.StatusCode == System.Net.HttpStatusCode.NoContent)
            {
                return(true);
            }
            return(false);
        }
Пример #3
0
        public bool TrainData(string cfgPath)
        {
            try
            {
                var pk          = new PrivateKeyFile(ApplicationConstant.PrivateKeyFilePath);
                var url         = CommonService.GetUrlApi();
                var trainDir    = ServerTrainConstant.TrainPath;
                var darknetDir  = ServerTrainConstant.DarknetPath;
                var datetime    = DateTime.Now.ToString(ApplicationConstant.DatetimeFormat).Replace("/", "").Replace(" ", "").Replace(":", "");
                var weightPath  = $@"backup/{UserLoginModel.User.Id}/{datetime}";
                var logPath     = $@"backup/{UserLoginModel.User.Id}/{datetime}/train.log";
                var lossPath    = $@"backup/{UserLoginModel.User.Id}/{datetime}/chart.png";
                var cfgFileName = Path.GetFileName(cfgPath);
                var trainServer = CommonService.GetUrlApiTrainServer();
                using (var client = new ScpClient(trainServer, 22, ServerTrainConstant.Username, pk))
                {
                    client.Connect();

                    using (var file = File.OpenRead(cfgPath))
                    {
                        client.Upload(file, $"{darknetDir}/yolo.cfg");
                    }

                    client.Disconnect();
                }


                using (var client = new SshClient(trainServer, ServerTrainConstant.Username, pk))
                {
                    client.Connect();
                    var createIsTrainCommand = client.CreateCommand($@"cd {trainDir} && echo ""1"" > istrain.txt");
                    createIsTrainCommand.Execute();
                    var createDataCommand = client.CreateCommand($@"cd {trainDir} && mkdir -pm 0777 data && python3 label.py");
                    createDataCommand.Execute();
                    var createDataTextCommand = client.CreateCommand($@"cd {trainDir} && cd .. && python3 traindata.py");
                    createDataTextCommand.Execute();

                    var createWeightsPath = client.CreateCommand($@"cd {darknetDir} && mkdir -pm 0777 {weightPath}");
                    createWeightsPath.Execute();

                    var createCfgFile = client.CreateCommand($@"cd {darknetDir} && python3 create_cfg.py --backup {weightPath}");
                    createCfgFile.Execute();
                    //var guid = Guid.NewGuid().ToString("screen -dm bash -c 'cd /home/dev/darknet; python3 sendnoti.py --id 35 --authen eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IlF3alZLbnF0WXhUMGhvQWJsVzVzOTVJWlJaQTMiLCJleHAiOjE2NDkyNDYxMzN9.9MpdU7fw2QUUQt1-1KtmKGugYPpNguY2vqkaGQMqBWc --url http://192.168.0.4:8080/api'");
                    //var command = client.CreateCommand($@"screen -dm bash -c 'cd /home/dev/darknet; ./darknet detector train yolo.data yolo.cfg -dont_show'; curl --location --request POST --header 'Authorization: {UserLoginModel.AccessToken}' --header 'Content-Type: application/json' --data-raw '{{""user"":{UserLoginModel.User.Id},""message"":""Train complete"",""url"":""backup""}}' ""{url}/users/30/notifications""");
                    var command = client.CreateCommand($@"screen -dm bash -c 'cd {darknetDir};"
                                                       + $"./darknet detector train yolo.data yolo.cfg -dont_show > {logPath};"
                                                       + $"cp chart.png {lossPath};"
                                                       + $"python3 sendnoti.py --id {UserLoginModel.User.Id} --authen {UserLoginModel.AccessToken} --url {url} --backup {weightPath}/yolo_final.weights --log_path {logPath} --loss_function_path {lossPath};"
                                                       + $"cd {trainDir}; rm -r istrain.txt; rm -r admin '");
                    //var command = client.CreateCommand($@"screen -dm bash -c 'cd /home/dev/darknet; python sendnoti.py ""$--id {UserLoginModel.User.Id}"" --authen {UserLoginModel.AccessToken} --url {url}");
                    command.Execute();
                    client.Disconnect();
                }
            }
            catch (Exception e)
            {
                ExceptionLogging.SendErrorToText(e, nameof(this.TrainData), nameof(DataSetService));
                return(false);
            }


            return(true);
        }
Пример #4
0
        public bool TransferData(ICollection <ImageFileModel> data, ICollection <LabelFileModel> labelData, bool isClearData = false)
        {
            try
            {
                var pk     = new PrivateKeyFile(ApplicationConstant.PrivateKeyFilePath);
                var folder = DateTime.Now.ToString(ApplicationConstant.DatetimeFormat);
                folder = folder.Replace("/", "").Replace(" ", "").Replace(":", "");
                var dataFolder  = $"train/admin/{UserLoginModel.User.Id}/data/{folder}";
                var labelFolder = $"train/admin/{UserLoginModel.User.Id}/label/{folder}";
                var dataDir     = $@"{ServerTrainConstant.DarknetPath}";
                var trainDir    = ServerTrainConstant.TrainPath;
                var trainServer = CommonService.GetUrlApiTrainServer();


                using (var client = new SshClient(trainServer, ServerTrainConstant.Username, pk))
                {
                    client.Connect();

                    if (isClearData)
                    {
                        var deleteDataCommand = client.CreateCommand($@"cd {trainDir}; rm -r admin ");
                        deleteDataCommand.Execute();
                    }

                    var command = client.CreateCommand($@"cd {dataDir}  &&  mkdir -pm 0777 {dataFolder} &&  mkdir -pm 0777 {labelFolder}");
                    command.Execute();
                    var result = command.Result;
                    Console.WriteLine(result);

                    client.Disconnect();
                }



                using (var client = new ScpClient(trainServer, 22, ServerTrainConstant.Username, pk))
                {
                    client.Connect();
                    foreach (var item in data)
                    {
                        using (var file = File.OpenRead(item.Path))
                        {
                            client.Upload(file, $"{dataDir}/{dataFolder}/{Path.GetFileName(item.Path)}");
                        }
                    }

                    foreach (var item in labelData)
                    {
                        using (var file = File.OpenRead(item.Path))
                        {
                            client.Upload(file, $"{dataDir}/{labelFolder}/{Path.GetFileName(item.Path)}");
                        }
                    }
                    client.Disconnect();
                }
            }
            catch
            {
                return(false);
            }

            return(true);
        }