Skip to content

Latest commit

 

History

History
100 lines (74 loc) · 4.46 KB

File metadata and controls

100 lines (74 loc) · 4.46 KB

English Français 中文 日本語

利用逻辑张量神经网络理解视觉场景 🚀🤖

Python 3.12 CUDA 12.4 LTNTorch Visual Genome YOLO OneFormer

本项目结合分割模型与逻辑张量网络,通过一阶逻辑公式和多层感知机网络,实现图像中物体关系的推理,提升图像内容分析能力。✨


整体架构与模块划分

整体架构

  1. ✨图像分割与特征提取:使用来自 UltraLytics 的YOLO-Seg模型或来自 SHI-Labs 的 OneFormer模型对于输入图像进行分割和特征提取。
  2. ✨目标关系检测:使用来自LTNTorch的逻辑张量网络,将每一个目标转换为一个逻辑谓词,然后通过逻辑张量网络进行推理。
  3. ✨逻辑关系训练:使用Visual Genome数据库中的关系数据对逻辑张量网络进行训练。
  4. ✨推理结果输出:使用三元组的形式读取用户查找的关系,输出推理结果。

安装指南

训练环境 (Ubuntu 22.04)

pip install -r requirements.train.txt

推理环境 (macOS 15.3)

pip install -r requirements.inference.txt

程序运行时会自动下载YOLO和OneFormer的预训练模型。

使用指南

训练示例

from utils.Trainer import trainer

predicate = ["in", "on", "next to"]
for pred in predicate:
    print(f"🚂 正在训练 {pred} ...")
    trainer(
        pos_predicate=pred,
        neg_predicates=[p for p in predicate if p != pred],
        epoches=50,
        batch_size=32,
        lr=1e-4
    )

推理示例

from utils.Inferencer import Inferencer

# 初始化推理器
analyzer = Inferencer(
    subj_class="person",
    obj_class="bicycle",
    predicate="near"
)

# 对单张图片进行推理
result = analyzer.inference_single("demo.jpg")
print(f"🔎 存在 :{result['relation']} (置信度:{result['confidence']:.2f})")

# 对图片文件夹进行推理
analyzer.process_folder("input_images/")

数据库

使用 Visual Genome 数据库中的 relationships 和 image metadata 数据来提取图像信息及特征对信息。

Visual Genole 示例

该项目从关系数据中提取数据和目标位置,并提取图像数据以进行归一化。

代码风格和文档

项目使用 blackisort 自动强制执行一致的代码风格。所有代码注释和文档均遵循 Google Python 风格指南 以保持清晰度和一致性。

在提交之前,使用以下命令使代码保持相同的格式。

black . && isort .

致谢

该项目基于 LTNTorch 项目,并使用 Visual Genome 数据库进行数据提取。该项目使用 YOLOOneFormer 模型进行对象检测和分割。

许可证

该项目根据 GNU3.0 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。