【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

相关文章

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和

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