🚀 大规模食品图像分割基准
本项目构建了一个新的食品图像数据集FoodSeg103,包含7118张图像。同时提出了一种多模态预训练方法ReLeM,为分割模型赋予丰富的语义食品知识。项目使用多种语义分割方法进行评估,为细粒度食品图像理解提供了基准。
🚀 快速开始
若要快速上手本项目,可参考以下步骤:
- 安装:请参考 get_started.md 进行安装。
- 数据集下载:从 链接 下载文件,并将数据解压到
./data
文件夹(./data/FoodSeg103/
),密码为:LARCdataset9947。
- 训练与测试:参考后续 “Train & Test” 章节的脚本进行模型的训练和测试。
✨ 主要特性
- 新数据集:构建了包含7118张图像的食品图像数据集FoodSeg103,并标注了104个食材类别,每张图像平均有6个食材标签和像素级掩码。
- 多模态预训练方法:提出了名为ReLeM的多模态预训练方法,为分割模型赋予丰富的语义食品知识。
- 多方法评估:使用三种流行的语义分割方法(基于膨胀卷积、基于特征金字塔和基于视觉Transformer)作为基线,并在新数据集上进行评估。
📦 安装指南
请参考 get_started.md 进行安装。
💻 使用示例
基础用法
以下是训练脚本的基础用法:
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 --master_port=${PORT:-300} tools/train.py --config [config] --work-dir [work-dir] --launcher pytorch
示例:
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 --master_port=${PORT:-300} tools/train.py --config configs/foodnet/SETR_Naive_768x768_80k_base_RM.py --work-dir checkpoints/SETR_Naive_ReLeM --launcher pytorch
高级用法
以下是测试脚本的使用示例,用于在训练好的模型上进行评估:
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 --master_port=${PORT:-999} tools/test.py [config] [weights] --launcher pytorch --eval mIoU
示例:
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 --master_port=${PORT:-999} tools/test.py checkpoints/SETR_Naive_ReLeM/SETR_Naive_768x768_80k_base_RM.py checkpoints/SETR_Naive_ReLeM/iter_80000.pth --launcher pytorch --eval mIoU
📚 详细文档
数据集
请从 链接 下载文件,并将数据解压到 ./data
文件夹(./data/FoodSeg103/
),密码为:LARCdataset9947。
排行榜
请参考 排行榜 了解更多信息。
基准和模型库
编码器 |
解码器 |
裁剪尺寸 |
批量大小 |
mIoU |
mAcc |
链接 |
R-50 |
FPN |
512x1024 |
8 |
27.8 |
38.2 |
模型+配置 |
ReLeM-R-50 |
FPN |
512x1024 |
8 |
29.1 |
39.8 |
模型+配置 |
R-50 |
CCNet |
512x1024 |
8 |
35.5 |
45.3 |
模型+配置 |
ReLeM-R-50 |
CCNet |
512x1024 |
8 |
36.8 |
47.4 |
模型+配置 |
PVT-S |
FPN |
512x1024 |
8 |
31.3 |
43.0 |
模型+配置 |
ReLeM-PVT-S |
FPN |
512x1024 |
8 |
32.0 |
44.1 |
模型+配置 |
ViT-16/B |
Naive |
768x768 |
4 |
41.3 |
52.7 |
模型+配置 |
ReLeM-ViT-16/B |
Naive |
768x768 |
4 |
43.9 |
57.0 |
模型+配置 |
ViT-16/B |
PUP |
768x768 |
4 |
38.5 |
49.1 |
模型+配置 |
ReLeM-ViT-16/B |
PUP |
768x768 |
4 |
42.5 |
53.9 |
模型+配置 |
ViT-16/B |
MLA |
768x768 |
4 |
45.1 |
57.4 |
模型+配置 |
ReLeM-ViT-16/B |
MLA |
768x768 |
4 |
43.3 |
55.9 |
模型+配置 |
ViT-16/L |
MLA |
768x768 |
4 |
44.5 |
56.6 |
模型+配置 |
Swin-S |
UperNet |
512x1024 |
8 |
41.6 |
53.6 |
模型+配置 |
Swin-B |
UperNet |
512x1024 |
8 |
41.2 |
53.9 |
模型+配置 |
ReLeM
我们基于 im2recipe 的实现进行了小修改,在 Recipe1M+ 数据集(移除了FoodSeg103的测试图像)上训练了基于食谱信息的模型。由于数据量巨大(>35G),我可能会稍后上传lmdb文件。
使用8张Tesla-V100显卡训练一个ReLeM ViT-Base模型大约需要2 - 3周时间,因此强烈建议使用我预训练好的模型(链接)。
🔧 技术细节
训练策略
- PVT模型:使用逐步学习策略进行训练,因为发现该策略可以获得更高的性能。
- 其他基线模型:采用默认设置进行训练。
- ReLeM模型:由于时间限制,使用Recipe1M训练ReLeM-PVT-S,而其他ReLeM模型使用Recipe1M+进行训练。
📄 许可证
本项目采用 Apache 2.0许可证 发布。
引用
如果您在研究中发现本项目有用,请考虑引用:
@inproceedings{wu2021foodseg,
title={A Large-Scale Benchmark for Food Image Segmentation},
author={Wu, Xiongwei and Fu, Xin and Liu, Ying and Lim, Ee-Peng and Hoi, Steven CH and Sun, Qianru},
booktitle={Proceedings of ACM international conference on Multimedia},
year={2021}
}
其他问题
如果在使用软件过程中遇到其他问题,可以查看原始的mmsegmentation文档(链接)获取更多详细信息。
致谢
本项目中的分割软件主要基于 segmentation 进行扩展开发。