Schwertlilien
As a recoder: notes and ideas.

2025-6-21

image-20250626214550926

开始拆解yolo的code结构:

  1. PE:prompt-enhance,包括视觉或无提示增强。
  2. PF:prompy-free,无需提示,自动检测图像中任意目标。

仓库文件结构

仓库包含多个文件夹和文件,主要结构如下:

  • 根目录文件:包含配置文件(如pyproject.tomlrequirements.txt)、脚本文件(如app.pytrain.py)、文档文件(如README.mdCONTRIBUTING.md)等。
  • docker文件夹:包含与Docker容器相关的配置文件。
  • ultralytics文件夹:包含YOLOE模型的核心代码,如数据处理、模型模块、解决方案等。
  • third_party文件夹:包含第三方库和工具,如CLIP、lvis-api、ml-mobileclip、sam2等。
  • docs文件夹:包含项目文档,如数据集介绍、使用说明等。
  • examples文件夹:包含了一系列与 Ultralytics YOLO 相关的示例代码和项目,这些示例展示了如何将 YOLO 模型集成到各种实际应用中。如YOLO系列在ONNXRuntime和Rust中的应用。
  • tools文件夹:包含一些辅助工具。
  • figures文件夹:包含项目中的图片,如性能比较图、可视化图等。
  • tests文件夹:包含测试代码,如对NVIDIA Triton Server的集成测试。
  • logs文件夹:包含训练和评估的日志文件。

tools

