“华为云杯”2020深圳开放数据应用创新大赛·生活垃圾图片分类(目标检测)
互联网+环保,大数据监测和垃圾分类有了新手段。 #生活知识# #生活感悟# #科技生活变迁# #互联网+#
代码和思路分享来自Github:https://github.com/selous123/yolov3-pytorch-custom
调ultralytics/yolov3这个炉子,目前b榜在0.74左右,一阶段准确率很高的网络了。前排大佬可能大部分都是基于MMdet的二阶段网络,Faster-RCNN,Cascade-RCNN等。
比赛数据集下载地址:链接: https://pan.baidu.com/s/1lh1D1wvXUV3rjJOUpWsBlA 提取码: znk3
MMdetection安装配置:
初识CV:mmdetection源码笔记汇总zhuanlan.zhihu.com
目标检测比赛的简单tricks:
初识CV:目标检测比赛中的tricks(已更新更多代码解析)zhuanlan.zhihu.com
华为云比赛链接:
华为云大赛平台competition.huaweicloud.com
【赛题背景】
2016年12月,深圳市城市管理和综合执法局发布了《深圳市打造“全国最干净城市”三年行动计划(2017-2019)》。按照行动计划的战略目标,市、区、街各级城管部门随即开展行动,逐项认真部署落实。市城市管理和综合执法局领导直奔基层一线,在全市范围内开展以查找内街小巷市容环境管理问题和督促问题整改落实为主要内容的“行走深圳”活动。同时,深入推进“源头充分减量,前端分流分类,中段干湿分离,末端综合利用”的垃圾治理深圳模式,积极开展以打造深圳公厕成为“干净卫生、功能完善、美观雅致、群众满意”的靓丽城市名片的“公厕革命”。通过建立环境卫生专项整治、指数测评、责任落实等相关个工作机制,并开展城中村、集贸市场、垃圾收运和城市家具等相关洁净行动,越来越多的居民享受到打造全国最干净城市带来的环境福利。
本赛题以垃圾分类为主题,利用人工智能技术,对居民生活垃圾图片进行检测,找出图片中有哪些类别的垃圾,并指示出垃圾在图片中的位置
思路分享:yolov3-pytorch-custom
1. 比赛总结
1.0. BaselineNetwork Architecture: yolo-v3 = (darknet53 + FPN + yolo-head)
Training strategy: warm-up, cosine learning rate decay, Multi-scale training, SGD optimizer
Loss: GIOU, iou_net (obj损失以GIOU值为标记)
Data Argumentation: mosica, flip, hsv_augmentation, random_affine
NMS: Merge-NMS
1.1. 在该数据上 work 的调参技巧a. spp (spatial pyramid pooling)
b. kmeans algorithm for clustering anchors.
c. stitcher augmentation
d. multi scale testing.
1.2. 该 work 却不 work 的技巧 ---没尽力调a. 常用正则化方法,通过分析网络有很严重的过拟合, 但常用的解决过拟合方法并没有效果如:dropblock, L1&L2 regulization, label smoothing.
b. 小物体检测mAP的值要明显低于其他尺度的mAP. 在计算损失时,通过损失加权,增大小物体的损失 (2 - w * h) 没效果。
c. 某些类的mAP值要普遍比其他类低很多,我们通过mAP的值对样本采样进行重加权, 没效果。通过增加每个类的数据,提升较少。
d. focal loss, 没提升,网络很难收敛。
1.3. 目前模型存在的问题a. 在训练集上过拟合
b. 某些类 mAP 比较差
c. 小物体 mAP 普遍比较差
d. 数据集中存在遮挡的问题
1.4. 未来想尝试的技巧a. 将损失使用传统 YOLO-v3 的形式实现。在其中添加 IOU-Net 分支
b. TSD (SenseTime 1st place) 在网络中将框预测和类别预测进行解耦
c. 改进 NMS 和 Testing
2. 代码说明
2.1. Trainingcommand: 默认模型使用 spatial pyramid pooling 结构和 stitcher 数据增广。训练集验证集分为9:1的比例。模型以及训练参数会保存在文件夹 baseline-stitcher (save) 参数下。
python3 train.py --cfg cfg/yolov3-spp-44.cfg --data data/rubbish.data --weights weights/yolov3-sppu.pt --batch-size 16 --epochs 120 --save baseline-stitcher
其他训练参数可以参考train.py文件中的参数设置部分:
parser.add_argument('--reg-ratio', type=float, default=0.0, help='reg_ratio for L1&L2 regulization to weights')
parser.add_argument('--ssd-aug', action='store_true', help='use ssd augmentation or not')
parser.add_argument('--image-weights', action='store_true', help='use image_weights or not')
parser.add_argument('--smooth-ratio', type=float, default=0.0, help='label smooth ratio for cls bceloss')
parser.add_argument('--lbox-weight', action='store_true', help='weight box loss by size of gt-box or not')
2.2. Testingcommand:
python3 test.py --cfg trained_models/baseline-stitcher/yolov3-spp-44.cfg --data data/rubbish.data --weights trained_models/baseline-stitcher/best.pt --batch-size 8 2.3. Submit
command:
python gen_submit_dir.py -m trained_models/baseline-stitcher -s submit/baseline-stitcher
然后将submit/baseline-stitcher下生成的model文件夹上传到 华为云的obs云储存中
cd submit/baseline-stitcher
obsutil cp -r -f model/ obs://hellopytorch/baseline-stithcer
最后部署到modelart中,提交即可。
Reference
Crowdhuman人体检测比赛第一名经验总结
CVPR 2020丨商汤TSD目标检测算法获得Open Images冠军
目标检测比赛中的tricks(已更新更多代码解析)
Stithcer Augmentation
Imbalance Problems in Object Detection: A Review
网址:“华为云杯”2020深圳开放数据应用创新大赛·生活垃圾图片分类(目标检测) https://www.yuejiaxmz.com/news/view/651499
相关内容
2020年深圳生活垃圾分类最新管理标准智能生活垃圾检测与分类系统(UI界面+YOLOv5+训练数据集)
2020深圳厨余垃圾投放时间是什么时候
深圳:生活垃圾“分类收集减量+分流收运利用+全量焚烧处置”模式
在线监测数据显示:我国356个垃圾焚烧项目排放优于欧盟标准
厨余垃圾拆袋定时投放,深圳垃圾分类开始强制推行
基于深度学习的生活垃圾检测与分类系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
全省生活垃圾分类创新创意大赛启动
2020深圳各区家庭厨余垃圾投放时间段汇总
深圳坪山垃圾分类厨余垃圾投放时间