Пример #1
0
        private void btnOpenOutput_Click(object sender, RoutedEventArgs e)
        {
            using var db = DBSet.GetCon(DBSet.SqliteDBName.Bilibili);
            var tags = db.Select <ImageTag>(o => o.Status == "completed");

            // TagsDataSet.WriteSourceData(tags, Path.Combine(Utils.DefaultDataFolder, "TrainData/bilibili.tags"));

            TagsDataSet.WriteSourceData2(tags, Path.Combine(Utils.DefaultDataFolder, "TrainData/"));
            MessageBox.Show("输出完成!");
            // new Output().ShowDialog();
        }
        /// <summary>
        /// 初始化控件要显示的内容
        /// </summary>
        /// <param name="item"></param>
        /// <param name="mat">用于展示的图片</param>
        public void InitData(TagPart item, Mat mat)
        {
            m_item = item;
            tagPickup.OnClickTag += TagPickup_OnClickTag;

            if (m_item.State == 2)
            {
                btnAddTag.Visibility = Visibility.Collapsed;
            }

            panelTags.TagNames = item.TagNames;
            imgShow.Source     = mat.MatToBitmapImage();

            var text = TagsDataSet.ModelTest(mat);

            lab_AITest.Content = text;
        }
Пример #3
0
        void TreadTrain()
        {
            this.Dispatcher.Invoke(() => {
                labStatus.Content = "保存训练数据中...";
            });

            using var db = DBSet.GetCon(DBSet.SqliteDBName.Bilibili);
            var tags = db.Select <ImageTag>(o => o.Status == "completed");

            var folder     = Path.Combine(Utils.DefaultDataFolder, "TrainData/");
            var saveResult = TagsDataSet.WriteSourceData2(tags, folder);

            this.Dispatcher.Invoke(() => {
                labStatus.Content = "开始加载训练数据";
            });

            var dataSet = TagsDataSet.ReadDataSets(folder);

            var model           = TFModels.GetBilibiliModelV1(dataSet.Width, dataSet.Height, dataSet.LabNames.Length);
            var weightsFileName = Path.Combine(folder, "bilibili.h5");

            //if (File.Exists(weightsFileName))
            //{
            //    model.load_weights(weightsFileName);
            //}

            isRuning = true;
            var epochs     = 0;
            var epochsStep = 5;

            this.Dispatcher.Invoke(() => {
                labStatus.Content = "开始训练";
                lab_pic.Content   = $"训练用图片:{saveResult.PicNum}";
                lab_label.Content = string.Join("\n", saveResult.LabelCount.OrderByDescending(o => o.Value).Select(o => $"{o.Key}({o.Value}) "));
            });

            DateTime start = DateTime.Now;

            while (isRuning)
            {
                model.fit(dataSet.Images, dataSet.Lables, epochs: epochsStep);
                var metrices = model.metrics.ToArray();
                var loss     = (float)metrices[0].result();
                var accuracy = (float)metrices[1].result();

                epochs += epochsStep;
                this.Dispatcher.Invoke(() =>
                {
                    labStatus.Content = $"训练中: {epochs} 轮 用时:{(DateTime.Now - start)}";

                    labLoss.Content     = $"损失率: {loss * 100}";
                    labAccuracy.Content = $"准确率: {accuracy * 100}";
                    pb.Value            = accuracy * 100;
                });

                if (accuracy > 0.95 && loss < 0.1)
                {
                    break;
                }
            }

            model.save_weights(weightsFileName);

            TagsDataSet.ChangeModel(model, dataSet);

            isSaveWeights = true;

            this.Dispatcher.Invoke(() => {
                btnQuit.Content = "退出";
            });
        }
Пример #4
0
 private void btnOutput_Click(object sender, RoutedEventArgs e)
 {
     TagsDataSet.WriteSourceData(tags, Path.Combine(Utils.DefaultDataFolder, "TrainData/bilibili.tags"));
 }