目录
目录README.md

Jittor 赛题二 大规模无监督语义分割赛题

简介

本项目包含了第三届计图挑战赛 赛题二 大规模无监督语义分割赛题 的代码实现。

本项目的特点是:采用了 PASS 模型(Large-scale unsupervised semantic segmentation)的 Jittor 版代码作为 Baseline 方法对图像进行大规模无监督语义分割处理,该程序会推理出测试集中图片对应的伪标签分割图,评测服务器使用统一提供的匹配算法完成匹配,得到最终的语义分割图。

安装

本项目可在 1 张 RTX3090 上运行,训练时间约为 24 小时。

运行环境

  • ubuntu 20.04 LTS
  • python >= 3.7
  • jittor >= 1.3.0

安装依赖

执行以下命令安装 python 依赖

pip install -r requirements.txt

数据预处理

训练:将训练数据下载解压到 <root>/ImageNetS50 下即可。

测试:将测试数据 A(或测试数据 B)下载解压,并重命名放到 <root>/ImageNetS50/test 下即可。

数据集的文件树形图应当如下:

<root>/ImageNetS50
├── test
│   ├── n01443537
│   │   ├── ILSVRC2012_val_00000262.JPEG
│   │   └── ...
│   └──...
├── train
├── validation
└── validation-segmentation

训练

简单版:直接在 <root> 位置运行 train.sh

<root> 位置依次运行以下命令:

./scripts/luss50_pass/1_pretrain.sh
./scripts/luss50_pass/2_pixel_attention.sh
./scripts/luss50_pass/3_cluster.sh
./scripts/luss50_pass/4_eval.sh

然后运行

python ./scripts/best_threshold.py

得到 result_thresholds.png,然后找到最优的 threshold 值,将 5_infer_pixel_attention.sh 的第 32 行 -t 后面的数值修改为这个 threshold 值。

继续运行:

./scripts/luss50_pass/5_infer_pixel_attention.sh
./scripts/luss50_pass/6_finetune.sh
./scripts/luss50_pass/7_eval.sh

推理

简单版:直接在 <root> 位置运行 test.py

生成测试集上的结果可以运行以下命令:

sh scripts/test.sh

测试结果 test.zip 被保存在 weights/pass50/pixel_finetuning/test.zip 中。

致谢

此项目直接在赛题提供的 Baseline 上做了微小更改。

关于

基于 PASS 模型的 Jittor 版本 Baseline 编写的大规模无监督语义分割赛题代码

160.4 MB
邀请码