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; }
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 = "退出"; }); }
private void btnOutput_Click(object sender, RoutedEventArgs e) { TagsDataSet.WriteSourceData(tags, Path.Combine(Utils.DefaultDataFolder, "TrainData/bilibili.tags")); }