Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
yult0821 4b47af59c0 | 1 year ago | |
---|---|---|
pics | 1 year ago | |
pretrained_model | 1 year ago | |
sewResnet | 1 year ago | |
README.md | 1 year ago | |
__init__.py | 1 year ago | |
run_eg.log | 1 year ago | |
snn4ecoset_test.sh | 1 year ago | |
testSNN_script_user.py | 1 year ago | |
utils.py | 1 year ago |
dockerhub.pcl.ac.cn:5000/user-images/openi:spikingjelly
Brain & Deep-learning Interdisciplinary Platform (BDIP)组织管理并开放了一个“大规模类脑计算研究平台”,该平台依托openI启智社区进行建设,拥有丰富的神经数据、深度学习模型以及模型评测、可视化技术,帮助脑科学研究者运用深度学习技术,为人工智能研究者提供神经数据,推动脑科学与人工智能交叉研究,促进类脑智能研究。欢迎感兴趣的小伙伴前往访问使用,同时也非常欢迎加入我们成为贡献者!
本仓库为snn4ecoset打榜任务提供样例,用户可在该仓库基础上创建个人仓库,完成打榜任务。为了解最新榜单,请参见网页Snn4Ecoset榜单。
如果您想要参与snn4ecoset打榜任务,请按照下述说明进行操作。
1、注册成为openI启智社区用户,加入组织Brain & Deep-learning Interdisciplinary Platform (BDIP),成为贡献者。
2、准备好预训练模型:模型基于SpikingJelly
,输入图片尺寸为224x224x3,输出为经由softmax
函数处理得到的一维概率向量 (565类)。
3、创建项目仓库,上传SNN相关代码和预训练模型。其中,预训练模型可以存储于项目仓库中,类似于本示例中的pretrained_model/sew_resnet18.pth
。此外,预训练模型也能够通过仓库模型
栏目上传,启动任务时可通过模型
选项进行选择,启动任务后存储于/pretrainmodel/xxx.pth
。在DEBUG
模式下建议选用第一种方式。通过仓库云脑
栏目启动云脑任务DEBUG
模式,搭建镜像,调试代码,使其可运行成功。请注意单次DEBUG任务最长可持续4小时。调试成功后需要在仓库云脑
栏目对应任务条目下停止任务
前选择提交镜像
,自行命名,以备后续使用(例如,当前仓库运行使用的镜像为dockerhub.pcl.ac.cn:5000/user-images/openi:spikingjelly
,可用做基础镜像)。此外,镜像中应安装requests, json, argparse, datetime, sys, os
等基础Python包。
启动DEBUG
任务时,数据集选择ecoset_val.zip
,用于调试模型。启动DEBUG
任务后,仓库代码可见于/code/
路径下,其中示例测试脚本为testSNN_script_user.py
,用户可在正式评测之前通过该示例脚本进行调试,以确保评测任务能正常运行。如果预训练模型通过模型
栏目上传,那么在任务启动时可通过模型
选项可选择预训练模型,如此启动任务后预训练模型存储于/pretrainmodel/xxx.pth
。
评测过程需要用户准备一个utils.py
文件,其中定义一个load_MyModel()
函数和一个eval_one_batch()
函数。该文件主要涵盖如下功能:模型初始化、导入预训练模型、导入模型推断过程所需的模块及函数、对单个batch做推断。预训练模型存储地址可由用户在utils.py
文件中自行指定:如果通过模型
栏目上传,则定义为/pretrainmodel/xxx.pth
;如果存放在代码仓库中,则根据具体情况自行定义,例如/code/pretrained_model/xxx.pth
。load_MyModel()
函数返回值为一个tuple
,其中第一个元素为可直接用于推断过程的模型,第二个元素为预训练模型存储地址,后续元素为推断过程(即forward过程
)所需的参数(请注意按顺序排列)。eval_one_batch()
函数负责接收模型(及参数)和输入,输出分类概率。详情请参见该仓库中的示例文件utils.py
。评测结果包括分类准确率ACC@1、ACC@5,以及测试耗时。
4、正式进行模型评测:启动云脑评测任务
,选择模型评测
,并填入相应信息。任务名称
填写模型名称,例如sew_resnet18
(同一仓库下不可存在重复的任务名称
,若要重复使用同一个任务名称
,需先行删除之前的任务记录);任务描述
填写模型简介;评测类型
选择snn4ecoset
;镜像
选择前述自行搭建的镜像;模型
选择预训练模型。填写信息完成之后,点击新建任务
即可开始模型评测任务。在openI云脑测试任务中,社区提供1个GPU (V100)和4个CPU的计算资源。当前测试脚本选用GPU作为torch.device
。任务结束后,评测脚本会将任务相关信息、模型相关信息、及测试结果写入后端数据库,并据此更新榜单页面。随后,用户可以通过云脑
栏目下对应任务条目的评测类型
按钮(即snn4ecoset
)查看最新的榜单页面。
5、下述两段代码分别展示了调试所需的shell脚本snn4ecoset_test.sh
,以及示例测试脚本testSNN_script_user.py
中接收模型及模型推断
对应的重要代码。注:本示例只针对sew_resnet18
模型,如需测试其他模型,需要对应地修改utils.py
文件(例如,如果选择测试sew_resnet152
模型,需将utils.py
文件中第22行修改为model = sew_resnet152(num_classes=565, cnf="ADD")
,具体模型定义可参见sewResnet/SEWResNet.py
)。
#!/bin/bash
# self debugging
/opt/conda/bin/python /code/testSNN_script_user.py --datapath '/dataset/' --modelpath '/code/pretrained_model/sew_resnet18.pth' --modelname 'sew_resnet18' --modeldescription 'A directedly trained snn model proposed in Fang et al. NeurIPS 2021 (Deep residual learning in spiking neural networks)'
sys.path.append("/code/")
import utils
model_pars = utils.load_MyModel()
model = model_pars[0]
abs_modelpath = model_pars[1]
if len(model_pars) > 2:
forward_pars = model_pars[2:]
...
...
if len(model_pars) == 2:
output = utils.eval_one_batch(model, data)
elif len(model_pars) > 2:
output = utils.eval_one_batch(model, data, *forward_pars)
图1:预训练模型上传。
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》