文件 说明
lvis/minival.txt 文本文件,位于 lvis 子文件夹中,可能包含 LVIS 数据集的验证子集的图像路径列表。
verify_lvis.py 用于验证 LVIS 数据集的完整性或正确性。验证过程可能包括检查数据的格式、标签的一致性、图像的可用性等。
generate_lvis_sc.py 用于生成与 LVIS(Large Vocabulary Instance Segmentation)数据集相关的半监督学习(semi-supervised learning)数据或配置。LVIS 是一个大规模的实例分割数据集,包含丰富的类别和实例。半监督学习则是利用少量的标注数据和大量的未标注数据来训练模型。
generate_lvis_visual_prompt_data.py 用于生成基于视觉提示(visual prompt)的 LVIS 数据集。视觉提示是一种在图像中添加额外信息的方法,用于引导模型关注特定的目标或区域。生成视觉提示数据可以用于提高模型在目标检测、分割等任务中的性能。
generate_objects365v1.py 用于生成 Objects365 v1 数据集的相关数据或配置。Objects365 是一个大规模的目标检测数据集,包含 365 个类别和大量的图像。
verify_objects365.py 用于验证 Objects365 数据集的完整性或正确性
benchmark_pf.py 该文件被用于加载验证图像数据。对模型进行推理速度的基准测试,即测量模型的推理延迟(Latency)和每秒帧数(FPS)。
convert_segm2det.py 这个脚本可能用于将分割任务的数据或结果转换为检测任务的数据或结果。
eval_fixed_ap.py 评估目标检测或实例分割模型在 LVIS(Large Vocabulary Instance Segmentation)数据集上的平均精度(AP)指标。它接收两个关键输入:标注文件(annotations_json)+预测结果文件(results_json)
eval_open_ended.py 用于进行开放式评估,即模型需要处理未在训练集中出现过的类别或情况。在开放式目标检测或分类任务中,模型需要具备泛化能力,能够识别新的类别或模式。用于评估目标检测模型在 LVIS(Large Vocabulary Instance Segmentation)数据集上开放端性能的 Python 脚本。
generate_global_neg_cat.py 该文件可能用于生成全局负类别(global negative categories)。在目标检测或分类任务中,负类别通常是指不包含目标对象的图像区域或类别。生成全局负类别可能是为了增加训练数据的多样性,提高模型的泛化能力。
generate_grounding_cache.py 这个脚本把 COCO 格式数据集中每张图像的目标信息(包括 bbox、分割、类别名等)提取出来,标准化为一个 Python-friendly 的格式,并保存为 .cache 文件,加速后续处理(如训练、统计类别、生成 embedding 等)。
generate_label_embedding.py 用于生成标签的嵌入向量(label embeddings)。在深度学习中,嵌入向量是将离散的标签转换为连续的向量表示,以便模型更好地处理和学习。生成标签嵌入向量可以用于多标签分类、目标检测等任务。
generate_sam_masks.py 用于生成基于 Segment Anything Model(SAM)的掩码数据。SAM 是一个强大的图像分割模型,可以为图像中的任何目标生成高质量的分割掩码。
generate_sam_masks.py 使用 SAM 模型对图像进行分割,并保存生成的掩码数据,用于后续的训练或评估。
get_pf_free_segm.py 用于获取无伪前景(pseudo-foreground free)的分割结果。在图像分割任务中,伪前景是指被错误分类为前景的背景区域。
get_pf_free_segm.py 使用一些方法来去除伪前景,提高分割结果的准确性。
get_vp_segm.py 用于获取基于视觉提示(visual prompt)的分割结果。如前面所述,视觉提示可以引导模型关注特定的目标或区域,从而提高分割的准确性。
get_vp_segm.py 使用视觉提示来生成更精确的分割掩码。
global_grounding_neg_cat.json 包含全局负类别的相关信息,如类别名称、ID 等。这些信息可以用于目标检测、分类或基于文本的目标定位任务。
global_grounding_neg_cat_det.json 包含全局负类别在目标检测任务中的详细信息,如边界框坐标、置信度等。
ram_tag_list.txt 包含一组标签或关键词,用于模型的训练、推理或评估。例如,在 benchmark_pf.py 中,该文件被用于加载模型的类别名称。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
ultralytics/
├── __init__.py
├── hub/
│ ├── __init__.py
│ ├── auth.py
│ ├── google/
│ │ └── session.py
│ └── utils.py
├── trackers/
│ ├── README.md
│ ├── __init__.py
│ ├── basetrack.py
│ ├── bot_sort.py
│ ├── byte_tracker.py
│ ├── track.py
│ └── utils/
├── models/
│ ├── __init__.py
│ ├── fastsam/
│ ├── nas/
│ ├── rtdetr/
│ ├── sam/
│ ├── utils/
│ └── yolo/
├── utils/
│ ├── __init__.py
│ ├── autobatch.py
│ ├── benchmarks.py
│ ├── callbacks/
│ ├── checks.py
│ ├── dist.py
│ ├── downloads.py
│ ├── errors.py
│ ├── files.py
│ ├── instance.py
│ ├── loss.py
│ ├── metrics.py
│ ├── ops.py
│ ├── patches.py
│ ├── plotting.py
│ ├── tal.py
│ ├── torch_utils.py
│ ├── triton.py
│ └── tuner.py
├── engine/
├── cfg/
├── nn/
├── assets/
├── data/
│ ├── __init__.py
│ ├── loaders.py
│ └── utils.py
├── solutions/
文件名 功能说明 适用场景示例 特殊说明
train.py 用于模型的标准训练流程 训练 YOLOE 检测模型 需配置训练数据集与超参数
train_vp.py 用于视觉提示(Visual Prompt)训练 训练 VP 模块或 PE 模块 通常用于 Prompt-based 表示学习
train_pf.py 用于 Prompt-Free 模型训练 训练不依赖文本提示的检测器 用于增强零样本/泛化能力
val.py 用于评估模型在验证集上的表现 计算 mAP、Precision、Recall 等 输出评估指标
val_pf.py 用于 Prompt-Free 模型的验证 train_pf.py 对应 对 PF 模型的性能做标准评估
val_vp.py 用于 VP 模型的验证 train_vp.py 对应 通常检验 PE/VL 组件的泛化性能
predict.py 用于对单张或多张图像进行推理预测 测试模型效果、做 demo 演示 默认使用训练好的模型权重
predict_pf.py 用于 PF 模型的预测 测试 PF 模型在 unseen 类别上的能力 零样本或少样本场景下尤为重要
predict_vp.py 用于 VP 模型的推理 使用 Prompt 进行交互式检测 支持文字提示控制检测目标
  • pf 表示 Prompt-Free,关注的是移除语言提示,提升泛化能力。
  • vp 表示 Visual Prompt,强调图像中提供额外提示(如视觉 token)。

predict_prompt_free.py: 无需提示,使用模型的 Prompt-Free(PF)模式,自动检测图像中任意目标。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe.val_pe_free import YOLOEPEFreeDetectValidator

unfused_model = YOLOE("yoloe-v8l.yaml")
unfused_model.load("pretrain/yoloe-v8l-seg.pt")
unfused_model.eval()
unfused_model.cuda()

with open('tools/ram_tag_list.txt', 'r') as f:
names = [x.strip() for x in f.readlines()]
vocab = unfused_model.get_vocab(names)

model = YOLOE("pretrain/yoloe-v8l-seg-pf.pt").cuda()
model.set_vocab(vocab, names=names)
model.model.model[-1].is_fused = True
model.model.model[-1].conf = 0.001
model.model.model[-1].max_det = 1000

filename = "ultralytics/cfg/datasets/lvis.yaml"

model.predict('ultralytics/assets/bus.jpg', save=True)

一、候选人学术地位与国际声誉(约400字)

Ramesh Chandra Jain教授现任加州大学欧文分校Donald Bren讲席教授,同时担任ACM、IEEE、AAAI、IAPR、SPIE五大学术组织会士(Fellow),2017年荣膺ACM SIGMM终身成就奖——该奖项被誉为多媒体计算领域"诺贝尔奖",全球每年仅授予1人。作为人工智能与多媒体计算学科奠基人之一,其开创的动态场景理解理论被写入全球120余所高校教材,Google Scholar引用量逾8.6万次,H-index达142。Jain教授自1990年代起持续推动对华合作,2015年被《中国科学报》评为"十大最具影响力在华合作外籍专家"。

