# Zero-Shot-Learning
**Repository Path**: da_da_pong/Zero-Shot-Learning
## Basic Information
- **Project Name**: Zero-Shot-Learning
- **Description**: 零样本学习
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-08-20
- **Last Updated**: 2021-08-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 零样本学习
零样本学习(zero-shot learning)是在已知类别上训练物体识别模型,要求模型能够识别来自未知类别的样本。对图像理解、(从已知类别到未知类别的)知识迁移具有重要意义。
## 依赖
- Python 3.5
- PyTorch 0.4
## 数据集
使用 AI Challenger 2018 的图像属性数据集,本数据集共78,017张图片、230个类别、359种属性。
图片可划分为5个超类(super-class),分别是动物(Animals)、水果(Fruits)、交通工具(Vehicles)、电子产品(Electronics)、发型(Hairstyles)。其中,动物和水果属于自然产物,交通工具和电子产品属于人造物,发型属于抽象概念。每个超类分别包含A: 50, F: 50, V: 50, E: 50, H: 30 个类别,总计230个类别。对于每个超类(super-class),分别设计了A: 123, F: 58, V: 81, E: 75, H: 22 个属性,共359个属性。每张图片只包含一个前景物体,标注了标签和物体包围框。对于每个类别,随机挑选了20张图片进行属性标注。
- 训练集(seen classes):80%类别
- 测试集(unseen classes):20%类别
标注示例图:

