本项目结合分割模型与逻辑张量网络,通过一阶逻辑公式和多层感知机网络,实现图像中物体关系的推理,提升图像内容分析能力。✨
- ✨图像分割与特征提取:使用来自 UltraLytics 的YOLO-Seg模型或来自 SHI-Labs 的 OneFormer模型对于输入图像进行分割和特征提取。
- ✨目标关系检测:使用来自LTNTorch的逻辑张量网络,将每一个目标转换为一个逻辑谓词,然后通过逻辑张量网络进行推理。
- ✨逻辑关系训练:使用Visual Genome数据库中的关系数据对逻辑张量网络进行训练。
- ✨推理结果输出:使用三元组的形式读取用户查找的关系,输出推理结果。
pip install -r requirements.train.txtpip 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 数据来提取图像信息及特征对信息。
该项目从关系数据中提取数据和目标位置,并提取图像数据以进行归一化。
项目使用 black和 isort 自动强制执行一致的代码风格。所有代码注释和文档均遵循 Google Python 风格指南 以保持清晰度和一致性。
在提交之前,使用以下命令使代码保持相同的格式。
black . && isort .该项目基于 LTNTorch 项目,并使用 Visual Genome 数据库进行数据提取。该项目使用 YOLO 和 OneFormer 模型进行对象检测和分割。

