【SSD】pytorch版本的SSD训练

2024-08-27 18:08
文章标签 训练 版本 pytorch ssd

本文主要是介绍【SSD】pytorch版本的SSD训练,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

调试的代码源码:https://github.com/amdegroot/ssd.pytorch

环境:

  • python3.7
  • cuda10.0
  • cudnn7
  • pytorch1.2.0
  • torchvision0.4.0

问题1

使用的是VOC,没有COCO数据,那么就需要将COCO的部分注释掉,如果不注释就会报错。

解决方法

将train.py中的COCO的部分直接注释掉,修改如下

    # if args.dataset == 'COCO':#     if args.dataset_root == VOC_ROOT:#         if not os.path.exists(COCO_ROOT):#             parser.error('Must specify dataset_root if specifying dataset')#         print("WARNING: Using default COCO dataset_root because " +#               "--dataset_root was not specified.")#         args.dataset_root = COCO_ROOT#     cfg = coco#     dataset = COCODetection(root=args.dataset_root,#                             transform=SSDAugmentation(cfg['min_dim'], MEANS)#                             )# elif args.dataset == 'VOC':#     if args.dataset_root == COCO_ROOT:#         parser.error('Must specify dataset if specifying dataset_root')#     cfg = voc#     dataset = VOCDetection(root=args.dataset_root,#                            transform=SSDAugmentation(cfg['min_dim'], MEANS)#                            )cfg = vocdataset = VOCDetection(root=args.dataset_root,transform=SSDAugmentation(cfg['min_dim'], MEANS))

 将data\__init__.py中的COCO部分注释掉:

# from .coco import COCODetection, COCOAnnotationTransform, COCO_CLASSES, COCO_ROOT, get_label_map

将data\config.py中的HOME目录修改:

# gets home dir cross platform
# HOME = os.path.expanduser("~")
HOME =  r"E:\standard_data\voc"

将data\voc0712.py的VOC_ROOT目录修改为:

VOC_ROOT = osp.join(HOME, "VOC2007_ORI\\VOCdevkit\\")

问题2

在ssds检测项目中,其中求损失的multibox_loss.py中遇到一个bug,错误为:

IndexError: The shape of the mask [32, 2990] at index 0 does not match the shape of the indexed tensor [95680, 1] at index 0

报错代码出现在:

loss_c[pos] = 0

其中,pos和loss_c的尺寸维度分别是:

loss_c.size torch.Size([95680, 1])
pos.size torch.Size([32, 2990])

解决方法

在multibox_loss.py中的97行左右,将

loss_c[pos] = 0 # filter out pos boxes for now

改为

loss_c[pos.view(-1)] = 0  # filter out pos boxes for now

问题3

 出现问题地点

        loc_loss += loss_l.data[0]conf_loss += loss_c.data[0]if iteration % 1 == 0:print('timer: %.4f sec.' % (t1 - t0))print('iter ' + repr(iteration) + ' || Loss: %.4f ||' % (loss.data[0]), end=' ')

解决方法

将上面问题地点修改为

        loc_loss += loss_l.detach()# conf_loss += loss_c.data[0]conf_loss += loss_c.detach()if iteration % 1 == 0:print('timer: %.4f sec.' % (t1 - t0))print('iter ' + repr(iteration) + ' || Loss: %.4f ||' % (loss.detach()), end=' ')

 

这篇关于【SSD】pytorch版本的SSD训练的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112397

相关文章

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering) Power Iteration Clustering (PIC) 是一种基于图的聚类算法,用于在大规模数据集上进行高效的社区检测。PIC 算法的核心思想是通过迭代图的幂运算来发现数据中的潜在簇。该算法适用于处理大规模图数据,特别是在社交网络分析、推荐系统和生物信息学等领域具有广泛应用。Spa

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行介绍。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

InnoDB的多版本一致性读的实现

InnoDB是支持MVCC多版本一致性读的,因此和其他实现了MVCC的系统如Oracle,PostgreSQL一样,读不会阻塞写,写也不会阻塞读。虽然同样是MVCC,各家的实现是不太一样的。Oracle通过在block头部的事务列表,和记录中的锁标志位,加上回滚段,个人认为实现上是最优雅的方式。 而PostgreSQL则更是将多个版本的数据都放在表中,而没有单独的回滚段,导致的一个结果是回滚非

JeecgBoot 升级springboot版本到2.6.0

1. 环境描述 Jeecgboot 3.0,他所依赖的springboot版本为2.3.5Release,将springboot版本升级为2.6.0。过程全纪录,从2开始描述。 2. 修改springboot版本号 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-pare

多云架构下大模型训练的存储稳定性探索

一、多云架构与大模型训练的融合 (一)多云架构的优势与挑战 多云架构为大模型训练带来了诸多优势。首先,资源灵活性显著提高,不同的云平台可以提供不同类型的计算资源和存储服务,满足大模型训练在不同阶段的需求。例如,某些云平台可能在 GPU 计算资源上具有优势,而另一些则在存储成本或性能上表现出色,企业可以根据实际情况进行选择和组合。其次,扩展性得以增强,当大模型的规模不断扩大时,单一云平

Cmake之3.0版本重要特性及用法实例(十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