41 lines
1.7 KiB
Go
41 lines
1.7 KiB
Go
package common
|
||
|
||
import (
|
||
"context"
|
||
"crypto/sha256"
|
||
"encoding/hex"
|
||
"path/filepath"
|
||
|
||
"github.com/gogf/gf/v2/frame/g"
|
||
)
|
||
|
||
// 训练体系运行时数据布局(config.yml app.datasetDir,默认 ./workspace,挂载持久化、不提交 git):
|
||
//
|
||
// datasets/<name>/ 数据集图片(平铺,文件名唯一,标注存 DB dataset_image.labels_json)
|
||
// trainings/<model>.tflite 某数据集当前生效模型(训练成功即直写,客户端固定下载,无存档回退;
|
||
// <model> = 数据集文件名前缀 name_prefix,空则回退数据集名,2026-08-28)
|
||
//
|
||
// 训练机与 Go 服务器异机时,数据集经 training 通道同步(见 common/training_runner.go)。
|
||
|
||
// DatasetDir 训练体系运行时数据根目录:config.yml app.datasetDir(默认 ./workspace)
|
||
func DatasetDir(ctx context.Context) string {
|
||
return g.Cfg().MustGet(ctx, "app.datasetDir", "./workspace").String()
|
||
}
|
||
|
||
// DatasetImagesDir 某数据集图片目录
|
||
func DatasetImagesDir(ctx context.Context, datasetName string) string {
|
||
return filepath.Join(DatasetDir(ctx), "datasets", datasetName)
|
||
}
|
||
|
||
// TrainingModelPath 当前生效模型文件路径(modelName 为模型文件基名 = 数据集文件名前缀,
|
||
// 空则回退数据集名——见 service.modelFileName;训练成功即从训练机直写,客户端固定下载)
|
||
func TrainingModelPath(ctx context.Context, modelName string) string {
|
||
return filepath.Join(DatasetDir(ctx), "trainings", modelName+".tflite")
|
||
}
|
||
|
||
// Sha256Hex 计算文件内容 SHA-256 十六进制(模型版本校验用)
|
||
func Sha256Hex(data []byte) (string, error) {
|
||
sum := sha256.Sum256(data)
|
||
return hex.EncodeToString(sum[:]), nil
|
||
}
|