深度学习实验七:AI识虫比赛

一、实验目的

1.运行飞桨“AI识虫比赛”(https://aistudio.baidu.com/projectdetail/5215677),分析代码及实验结果
2.参考"提升方案",优化给定模型代码,得到更好的测试结果,并比较分析优化策略与结果的关系。

二、实验环境

python 3.7、PaddlePaddle 2.3.2、GPU A100 40GB

三、实验内容

1.运行飞桨“AI识虫比赛”

①查看环境并准备数据

# 查看当前挂载的数据集目录, 该目录下的变更重启环境后会自动还原
# View dataset directory. This directory will be recovered automatically after resetting environment. 
!ls /home/aistudio/data
-----------------------
# 查看工作区文件, 该目录下的变更将会持久保存. 请及时清理不必要的文件, 避免加载过慢.
# View personal work directory. All changes under this directory will be kept even after reset. Please clean unnecessary files in time to speed up environment loading.
!ls /home/aistudio/work
-----------------------
# 将数据解压缩到 /home/aistudio/work目录下面
# **初次运行时需要将代码注释取消**
!unzip -d /home/aistudio/work /home/aistudio/data/data67206/insects.zip
-----------------------
# 进入工作目录  /home/aistudio/work
%cd  /home/aistudio/work
-----------------------
# 查看工作目录下的文件列表
!ls

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

②启动训练

通过运行train.py文件启动训练,训练好的模型参数会保存在/home/aistudio/work目录下。
先看一下train.py中值得关注的代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

③启动评估

(1)在测试集test上评估
在这里插入图片描述
(2)在验证集val上评估
在这里插入图片描述

④计算精度指标(MAP得分为71.97)

在这里插入图片描述

⑤预测单张图片并可视化预测结果

在这里插入图片描述

# 可视化检测结果
from PIL import Image
import matplotlib.pyplot as plt

img = Image.open("/home/aistudio/work/output_pic.png")

plt.figure("Object Detection", figsize=(15, 15)) # 图像窗口名称
plt.imshow(img)
plt.axis('off') # 关掉坐标轴为 off
plt.title('Bugs Detestion') # 图像题目
plt.show()

在这里插入图片描述

2.参考"提升方案",优化给定模型代码,得到更好的测试结果,并比较分析优化策略与结果的关系

飞桨给出的提升方案有:

  1. 使用其它模型如faster rcnn等 (难度系数5)
  2. 使用数据增多,可以对原图进行翻转、裁剪等操作 (难度系数3)
  3. 修改anchor参数的设置,教案中的anchor参数设置直接使用原作者在coco数据集上的设置,针对此模型是否要调整 (难度系数3)
  4. 调整优化器、学习率策略、正则化系数等是否能提升模型精度 (难度系数1)

个人能力有限,只选择了后面两种提升方案对代码进行优化:

①修改anchor参数的设置

YOLOv3在每个区域的中心位置产生3个锚框 (anchor box),在3个层级的特征图上产生锚框的大小分别为P2 [(10×13),(16×30),(33×23)],P1 [(30×61),(62×45),(59× 119)],P0[(116 × 90), (156 × 198), (373 × 326]。越往后的特征图上用到的锚框尺寸也越大,能捕捉到大尺寸目标的信息;越往前的特征图上锚框尺寸越小,能捕捉到小尺寸目标的信息。
anchor实际上是由k-means算法在所用数据集上聚类得到的,所以我考虑计算林业病虫数据集的anchor。参考了这篇博客的代码(https://blog.csdn.net/m_buddy/article/details/82926024),其中需要设置CLUSTERS参数,它代表你要得到的anchor box个数,比如这里用到了三个层级的特征图,每个特征图对应三个anchor box,所以设置为9。使用得到的新anchor后,mAP得分提高了8个百分点左右。
在这里插入图片描述
在这里插入图片描述

②调整优化器、学习率策略、正则化系数等判断是否能提升模型精度

基础代码中对学习率和学习率策略,正则化系数的选择已经算是不错的选择,尝试更改学习率策略,反而得出更差的结果。
对于训练结果,epoch还是挺重要的,课程基础代码中MAX_epoch设置为200,训练时间大概需要11个小时,能够得出一个不错的结果。为了缩短训练时间,后面选择epoch=50进行训练,虽然进行了改进方案的优化,但最终结果也没有提升多少。
参考博客:https://blog.csdn.net/LittleKlein/article/details/104578627
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moonee_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值