# 猫狗大战
数据集下载:https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition/data
下载后在根目录解压即可
各程序运行用时及成功后截图见success screenshot文件
## 运行环境
Python 3.6,Tensorflow-gpu 1.4,Pillow库
论文中使用的是配置了2个Tesla M60的美团云GPU主机
由于截图时美团云GPU主机售罄,故success screenshot文件中改为使用配置了1个Tesla P100的Google云GPU主机
## 数据分析
切换至data_analysis目录下
#### 分析训练集图片尺寸
python data_analysis.py
#### 分析测试集图片尺寸
python data_analysis.py --path ../test
#### 创建训练集与测试集样本以用于特征观察(已存在)
python create_sample.py
#### 异常数据处理
依赖于基准模型,故放在微调基准模型后介绍
## 从头训练
切换至train_from_beginning目录下
#### 创建小数据集
python create_train_small_set.py
#### 创建验证集
python create_verification_set.py
#### 训练
python train.py
参数设置
* train_dir: 文件夹地址
  训练集的位置,默认为 train_s
* checkpoint_path: 文件夹地址
  checkpoint保存位置,默认为 checkpoint
* data_preprocess: 0..8
  数据预处理方式,默认为 8。0为初始处理;1为图像标准化处理;2为长宽分别裁剪4/5;3为长宽分别裁剪3/4。
  4-8在长宽分别裁剪3/4的基础上:4增加了随机水平翻转;5增加了随机覆盖;6增加了随机亮度与对比度;
  7增加了随机饱和度与色差;8增加了随机水平翻转,随机亮度与对比度
* net_mode: 0..2
  网络结构,默认为 0。0为Resnet_v2_18;1为Resnet_v2_34;2为Resnet_v2_50
* opt_mode: 0..2
  优化器类型,默认为 1。0为GradientDescentOptimizer;1为MomentumOptimizer;2为AdamOptimizer
* lr_mode: 0..5
  学习速率,默认为 1。0为固定0.01;1为固定0.001;2为固定0.0001;3为固定比率衰减;4为自动衰减;5为周期性余弦衰减
* batch_size: 正整数
  每批次数据大小,默认为64
#### 验证
python verify.py
参数设置
* checkpoint_path: 文件夹地址
  checkpoint保存位置
* net_mode: 0..2
  网络结构,默认为 0。0为Resnet_v2_18;1为Resnet_v2_34;2为Resnet_v2_50
#### 测试,结果输出到本目录下的 output.csv
python test.py
参数设置
* checkpoint_path: 文件夹地址
  checkpoint保存位置
* net_mode: 0..2
  网络结构,默认为 0。0为Resnet_v2_18;1为Resnet_v2_34;2为Resnet_v2_50