你可以从[这里](https://challenger.ai/dataset/lad2018)下载该数据集。
## 用法
### 数据预处理
提取78,017张图片及相应的标注文件:
```bash
$ python pre-process.py
```
### 训练
```bash
$ python train.py
```
如果想可视化训练过程,请执行:
```bash
$ tensorboard --logdir path_to_current_dir/logs
```
各超类训练结束最佳的验证集准确率和损失为:
|度量|动物|水果|交通工具|电子产品|发型|
|---|---|---|---|---|---|
|ACCURACY|97.222|82.755|92.500|90.790|53.854|
|LOSS|0.025|0.044|0.023|0.051|0.077|
### Demo
下载下列预训练模型放在 models 目录然后执行:
- [动物](https://github.com/foamliu/Zero-Shot-Learning/releases/download/v1.0/BEST_Animals_checkpoint.tar)
- [水果](https://github.com/foamliu/Zero-Shot-Learning/releases/download/v1.0/BEST_Fruits_checkpoint.tar)
- [交通工具](https://github.com/foamliu/Zero-Shot-Learning/releases/download/v1.0/BEST_Vehicles_checkpoint.tar)
- [电子产品](https://github.com/foamliu/Zero-Shot-Learning/releases/download/v1.0/BEST_Electronics_checkpoint.tar)
- [发型](https://github.com/foamliu/Zero-Shot-Learning/releases/download/v1.0/BEST_Hairstyles_checkpoint.tar)
```bash
$ python demo.py -s "Animals"
```
此处超类可以是5个超类中任意一个。
#### 动物
|原图|属性标签|类别|
|---|---|---|
|
|有柔软的皮肤, 是小的(比猪小), 是弱小的, 是胆小的, 是群居动物, 是冷血动物, 生活在水里|Label_A_37|
|
|是无毛的, 有柔软的皮肤, 是小的(比猪小), 吃浮游生物, 是弱小的, 是胆小的, 是群居动物, 是安静的, 是冷血动物, 是有毒的, 生活在海洋里, 生活在水里|Label_A_36|
|
|有柔软的皮肤, 有胡须, 是小的(比猪小), 有牙齿, 有耳朵, 有鼻子, 能游泳, 能跳跃, 吃肉, 是活跃的, 是恒温动物|Label_A_01|
|
|有柔软的皮肤, 是大的(比猪大), 有眼睛, 有鼻子, 有脊椎, 能游泳, 吃鱼, 吃肉, 有肌肉, 是友好的, 是活跃的, 是捕食者, 是群居动物, 是安静的|Label_A_42|
|
|是毛茸茸的, 有胡须, 有长的腿, 有四条腿, 有短脖子, 有牙齿, 有舌头, 有眼睛, 有耳朵, 有鼻子, 有脊椎, 能行走, 行动快速, 是强壮的, 有肌肉, 是活跃的, 是恒温动物, 能产奶, 生活在地面上|Label_A_01|
|
|是灰色的, 是光滑的, 有舌头, 有眼睛, 有耳朵, 有鼻子, 有脊椎, 能行走, 吃种子, 行动快速, 有肌肉, 是活跃的|Label_A_24|
|
|有柔软的皮肤, 是群居动物, 是安静的, 是有毒的|Label_A_36|
|
|有柔软的皮肤, 有羽毛, 是小的(比猪小), 有短的腿, 是两条腿走路的, 只有两条腿, 有两个胳膊, 有长的翅膀, 有爪子, 有长脖子, 有短尾巴, 有短的喙, 有舌头, 有眼睛, 有耳朵, 有鼻子, 有脊椎, 能游泳, 能行走, 能下蛋, 能捕鱼, 吃植物, 吃昆虫, 吃树叶, 吃种子, 行动缓慢, 是弱小的, 有肌肉, 是友好的, 是胆小的, 是活跃的, 是群居动物, 是吵闹的, 是恒温动物, 生活在平原, 是家养动物|Label_A_27|
|
|有柔软的皮肤, 是光滑的, 是小的(比猪小), 只有两条腿, 有爪子, 有短脖子, 有尖的喙, 有舌头, 有耳朵, 有鼻子, 有脊椎, 能飞行, 吃昆虫, 吃树叶, 吃肉, 是弱小的, 有肌肉, 是友好的, 是吵闹的, 是恒温动物|Label_A_30|
|
|是毛茸茸的, 有柔软的皮肤, 有长的腿, 有短脖子, 有牙齿, 有舌头, 有眼睛, 有耳朵, 吃肉, 能产奶, 生活在地面上|Label_A_22|
#### 水果
|原图|属性标签|类别|
|---|---|---|
|
|味道是甜的|Label_A_14|
|
|是红色的, 味道是甜的, 是原生的(未被加工过的), 是常见的, 可直接食用的(不需要加工), 含水量高, 有果核|Label_A_47|
|
|是黄色的, 味道是甜的, 味道是酸的, 是完整的, 是原生的(未被加工过的), 是常见的, 含水量高, 有果核, 产于热带, 长在树上|Label_A_27|
|
|是红色的, 是小的(比苹果小), 味道是甜的, 是完整的, 是软的, 是常见的, 可直接食用的(不需要加工), 含水量高, 长在树上|Label_A_10|
|
|是红色的, 味道是甜的, 有皮, 可直接食用的(不需要加工), 有果核|Label_A_11|
|
|是红色的, 味道是甜的, 是原生的(未被加工过的), 是软的, 是常见的, 含水量高, 有果核|Label_A_10|
|
|味道是甜的, 是光滑的, 是完整的|Label_A_44|
|
|是红色的, 味道是甜的, 味道是酸的, 是完整的, 是原生的(未被加工过的), 是软的, 是常见的, 可直接食用的(不需要加工), 含水量高, 长在树上|Label_A_33|
|
|味道是甜的|Label_A_46|
|
|是红色的, 味道是甜的, 是完整的, 是原生的(未被加工过的), 是常见的, 含水量高|Label_A_47|
#### 交通工具
|原图|属性标签|类别|
|---|---|---|
|
|是长的, 有座位, 有发动机, 有喇叭, 有方向盘, 有刹车, 有照明灯, 能以移动, 能被驾驶, 是安全的, 是金属造的, 是塑料造的, 是贵的|Label_A_13|
|
|是大的(比汽车大), 有数吨重, 是长的, 有门, 有座位, 有窗户, 有发动机, 有喇叭, 有照明灯, 能以移动, 能被驾驶, 能载少量(≤10)乘客, 是金属造的, 是塑料造的, 是贵的|Label_A_13|
|
|是大的(比汽车大), 是长的, 有门, 有窗户, 有发动机, 有方向盘, 有照明灯, 能以移动, 能被驾驶, 可用于民用, 是安全的, 是金属造的, 是塑料造的, 是贵的|Label_A_12|
|
|有方向盘, 能以移动, 能被驾驶, 可用于民用, 可在城市道路上使用, 是危险的, 是金属造的, 是贵的|Label_A_42|
|
|是长的, 有门, 有座位, 有窗户, 有发动机, 有照明灯, 能以移动, 能被驾驶, 能载少量(≤10)乘客, 是金属造的, 是塑料造的, 是贵的|Label_A_13|
|
|是白色的, 有数吨重, 是长的, 速度快, 有门, 有座位, 有窗户, 有发动机, 有喇叭, 有方向盘, 有刹车, 有牌照, 有四个轮子, 有照明灯, 能以移动, 能被驾驶, 能载少量(≤10)乘客, 可用于救援, 可在城市道路上使用, 可在乡村道路上使用, 是安全的, 是金属造的, 是塑料造的, 是贵的|Label_A_13|
|
|是长的, 有门, 有座位, 有窗户, 有发动机, 能以移动, 能被驾驶, 可用于民用, 是金属造的, 是塑料造的, 是贵的|Label_A_35|
|
|有数吨重, 是长的, 有门, 有座位, 有窗户, 有发动机, 有刹车, 有照明灯, 能以移动, 能被驾驶, 是金属造的, 是塑料造的, 是贵的|Label_A_48|
|
|是白色的, 有数吨重, 是长的, 速度快, 有座位, 有窗户, 有喇叭, 有照明灯, 能以移动, 能被驾驶, 能载少量(≤10)乘客, 可用于救援, 可在乡村道路上使用, 是安全的, 是金属造的, 是塑料造的, 是贵的|Label_A_16|
|
|是危险的, 是塑料造的|Label_A_31|
#### 电子产品
|原图|属性标签|类别|
|---|---|---|
|
|可用于商业, 可用于家庭使用, 可用于个人使用, 是安全的, 是金属造的, 是塑料造的, 是常见的|Label_A_05|
|
|是黑色的, 是大的(比手机大), 可用于商业, 可用于办公, 可用于展示, 是安全的, 是金属造的, 是塑料造的, 是常见的|Label_A_02|
|
|可用于展示, 是安全的, 是金属造的, 是塑料造的, 是常见的|Label_A_43|
|
|可用于商业, 可用于家庭使用, 可用于个人使用, 是安全的, 是金属造的, 是塑料造的, 是常见的, 是可被随时移动的, 是小功率设备|Label_A_16|
|
|有数千克重, 有(电源)插头, 是安全的, 是金属造的, 是塑料造的, 是常见的|Label_A_02|
|
|是黑色的, 有(电源)插头, 有指示灯, 可用于商业, 可用于办公, 可用于安防, 是安全的, 是金属造的, 是塑料造的, 是常见的, 是安静的, 是小功率设备|Label_A_02|
|
|是小的(比手机小), 有腕带, 可用于商业, 可用于家庭使用, 可用于办公, 可用于展示, 可用于个人使用, 是金属造的, 是塑料造的, 是常见的, 是可被随时移动的, 是安静的, 是可以手持的|Label_A_47|
|
|是大的(比手机大), 可用于家庭使用, 是安全的, 是金属造的, 是塑料造的, 是常见的, 是安静的|Label_A_40|
|
|有指示灯, 可用于商业, 可用于展示, 是安全的, 是金属造的, 是塑料造的, 是常见的|Label_A_02|
|
|可用于商业, 可用于家庭使用, 可用于办公, 可用于个人使用, 是安全的, 是金属造的, 是塑料造的, 是常见的, 是小功率设备|Label_A_18|
#### 发型
|原图|属性标签|类别|
|---|---|---|
|
|适合皮肤白皙的人, 适合尖尖鼻子的人, 适合化浓妆的人, 容易变乱, 是简约的, 是否优雅|Label_A_22|
|
|适合小眼睛的人, 适合尖尖鼻子的人|Label_A_29|
|
|适合小眼睛的人, 适合皮肤白皙的人, 适合尖尖鼻子的人, 适合戴帽子的人, 适合戴耳环的人, 适合化浓妆的人, 容易变乱, 是简约的, 是否优雅, 是否性感, 是否纯净, 是否活泼|Label_A_12|
|
|适合小眼睛的人, 适合皮肤白皙的人, 适合尖尖鼻子的人, 适合化浓妆的人, 容易变乱|Label_A_09|
|
|适合小眼睛的人, 适合皮肤白皙的人, 适合尖尖鼻子的人, 适合化浓妆的人, 容易变乱, 是否优雅, 是否活泼|Label_A_09|
|
|适合皮肤白皙的人, 适合尖尖鼻子的人, 适合化浓妆的人|Label_A_22|
|
|适合小眼睛的人, 适合皮肤白皙的人, 适合尖尖鼻子的人|Label_A_15|
|
|适合皮肤白皙的人, 适合尖尖鼻子的人, 适合化浓妆的人, 是否性感|Label_A_24|
|
|适合小眼睛的人, 适合皮肤白皙的人, 适合尖尖鼻子的人, 适合化浓妆的人, 容易变乱, 是否优雅, 是否活泼|Label_A_12|
|
|适合小眼睛的人, 适合皮肤白皙的人, 适合尖尖鼻子的人, 是否优雅|Label_A_30|