说明文档
虹膜语义分割模型卡片
模型概述
本卡片内容涉及一个用于眼部语义分割的模型。当输入红外图像时,模型会根据其能区分的各类别为像素分配标签:eyeball(眼球)、iris(虹膜)、pupil(瞳孔)和 eyelashes(睫毛)。
模型架构
模型架构基于 UNet++ [1]。UNet++ 是一种完全卷积神经网络,专为图像语义分割而设计。它包含编码器和解码器,通过跳跃连接相连。编码器捕获不同空间分辨率的特征(利用跳跃连接),解码器则利用这些特征生成精确的分割掩码。值得注意的是,UNet++ 中的解码器比标准 UNet 模型具有更高的复杂度。
MobileNetV2 [2] 架构作为我们模型的编码器。在推理阶段,编码器产生五组特征图张量,每组对应不同的编码深度。后续特征图张量的空间维度相比前一组减少一半。例如,在深度 0 生成的张量维度为 [(batch_size, num_channels, height, width)],而在深度 1 生成的张量维度为 [(batch_size, num_channels, height / 2, width / 2)]。
解码器通过在每个解码层添加空间和通道"挤压与激励"(scSE)块 [3] 进行增强。
数据集
重要的是,没有使用任何 Worldcoin 用户数据来训练或微调 IRIS 流水线。相反,模型是使用研究数据集进行训练的。训练期间使用的数据集来自:
- ND-IRIS-0405 [4]
- CASIA-Iris-Interval [5]
- CASIA-Iris-Lamp [5]
- CASIA-Iris-Thousand [5]
- CASIA-Iris-Twins [5]
- IIT Delhi Iris Database (IITD) [6]
- LivDet2013-Iris [7]
- LivDet2015-Iris [8]
- LivDet2017-Iris [9]
- Multimedia University Iris Database (MMU) [10]
实验数据集共包含 18,431 张标注的红外图像。下表展示了训练语义分割模型时使用的数据集划分。
| 数据集类型 | 图像数量 |
|---|---|
| 训练集 | 14685 |
| 验证集 | 1880 |
| 测试集 | 1866 |
性能
语义分割性能
在整个数据集上测量
| 指标 | 数值 |
|---|---|
| eyeball_IoU | 0.986 |
| iris_IoU | 0.978 |
| pupil_IoU | 0.978 |
| eyelashes_IoU | 0.798 |
| mIoU | 0.943 |
| eyelashes_inside_iris_IoU | 0.791 |
| boundary_confidence_pupil | 0.965 |
| boundary_confidence_iris | 0.907 |
| chamfer_eyeball | 1.689 |
| chamfer_iris | 1.868 |
| chamfer_pupil | 0.680 |
在特定数据集上测量
| 名称 | test_IoU_eyeball | test_IoU_eyelashes | test_IoU_iris | test_IoU_pupil | test_boundary_confidence_iris | test_boundary_confidence_pupil | test_chamfer_dist_eyeball | test_chamfer_dist_iris | test_chamfer_dist_pupil | test_mIoU | test_mIoU_eyelashes_inside_iris |
|---|---|---|---|---|---|---|---|---|---|---|---|
| CASIA-Iris-Interval | 0.992 | 0.885 | 0.977 | 0.983 | 0.868 | 0.959 | 1.230 | 3.132 | 0.673 | 0.970 | 0.876 |
| CASIA-Iris-Lamp | 0.987 | 0.844 | 0.988 | 0.983 | 0.979 | 0.988 | 0.683 | 0.482 | 0.295 | 0.953 | 0.836 |
| CASIA-Iris-Thousand | 0.987 | 0.823 | 0.989 | 0.981 | 0.981 | 0.988 | 0.637 | 0.430 | 0.252 | 0.956 | 0.767 |
| CASIA-Iris-Twins | 0.986 | 0.837 | 0.986 | 0.981 | 0.966 | 0.984 | 0.998 | 0.865 | 0.710 | 0.949 | 0.840 |
| IITD | 0.990 | 0.868 | 0.975 | 0.979 | 0.843 | 0.944 | 3.424 | 3.564 | 0.939 | 0.966 | 0.861 |
| LivDet2013-Iris | 0.980 | 0.853 | 0.985 | 0.977 | 0.973 | 0.977 | 1.242 | 0.518 | 0.393 | 0.945 | 0.851 |
| LivDet2015-Iris | 0.978 | 0.844 | 0.984 | 0.974 | 0.955 | 0.958 | 1.524 | 0.794 | 0.608 | 0.938 | 0.870 |
| LivDet2017-Iris | 0.978 | 0.791 | 0.981 | 0.956 | 0.956 | 0.973 | 1.920 | 1.274 | 1.204 | 0.921 | 0.738 |
| MMU | 0.983 | 0.845 | 0.985 | 0.980 | 0.960 | 0.980 | 1.405 | 0.821 | 0.500 | 0.946 | 0.765 |
| ND-IRIS-0405 | 0.981 | 0.750 | 0.977 | 0.975 | 0.918 | 0.969 | 1.757 | 1.653 | 0.739 | 0.917 | 0.676 |
时间性能
本地机器
| 模型 | PyTorch CPU | PyTorch GPU | ONNX CPU | ONNX GPU |
|---|---|---|---|---|
| 时间 (ms) | 295 ± 4.52 | 12.5 ± 0.42 | 193 ± 0 | 12.2 ± 0.75 |
Orb 机器
| 模型 | TensorRT 32-bits | TensorRT 16-bits |
|---|---|---|
| 时间 (ms) | 115 ± 50.9 | 53.84 ± 7.8 |
如何使用模型
输入
模型期望输入一个维度为 Nx3x640x480 的张量封装的红外图像(分别表示批次大小、通道数、高度和宽度)。图像像素必须缩放至 1 / 255.0,并使用 z-score 归一化算法进行归一化。归一化过程对各通道分别使用均值 [0.485, 0.456, 0.406] 和标准差 [0.229, 0.224, 0.225]。需要注意的是,尽管红外图像本质上是灰度图,但包含三个通道乍看之下可能令人困惑。这种特殊设计源于训练过程中采用了迁移学习技术,使用了在 RGB 丰富的 ImageNet 数据集上预训练的 MobileNetV2 模型。
输出
模型输出一个维度为 Nx4x640x480 的张量,分别表示批次大小、分割类别、高度和宽度。张量的分割类别索引与对应类别名称的映射如下:
- 0:
eyeball(眼球) - 1:
iris(虹膜) - 2:
pupil(瞳孔) - 3:
eyelashes(睫毛)
对于每个类别,模型生成概率估计,表示给定像素归属于特定类别的可能性。
推理结果示例
注意:提供的输入图像在输入模型之前已按照前述处理方法进行了处理。此外,为了可视化目的,展示的红外图像已进行匿名化处理以保护用户身份。还需注意的是,推理过程是在原始、非匿名化版本的图像上进行的。
输入图像
<img src="https://github.com/worldcoin/open-iris/blob/main/docs/model_card/anonymized.png?raw=true" alt="匿名化输入图像" width=640 height=480>
输出掩码
注意:对每个结果概率矩阵应用了 0.5 的阈值,以生成每个类别的确定二值掩码。同时,每个输出的分割图都已调整为输入图像的分辨率。
<img src="https://github.com/worldcoin/open-iris/blob/main/docs/model_card/overlayed_segmaps.png?raw=true" alt="分割图">
局限性
通过对结果的深入分析,我们确定了分割模型性能下降的几种情况:
- 分割具有高镜面反射(通常来自眼镜)的图像可能导致较差的分割图预测。
- 模型训练所基于的数据是在受控环境下配合配合度高的用户采集的。因此,在实践中,模型对于以下情况预期会产生较差的分割图:视线偏移、眼睛未对准、模糊图像等。
延伸阅读
- Zhou, Z., Rahman Siddiquee, M. M., Tajbakhsh, N., & Liang, J. (2018). UNet++: A nested U-Net Architecture for Medical Image Segmentation. (https://arxiv.org/abs/1807.10165v1)
- Sandler, M., Howard, A., Zhu, M., Zhmoginov, A., & Chen, L. C. (2018). MobileNetV2: Inverted Residuals and Linear Bottlenecks. (https://arxiv.org/abs/1801.04381)
- Roy, A. G., Navab, N., & Wachinger, C. (2018). Recalibrating Fully Convolutional Networks with Spatial and Channel "Squeeze and Excitation" Blocks. (https://arxiv.org/abs/1808.08127v1)
- Bowyer, K. , Flynn, P. (2016), The ND-IRIS-0405 Iris Image Dataset (https://arxiv.org/abs/1606.04853)
- http://biometrics.idealtest.org/
- http://www4.comp.polyu.edu.hk/csajaykr/IITD/Database_Iris.htm
- D. Yambay, J.S. Doyle, K.W. Bowyer, A. Czajka, S. Schuckers Livdet-iris 2013 - iris liveness detection competition 2013
- D. Yambay, B. Walczak, S. Schuckers, A. Czajka Livdet-iris 2015 - iris liveness detection competition 2015
- D. Yambay, B. Becker, N. Kohli, D. Yadav, A. Czajka, K.W. Bowyer, S. Schuckers, R. Singh, M.Vatsa, A. Noore, D. Gragnaniello, C. Sansone, L. Verdoliva, L. He, Y. Ru, H. Li, N. Liu, Z. Sun, T. Tan Livdet iris 2017 - iris liveness detection competition 2017
- https://mmuexpert.mmu.edu.my/ccteo
Worldcoin/iris-semantic-segmentation
作者 Worldcoin
创建时间: 2023-12-12 16:16:27+00:00
更新时间: 2024-05-16 12:08:48+00:00
在 Hugging Face 上查看