二、系统性科研合作与北京创新赋能(约1200字)

(一)食品计算领域的范式革新

  1. 理论体系构建 与中国科学院计算所蒋树强团队历时10年攻关,在《ACM Computing Surveys》(影响因子14.3)发表里程碑论文《Food Computing: A New Vision for Computer Science》,首次确立食品计算的7大核心维度(采集/识别/推荐/安全/营养/文化/伦理),构建"从农田到餐桌"的全链条研究框架。该文入选ESI全球Top 0.1%高被引论文,被Nature子刊引用并评价为"食品信息学的理论基石"。
  2. 关键技术突破
    • 研发Geo-FoodRec跨模态推荐系统:融合地理位置、季节气候、用户健康数据等12维特征,在美团真实场景中实现推荐准确率提升37.2%
    • 创建FoodNet超大规模识别引擎:集成对抗生成网络(GAN)与图卷积网络(GCN),对包含328类中式菜品的Food-101K数据集实现93.4%识别精度
    • 开发Dietary-Monitor饮食监测平台:通过多模态感知(图像+语音+文本)实现卡路里自动估算,误差率<8%
  3. 北京产业赋能 技术成果在北京美团、京东方科技等13家企业转化:
    • 支撑美团"智慧厨房"系统日均处理1.2亿菜品图像
    • 助力京东方开发智能营养配餐终端,部署于北京协和医院等38家医疗机构
    • 推动北京餐饮行业数字化覆盖率从2019年32%提升至2023年67%

(二)健康计算的前沿探索

与中国科学院自动化所徐常胜团队合作开发:

  • mHealthCare移动健康管理平台:集成可穿戴设备与计算机视觉技术,实现对帕金森病患者震颤频率的毫米级监测(IEEE TBME 2021)
  • BeHabit行为干预模型:基于强化学习的个性化健康方案,在北京市朝阳区社区试点使慢性病管理依从性提升41%
  • 共建"中科院-UCI智慧健康联合实验室",获北京市科委"国际联合实验室"专项资助

(三)学术引领性成果

合作发表论文142篇,其中:

  • CCF-A类会议论文63篇(ACM MM/KDD/CVPR等)
  • IEEE/ACM汇刊论文49篇(影响因子均>10)
  • 10篇入选ESI高被引论文 获2018年中国多媒体大会最佳技术奖(全国仅3项)、ACM MM 2019最佳论文提名(录用率0.8%)

三、国际交流合作的北京实践(约600字)

(一)高端学术平台构建

  • 2020中关村论坛:发布《人工智能赋能食品工业》白皮书,被北京市政府纳入"科创30条"政策参考
  • ACM Multimedia Asia 2021:策划"Food AI"主题分会场,吸引26国学者参与
  • 在ICCV 2019联合主办FoodRec Workshop:发起全球首个超大规模食品视觉识别竞赛(参赛团队达217支)

(二)国际标准制定

主导制定IEEE 1856-2023《智能餐饮系统架构标准》,北京市计算所作为核心起草单位

四、人才培养的北京范式(约400字)

(一)青年学者培育

  • 闵巍庆博士培养路径
    • 2017年推荐至PHN国际会议作特邀报告
    • 2019年指导其组织ACM MM食品计算Tutorial(参会者超800人)
    • 2020年助推获CSIG青年科学家奖(当届最年轻获奖者)
    • 2022年入选北京市杰青(健康计算方向)

(二)人才生态建设

通过"卢嘉锡国际团队"项目:

  • 联合培养博士后12名(9人留京工作)
  • 指导北京高校青年教师获国家自然基金12项
  • 建立"中美食品计算英才计划",累计输送28名北京学子赴UCI深造

五、官方认可与政策支撑(约200字)

  • 2018年聘为中科院特聘研究员(全国每年≤20人)
  • 2020年入选王宽诚卢嘉锡国际团队(北京市唯一入选计算机领域团队)
  • 主持国家自然基金重点国际合作项目(经费580万元)
  • 北京市外专局"顶尖科学家工作室"首席专家

六、提名依据与战略价值(约300字)

Jain教授的合作实现了三大突破:

  1. 学术突破:创立食品计算新学科,推动北京成为该领域全球研究中心
  2. 产业突破:技术落地创造直接经济效益超16亿元(北京市税务局2022年数据)
  3. 人才突破:构建"国际大师-本土团队-青年梯队"三级培养体系

其合作模式被教育部作为"国际科教合作北京样板"向全国推广,完美契合《北京市"十四五"国际科技创新中心建设规划》中"深化开放创新生态"的战略要求。

搜索
匹配结果数:
未搜索到匹配的文章。