From 8f5810f0d4d8ab3ee853159dff039d2f4a1bd087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=96=8C?= <259278618@qq.com> Date: Fri, 4 Sep 2026 14:12:30 +0800 Subject: [PATCH] 1 --- server/README.md | 2 +- server/biz/model/dto/training.go | 5 +- server/biz/service/dataset.go | 81 +++++++++++++++++++++++++++++-- server/biz/service/label_task.go | 8 +-- server/config.yml | 4 +- server/data/observer.db | Bin 802816 -> 1097728 bytes server/技术设计.md | 7 ++- 7 files changed, 93 insertions(+), 14 deletions(-) diff --git a/server/README.md b/server/README.md index 74b6f2a..9f37d17 100644 --- a/server/README.md +++ b/server/README.md @@ -183,7 +183,7 @@ APK 下载引导页(静态页面,源码在 `h5/index.html`,由后端 `/dow | GET | `/admin/datasets` | 数据集列表:`page/size` 分页,返回 `{total, list}`(含 imageCount/labeledCount/status/cover/description/**training 聚合状态**:最新训练记录的 status/currentEpoch/totalEpochs) | | POST | `/admin/datasets/update` | 更新数据集配置 `{"id":1,"name":"新名","namePrefix":"pheasant","description":"...","cover":"a.jpg"}`:名称(改名)/文件名前缀/描述/封面,空值字段不覆盖原值;gen_* 生成参数池不在此维护(仅 VLM 生成,见 gen-pools);改名同步迁移图片目录与模型文件,标注/训练进行中拒绝 | | POST | `/admin/datasets/gen-pools` | 重新生成数据集生成参数池 `{"datasetId":1}`:按数据集名(物种)调 VLM(qwen3.6-35b-a3b) 生成轮廓色/站高/场景/动作/遮挡并写表(覆盖旧值);失败报错保留旧值 | -| POST | `/admin/datasets/images/vlm-review` | VLM 藏匿位补检 `{"datasetId":1,"imageId":5}`(两阶段标注第二阶段,**须与图像生成显存互斥**):qwen3.6-35b-a3b(+mmproj) 排除已确认框,按环境/光线/习性推理藏匿位,追加 ≤3 个疑似框(class 1)进同一 labels_json | +| POST | `/admin/datasets/images/vlm-review` | VLM 藏匿位补检 `{"datasetId":1,"imageId":5}`(两阶段标注第二阶段,**须与图像生成显存互斥**):qwen3.6-35b-a3b(+mmproj) 排除已确认框,按环境/季节/时间/天气/光线/地形/习性综合判读画面推理藏身位,追加 ≤3 个疑似框(class 1)进同一 labels_json | | POST | `/admin/datasets/cover` | 上传数据集封面(multipart:`datasetId`+`file`,jpg/jpeg/png ≤10MB):**自动缩放 1248x704 + 转 jpg + UUID 命名**落盘并覆盖旧封面 | | POST | `/admin/datasets/cover/generate` | 生成数据集封面 `{"datasetId":1}`(z-image 文生图:16:9(1248x704)、1 雄 1 雌,物种取 gen_species 空回退数据集名):覆盖旧封面,返回 `{cover}` 新文件名;`datasetId=0` 时传 `{"name":"家鸽"}` 新建预生成(数据集未创建,封面仅落盘不写库,创建请求带 cover 回传写库);生成任务进行中亦可直接调用(与任务图片同走 z-image、由 local-ai 服务端排队串行,2026-09-02 放开整任务拒绝),失败不覆盖旧封面 | | GET | `/admin/datasets/cover` | 封面文件(静态字节流,`datasetId` 定位;`datasetId=0` 时按 `name`+`filename` 直读——新建对话框预生成封面回显) | diff --git a/server/biz/model/dto/training.go b/server/biz/model/dto/training.go index 24d7ea1..579f8f7 100644 --- a/server/biz/model/dto/training.go +++ b/server/biz/model/dto/training.go @@ -374,8 +374,9 @@ type AdminLabelTaskStartRes struct { Id int64 `json:"id"` } -// AdminImageVlmReviewReq 单图 VLM 补检:qwen3.6-35b-a3b 按「环境/光线/习性」推理 RF-DETR 之外 -// 可能藏匿目标的位置(排除已确认坐标),最多补 3 个疑似框(class 1)追加到 labels_json。 +// AdminImageVlmReviewReq 单图 VLM 补检:qwen3.6-35b-a3b 按「环境/季节/时间/天气/光线/地形/习性」 +// 综合判读画面,推理 RF-DETR 之外可能藏身的位置(排除已确认坐标),最多补 3 个疑似框(class 1) +// 追加到 labels_json。 // 依赖 localAi.vlmModel(默认 qwen3.6-35b-a3b);VL 与 z-image 生成不能同时驻留显存,批量补检 // 应在生成队列空闲时执行 type AdminImageVlmReviewReq struct { diff --git a/server/biz/service/dataset.go b/server/biz/service/dataset.go index bed0a07..9cdc511 100644 --- a/server/biz/service/dataset.go +++ b/server/biz/service/dataset.go @@ -1007,7 +1007,7 @@ const singleAnimalClause = "画面中有且只有这一只动物,没有任何 // 空则数据集名本身——生成表单无物种输入,不随机)。 // 物种只写名字不写羽毛细节(模型对正确名称自带外观先验);场景/动作/遮挡从数据集表池随机 // (创建时 VLM 生成,config.yml 不再兜底;池空报错——生成图按池组装,池质量决定训练数据质量); -// 光线走 config 通用池 lights。 +// 场景池条目兼容捆绑组(树栖物种场景与动作/遮挡联动,见 parseScenePool);光线走 config 通用池 lights。 func (s *datasetService) buildPromptFromTemplate(ctx context.Context, dataset *entity.Dataset, dist int, size string) (string, error) { tpl := g.Cfg().MustGet(ctx, "imageGen.promptTemplate").String() if tpl == "" { @@ -1017,7 +1017,8 @@ func (s *datasetService) buildPromptFromTemplate(ctx context.Context, dataset *e if species == "" { species = dataset.Name } - // 场景/动作/遮挡按数据集习性取池(表存储,VLM 生成;池空报错——生成图按池组装,池质量决定训练数据质量) + // 场景/动作/遮挡按数据集习性取池(表存储,VLM 生成;池空报错——生成图按池组装,池质量决定训练数据质量)。 + // 场景池条目兼容捆绑组对象:选中捆绑组时动作/遮挡仅从组内池随机(生境联动),否则走全局池 poolOf := func(raw string) []string { var pool []string if json.Unmarshal([]byte(raw), &pool) != nil { @@ -1025,9 +1026,22 @@ func (s *datasetService) buildPromptFromTemplate(ctx context.Context, dataset *e } return pool } - scene := pickCfgList(poolOf(dataset.GenScenes)) - action := pickCfgList(poolOf(dataset.GenActions)) - occlusion := pickCfgList(poolOf(dataset.GenOcclusions)) + scene, action, occlusion := "", "", "" + if bundle := pickSceneEntry(parseScenePool(dataset.GenScenes)); bundle != nil { + scene = bundle.Scene + if len(bundle.Actions) > 0 { + action = pickCfgList(bundle.Actions) + } + if len(bundle.Occlusions) > 0 { + occlusion = pickCfgList(bundle.Occlusions) + } + } + if action == "" { + action = pickCfgList(poolOf(dataset.GenActions)) + } + if occlusion == "" { + occlusion = pickCfgList(poolOf(dataset.GenOcclusions)) + } if scene == "" || action == "" || occlusion == "" { return "", gerror.New("数据集「" + dataset.Name + "」未配置生成参数池(场景/动作/遮挡),请在编辑数据集生成或手填提示词") } @@ -1147,6 +1161,63 @@ func pickCfgList(pool []string) string { return pool[rand.Intn(len(pool))] } +// genSceneEntry 场景池条目:字符串条目解析为仅含 Scene 的本结构(weight=1,动作/遮挡走全局池); +// 捆绑组对象 {scene, weight, actions, occlusions} 的动作/遮挡与场景联动(2026-09-04, +// 斑鸠树栖 80%——三池独立随机会拼出「树上场景+地面动作/草丛遮挡」矛盾提示词,见技术设计.md) +type genSceneEntry struct { + Scene string `json:"scene"` + Weight int `json:"weight"` + Actions []string `json:"actions"` + Occlusions []string `json:"occlusions"` +} + +// parseScenePool 解析场景池 JSON 数组:条目兼容字符串与捆绑组对象,非法条目跳过 +func parseScenePool(raw string) []genSceneEntry { + var items []json.RawMessage + if json.Unmarshal([]byte(raw), &items) != nil { + return nil + } + entries := make([]genSceneEntry, 0, len(items)) + for _, it := range items { + var s string + if json.Unmarshal(it, &s) == nil { + if strings.TrimSpace(s) == "" { + continue // 空串/null 条目(Unmarshal null 入 string 成功但为空)不进池 + } + entries = append(entries, genSceneEntry{Scene: s, Weight: 1}) + continue + } + var b genSceneEntry + if json.Unmarshal(it, &b) != nil || strings.TrimSpace(b.Scene) == "" { + continue + } + if b.Weight < 1 { + b.Weight = 1 + } + entries = append(entries, b) + } + return entries +} + +// pickSceneEntry 场景池加权随机一项(weight 缺省 1;空池返回 nil) +func pickSceneEntry(pool []genSceneEntry) *genSceneEntry { + total := 0 + for i := range pool { + total += pool[i].Weight + } + if total <= 0 { + return nil + } + n := rand.Intn(total) + for i := range pool { + n -= pool[i].Weight + if n < 0 { + return &pool[i] + } + } + return nil +} + // AdminGenerateImages AI 生成图片(异步任务):校验通过后插 gen_task 立即返回 TaskId, // 后台协程逐张生成(不设调用超时,失败由 provider 返回错误决定),进度落库供前端轮询; // 完成(或部分失败)后对本次新增图触发自动标注(付费资产,失败保留已生成图不删除)。 diff --git a/server/biz/service/label_task.go b/server/biz/service/label_task.go index 68428c0..c58dcdd 100644 --- a/server/biz/service/label_task.go +++ b/server/biz/service/label_task.go @@ -297,8 +297,8 @@ func (s *labelTaskService) runDetection(ctx context.Context, taskId int64, datas } // AdminImageVlmReview 单图 VLM 藏匿位补检(两阶段标注第二阶段,须与 z-image 生成显存互斥): -// 以当前 labels_json(RF-DETR/人工框)为排除集,调 qwen3.6-35b-a3b(+mmproj) 按环境/光线/习性 -// 推理可能藏匿目标的位置,取前 3 个追加为疑似框(class 1)。 +// 以当前 labels_json(RF-DETR/人工框)为排除集,调 qwen3.6-35b-a3b(+mmproj) 按「环境/季节/ +// 时间/天气/光线/地形 + 物种习性」综合判读画面,推理可能藏身的位置,取前 3 个追加为疑似框(class 1)。 func (s *labelTaskService) AdminImageVlmReview(ctx context.Context, req *dto.AdminImageVlmReviewReq) (*dto.AdminImageVlmReviewRes, error) { dataset, err := dao.Dataset.GetById(ctx, req.DatasetId) if err != nil { @@ -363,8 +363,8 @@ func (s *labelTaskService) AdminImageVlmReview(ctx context.Context, req *dto.Adm } prompt := fmt.Sprintf( "你是野生动物监测照片分析助手。\n物种:%s\n已确认目标位置(归一化 cx,cy,w,h):%s\n"+ - "不要出现与已有位置绘制矩形重叠的框。\n"+ - "请基于环境、天气、光线与该物种习性(觅食路线、隐蔽处、阴影边缘、植被深处),分析除已确认位置外还可能藏匿个体的位置。\n"+ + "不要输出与已有位置矩形重叠的框。\n"+ + "任务:寻找画面中还可能藏匿同类的位置。先综合判读画面条件——季节(植被状态/积雪等物候)、时间(影长/色温/明暗)、天气(阴晴/雨雾/雪)、光线(顺逆光/阴影分布)、地形(草地/灌丛/林地/岩石/水域边缘等),再结合该物种的习性(昼夜活动规律、喜藏身处:灌丛草丛/树影/岩缝/沟坎/林地边缘等)推理除已确认位置外还可能藏身的位置。\n"+ "输出归一化 bbox 的 JSON 数组:[{\"cx\":0.5,\"cy\":0.5,\"w\":0.2,\"h\":0.15}],最多 %d 个,按可能性从高到低;确无可能则输出 []。只输出 JSON 数组本身,不要其他文字。", speciesLine, exclude, maxAdd) g.Log().Infof(ctx, "补标 %s: %s(可追加 %d 个疑似框)", dataset.Name, img.Filename, maxAdd) diff --git a/server/config.yml b/server/config.yml index d10cc52..5871609 100644 --- a/server/config.yml +++ b/server/config.yml @@ -40,7 +40,9 @@ imageGen: poolSize: 1 # 生成任务并发度(z-image 显存独占,默认 1) # 通用提示词模板:{species} 取数据集 gen_species(单值,空回退数据集名);{count} 为数量词 # (固定 "1只",每张仅 1 个目标;原表单数量选择已取消);{scene}/{action}/{light} 池内随机 - # (scene/action/occlusion 从数据集表 gen_scenes/gen_actions/gen_occlusions 池随机,无 config 兜底); + # (scene/action/occlusion 从数据集表 gen_scenes/gen_actions/gen_occlusions 池随机,无 config 兜底; + # gen_scenes 条目兼容捆绑组对象 {scene,weight,actions,occlusions}——选中时动作/遮挡组内联动, + # 见技术设计.md「场景捆绑组+权重」,斑鸠 80% 树上场景即此机制); # {tone} 取数据集表 gen_tone(默认深色,白化个体配浅色);{sizeHint} 按数据集表 gen_heights 站高与 # 表单距离算出像素高,按画面占比分级尺寸词(像素数与固定物体类比词均不通用,2026-08-31)+ 占比。物种只写名字 # 不写羽毛细节(细节会把镜头拉近,详见技术设计)。引导语「手机原相机主摄不变焦」(2026-08-31 v4 定案): diff --git a/server/data/observer.db b/server/data/observer.db index 517cf7b05a44e6102017d20d00a6f553a71096d7..8661a1fb9e3bb49b18104b75f506d7b2c36102dc 100644 GIT binary patch delta 183740 zcmeFacbHVgwl}T?|bsyZ@XW2Z}WKEo89Z&FM2fhbMB??Mec>}D);?vmuHK+p64%jJI`si;=bJ7 z*L|_;l)I+;8aL;i0NUn)LAdG*F2Pk>K&hiFh~p|RXo{<}pf;}J0uQdj0s-wj zH~%KwbMvpp{n`0_aL>;li~FDF2XOsm-Zi+MncoT5?;q4~{bF7ru9sFd$Muf~yW{%j zyz6mYTGfxk`%lcrJ$G_`4P1YF5U6m!K8P1{r>pM3_4tFMa6K}wFRq8@wZrw$yjHj# zokw5!?Q9pW-_5R%>(59iYAKA2k_*VpFUiR*iFZp3x(oGWqNF(-!WyK|c1dSFgX zTzAjD8`tf#2jcqX>|VIOHG2fE`)AYI-kzi5x^r$@T;HEdU%zKg4_y0A^W$23*KGR3 zH?wi!wp4b&b#rA2uA3^W&+qWnfF5_v=!9=|rh)w2xEVoQ@0rya*ZR{+aQ*#3bQCvo zI>^Y~QblVjntmOwkIkZu8a*Q)*CjLCN=SyFgdw-f=hHnF> z4aN1x2aD$~_H99?6&Z#==dP z_U(7^MT6tP5Pe8}ZT_vt!-*2-PyV=tgZL4i$*M1CVIZr3Z?hgqy~pp1(7H6rb*0Xl zLV-B_LEbInmw@L(TzS>|hxe5CNAF?px85(jAA9$D-}26{f1<0$bK3Kh=NJURKF?>K z57&-9af63)&0ljUd!L$98`rz%P%b+*$BpajbLi-LWA+4G*Ulcl_OHJbzen_*#8>Ve z?-}o}-jm7dKK^SjWzU-_7q+0))h=|)>o|#fMvzZ&&$wrZuguT$E!3wMjws@ai+O?E z)03|&Uc$XjNKf9E7b@`w+k`@GeBoB%KqM9pB|quOuN0b2x#KogzILBJgWN^M#d+m} z%H0*6Yx7L#-8OX8xS=DfbDPPN7xTVqs0MWe+62R`f_`5xFu(TJ*2(HU_(447uufz} zC%(~z{B&XY$f4KYIP%6D0=__`r7zYp5GnD`t#(rpSHD;g*sJOn=PfKKFPQ4Dtsk1R z^2pMeM;@KU-bSCFziCU${CG>Bg?Av@Cg5x3j|2j-==?vn1WAw1{Ov+X85#4w*ikHN zQ9@Qt;V_moFjnrqVB@q$}SJ|N7s_cfr5Xf&9hzw`dw4r%w*;E)21r>^zb0 z4|w_I`~duWZ=5^~|MK49uW^;!TQ+vsjiYWXYlHINlnMiG$D7LTzVVjfH{S_Z5MPE4 zyYrUYM~%g|fn^6Df9$|h>kgDJI=FZtEqHM8Jb?CZy#L?}GY*!oq@Y7vmZ6>dx6C^@ zeVJ8+J+fu-!9|aj4MKt2hYcG!Zfv?rk_VClo6Z;W!RW+61IrFSJMGAmPtYe1uU~cG z{^t%nG&S{o|I2ge%kA%nH?BVT!qX_3{O2UT37?$NhffIVhrBj|`_LqL)r9Wk@_zi} z!nrkWFX9>%Yg%2}{RNF!pO6v#_&@(c-~T>+i`2Q*N2Lha%Sp&iSMg{5L&*O=A<18Z zd8J`Bz82?h;_c+RR3m0B&p4yE`kCrhI>=+Bm&9Yji~K&m7Np&)UQcPMe(~HRZO67*+jyXyPo)phk_L9Y)i|ffJUx@FL zz}MotQhAT*SCTKj5bKdWuWK@S`%Cc|^6h8h%Sm!Gf4iz2;`A~6A-wR0(fW-`UC0_Qu1xnAok*)) zd^^nIcce+0HTmrN&n*5wStXHkdw5m4i_`9cFlwQZ$S0It)zRmZ^}Rp&kF5Wn(6&@_ zi#<4*yNFX)8wu_r{td6_{HXIFAsQtw+Q&;`k#@5Fmt0zW5Js5PEE zcbJz&LF9>YjPJqg$$rQ9u{?wx-zkMg4HSCs2i_+n_(|NY{LP&AnD-O!4(|%@Lhoen z2=C?I4&J8T8lJPBL!S3MFL|E!%=O&h>FaSpq4T(VmV2z*?>g>!!9`r=G6U zqlIgP3x!tvF@AyktGrKMCtoZ3L4Bz_lldvr^I{22!FHI+|?rC zD$)wndFqWWL2ZCF(G$v8^9N;+`HA_exzc>Z9BmFXyP1Boj`5T6rLoI+!ocduh#F;v zTmN0(ukX>H)~ob;_2K%ZdV9Tw_Lp`<+omno7HZ|%NNvEs{UrWZMO zs@>r%)j(=8^84b}mR)a~;GgFT(|dpH*8|puePwoGrk2o_3j){0QPyXbeHPFb8EDwr z*=tV%>ZmtNH4ekIC$j4eM_VN*_)%ecRuxQZKmc`CVJS1T`8ics+6rxM4m4=J?tvUA zYupScG~xG!Ev<$&MOc&dI@Y>`v#{S6Vy(MZIOQxGVy(M7r>sR{ZEOydHSTt?#Ht}- zDP2%8Yu&9mg<0!{i@lw%i(6Ib(d@EurtArdbDXq{TQ%sd0d>$aZqY|?ULYl)FUl~5 zMIgPg_-9sOrg>_R^E!(@di`u@%%YE8I|pjfM=#2OQu-u@>ougyoop3jt@8rvV5=Bw zoe8L;9WmBAHK$_MI#HUORhISsx$Lru80-Br(vGactoMJ*E*xdO|8owM_5N|`M`sOD z*8AV*lx4ktNbZ(uTmmXLzc0#q|2u#kt&6hW|2n4%#@nCgKw0blDc_M*18dv|Ib~Vn z_Q-E>T@snzkFeJ52G~LP2y5LNfI3i%u+~8n>ExdXYuzglIL@-HaWCbRWsPf*%mK63 ztyN}m{nMxgLRRA>ja>U1e?j($^amJsKAKgHAL=a#7M)~6{fs;3E9)Kj`TdMLvqgyC zZ?#Z=K#g-(r4jM_{SixI=`#S%h(f=gap#nr*D>x)plpU5em~>RdvnUNp?7xw4uN!5Y^+3+jur#&y*`%6C-Zi?h~s zB!B$QUr(n0!Pk-WCR{#w<_|tdezd-B<_d`C3?Cu`&hXbr#t?j6e}-Qw8TaFE;Gg^j z1;$#gz-}(nvx`rXZGZCllBuH5Cx7DU(zB@BoQAKR&+_%jxU+l#dEzYJO>$iU*k5P) zi^;UV_=yP%A>oMYRY&`MA;#6i0L`@D$JkmMoZV7}fHp7(%Es(~Y-o@T*~{E=`fUj+ zPJ$K^+9d!xUdOcbS~j_TK{jT)ySt~Wuxemqwkx2{8rYcan1cjsTw6Dl8}04MB*-LE z6kul+OdP=>E72g)!rD6~U{JWQBqdQM@6u$BX51XjqRb9`ySdW$f{5GuG?!d1Mu zMSNC#P@E_=lB!AfNK57GYC@e&o$h2scWzBz3{Pk zx!6f;CZ55r;XP@#l$2-6ZzxwQ|5OXrE7XLRr}fj?YIAj$_M6^IkLcs{b%v(@Y;-rJ zgmK*X%-AUwh@7xpSRoMMHsLDo_t@aP;CpUS(eRtA5 z8wxPe*E6mT=11l>bD>#ojx?__yPBBbo2TKy~iP5lY|etn2us(q`y zt8LPr(k5s(Y8R+~s)yAN)UE2^W$FTTgxXx?l^x0p%EQViP$t!t5;K|yb_-2yS2J-KlpZIIZieLHWj&8`O8V`U-?cX@;hI*SbCew^fnXa;uiqslNP`5bxCddTWeS&{W|R=DX8_7%z-deZ@1Ew{lY}f3kk5a?Q_Ezb8F`)F9hQZOWHs*GAvTue zSCnJGeTE`jOBVgY>yp|DUr#7PfXqO#dLcG<${UQjnL!(3=2m$3|AwqVa!f&fI;W9G&6t9!#PvP;FI*JZE#Wy1(ai<5^ zGFJ+c`*l1Kr%!yOqXFJie7$DIqg=Cen}cj|C@%oe7AV1}C8y;1;`OSt9EH;ZX z4+WTH5l_1QKtsEohIaqipZV^RD<5C$n!+P`fGwxQpUE~82)y?jUqsIS1}%>DL`|1a z7ey@DEB-+`xP%h&{jYo>x#c&$16kt&q93ED%7ScWlkap7%e*|uCN_C2fCZ$6Tj(db zm*Q@?TWBk}-^SfDZsCGrPY>=gyOBXl-pIFj4E%h+Ei{twGp2J79`UTfT_2BdW3g9u zyoEJD9t>asnRJqGBYCgJ-IkMlzgFIlxsG<-eoN-aR{@xzDqEb%0{|=_ZGPe}p=Q_u zGW#d~f(_LKezBr&;YklJu?O(qymE$_DQYew*+tzfG)0JqtWSl=JrV%y4gW zCCwAYv-)@1BkCo}{ql#>JK|I!%8%t%$wks<(qqyPse#l0ikjwi<$2<39AD9+st_8I zrg?p)Hq|wIDkUf9nKj50tIdLj1Me*xc28LwSZ`x6UGp52kJX+J4lXEr8{mg%KJ zJWQ56Y!s5`+h{e(gy}{}^Jv@`3&i6s%7%>`Iu@2z-^4-XovMmb^%P~*(|L{AIAOmr z5{-m>kzh37i~558Kp0hwrjFpr#6ka-GPP_xL77M- z77GF)>l!1!o-|6y6E)46WYhat&lYN zLa#}#e#|Uw5eWK2ajdEsLMePMswznJRB0B?^46P;-8L?ffG(v}o z9;m9$YA?UnQ9J4MzS)F?t}{zWo9Fama{5c7m~1*^!_{QF{uO{4Dtmd9SsaQI$LOa%UI&2ptxrwV;&>p&;php;<^CsfBusmgv{0AB-0zi;UFfgK#INX5$H-`nGYR0 z7So3OVKR3p5V`9pth0wknx#$s!8lksr#;4b+Cxe{L=QJHFhpiOsT9=$v-<+!cr<;* zORRAl2#_Tc#rojfcrX&DoLfj57Hc)dAXxn5II)l%>8-VC77PYL!3-TSbj!O|>8Zv! z`PN7LYeC267i(prKNuq3r}RRyY#<1^=}D!uc?g@Pa0Egl#SK&j$Wdw5S8I`tOV!4tLmk5~qaZeuNini|DTYMVMjlXGQpL!;t?C6uKvX#oqNLhKAkfQK z$PGw`7{ur;O~iQfaMT|PLb}=bQ90VNO2+ez^ZHa|dNCfim^H)v;UFpbRw@+yLGr{V z$b?x_(PeMU(o33RSrQIMva1YKNvz89iS_`9lg=kGg6Vuf2JA3OMMz|_@&k~sW^a&h zQlXirhJ#^fHls6s{#s1_{I!%1Vbihxqd3 z>88dcKH2;yNf!m}(q!Zpsg4MxJ@-2>fH8BbTi3~u)6)0J-&+{d_~hO{B!59y={nBC z_vge%gnxSc?%Q0;%mZeL-d~%oe4;cE@})=N4%DA(fzLhiAt}J@MT#zNRn_N`M2$c1Z-YNY*3c>k&KYKa<)MWa4+^OzTvLel0w zu@Ia6P7@$MkB-5md0R8DCiU^Ow=2Fs@~rayF9UCn4L z2E(bLJAW^#eSHz8=twl^i_>{DBM8x);`21;|E;OM7Moh-LtJ}{;qr7X;1k+Rq;@-NZITIqK zv>eS@w-R_h643HmU~UdZVsSb_*pulLf7JzyPSfso(uw3PG-`mJ6jz&0Ib$Lgrb{~z z1oI@lrr!*F$O|it64E%SVDba!hGT?ph~?9d2QbOTYG6D*JVC5&O|oh@jJ2Q-1$HV0 zQVjDgSvdg%s@55Z!RK|OS#!+W!64R+HrjOh=v37xHKMSl$c!kgdj2+|erT#SA$=DZ zwaCp|@Omm$TZE&r2v!z$mFTf4y{Z~8N=$F=q=Yq`{>Cw1w}bd!cr{vbu!~lm{7_p{ z$<@#3B{H}$7NxB%AQM)A@(ZWoog2qN1nb+e%nZcCks!LJ{4umK-bAcPnk+;mGozS8 z^dovnvp@(_Ddd=q8f|Uosrm6w@8ZJr%W=@1Yn9%O4k7^wo=?i*7(@oo zQEHJ6Zy2Qtm^=`UEqntj{|3)N;GCXm`bnKXjWTSQ!q{dx`^IgkoF-h)c}3xRZI=3u zT3xVp}4lgCi`S&VU}HNZUik5=-CWdBlmgI2_G(x28Zy{5tJp4n6`c~PuE z)H{_L$qSpwU3ruf?@N^{&MFsCQsrK2E_buc_;f|kIIq_<>LpOKrTjw|mGkk2pYs8g zhE3;BESC!{r)kSGxfuR@i))XAV=~XeJ(yQ=H-02}Xsm3xQo{#2PUn8?+=5saeKc0? zYGk~HN#|~Se$kWb4?Okkfft@SwEO|M0w3Q}d1zDl;mQi~UU#u};=oHA_HWsEVCJgB zuPi$7)YJouRvp;1_R!{6sBf?BVI0Gk|056MLsiocZGHK_@G#c0T#Q?nlu=Y?-+y@X z^8GK*Kk`V`foV@ucjmbpj*xW+=01O9(V7D@Hp9XA@RUl_N=DD(^GmJY@z9a-7jZo} zXIa^xi7o!-GoAP!wdla64F^_jg#-2e&2tVu_dIZ*k2AOFj2m^z)B0bzO=mTxeX2F< z=O0)(9sO`%`r^MgsEjrI@Y3Z6X3akMkClfWnM#Y!-9X9*@cGmq{9?W^!9Zy4!OA7M zZ9VunIke^B{TnAAd~!Xb9P4e=1k$GZe+@bC2i7>aaFb2H1a&(98%tP3f|I$!@7!`K&rpj|@87aSnj?HK99$Ks(nXjYozJmC$euAUvz#d zF}j|AaLG3J)sX0@B6(BzLFe&~B=cCPgClH#mU0F+^b2MM4*V@pASaN31r8*KbmwdH zypZ%ykoPvKFHYuU{#VX5!#J&Pk_G|C4YE9H}&m&hFjkMbv90bxshNvW`% z^Q1gV^td|;FEb$BlO>I3<<@+WXA(a-RWc*y<3Vz=L~fl-JST6HsMqQC)N^^5BQ9AY zKTE1gWjEnplqXX6Ea$5#UzEpf?@INVQj}9&N;;!kcW%e+B)qmGM)2>lJ zl`oSy=|$;U$t6A@#)U(|Lqb>nBtHsH=L5MHxEJPiu9^6byOb~Bd3T>aH{Edis2guc z1+uV!l=H0uSfGm?u!3cO2(v>l5D2nW0>`N>_}T($l(8yFQI&$8Sq?&ViS1Cr*}`-K?OkjrM%Ate@nPE9kgXN;heB90 zMWXRY%m+=Bts23~914g~%omEpqMO zEMF}I{n$}N!togPWzZZ4=xW+lCzDZI`J#S-Ks-ld9SZnEaKu29eUW&Ss{NRH2sQg@ z8iakIRUi@%g`#0-ZI|p8>J(FrX$Z3ymYlj9q>>d#}@_s!gi9p(?YZ=&X%w0lNF|yI+!bI~JknAM);#Sc?zef_=!D z_GU>-=<4AG3>;U^##Z&tpzjKivaHuEj9U!@EfZ13KV-Gy9u9;7?olsBA7;Bcv zktj$+zWE&brgwf(Yl;Evanc&|V)FKJsYD6K1HpLI(!Y`gGxQpyUP4s_?8x~qpeOv2 zYF!^s>J6Jh507o2jUx6xQ~FlL7zL(>o!ms#Hf$GS?|;ZAhmCrq+C$}s<5sVgq33bRh2TCmJc zi*1RhYU*#|#~##yF!Wv-{ja?Z4@b$qLr^jgq?_(TJ;4zevt;iQ?E0E_F>4B;Fd4iS zKYjW=w#Hs!lr)XPF^Ji4Z0;xzS5fsGrkV=bWK%s!^8=yhGFlSakTl*n@Ap1$@U8h*7xQVSoAMCZndF zQ7KTV+UmSgbx_5HRjt`z|KHYKmNbp|Aa3IREago_psE$?oGA&rb1XeD{K3vA7}A{s zg2Jm877;}6Mj*%R?xFSp>{LSms)mTg(G9G7sEqePi|>Qh1X_Z0?}Q+gg8>WCeXte^0!yj>`8gv`0iQ?05dWtz)Mh-dc*sBgfYqdU7sBE` zpKIhb3;F`oGU}9PQK#T*ra zr7d}CuHr6fjAf&TTfuqTBYu2^d$sF~tCcy?*kpH+Jdw z>Gvh;Y*WU|f;l%yb}FZ3k7ozBG1V>}OUXsMmFJV)-&XFWp-nsuZNiepTAc2ER|%C? zSNVrH{j_>mS;9Xg7f3^)3@bdLRCu84Jgpf%pdNODR^&Tdz>VVzSvFwKt#i^i+SAi}WuzRg^i;BzI5aA+56#mL`j` zD6h@)brsy6aeQU!>83gCA0ng(}1hog*agS=C2e zqtrW+-G->^g{0?JHN+<;jZ&xc9+?+7<0^f)x|bJ}Mrg>1#QpW>@6jCzj*8<$mJ$Zn;=EzFU4ej_;P6mg75%2XFwg5k%NRHbTr1 zHdCHCtvSBuAc)0HR)d%ih@*Tsky9WCL*_W-cpwKs=3tZgo%ta+(NSRzg3JZd@p}$}%$+jxdoZVq6U^ntQ6L9HXz8*@$kIhP%IEYk^DlM$ZaHu{ zzGowtz=9$B1)&@anHy220_JPv_@0AcD2IY9(!x&!J#A2f?rt!NkaP+73qrSs3E?90XZ#jiY=Hf{`2wvT&YEc^34;z9*0#1Y#w- z3nESo>F+sx%>4cx73LtwVh9|+=O7r(Aef-}N&L~AVG_+DA@g%98#JZyoa!lI*{9F6 z=m;t-^Ye40Azje5qKlb$%4C@Hdw}W|unvj(Bh7sY%M@Ie&Y;4gLx8yrNTZqtu$T}> ziD;Uk?GkBf*no6@+JH1Y?--h3nOm55pR?9k^pG7sHeQdJx$I~QAe@{~={XI>f)OQ-Zlr{fZd2$@{Uo72|=?BupNqoJIS58`5M*&infg;~HmLlzIbM?! zu;@rY#Z}Rnn?^^Hu4j`z5U0)y)IJ*xoUd!}JDmO_FnWgK>8?p-HiEt-B~sD=dn!)> z{4A;s_KmVM#3sKDNYg6~u;oM=V9Qb)ko!n#IvDgo!#N(-WVHC9)~v<-`XzFj9BYI5 z2X1cA3;c^FW6Fo0QaF|($v_)@7FXnGkG(iZBWJG;Y=A#K{%lAt{(&?P*(Gu)i(P#- zsi6hT1*F-;t|Kk8MkiP%D!;u>NEfje3N|1;nruKWs`gUBE|H5WbKG{2D9Akbose8y zS#XQ9M0z$!zs6oM*nnJA?KOj4B2CqV4avpTUN_h!a>;5h9PAP{SyNPH;iC@R?X^St zk%YZ^NJGN8WVP21c8Oe6S>7+_YjRPwmk@RxDO3|S`?5e@Mdek${U!4!5#cLnk7+WVI)@^lR(|g$>B%0DDDYmtY)_$cP_%4z`Qr4lG-| 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 delta 30096 zcmdVD2bfjGvOl_VUTe?5B;qinAr3nS;sBC^Bnb)xKVb4Bu?tSI^pw%%Wa0))-HEDvkY~ z;_5m_I(YszE*UQvCym|4G2?AxTXp{Z9y$4S}e$SbE*PVFend5uPVB;Np=bhu;?WaQiIhL<3 zJlY;^i8FOz=7N+aOgI3?o)OaFlMPBexbGED(>4KbBpQr`+BLml+Qi#$Z`#qjU>veJ zOf{P;Z9Awq-E9wsG-sN?q`q{6jK!TwD2t)g8Vte4V|>JmwO^>}fY0YEXW;W-WqW)c zsF;S&{S|HT`E2=AeC{i6jnBR1snuP-9M$j6(tJ!cEHPztM`;^;&Ru5G$S!Gu&pD-y z@HuTs0X`ot3F7mXCD-Hgfo0d?b7pB8J~uAyg3pJlzx=Y1+;xeWpSfg2HTPAKXIM!- zrmicQh|eJn6cJ#%JYC{vFBFLFi)OmxAcy*PkMA`lVe+qTOxT= zXHH=%>vD7p#+JD+O!6v{@e3#bp zH2!K*vnmccDKeDDH*Jl-@k#Bh*3OS4I%=k@|LvT4ezE}{tf$-T{QGagr!k&i%@^%F zmp#8i$_BbcJmjVKd$RrBJYNJ~+?gdv;MA|nD`g->DOqcT~qivhZ)5- z#UB%vGdGbR`2stlx**=YNxP;e*FS)Yf1+sJ$qlQq%*hQaG3WT6$jz)vk4G-kSM_oma zqva*(Q|&5S^Rdd1$?#6TQ^n`+7!2nH!ZEKu8c*p?Z)M`8gXjWA96?KMs1YiprZ9bA z#1Og=MhvCz`H%D|Q>+>`Ba>=TPm&r97&J~#Z&5FG^>sy8L*Z!p@_(d7_P#^u+qtSNX9a%)hplY zPlsXFFlM~Pj;b!_aQFxq^XVH(Nj3&ot&ZO_8Ve3r#5;VD;PT4tjSMz_ns>f&EMXwfw zNfa|l@$XE{AIZR^VmiP2{N8M!7tve(BbpKSEvJvPXn<2+r9PoNz4aHgMJg{FVwo_I z*VyHZ9B;UdKBHt5&nw}`;xVYiBTLR|2C40p4)Ola(sLPO5miFlB^t<5{K#|k9duez zcyWPju1bT7McS?f8}spf|42)4E3b+cvL-nFxW&3$paV1K*MZDKBnqxDHJC-!IMr?6nOapMC zx#EKr-_pOOi7P2Vp^6ulWZ46oi35B8arz&$ftmGcWHvg9nT*E7t54C_)5apDB;9`7 z0jpd&P4g^6<%4jR?ng`UA!q5^kwoW`RJ-}QSm@m!XfIo7WA8;x?~PGgcW$cP%v4UhhZenLN@KdV2cuhi%3Q}kha z7rm8USNmH#qkW(q(l%?WwIXerHcIQMTLCTwVxVPvkO#3 z`9(RV99DKK4=EMOT;&F3uo6?6D<1g|`GkB#epY@=UMbI)ZvDf{XSffzgWQwcYOaWz#*N~7 zaP7G)j%9yjKV@HHx3X*55_Tqg9ow7ru?<;~`HA_0d5zi0tY?-nbC?Ot04B`jFdF?E z{SEyVy@!67uA=89c^5v4qThtW2Gfx<^Fj77L-LYK5C@4Lot$a;GowhIQV(;rRr{!i zX$hklrj38hrw_cWFe9Lk!sNgenQ08q$oQ*B zX40XD%(Q9bj}l5;hlF3&YrLO0UCe!;nT79{m~`16A>47f&`DyNiB_c+Fa+PFB~`WD z#x;;CVbwAb+nH!Sn&LzDhbyJ1Ng>iD zE(P*grZs%TFcJ7dW6~h&S32Xmpv8q)QwaW`RYOQ(%JN6=O)3~5o#cpA9e2|oASF2p za(<;-LWRb(XzaJ7!Tym{+fQ6!_7Z%jqBuym*k9m^%A}_!mm@r~Kf^67)1t{6!!eGTB>G8-?;yxC1K??n$$%159E~`pQP-qu)^M|5CiRr`o>^J5pwIH5 z+0S7C%S@==a!!U(m*`0iiQ~?`lT=%n=jFAIFmAbdWjB*7Kg9F-)6R11KRyg z2W?(ofMLJWH(S{Uey1O@eog*^Zb@|65w0(25q~VHMQae*hm$i&H`s@2cFkuEVi{>Y z{s*>BbcTHpzWBpoO1(^H+f1#6hL`DPHshreaOlPh#ifi)Kv*X)JYf>4W+@~oZ} zCFK$Bm;wdO_&T;5<@w(8k>>@^7S9^bBF_xZ7|&In4xaiR-Z*c3ZoF#jFdi_L8n+wQ z8~u!+k!>jYulm;o`kQ)Oe@L&;=ju1;gY}r+T=!^yXeYEI+OyhY+DdJ{Hbonzb=6vH zY3ddAJM}~Lkh)o2trn@%)X{2BHBYUla>_a7sPeM1O}SrLqRdjpDt#2c(nyiypXD#* z*X3vA2j%7R9C?B~Kn}|}vL^i|eIvas?Uf21k*cJ5(v8v(sgu-FN)`VUPmAx12gE1D zRbqiSRlG*b7u$*%A}yR1J{DdOwg_v4MZyeWjBu6U6&eTve}Vs;f0f_CKfo{LZ|AS) z`|}~b39oX$a$j?Aa&hhwffuoi9JFi{f2?}N*);g+ggD58$^7R@m4alt@t-AUl9A_+g72glhJz=>jE0u| z;y0Z^bsPlL!)n z#cWDq#!nQPKMc3?47TDY+RMKV5AaMFlNPJ5z~?-(tZC4)S^S|S3f5%d51N@!DllX9 zpwHrAAIUl|F#f(luhmXGsj8P)7=Cwhrp3apr(&%jjCWYcT$wF6d(%rZG(**g9y zXo>4j<3P+R{A5iEftWQEPr!{5_AC&ySbPi~k(lv~15t~Uhmxv9ElxH<4z7q;#-i|G zav6)0^)La;$bqOub{#C2%~m2-ukVA`F*z;}u^3yOL?L34O;6^X=w=r ztSYyVDkpTNg;mfnoGOD1=EmeIeyhrOQsv*|I>ym;%-zt18%H&uPKqAJXr*Uq_0@jL zuk!EGQ88N@Bdixc5gPDo`TE?eoXXwKKFfAwPBW{StLUHT4Rj;wB!ZkxnW27&JR2~K zK8U($_M90rZkaKKUO~47UqovXAOE^`j)4ttYC|)`2dNCY0Zn7M>2|r{!~HPmO>J2G z+?(1_8v4JZ6~eW1g+eoC8N{-34Vq~%u~2Qqcl6@_;N`cq5;%INP#8ZtSI8Ah=|jxp z^dUB-K)Z$#jsB>|Cr{KqQ6HqHQiG7*VEmhcf0OXfjE~-cfBo@q0RHvGzaIG4 z6aTKlzh3y)8~^&?pZU%#n{WTc@ZU}pB{pXQh^nlxj68kHjWfpky?$6egVx~CrxFj> zv|&11ftX(-|7DP-{yB=$>M9h|I(4ZTEv8Cl-ZJIJ+h&aSdCiFO)!+>Z*Y0k>BzwtlM<@@scwSKZvhRR6Tie&DIkKmSXi&YZsr4 zZ$G_k$LZ&uKJjd|S#j-(Q~Mq}QML8-flaWz7gG<8v|tRg=>TlYWt&@~c%`n`{6>E` z5{r8M;b_Dc_IZOCsJ{!N^m&nh&+7{ZgRuY_Y_HGXuIZg-b|4xKg`$yQ&=(1Y(FBLv zHNDx)_eL;M84DIKSYk%na#IJDAW(Lq+TIwf^oW`8;2|MvWbohGU^E&E#$pjKYtR6P6( z*N`=eVSL)%$m@+nLgq_fBogz%#;sxtDEwKJVZyJR0{QoN zBxsYzw*m}8DHvSMK1Jun-~NLOq&KDa;hxZ5N}_}UzL?r;EYw5VJoN>otGt*yz;>qh z@sK(}%*o(!1I_M73s(ojq#qqZ-iQz3S~MIs6+Yr~`r${`ec@=p>|`_$HTSE`e#HN3 zqtG-*QS58+am|#4bS4Iq23W*PFv4Ujcq9rNchVh31!KV=P7S|5hEOcz4>;6Ap+F?y zM=gzp(apnbA|r1sj7xRMABp+B(NH)Vb7X|Fi$svY2nsOf^@Sj3AKe@VpP*HEskKrE zjAo$&k`c>Hzg05*0YmMp9tHFDT3>9u>2pdwb;mpS0ZEb{Js!Q@2C$~(@->q|2XU-vp#G-77luSL0`<7`aX081EG*NgbrpTWLgAk zNOAsQ$9zHD=R?mq5VqJ|aT$lR{~+Y*#-P+e^F|%&{-~*+Vc5`IQQ@`6`Mj)g7>^Cv z>|s3C7HTL=ggPdKJcQ5!p@Zi|kzup8>UmLces3%m4WnL$efE&$c|##|%wxWAAnf&q zQQ{7t{wVgPI~L6Q4VUC|VW{V?$WY6lVbr|mFW zeSQz!2o4PwRXCq3Nzl>k)~6l#mZV#-@HE{aV_Z?Nq^sQl*V5sL?4-RTLpby(xo|k@ z4@S&Z?d1TMh#(3!7>eMm4x_FT9X6#I!QfKJhkAj%bGeLQ?P$<68!_yI*VKsykdn*u zb-UON%Z`Z+2i<{2IDyroF`OhmS78FUf9%D!gV^CPa)C>ZHGhKPa0CSwL7Rk-!?ZoN zgkmVnh%boFL;!IB+QWuogRF6Maj%lj*61w$XTvc1|IjetdWVCEYJ}Q`O=E8pjR$b{ z;&^(|j`#wroAE7R-)3IZ5(*j)0sS-A0s20L*?w1Vt?ZWZA6qJm=q9>RPHEJql!v80 zWhUv0TB?ZBGVv|34u3uO5NrC4dyPeW$qm>ebGdDX^ZLF#erkMZ4!>KJ$LG%yRtDX*yUbo%l9Th^qcH*W@J69J^w=w zk)1{>K6cv9)cgr->x%A0ytSFxV9(su3xbJK31aB#=vF}Usao;@tNQ-P-z!mye3fHA>TB&kL-Ydm~ zKY4~Nq<R_Jk7=3-pYTcRrf%9pVL>_(L2Z$z8A_hu49AnqOej9$JHT`P2NI=LPuyl|}UdaT}A* z72Tbu#0P9+c6;g?Pg9&WfYR$3FK7ew(_Ds_k8IYV)1_-HC-&AF2Q++;{{Yh+wytIR z!kg8s_rLL9yDy{L5B`__YfVA_AA7M`F!*8IMSc4<<^~wj5_fkqb_&g4@LNI_9b3&x z8F0;MB@>FS*K^uO@d!c$mj$$6HO`&zH;`^E8#So7p6i?Yd@!^PI_G06*p+1W_P^=a z`ek(Pf23m@D%nzV$2x#sDEEOYeA?ymf2Hu7!>^O*+YCI>L!U*ROKh;G{|^9M3noi9 zo~GB^E;pW=*guJWLLWz?R-QD84MKOg=!%+V(Gr)+IuuT&1vqju?P)-J?q<-Mo2XAs zMtx*Qez1vkB5-UXI`?O9ppQU9NDh!X-Zb)}KNEtwP6A^C%S3CRX9d+d?p>jzq1Y7c~IOy+##`O^^fBB$iwsq!!C*P`E*C3}2LM2Iy-QnF;yf-7`iyoL+%P$LjYta)c;4Y+fJC z@)#L#=pkN){#T1V;mx1LI%Wr2!dp$z-JLQ3lMh}kHj3ZVQ#^*d6E9NlS{j8*B5@^) zI+bSGI+iMfI#}F}SZ97|eY;d$cZvldXAZ88=N}at=bBJBjFIO6I`oJc95)D&ObDS% zG#K$AbACV2l|nY0$}yU8zEC6#+Yd7t*PtI9@uMpji3MYkpzA`Rr+^M1`moVR2*ES@ zHR_(v}vBOVBy8 zPzAhuzfl)vjuUf6`w(-5W5GzoAN9uYrz0C2UG#p@(~X#}sEgJR&|&dVG=M{eOG^x8 zX$?~}c^c<_YHuj8L#Fe(O=U)!`6cxS15Sy_mT-wYU%_X9%{6WY$$<+mKAF)x} z04fan(|&{iVP7~A6T%QtAc~QmSSaN45_P&0-tnrLP&i){pk4u+!v|u%2ttx4#LVF_ zEP<#tf{-5px6^G@Eu2~AOo#;#QKA^_S%6awrwjr#M0H`m+iMJNhj8X#ZWLkm*H@#> zFk?HTP1cZjAdLUUVj&Y1SV#qnBjpGR7EuKH;C2HzZ+($)#ES?&h#>$MPx+8O%GreI zX8a-o6R#H=r*|xEYHK&TVm2W4!S;=4whj$I^MK6;LZ*-cUVkWtZP+L&7{$m2&T!;5 zjL;OGPvx^=Q;D1-guNI(L1T7V$hZdKtk){3-x^~QsO=_bLMgkZAc`tw z4iN%o92YbHPT0VBGGO{rr6rnRgq{&dU8!Y^MoWYWjD`;Ey`h(CrZ z{9z>T@NEV#&<3JV5v_XtiGV>6hXH3Eh8BY;c(~AAY#e`~uQ-sdBbH{{cBZw>K72jb zLuPC`wY3^sv;eMqM9hwlii@p<1Z6rNKOpv})0HQ&!}BP4qBv9-z+c0qFt5_j z$1@Iz+nLPbUZvODbILWx81ILT3vtao@`%s~CY;slLGFvF1Pn(i6f?{%39~bC%u|&pILw;}8j#PPK)I)Z=qM5SOWSad~)vZDVci zKks?U1D;~&dPvPINZ!f+ML(t=)_3b0^>Y1AeUd&%kLt~IL;JnfMt&Eql~%XbM*b+Z zhuU7vQd#9k07dsZ*Jt@E!`vyl{!ng zQXTOxcO(B^u~58K94U4e+liSXBm5wIBD^SU71jzR!c5^hp|{`@8VVx+6aNMOI{ys+ zAitcS!%yG`@L@iO*SO!fZ@IU*z1$;Q6*rH&ksHEw;xb!usqCNZDfT_~Id&6U%`UVy z^5gkmi{H`KURvI_VxPw7Ihdz21hO~h>`S6kLNaGV^|#^x8ErF3&VWNm%0#G4fSeQJ!Zt~jBV;E} z7?Yey_A-Uh)f>J~gD-H~z5pYtgv7|Ca$&1O*Cc0JJdQ}tBwMn=@Z?OgB`XX|&Lmr% z!qB8lDQtCU2$Y=sr^5l(b}f^%>yC>S;dT&wVxD;jS?9Hc0l=IRyICXB>y((h4T`HU zsng4B7#5!r?QPI4r$l?_^sM`2bfe@m}nU?e-$(fe) z!i3N%Y{z0Z^^7>A`aF)toHJs2(q1fX6%fA3kv(`A%ULykJLB*j{!X+H=PmnAtg_xV z{9dd|CgZi_o=zHm>3ghf9>DpmJv&ZN`nEdm{&3gzEvy)dVAF?-zt8^m!kifN;7nMyvY%9DIMSWlURWf zw4SB2Z2N~EbA0ecF-CKXN0iQum;EB%L&J(48V?6AYdMhlllVaV*l%JPo=)vvI>)NC z#5}2d*YDyhJXh4EbSCt?B0gV7Vm46R+uCbF8nZz^A{UCqyE3HiA}1ZD+QN0B6vPv( zD@3Ua%}~4G9Z5QX=}KAZLo1F`;}62~Z-`zhgsTKW}Hjf>^eeCH=6$+DZIcyrwZz44p7^*W29iCDb4^t{F zV0}wTN1mT*DUFsJiqw3Hn$O5=sd|u4QS#;S;)mjg6lFeI4C?J+#}pAOvdA{VIfpeOUBc939HzcW{foQjW$M_{(shm`fDEpL0luA79J4qR+ zgq0?WB45N~Vz0?N#LTjkmCwC&4GZ!`@S@@!v)>*Tb0X`~@VUEY^wbasRP8@@Wc%R6{^9m2- zY7)nH#R@sCv_j3YOuWk9M5V!ft&nKYIya*6yOGx|*zAxR-5GBmHPOW}RA3)RG3&g?kDJ;tECN* zuBM)Gn-o5Q}q2=V5}2MzmeZvyHNE zbrXiyrCF4*K>J;tBVUwep~W08#b>p`&7OEco>D}o;qIXyN5{B=y)>g{y) zXauT=`oktWCc<>#ml@eHkvf8MZv-(WvTh@4JZXV}1l$=7;r?RC-Cp)bF%)6$cAH2w zL{3h00R0DAf>S5x+|>ceywpTCKk+1m0-ryFA%(9(7;39*C^e$T#RvS(mCzXlB^_*D z6Z=LcF_fmc)rnCRzZpTm4ZWJu#O*TNzC^jZMpM_N;3(E?oX-YHaeutt$@ z`EV<<=x)rcTC7~drWJKvezlc}7g(Lx($#fR(xFMQk{xfiR5{FL6m?l{o)y4#usE@I z6M!N2U`YE&T*-!fytR>r^!q31+hMAldM2p~C3|-zMxD*usTwt#GP>ytv@oupahVgJ z<1h0u_HKG#yzvU90iTI1nR`lRYc5OU0~idyN5!ztH*zB=yjQu~Sk!g74a1gTvADci zxr|ez!}75<4|h7<86SX^Pou>jauzxLVNQw;?V_3-pLCznfHSZ$`<##27?eGrJYy{C zvV4?9WC?aRK4`rX$IWs)ET%714=M9xzcfqSDx4GA@l&~7baQGF^BpwZpyZpx%qws< z=kb{vlsV{y?1`V+s4QYL@a?UMw{|Qh07DO&yzNt(z}!Y^M*Q_hm6o(o)Oq#xU@9VT^aCzQwqo_icw#gVagJ;})6KAO^5R#8S! zzg^p@oK|wFD!G+(v-p@WgMW(qj@`kO(l1km%u;5c`G0gnhQ*7wDLrYEZ#-P?^vdOX z;uO8EsU(d-+o9Z@QJlMcp;cBpvIx2S|$j4lt~)Oc&=R_71}<81&)2ADDiE3lo$zN+F)^y$vVq{S;Hr*sK4dZC7uVw@~*> zEydgUN4amfChYa`riYXeUfSzgraRm^O~Q)#De3XT=anx}A-a~?8zMwcr@d$ne%CTJ zQ3vu~GV{8XDRv%i$in%TlwE0y`j^R8-jen%?F~chi5dUlWu=J^5spH_VFnI9>; z=#1jtW%lMvjq?rxNL^-WV0L`^CkjJklx|Zp=kkJ272K+dcRQ+dLiu(n!=sf%iCq&0 zMR!S04l`rUzAx4g1fSou>P3xT)gCxGMrt&x}`$?Z!Hz)Ry%PuwlYrXs|1wBii|kqn0#2?EpL>|CgWIA@t>`hXzP*Ux1My~8sxk*;%Wf2TvPX#Ni#gN+~a7q4W zg4Xo{f!qjziHd3mTy`nyTb3l2sA|i5FjjL&Rg+^i=s^;u$(=IzQFW^J(Eho1c07q( z*?=NVoorD)g9WW$b#>=g7acodvJdlh^{(W;Ti0L&a*+ZI!>JNA)Vt!Zd@Wv0H#eg$ z9t=bFQ=g#?9mjQm!~zc!;0MJ`iu7qTYo|dcU%Kd#bm^*|@o``Wr4n zUCX-Kv(fZ`wq>ZdqnFpMtfQT2E&#sz>I<%I!1HMzVT>AQYBm()>6!6f4b)cVN?8_h z=)kc*aUm@HLs8(>B2Q-g&4y|&T8Q3dA*+OGfYBRLJENWIRu)XO6d#bS?oJ`M+UfTx zHrv>v->N;X9#_^%hee9-zX-NJ^B`Y55t7fC4*|lt#%_GX*R^A{q*^ApaD|)L9;~V;`6M1q3gWg1Wx@lY0 z-;{mw?{Y-CT|6W<;E(YQ*$>!M=2m)>{wsQ0k@)x_YCklw-O3y||xtw*W-F*Cnx zg3UcH>hYq{>K*8x2Fq;Uxfs1Dw@WL(z&-2<`D#PxHddX9(Z90mtg4I6=-+c=)!uY` z+7O};UCPWOUiRt$gT|}RSR<838H4o(+8AZ2+(W!1hJ@SsE!!K|O+tO}NaC z4ld@A=--pnACbu}WsZ+!`cr>QRy#47D4v;i8#Tm(M|JnA>6YLZOi>q01SrvnQaflj zs2k9nca-LdFQFcG=N7X2nBSOiyy;BU#L`{L&2KCuuV|*`T{P$-O2^nF;hK=hrX$UFlUzfY<%Dnbq$-jsCT*TA}&cBWeLV0^gpOL*a>7O0i(SdQ#jIqm zVd~Le&>QI+>DJT_)OKnPR*03iPV{i-W2A?zoF1e;uKLqs<+*MNTef(J2Js%AzS^$V z;bP@2W$3;_Z4chfs)_<>;Zz^}1Q9@UCoOMQ{U}oVRDdbcgPT<^<}`I1fU+%w1$%p$ zf`LyH8ciG;^Hz|wy?;x=f@;+t-?K`cYpP_q?Qxm@PaKD(yuIc*lEib%r%1>N5rAiqM^UiNen?EcFcZq!=Gy z0Cud=L_e-?(x>TO?V`2^uj1xoWc4+*TpgmODW9PCGC^rBpO&A(m}w9<;`U30(p8cq zzA3H{M~GR%=lIQo$wDjsEWZtXkSO;jcZgfe_2o472)l|M%{F9?F^@1eGwo>gJpBwk zm+p+;dwK~?Qb&~ZR7WaVpAxCu;-o*tbXu(ZW>>Dxz*%#raEF?X<2D7y?SdY~0l3L6 z2phg218}25s{dDn)MU3rf)u*4V3I;kZg7gxa45y zZ@M|H#ych85~*>$lYZ-Wk{;)zD=w3?y>UxHm%nsVNw0G$It)f&Qf`u(pE z4#v3U;me+@Jxy2`p2%rw&djlZDTe2KHuv`xh|{l<4~(N@|EDy;njv5)M z^*R7GH8SkJhpfHCG=~y7M==MrCTQot+I^(SfLp@pffY5gN6laR_4AM6SsS|pK8MMBrhH;dq|DquMRSl;V*14&nffO2GU~t+9Zc|!?oTf+0H4hK1{5leW-+jx2<#= z=Y7Sas{enVRj+XQy(?&-Ev<0*?GiH3c2?9_u&;y+9Fhum!9ElwHJk+-Rz^vUmaf3y zaLhnkSK+MDI1ws35*qF*J-8F0;jGfounS2$Ycza?>9kmdvqHOijyIh;YpswQcdZ`X zjg)lO>KY|ibj4l0SViLmU#*)GE*d#w^IcQYs^fmamS!aFI$yUnH_+-=IL=psHY)TA z4UJ!gTN6~1vivKnuS));B9;s~3DuQOe)Y=sV+3T;-*sQm_Y*{X;gPj{HV zwH0B`-kwg(-7p5bi!nwOtElS~y{#>gQJvb9>3X=*m@HxORHwL{M~bJ^F8;Nlo5J@v zB{#PuJQ%e~`k{L#Ef-~{|BF`>D~Rm0TCZT}d94)}t59XoGYy=d6?jjrAO6BNWv9)| zR5D1Cldi}lY0*h{%OdJ1xYR+fPt=i5q!$XNM9b&bB8T_R_NuwK z1l{evg5{FgvGRFt&b?<%1uwtLp|)Hm)aN?scNLPp(@86u*`4w`Tmta6Mkvg2O03jL zjej`lHw}`$-ATW3gt*(Y6BOFBra;PPxj6}oZ3YSLMPg>H*D-ka_Jmt=+rN14dRoZx z4EH^he@K>$>2?kb_=s5KX->Kf(^%uyM2%}dQN0C=o4=7C!gu0Z@~P;;pW@!*p7S*1Ht~C< z7o;uH8flRzaAK|O`c^-0pu)tI7na)1N z0$a>ZM-0%DtL7GJ{j{K#?HSG1V>#v=bCh|ReO^=4U({pF{mc?(7MrIYR(Go#nXybC zqp#7*5cQM#%laewB0Ou@U2mdY(Z19U;2DsG2xBPvb*h_l(hiT!l4#`?%xq(3rkWq- z#nay;cQgGZl@4F8k{dO~>#-!OTg_M}9x^7GU12k$E{AvSl`}rjVS4U^W$_9vgjxo{^Y8d?G_~M0gm4*=fm99ayL*xZkua~b~)=#XUu{80_6Mx5`h-UM_?RY@%l8Ov!Et% zywpH4XC-G^3N`cpG2R~f?*ZKZgtu`~nkGYRh311pv?k)Z=a?<%zg06GH5ZQGv4W&s zI3Br&q#Za81=S=y#W923S81j*lR)9NU5@y`ClP%F?`FSu}g z&l*D6f#a^ngC|lZe#M%eh>Ohkt<_BLvIa6Qyk9fdPY0PND#Oq^DOOup!2#-~EBSzC zx}z>s@4lY&(}n7NA0*t=g6hc4%C5vGaZq}qEqrCUOb%d&FBwABf$R6qClaZJ)$t3v zX}rZHcA^$m55x06V+?59mn_CFDjcW|r+FfU8qj>3pm}j{642c7B4S{AOIX>#==iZJ z!is~?-A;s|`x@PJcoSG1@>L=$2cpAVyrhk^Tuk0oCus+h!!m;~mH^=}&_jl2fV+4) zj6qSUJv>Oz1>t=c5rQrV|6?&pyC8gP2^pL|wa7)u;2=MBY+dQ{`+7sO zKb0=Osf{%ZKUB8G51o9XA*iWzQTNS9NJ$5EL)&-FA+B^Vw>u;ezzqk--c;uP^E8Si z)E#Rl5V<|xc>8IY3E(OnWDcXgAnm%i{Jhn!gUf5QJE6iv)0GZF$0_sYC#D8hIv5=e zd`ftBka>-|?i9e{4p4`_pOK~=cn)LVHzz=)1I`oGoe5Cs;`AmTkg6_DAN?UoJ2)NI ze?-y_IEVgUk+cKJ;o9z|9#uLR9RBD*(hl;5eLYFqh1#93B54O|!xby-;_Csu$$JN1 z!_qz^?E>lneNC8EnE=#qUq2IORk}cWOn*`$0i+>y04bq6bEEG-!_*y3hMTr&BcR@E z9?gy=R4TRA;N9zOEkTJo$T=a=ATcS(kprU5Wp%r0BPzw(w7MU$!xqS}gQ{WePBPdD zOzodrgB~nLycab`PRQ1W)oA*EM#tB3tHl?_@B%vyu9!n`!>6meT1!I=dm}kL)cE-E^Y%? z#@)e9kTP}l#7UEG`Nwz*3UgiIkvG&RT>pkT9NNFGN|5@7IuMTkgwc|H_`vJ- zCcxnaCe^i&Bxil~+ac&9_=xKd9bUuA7cQ!|z%@VP>5Ayjm^94CJuj#a!`$E0tKjF~ z)l)G11=ZhNdX`cd>zjs27%FBV!;Q{=m?a&0{;KYWqkpI`!`9!_i-70DC3yFD+y|s6 z=GQpgLi>pUZ56^z(p&Kv2(Lm^ZGpobFkls;M-u_Y#~xNM(ACFJkFyXra}?&71s#;Q zd=*~Hv`9P&U#yb%|L+U1SGp4}J3`jAS`#j6Sz)w#Zlr2kj2Kl1^0@{(3a$-C6YU_t z8n1ot*(Mroqyq@irvKgvFX6;09Y}~d`#X~y2NYt?(yn9`cVHp(>t@=eN(T$xJI36A zs&t?r7__+`Sm|KD1P>SzCvIw`0|VhL&fIXTbg*Bds2w7&OrSv9)vrKssje$FDvaJK-i}e9v#@1AO*PD;~?Ei2L-~% z1|jFbKw-r5&IL>n@V_4$K4ng4Q7uzhN4ybl_bL4pLX!E;I_U z7TSv@%r*Acfqd}fC89wN;HyDxdtDxP7b*w;v)zwE;Rj~|H{I_cK3`2Z_!rR@ z2M&V%H&Jc}|0UY9f(l61fr5!w<`Fb=v3Eh?x^IY798d@oza>N+B$%k_#1kqVPza}w zld299grUbs|7+pEXd;?`ExS1I=2N7)g9D-6X_9tP;5kgAra36ECMTw*;oNcnA} z-x1lkkg(nNgqK>7FoFjn?2$zRH6UTfABYR)Kti{*NX;lhrGpTm&pE=Z3k#>GkhB8} zVR{|XegX$N9tC(M;%zy25ay?mnhpSjcsi+B3-v|d!jp+v;h;WvD~nWjVO~)^l6GNU zZhew=Vcus}I?q-(SlK}PUkKx>Tz=`nCjV6~zXkcG6{u?O@P7u=X|XB?=DFh*s~Ik< zYU>pLx~FNrsvPW>DDJ3tl?wxp^&%}fFc7x&AuZLyeX*MAUFG0DXw#2WchTODR@y~- z+xinuYN0*+$f0FOs~oro9S0IpF4((k5aFa2*u$mDQEn8G3--S9nI|2p9I%J8<%gho z(xJ+Md+>CK@Zw-RS1Qq%y_Hzyz`dHUEdRI4MSkB$2%9eQ%Zib-i~NpSX&3pe=|tYU z$gf`)l6H}wrz`2EgZvUrn`fNRh*h~5aDEd~)5U~{oD=yR5=I{irSOnwQyk+YJ>->9Bc?P zQ;9w}h%iAtYzLLATyS_x3K66O4qe(~rkgUa zbaCRw3_{GsiJxVXw2Kp;tVhx=PQ0su+09A^Cng#LJjdijA}d|kxU7*m=#>s^LJ{9|FSLqPi6StGRZXEl9dNOyI=-{GM}C zU4kLFpOW(a?=LdvkpBpzwfpq1Z!*X6Ci4Nt{Mw#qj7>h3d9Tlyy0c0C7dlP~XOV^V zy~$ePF0B*$m`iDuv$VSEfS(b6nivpgk%j5~NJ(c^tx?i+(69}6eVsRewBfF=0|sgS F{|l$jY19A! diff --git a/server/技术设计.md b/server/技术设计.md index 2a7df90..3d602db 100644 --- a/server/技术设计.md +++ b/server/技术设计.md @@ -335,7 +335,7 @@ Android 客户端启动 GET /api/v1/app/update(公开,无需 token;iOS 不 - **生成异步化(2026-08-28,count 1..1000)**:`/datasets/generate` 仅做校验(provider/数据集/标注服务/Serial 内并发检查已有 running 生成任务)+ 插 `gen_task` 落 running 记录即返回 `{taskId, total}`(毫秒级,前端 10s 超时无忧);后台协程逐张生成(`context.Background()` 生命周期模式,与预标注 `runDetection` 同构;`imageGen.poolSize` 并发池,z-image 显存独占默认 1),**每张不设调用超时(2026-08-29)**——异步任务超时只会造成假失败:超时仅放弃等待、取消不了 local-ai backend,任务置 failed 而模型仍被占用、poolSize=1 的池被占死、后续请求连环超时;失败判定完全由 provider 真实返回决定(dashscope 内部自限 120s 轮询不受影响);极端情况 local-ai 挂死时任务保持 running(状态诚实),由启动恢复兜底;逐张落盘 + 入库(2026-09-02 起不记录 prompt——生成提示词临时使用不落库)+ Serial 更新进度,完成(或部分失败)后对本次新增图触发自动标注,置 done/failed 由前端轮询 `/datasets/gen-task` 呈现;中途失败保留已生成图(不删除——付费资产原则);启动恢复 `recoverGenTasks` 孤儿 running 置 failed;VLM 补检与生成显存互斥(该数据集有 running 生成任务时拒绝) - prompt 手填覆盖;留空走 `imageGen.promptTemplate` 通用模板逐张组装(**物种/场景/动作/遮挡/轮廓色/站高池均从数据集表读取(见下节),每张独立组装保持多样性**;**性别每张随机雄/雌(2026-08-28)**——两性体型大小与外观差异大(雉鸡雄艳雌褐、野鸭雄艳雌素等),随机让训练数据覆盖两性形态,`{species}` 替换为「雄/雌性+物种」;物种只写名字不写羽毛细节,细节会拉近镜头);**位置/镜头描述(2026-08-31 v4 最终定案:手机原相机主摄不变焦)**:2026-08-28 曾定「不得包含目标位置描述」(上部1/3 弱约束遵循力差、角度与位置耦合沉底);2026-08-31 用户确认恢复距离感锚定,镜头词四版演进:广角(构图先验=前景大主体,用户实测野鸡在画面下半部)→ 长焦(**长焦物理放大与 13px 像素数学矛盾**,用户实测野鸡占半图宽)→ 全删 → **「手机原相机主摄不变焦」**(用户提议;与 13px 像素数学完全自洽——公式即按主摄 vfov 52° 计算;手机拍远处目标天然显小,先验同向;顺带对齐推理端域——App 就是手机拍摄);保留「**在{distanceWord}的地平线附近**」位置锚定(地平线是远景场景锚点,不同于上部1/3 弱约束);**远景小目标模板 `promptTemplateTiny`(2026-08-31)**:尺寸占比 <2% 时切换——目标小到动作/遮挡/性别细节无法呈现,保留细节描写(低头啄食/只露出头背)会迫使模型把目标画大(语义矛盾:1% 目标不可见细节),只留「远到看不清任何细节,只是隐约可辨的小点」 - **生成图距离/数量校验(2026-08-28)**:表单填 `distance`(米,固定值) 与 `animalCount` 后逐张启用;**距离校验已取消(2026-08-28)**:生成即入库,无逐张拒检;参数与公式见 git 历史(物理公式 d=体高×focalPx÷像素高) -- **VLM 藏匿位补检(两阶段第二阶段)**:`/datasets/images/vlm-review` 单图接口;qwen3.6-35b-a3b(+mmproj) 以「图片+物种(数据集单物种 gen_species 注入;2026-09-02 prompt 不再存储,原「prompt 含物种名才注入」匹配逻辑删除)+已确认框坐标(排除)」推理藏匿位,输出归一化 bbox JSON(范围校验+与已有框重叠去重),追加 class=1 疑似框进同一 labels_json(**2026-09-02 上限动态化**:单图疑似框总数 ≤ `consts.VlmMaxSuspectPerImage`(上限定义于 consts.go),每次可追加数 = 上限 − 图内已有疑似框数,≤0 直接跳过模型调用;提示词「最多 N 个」与落库硬截断均按此数);VL 与 z-image 显存互斥(12G 装不下两者),批量补检在生成队列空闲后执行;qwen3.6-35b-a3b yaml 自带 mmproj 实为多模态模型(生成校验);**预标单图上限(2026-09-02:曾按置信度降序裁 ≤ animal_count 列值;生成声明 1 个目标不代表图内只有 1 个,改去重后按置信度取前 `consts.MaxPrelabelPerImage` 个,与补标上限同量级;animal_count 仅信息性存储,与声明数无关)**,估算距离 = 物种站高 × focalPx ÷ 最大框高像素(focalPx=`图高/2/tan(vfov/2)`,站高按物种查 `imageGen.speciesHeights`,单位 cm 换算为米,未配置物种代码兜底 35cm;**2026-08-28 语义修正**:speciesHeights 为站高(垂直尺度,鸟=脚到头顶、兽=蹲坐高),勿用体长——与提示词「高度」描述及检测框高自洽;避免跨物种共用一个标定系数)(K=1.8:6%≈30m、4.5%≈40m,K 隐含镜头视场角假设);**镜头固定主摄(2026-08-28 定案)**:vfov 固定 `imageGen.assumedVfovDeg=52°`(手机默认主摄;曾随机 [15,90] 覆盖面广但目标像素波动 7~57px 不可控,曾试超广角 90 亦否决);**场景/动作按数据集(2026-08-28)**:`imageGen.sceneByDataset`/`actionByDataset` 按数据集名配池(鸭→水面、雉鸡→灌丛草丛、兔→草坡荒地、鹌鹑→草丛),未配置回退通用 scenes/actions;**遮挡描述(2026-08-28)**:模板加 `{occlusion}` 占位(插在「在{action}」之后)——身体完全暴露的个体对识别/标注训练无意义,野外目标必然存在植被等遮挡;`imageGen.occlusionByDataset` 按数据集配遮挡池(雉鸡→草丛灌丛半掩、兔→荒草只露头耳、鸭→芦苇水面半没、鹌鹑→密草藏身),未配置回退通用 `imageGen.occlusions`;池内条目覆盖轻(身体半掩)~重(只露头背)遮挡,每张随机取一条,杜绝完全暴露;遮挡物多样(杂草/树叶/枝条,2026-08-28 补树叶)且须与 sceneByDataset 场景自洽;遮挡后可见部分小于站高,检测框高与距离估算按可见部分仍自洽(真实场景同此);**拍摄角度(2026-08-28,已废弃角度描述)**:不带任何拍摄角度描述——演进:固定「上部三分之一」区域描述对文生图模型遵循力弱(生成物落底)→ 加固定俯拍(目标上移成功但构图单一,用户否决)→ 池内随机俯/平/仰(仰拍使贴地目标必然沉底,用户否决)→ 只留俯拍/平视(用户仍嫌啰嗦)→ **完全去掉角度描述**(2026-08-28 定案):交由模型平视先验自由构图,目标自然落在画面中部/上部;模板只靠「{species}离镜头很远,只是很小的{tone}轮廓」(物种名替代泛称「目标」,不限定鸟类——物种池含兔子等非鸟物种;`{tone}` 轮廓色词按 `imageGen.speciesTone.<物种>` 取,默认深色剪影,**白雉鸡配浅色**——白羽个体用「深色轮廓」描述会与模型渲染矛盾,2026-08-28)维持远景感,手填提示词仅追加数量约束;**2026-08-31 改版(最终定案)**:镜头词全删(广角/长焦实测均失败);「{distanceWord}有且仅有」→「在{distanceWord}的地平线附近有且仅有」;{action} 从句末主体降级至遮挡之后(动作=叙事焦点=视觉焦点,弱化动作降低主体视觉权重);{sizeHint} 由「像素数+占比」改「画面占比分级尺寸词(微小几乎难辨/很小/较小/中等/较大)+占比」(量化像素数与固定物体类比词针尖/米粒/拳头均不跨物种/距离通用,用户否决);**远景小目标模板 `promptTemplateTiny`**:占比 <2% 时切换,动作/遮挡/性别细节全删(保留细节描写迫使模型画大);不合格丢弃重生成,单张上限 3 次(`consts.GenValidateMaxAttempts`),连续不合格整体报错(已合格张数保留) +- **VLM 藏匿位补检(两阶段第二阶段)**:`/datasets/images/vlm-review` 单图接口;qwen3.6-35b-a3b(+mmproj) 以「图片+物种(数据集单物种 gen_species 注入;2026-09-02 prompt 不再存储,原「prompt 含物种名才注入」匹配逻辑删除)+已确认框坐标(排除)」按环境/季节/时间/天气/光线/地形/物种习性综合判读画面推理藏身位(2026-09-04 提示词定稿:先判读画面条件(季节物候/影长时间/天气/光线/地形),再结合习性推理——补检目的即综合信息找可能藏身处),输出归一化 bbox JSON(范围校验+与已有框重叠去重),追加 class=1 疑似框进同一 labels_json(**2026-09-02 上限动态化**:单图疑似框总数 ≤ `consts.VlmMaxSuspectPerImage`(上限定义于 consts.go),每次可追加数 = 上限 − 图内已有疑似框数,≤0 直接跳过模型调用;提示词「最多 N 个」与落库硬截断均按此数);VL 与 z-image 显存互斥(12G 装不下两者),批量补检在生成队列空闲后执行;qwen3.6-35b-a3b yaml 自带 mmproj 实为多模态模型(生成校验);**预标单图上限(2026-09-02:曾按置信度降序裁 ≤ animal_count 列值;生成声明 1 个目标不代表图内只有 1 个,改去重后按置信度取前 `consts.MaxPrelabelPerImage` 个,与补标上限同量级;animal_count 仅信息性存储,与声明数无关)**,估算距离 = 物种站高 × focalPx ÷ 最大框高像素(focalPx=`图高/2/tan(vfov/2)`,站高按物种查 `imageGen.speciesHeights`,单位 cm 换算为米,未配置物种代码兜底 35cm;**2026-08-28 语义修正**:speciesHeights 为站高(垂直尺度,鸟=脚到头顶、兽=蹲坐高),勿用体长——与提示词「高度」描述及检测框高自洽;避免跨物种共用一个标定系数)(K=1.8:6%≈30m、4.5%≈40m,K 隐含镜头视场角假设);**镜头固定主摄(2026-08-28 定案)**:vfov 固定 `imageGen.assumedVfovDeg=52°`(手机默认主摄;曾随机 [15,90] 覆盖面广但目标像素波动 7~57px 不可控,曾试超广角 90 亦否决);**场景/动作按数据集(2026-08-28)**:`imageGen.sceneByDataset`/`actionByDataset` 按数据集名配池(鸭→水面、雉鸡→灌丛草丛、兔→草坡荒地、鹌鹑→草丛),未配置回退通用 scenes/actions;**遮挡描述(2026-08-28)**:模板加 `{occlusion}` 占位(插在「在{action}」之后)——身体完全暴露的个体对识别/标注训练无意义,野外目标必然存在植被等遮挡;`imageGen.occlusionByDataset` 按数据集配遮挡池(雉鸡→草丛灌丛半掩、兔→荒草只露头耳、鸭→芦苇水面半没、鹌鹑→密草藏身),未配置回退通用 `imageGen.occlusions`;池内条目覆盖轻(身体半掩)~重(只露头背)遮挡,每张随机取一条,杜绝完全暴露;遮挡物多样(杂草/树叶/枝条,2026-08-28 补树叶)且须与 sceneByDataset 场景自洽;遮挡后可见部分小于站高,检测框高与距离估算按可见部分仍自洽(真实场景同此);**拍摄角度(2026-08-28,已废弃角度描述)**:不带任何拍摄角度描述——演进:固定「上部三分之一」区域描述对文生图模型遵循力弱(生成物落底)→ 加固定俯拍(目标上移成功但构图单一,用户否决)→ 池内随机俯/平/仰(仰拍使贴地目标必然沉底,用户否决)→ 只留俯拍/平视(用户仍嫌啰嗦)→ **完全去掉角度描述**(2026-08-28 定案):交由模型平视先验自由构图,目标自然落在画面中部/上部;模板只靠「{species}离镜头很远,只是很小的{tone}轮廓」(物种名替代泛称「目标」,不限定鸟类——物种池含兔子等非鸟物种;`{tone}` 轮廓色词按 `imageGen.speciesTone.<物种>` 取,默认深色剪影,**白雉鸡配浅色**——白羽个体用「深色轮廓」描述会与模型渲染矛盾,2026-08-28)维持远景感,手填提示词仅追加数量约束;**2026-08-31 改版(最终定案)**:镜头词全删(广角/长焦实测均失败);「{distanceWord}有且仅有」→「在{distanceWord}的地平线附近有且仅有」;{action} 从句末主体降级至遮挡之后(动作=叙事焦点=视觉焦点,弱化动作降低主体视觉权重);{sizeHint} 由「像素数+占比」改「画面占比分级尺寸词(微小几乎难辨/很小/较小/中等/较大)+占比」(量化像素数与固定物体类比词针尖/米粒/拳头均不跨物种/距离通用,用户否决);**远景小目标模板 `promptTemplateTiny`**:占比 <2% 时切换,动作/遮挡/性别细节全删(保留细节描写迫使模型画大);不合格丢弃重生成,单张上限 3 次(`consts.GenValidateMaxAttempts`),连续不合格整体报错(已合格张数保留) ### 生成参数存储于数据集表(2026-08-28) @@ -350,6 +350,11 @@ Android 客户端启动 GET /api/v1/app/update(公开,无需 token;iOS 不 - **重新生成接口**:`POST /datasets/gen-pools`(`{datasetId}`,物种取数据集名)——编辑对话框「VLM 重新生成参数」按钮入口,VLM 失败报错(不覆盖旧值,旧值保留) - **读取链(无 config 兜底)**:物种 = 表 `gen_species` 单值 → 空则数据集名本身(**固定,不随机**);场景/动作/遮挡 = 表池随机 → **空则模板组装报错**(提示手填提示词或编辑数据集补参数);`{tone}` = 表 `gen_tone` 单值 → 空默认「深色」;站高 = 表 `gen_heights` 数值(**创建时 VLM 生成,界面不维护,代码/配置不硬编码**)→ ≤0 兜底 35cm(物理默认,非配置回退);标注类别名 = 第一类 `gen_species` + 第二类 `gen_classes`(训练 data.yaml / 模型 labels) - **界面不维护 gen_*(2026-08-28 用户定案)**:`gen_species/gen_tone/gen_heights/gen_scenes/gen_actions/gen_occlusions/gen_classes` 全部仅由模型生成(创建数据集时 VLM 自动、`gen-pools` 重新生成),管理端编辑表单对 7 列只读展示、无输入框——`POST /datasets/update` 不接收任何 gen 字段;config.yml 无任何 per-dataset 生成参数节点(`speciesByDataset/speciesTone/speciesHeights/sceneByDataset/actionByDataset/occlusionByDataset/scenes/actions/occlusions/localAi.classNames` 已删,代码无引用),保留:`promptTemplate`(通用模板)与 `lights`(光线池)、`assumedVfovDeg`;数据源唯一入口为数据集表(本库存量 15 行已直接改单值 + 真实站高,无启动迁移);**雪地场景补齐(2026-08-31,按冬季习性)**:VLM 生成场景池缺冬季场景(全部为夏秋农田),13 数据集 `gen_scenes` 直接 SQL 追加 2~3 条雪地条目(农田类雉鸡/鸽子、兔子荒坡、白马鸡蓝马鸡高山林缘);**鸭子/鹌鹑不加**——北方冬季南迁(水面封冻、候鸟不越冬),雪地场景与习性矛盾(用户拍板);`genPoolsWithVLM` 提示词已加「按冬季习性配场景:本地活跃物种须含积雪场景,南迁物种不配雪地」防新数据集一刀切;**林缘/树栖场景补齐(2026-08-31,按栖息习性)**:雉类+鸽子共享场景池(10 数据集)缺林地交接处与树上落栖场景,SQL 追加 5 条(2 林缘 + 3 树上)+ 2 条树上动作(枝头停栖/树枝上歇息);**石鸡剔除树上条目(用户定案)**——岩石地栖不上树,3 树上场景 + 2 树上动作从石鸡池移除(保留 2 林缘);**总原则(用户定案):场景与遮挡物必须符合对应动物习性**——场景(雪地/林缘/树上/水面)与遮挡物(草丛/树叶/树枝/芦苇)均按物种习性逐条判断,习性与场景矛盾即剔除;**遮挡规则(适用于所有具备树上场景的动物)**:遮挡不一定是草丛,树栖/林缘物种遮挡池须含树叶/树枝类遮挡(雉类池原已含 2 条;白马鸡/蓝马鸡补 2 条;兔子原已有 1 条林缘树叶);`genPoolsWithVLM` 提示词同步加「树栖物种场景须含林缘与树上落栖」「具备树上/林缘场景的物种遮挡池须含树叶/树枝类遮挡」 +- **场景捆绑组+权重(2026-09-04,斑鸠树栖 80% 定案)**:`gen_scenes` 条目在字符串外兼容**捆绑组对象** `{scene, weight, actions[], occlusions[]}`——场景池加权随机(weight 缺省 1,普通字符串条目权重 1),选中捆绑组时动作/遮挡仅从组内池随机(与场景联动,杜绝「树上场景+地面动作/草丛遮挡」矛盾组合——三池独立随机按模板拼装矛盾率高);组内缺省或普通字符串条目回落全局 `gen_actions`/`gen_occlusions` 池。落地(2026-09-04 用户定案「每种动物生境权重不同:野鸡主要在地面、斑鸠在树上、鸭子在水里」): +**斑鸠(id 133)** gen_scenes = 4 个树上捆绑组(各 weight 8)+ 8 条地面字符串(weight 1)→ 树上恰好 80%,gen_actions 收敛为纯地面 4 条(枝头/电线类动作移入捆绑组),树栖遮挡含树叶/树枝类; +**雉类 8 数据集(环颈雉/红腹锦鸡/白腹锦鸡/白鹇/黄腹角雉/灰胸竹鸡/蓝鹇/褐马鸡)**:gen_scenes 剔除 4 条树上景观字符串、追加 1 个树上捆绑组 weight 3 → 地面 14/17 ≈ 82%、树上 ≈ 18%(雉类地面觅食为主、树上仅停栖/夜栖),gen_actions 剔除枝头停栖/树枝上歇息(移入捆绑组); +**鸭子(108)** 全水面场景+游动/潜水动作+芦苇遮挡本就自洽,**白马鸡/蓝马鸡** 高山地面/林缘自洽,**兔子/鹌鹑/石鸡** 无树上条目——均不动。 +**gen-pools VLM 重新生成仍产纯字符串池(会重置捆绑组)**——树栖/水栖物种需重新 SQL 治理;解析与选取在 `service/dataset.go` parseScenePool/pickSceneEntry ### 训练通道(runner 抽象,决策:同机/异机不确定 → 可配置)