BICLab / SpikeYOLO

Offical implementation of "Integer-Valued Training and Spike-Driven Inference Spiking Neural Network for High-performance and Energy-efficient Object Detection" (ECCV2024 Best Paper Candidate)
https://arxiv.org/abs/2407.20708
GNU Affero General Public License v3.0
111 stars 6 forks source link

COCO2017训练结果与论文中不同? #11

Closed LZHhAG closed 1 month ago

LZHhAG commented 1 month ago

作者您好,我按照您给的代码配置了环境,用COCO2017数据集进行训练,但训练结果和您在论文中给的结果有差异,不知道您这套代码,默认设置的T和D都是多少呢? image image

XinhaoLuo666 commented 1 month ago

您好,代码默认的T和D应该是1和4。我怀疑您的训练没有完全收敛,请问您训练了多少epoch呢?我们论文中训练了300ep。

LZHhAG commented 1 month ago

我训练了100个epoch,看来是要再训练一下了,谢谢您的回答。另外您代码中默认设置的T和D在哪里可以修改呢?我是初学者,确实还没有找到。望您赐教,谢谢。

jikerWRN commented 1 month ago

代码中T 默认是4 吧

class MS_GetT(nn.Module):
    def __init__(self, in_channels=1, out_channels=1, T=4):
        super().__init__()
        self.T = T
        self.in_channels = in_channels

    def forward(self, x):
        x = (x.unsqueeze(0)).repeat(self.T, 1, 1, 1, 1)
        return x
XinhaoLuo666 commented 1 month ago

默认T是1,写在了config里,具体位置应该是ultralytics/cfg/models/v8/snnyolov8.yaml中,修改“MS_GetT”的参数;d的值写在了MultiSpike4函数中,请修改这个函数

jikerWRN commented 1 month ago

感谢您的回复~

zhangfzR commented 1 month ago

代码中T 默认是4 吧

class MS_GetT(nn.Module):
    def __init__(self, in_channels=1, out_channels=1, T=4):
        super().__init__()
        self.T = T
        self.in_channels = in_channels

    def forward(self, x):
        x = (x.unsqueeze(0)).repeat(self.T, 1, 1, 1, 1)
        return x

你好,你有跑通这个代码吗?请问它的训练时间是多少啊

zhangfzR commented 1 month ago

作者您好,我按照您给的代码配置了环境,用COCO2017数据集进行训练,但训练结果和您在论文中给的结果有差异,不知道您这套代码,默认设置的T和D都是多少呢? image image

你好,你有跑通这个代码吗?请问它的训练时间是多少啊

XinhaoLuo666 commented 1 month ago

作者您好,我按照您给的代码配置了环境,用COCO2017数据集进行训练,但训练结果和您在论文中给的结果有差异,不知道您这套代码,默认设置的T和D都是多少呢? image image

你好,你有跑通这个代码吗?请问它的训练时间是多少啊

你好,单张A100上训练,一个epoch大概是45分钟(s尺寸模型)