《百度架构师手把手带你零基础实践深度学习》学习体会

《百度架构师手把手带你零基础实践深度学习》学习体会

初次使用深度学习框架

百度飞桨应该是国内首个开源开放、技术领先、功能完备的产业级深度学习平台,我也是首次接触类似的学习框架,有兴趣体验一下的小伙伴可以登录以下链接https://www.paddlepaddle.org.cn/

关于课程

如果想对机器学习和深度学习进行学习,我个人建议还是先补充基本的理论知识,可以在B站上搜索浙大的研究生机器学习课程,其次很多大佬的课程也都可以搜索到。之后可以在与飞桨配套的学习平台AI Studio上进行公开课的学习,从机器学习、深度学习、强化学习到迁移学习都有详细的公开课训练营,每天可领取12小时的GPU算力,实操和理论课程相互结合。配套的每日作业和比赛我觉得非常锻炼自己的能力。对了,一些常用的数据集我们都可以在AI Studio上找到,大部分课程也会针对这些数据集开展教学。

AI识虫竞赛感悟

由于自己也是不久前才接触深度学习这一块内容,理论部分学习应该反复不停的去加深理解,在这次训练营的课程中,最后的AI识虫竞赛,老师建议可以在YOLO V3的目标检测算法上进行改进,比如说替换backbone骨干网络,可以是resnet/mobilenet等等,或者使用Faster RCNN来克服yolov3算法对小目标检测不精确的缺点,能力所限只是初步的了解了提到的网络的工作原理,在想办法用代码实现的时候困难确实很大,所以最后的准确率最高一次也就是77.8,baseline的基础上提高一个百分点,看着大佬们的99%感叹。后续会加深这方面的学习,在下一次训练营中争取拿到好的成绩。

一些改进想法

1.数据融合
下述代码仅实现了图像的融合,在数据处理的时候为了统一数据格式,我们把真实框与标签的列表固定为了50,图像融合后我认为还需要把两个图片的真实框和标签也进行扩充,时间问题不能再竞赛之前完成了,留待后续对代码进行改进。

### 数据融合
def random_mixup(img, img1, gtboxes, gtlabels, gt_boxes1, gt_labels1):
    alpha = 5
    lam = np.random.beta(alpha,alpha)# 类高斯分布
    height = max(img1.shape[0],img2.shape[0])
    width = max(img1.shape[1],img2.shape[1])
    mix_img = np.zeros(shape = (height,width,3),dtype ='float32')
    mix_img[:img1.shape[0], :img1.shape[1], :] = img1.astype('float32') * lam
    mix_img[:img2.shape[0], :img2.shape[1], :] += img2.astype('float32') * (1. - lam)
    mix_img = mix_img.astype('uint8')
    # mix_gtboxes = 
    # mix_gtlabels = 
    
    return mix_img

2.替换backbone网络,借用了这篇文章的想法AI识虫分享 (基于YoloV3的目标检测和SeResnet的分类矫正)文中提到的object365数据集的预训练模型,原谅小白还不知道怎么利用,留待改进,我会很快回来的。还有文中提到的生产者消费者模式执行多进程数据加载,能够有效的增加训练速度,需要再去了解。

3.修改预测框和锚框的选择标准,通常我们使用的都是交并比IOU的方式,可以参考这篇知乎文章IoU、GIoU、DIoU、CIoU损失函数的那点事儿

后续

近期会把相关的想法实现并尝试看看结果!
如果有兴趣了解paddle或者深度学习的小伙伴可以留言一起学习,加油吧少年!

猜你喜欢

转载自blog.csdn.net/weixin_43357695/article/details/108290380