2022DCIC智慧农业赛题-牛只图像分割竞赛baseline

Frankie :

目前本科在读,师从深度之眼比赛班导师-Taylor老师,刚接触图像算法竞赛半年,已经获得 IFLYTEK 1024 Challenge - X光目标检测第二名,华为云-重庆语义分割算法大赛二等奖等。

1、赛题链接

智慧农业赛题——牛只图像分割竞赛 赛道详情 - 数字中国

2、赛题描述&任务

牛只图像分割是智慧畜牧中的重要一环,既实现牛只的智能个体识别,还能掌握牛在养殖过程中的生长状况。本赛题旨在用人工智能为畜牧养殖赋能,使用机器代替饲养员对牛只进行个体识别,节约人力成本,同时快速获取牛只的体格信息数据,作为后续牛只体型评价、健康评价等的重要参考依据。

本赛题以牛只实例分割图像数据作为训练样本,参赛选手需基于训练样本构建模型,对提供的测试集中的牛只图像进行实例分割检测。任务方法不局限于实例分割等方案,训练数据集不局限于提供的数据,可以加入公开的数据集。

※ 比赛时间线

时间

安排

2022年1月21日

大数据赛道启动(发布赛题,开放报名)

2022年1月21日00:00:00-2022年3月11日24:00:00

初赛A榜(提交作品,实时评测)

2022年3月12日(00:00:00-24:00:00)

停止组队,停止在线提交作品

2022年3月13日(00:00:00-24:00:00)

初赛B榜(提交作品,定时评测)

2022年3月14日-3月27日

代码复现、晋级资格审核

2022年4月1日-4月4日

总决赛评审

2022年4月中旬

颁奖仪式

※ 丰厚的奖金

奖项

数量

金额(¥)

一等奖

1

¥80000.00元

二等奖

1

¥50000.00元

三等奖

1

¥20000.00元

优胜奖

2

¥5000.00元

3、数据描述

官方提供训练数据200张,并且提供了标注数据集data.json,其中实例个数共有2538只。

gt anchor比例分布

4、评价指标&提交示例

以cocoapi实例分割评判为标准,选择IoU=0.50:0.95 , area=all , maxDets=100下对应的结果值

参赛者通过提供的测试数据集图片得出具体的实例分割坐标,提交格式为json文本,utf-8编码,整体为一个数组格式,参考coco的实例分割的输出格式。

例子:

[{  
    “image_id”:“images/611e27ff656be64fad34087f.png”,
    “category_id”:18,
    “segmentation”:{“size”:[2560,1440],“counts”:“xxx”},
    “score”:0.236}
,{…},…]

5、划分验证数据集

import json
with open('./train_dataset/200/data.json', 'r') as f:
    js = json.load(f)
train_dict = {
    'images': [],
    'categories': [],
    'annotations': []
}
valid_dict = {
    'images': [],
    'categories': [],
    'annotations': []
}
# train_dict['images'] = js['images']
train_dict['categories'] = js['categories']
# valid_dict['images'] = js['images']
valid_dict['categories'] = js['categories']
chosen = [i for i in range(3, 203, 5)]
for annot in js['annotations']:
    if annot['image_id'] in chosen:
        valid_dict['annotations'].append(annot)
    else:
        train_dict['annotations'].append(annot)
for image in js['images']:
    if image['id'] in chosen:
        valid_dict['images'].append(image)
    else:
        train_dict['images'].append(image)
with open('train_cow.json', 'w') as f:
    output_json = json.dumps(train_dict)
    f.write(output_json)
with open('valid_cow.json', 'w') as f:
    output_json = json.dumps(valid_dict)
    f.write(output_json)

6、Baseline流程

本次提供Baseline位于LB中排名Top5%内。

关注【学姐带你玩AI】公众号

回复“小牛牛”

进比赛群领取

Baseline及资料

1、环境搭建

进入Baseline目录

1、unzip cow_datasets.zip
2、pip install icecream timm setuptools albumentations imagecorruptions ensemble-boxes tensorboard terminaltables mmpycocotools
# demo,cu110和torch1.8.0需要改为自己机器的环境
3、pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.8.0/index.html
4、python setup.py develop

2、下载预训练模型

https://github.com/SwinTransformer/storage/releases/download/v1.0.2/cascade_mask_rcnn_swin_base_patch4_window7.pth

将模型放入pre_model文件夹中

3、训练模型

单卡训练

python tools/train.py cascade_mask_rcnn_swin_base_patch4_window7_mstrain_480-800_giou_4conv1f_adamw_3x_coco.py

多卡训练

bash tools/dist_train.sh cascade_mask_rcnn_swin_base_patch4_window7_mstrain_480-800_giou_4conv1f_adamw_3x_coco.py ${NUM_GPUS}

4、推理提交

import pandas as pd
from glob import glob
import numpy as np
import cupy as cp
from tqdm.auto import tqdm
from pycocotools import mask
import json
import mmcv
from mmdet.apis import init_detector, inference_detector, show_result_pyplot


config_file = 配置文件路径
checkpoint_file = 模型路径
model = init_detector(config_file, checkpoint_file, device='cuda:0')


json_list = []
# 测试数据路径
for imgs in tqdm(glob('./test_dataset_A/images/*')):
    img_name = 'images/' + imgs.split('/')[-1]
    img = mmcv.imread(imgs)
    result = inference_detector(model, img)
    print(img_name)
    show_result_pyplot(model, img, result, score_thr=0.7)
    for idx, annot_mask in enumerate(result[1][0]):
        annot_mask = np.asfortranarray(annot_mask) 
        Rs = mask.encode(annot_mask)
        Rs['counts'] = Rs['counts'].decode('utf-8')
        conf = float(result[0][0][idx][-1])
        if conf > 0.7:
            annot = {
                'image_id': img_name,
                'category_id': 1,
                'segmentation': Rs,
                'score': conf,
            }
            json_list.append(annot)


with open('submission.json', 'w') as fp:
    json.dump(json_list, fp, indent=4, separators=(',', ': '))

7、比赛难点&上分点

训练数据中很少出现截断的牛,难点在于如果处理好测试数据中发生截断的情况。

可以试试不同的优化器和学习率策略,代码中替换注释即可:

 点击下方卡片关注公众号回复“小牛牛”领取本比赛baseline

【项目资源】:包含前端、后端、移动开发、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源,毕业设计等各种技术项目的源码。包括C++、Java、python、web、C#、EDA等项目的源码。 【适用人群】:适用于希望学习不同技术领域的初学者或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。 【项目质量】:所有源码都经过测试,可以直接运行。功能在确认正常工作后才上传。 【项目资源】:包含前端、后端、移动开发、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源,毕业设计等各种技术项目的源码。包括C++、Java、python、web、C#、EDA等项目的源码。 【适用人群】:适用于希望学习不同技术领域的初学者或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。 【项目质量】:所有源码都经过测试,可以直接运行。功能在确认正常工作后才上传。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值