## 迁移学习
切换至transfer_learning目录下,运行文件时需要再手动修改配置的地方以 \*\*\* 标明
#### 创建小数据集
python create_train_small_set.py
python convert_data.py --dataset_dir=train_s --type=0
#### 下载预训练模型
wget http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz
wget http://download.tensorflow.org/models/resnet_v1_50_2016_08_28.tar.gz
tar zxvf vgg_16_2016_08_28.tar.gz
tar zxvg resnet_v1_50_2016_08_28.tar.gz
#### 微调基准模型Vgg16
python train.py --train_dir=checkpoint_vgg16 --dataset_dir=train_s --dataset_size=1500 --model_name=vgg_16 --checkpoint_path=vgg_16.ckpt --checkpoint_exclude_scopes=vgg_16/fc8 --trainable_scopes=vgg_16/fc8 --max_number_of_steps=3000 --batch_size=16 --learning_rate=0.01 --save_interval_secs=600 --log_every_n_steps=100 --optimizer=rmsprop --weight_decay=0.00004
#### 可能的异常数据获取,获取后默认存放于outliers下(已存在)
python analysis_outliers.py --checkpoint_path checkpoint_vgg16 --model_name vgg_16 --infile ../train
#### 异常数据处理
python handle_outliers_image.py
#### 创建全数据集
python create_train_whole_set.py
python convert_data.py --dataset_dir=train --type=0
#### 微调Resnet_v1_50
python train.py --train_dir=checkpoint_resnet_v1_50 --dataset_dir=train_s --dataset_size=1500 --model_name=resnet_v1_50 --checkpoint_path=resnet_v1_50.ckpt --max_number_of_steps=3000 --batch_size=16 --learning_rate=0.001 --save_interval_secs=300 --log_every_n_steps=100 --optimizer=adam --weight_decay=0.00004 --checkpoint_exclude_scopes=resnet_v1_50/logits --trainable_scopes=resnet_v1_50/logits_new, resnet_v1_50/block4
使用全训练集时需将训练参数dataset_dir设为train;将dataset_size设为全训练集的图片数量;将max_number_of_steps适当调高(如12000)
模型微调方式的设置:
* 用新输出层替换旧输出层:在nets/resnet_v1.py中将旧输出层注释掉;训练参数trainable_scopes设为resnet_v1_50/logits_new
* 用带隐层的新输出层替换旧输出层:在nets/resnet_v1.py中保留旧输出层;训练参数checkpoint_exclude_scopes设为resnet_v1_50/logits;trainable_scopes设为resnet_v1_50/logits_new, resnet_v1_50/logits
* 加入新输出层,保留旧输出层并对其进行训练:在nets/resnet_v1.py中保留旧输出层;训练参数checkpoint_exclude_scopes设为空;trainable_scopes设为resnet_v1_50/logits_new, resnet_v1_50/logits
* 加入新输出层,保留旧输出层而不对其进行训练:在nets/resnet_v1.py中保留旧输出层;训练参数checkpoint_exclude_scopes设为空;trainable_scopes设为resnet_v1_50/logits_new
* 用新输出层替换旧输出层,并训练最后一个block:在nets/resnet_v1.py中将旧输出层注释掉;训练参数trainable_scopes设为resnet_v1_50/logits_new,resnet_v1_50/block4
#### 创建验证集
python create_verification_set.py
python convert_data.py --dataset_dir=verify --type=1
#### 验证Resnet_v1_50
python verify.py --checkpoint_path=checkpoint_resnet_v1_50 --eval_dir=verify/data --dataset_dir=verify --dataset_size=10000 --model_name=resnet_v1_50
#### 测试Resnet_v1_50
python test.py --checkpoint_path checkpoint_resnet_v1_50 --model_name resnet_v1_50 --infile ../test
## 结果统计
切换至results_show目录下
python draw_results.py
## Android
前往 https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android 下载Tensorflow Android Camare demo,
用android文件夹中的文件替换demo中assets文件夹的原始文件,并在 ClassifierActivity.java 文件中进行相应修改:
* INPUT_SIZE 设为 208
* IMAGE_MEAN 设为 0
* IMAGE_STD 设为 1
* MODEL_FILE 设为 "file:///android_asset/cats_and_dogs.pb"
* LABEL_FILE 设为 "file:///android_asset/cats_and_dogs.txt"
## 微信小程序
切换至weixin目录下
将相同迁移学习模型下的checkpoint相关文件移至weixin/checkpoint目录下,运行 python get_img_category.py 将识别结果输出至控制台。
搭建服务端时,服务端将收到的图片保存,并调用 python get_img_category.py --infile *图片文件位置* 来获取识别结果。
越接近0越可能为猫,越接近1越可能为狗
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
毕设&课设&项目&实训-基于Android和微信小程序端的简单猫狗图像分类.zip (1240个子文件)
outliers.csv 2.29MB
286_cat.1772.jpg 66KB
1.000_cat.1772.jpg 66KB
7261.jpg 62KB
1.000_cat.11399.jpg 57KB
2559.jpg 56KB
129_cat.10740.jpg 55KB
0.001_cat.10740.jpg 55KB
391_dog.2317.jpg 54KB
9357.jpg 53KB
9171.jpg 52KB
432_dog.8781.jpg 52KB
102_cat.11567.jpg 51KB
0.982_cat.11567.jpg 51KB
dog.10701.jpg 51KB
187_cat.5601.jpg 50KB
0.000_cat.5601.jpg 50KB
173_cat.9626.jpg 49KB
1.000_cat.9626.jpg 49KB
dog.11739.jpg 48KB
0.997_dog.2507.jpg 47KB
88_dog.2507.jpg 47KB
0.000_dog.8214.jpg 47KB
0.010_dog.3120.jpg 46KB
55_dog.3120.jpg 46KB
dog.6446.jpg 46KB
1.000_cat.5355.jpg 46KB
304_cat.1870.jpg 45KB
dog.11936.jpg 45KB
1_cat.7550.jpg 44KB
0.296_cat.7550.jpg 44KB
dog.5282.jpg 44KB
1.000_dog.173.jpg 43KB
226_dog.173.jpg 43KB
dog.5076.jpg 43KB
468_cat.1532.jpg 43KB
1.000_dog.2555.jpg 43KB
158_dog.2555.jpg 43KB
754.jpg 42KB
2730.jpg 42KB
275.jpg 42KB
0.998_dog.11538.jpg 42KB
108_dog.11538.jpg 42KB
343_dog.2570.jpg 42KB
1.000_dog.9137.jpg 42KB
214_dog.9137.jpg 42KB
407_cat.9695.jpg 42KB
1.000_dog.9391.jpg 41KB
172_dog.9391.jpg 41KB
358_cat.4688.jpg 41KB
0.000_dog.4411.jpg 41KB
140_dog.4411.jpg 41KB
0.000_dog.9113.jpg 41KB
308_dog.9113.jpg 41KB
461_cat.5973.jpg 41KB
1.000_cat.5973.jpg 41KB
dog.2002.jpg 41KB
7520.jpg 41KB
1.000_cat.10266.jpg 40KB
0.000_dog.12353.jpg 40KB
458_dog.12353.jpg 40KB
1.000_cat.5418.jpg 40KB
446_cat.5834.jpg 40KB
1.000_cat.1575.jpg 40KB
469_cat.10521.jpg 40KB
1.000_cat.10521.jpg 40KB
379_cat.503.jpg 40KB
1.000_cat.503.jpg 40KB
436_dog.8132.jpg 40KB
12161.jpg 39KB
0.000_dog.5563.jpg 39KB
12267.jpg 38KB
10263.jpg 38KB
0.998_dog.11694.jpg 38KB
120_dog.11694.jpg 38KB
dog.3079.jpg 38KB
8021.jpg 38KB
dog.7388.jpg 38KB
1.000_dog.8206.jpg 38KB
229_dog.8206.jpg 38KB
0.000_dog.813.jpg 38KB
cat.9165.jpg 38KB
11755.jpg 37KB
dog.8137.jpg 37KB
4964.jpg 37KB
488_cat.3973.jpg 36KB
1.000_cat.10609.jpg 36KB
1.000_cat.3973.jpg 36KB
dog.3954.jpg 36KB
401_cat.1178.jpg 36KB
328_cat.12493.jpg 36KB
1.000_cat.12493.jpg 36KB
dog.8432.jpg 36KB
dog.3699.jpg 36KB
174_cat.8369.jpg 36KB
0.000_cat.8369.jpg 36KB
74_cat.2216.jpg 36KB
0.996_cat.2216.jpg 36KB
0.000_dog.1697.jpg 36KB
266_dog.5802.jpg 35KB
共 1240 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
资源评论
妄北y
- 粉丝: 9716
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功