pytorch-ssd

所属分类:模式识别(视觉/语音等)
开发工具:Python
文件大小:20645KB
下载次数:0
上传日期:2020-08-02 11:25:59
上 传 者sh-1993
说明:  源程序来自于:[https: github.com sgrvinod a-PyTorch-Tutorial-to-Object- Detection。但是原作者的环境是:](https: github.com sgrvinod a-PyTorch-Tutorial-to- Object- Detection%E3%80%82%E4%BD%86%E6%98%AF%E5%8E%9F%E4%BD%9C%E8%80%85%E7%9A%84%E7%8E%AF%E5%A2%83%E6%98%AF%EF%BC%9A) `PyTorch 0.4` in `Python 3.6`。在用...
(The source program comes from: [https: github.com sgrVinod a-PyTorch Tutorial to Object - Detection. However, the original author s environment is:] (https: github.com sgrVinod a-PyTorch Tutorial to Object - Detection% E3% 80% 82% E4% BD% 86% E6% 98% AF% E5% 8E% 9F% E4% BD% 9C% E8% 80% 85% E7% 9A% 84% E7% 8E% AF% E5% A2% 83% E6% 98% AF% EF% BC% 9A) PyTorch 0.4 in Python 3.6 . In use)

文件列表:
create_data_lists.py (216, 2020-08-02)
datasets.py (2942, 2020-08-02)
detect.py (4929, 2020-08-02)
draw (0, 2020-08-02)
draw\AP.txt (3007, 2020-08-02)
draw\__pycache__ (0, 2020-08-02)
draw\__pycache__\model.cpython-36.pyc (16909, 2020-08-02)
draw\__pycache__\utils.cpython-36.pyc (29073, 2020-08-02)
draw\draw_loss_precision.py (1830, 2020-08-02)
draw\epoch-loss.jpg (37575, 2020-08-02)
draw\iterations-precision.jpg (45051, 2020-08-02)
draw\log.txt (5164960, 2020-08-02)
epoch-loss-0.jpg (55333, 2020-08-02)
epoch-loss.jpg (57065, 2020-08-02)
eval_map.py (4071, 2020-08-02)
get_dr_txt.py (6250, 2020-08-02)
get_gt_txt.py (1512, 2020-08-02)
get_map.py (34216, 2020-08-02)
intersect-get-and-dr.py (2329, 2020-08-02)
json (0, 2020-08-02)
json\TEST_images.json (6199, 2020-08-02)
json\TEST_objects.json (8217, 2020-08-02)
json\TRAIN_images.json (30773, 2020-08-02)
json\TRAIN_objects.json (39600, 2020-08-02)
json\label_map.json (82, 2020-08-02)
learn_ssd.txt (10113, 2020-08-02)
model.py (33750, 2020-08-02)
pretrained (0, 2020-08-02)
pretrained\vgg_weight.txt (101, 2020-08-02)
prior_boxes_show (0, 2020-08-02)
prior_boxes_show\Vision_for_prior.py (6465, 2020-08-02)
prior_boxes_show\conv10_2.png (1658322, 2020-08-02)
prior_boxes_show\conv10_2_prior_boxes_all.png (1654387, 2020-08-02)
prior_boxes_show\conv11_2.png (1659249, 2020-08-02)
prior_boxes_show\conv11_2_prior_boxes_all.png (1684270, 2020-08-02)
prior_boxes_show\conv4_3.png (1692445, 2020-08-02)
prior_boxes_show\conv4_3_prior_boxes_all.png (1047525, 2020-08-02)
prior_boxes_show\conv7.png (1680709, 2020-08-02)
... ...

本代码在原作者的基础上增加了部分功能,主要用于个人学习ssd流程: 新增部分: (1)原程序无法在断网的情况下进行初始化网络,原因在于加载vgg16预训练模型的时候从torchvision.models.vgg16加载,需要联网,本程序将model.py中的这三行代码 # Pretrained VGG base # pretrained_state_dict = torchvision.models.vgg16(pretrained=True).state_dict() # pretrained_param_names = list(pretrained_state_dict.keys()) 更改为: vgg16_model_path = 'pretrained/vgg16-397923af.pth' pretrained_state_dict = torch.load(vgg16_model_path) pretrained_param_names = list(pretrained_state_dict.keys() 这三行。预训练vgg16权重存放在pretrained文件夹中,并给出百度云地址。 (2)原程序中产生8732个候选框的设置中,fmap_dims、obj_scales,aspect_ratios,这三个变量采用普通字典形式,但是python更新后,普通字典在索引时是乱序的,导致每次训练产生的候选框不同,导致训练出现问题,远远达不到预期效果,将这三个变量更换为OrderedDict类型,在逐个索引时有顺序,解决了上述问题,具体代码看model.py中的create_prior_boxes函数。 (3)出于本人新手学习考虑,在程序中增加了4个可视化内容,程序位于utils.py底部: 1)show_groundtruth_priorbox_predictbox------在原图中可视化真值框,初始框,预测框-------引用位置:model.py 2)show_feature_map ---------------可视化提取的特征图-----------------引用位置:model.py 3)show_train_pic-----------------可视化放入模型训练图像(经过数据增强后的图像)---引用位置:train.py 4)show_transform_pic---------------可视化数据增强过程中图像的变化-----------引用位置:utils.py (4)原程序在训练时无法测试,本程序增加了测试程序,位于train.py # eval model if epoch % eval_freq == 0: evaluate(test_loader, model, epoch) 并生成AP.txt和log.txt,将生成的这两个结果放入draw文件夹中,运行draw_loss_precision.py会生成loss图和precision图。(注意:需要根据检测类别的不同简单修改draw_loss_precision.py中的内容) (5)原程序能够计算并显示训练好的模型的map,但是感觉结果普遍较高,但是根据检测的效果来看,并不理想。参考了另一个博主的map计算方式,并迁移到本程序中。 1)get_dr_txt.py-----------获得检测结果txt 2)get_gt_txt.py-----------获得真值txt 3)get_map_txt.py----------根据以上两个txt计算模型的map 4)intersect-get-and-dr.py------如果检测结果的txt数量和真值txt数量不同,用这个程序使其相同。 相关博客参考:https://blog.csdn.net/weixin_447919***/article/details/1046952*** (6)原始测试图片的程序只能测试一张,增加测试多张图像,原始图像存放在test_data,检测结果存放在test_val_result,所用程序为detect.py。 (7)增加初始框可视化(直接运行prior_boxes_show中的Vision_for_prior.py文件) 问题: 由于python版本不同,可能会出现一些问题。 model.py中suppress = torch.max(suppress, overlap[box] > max_overlap)这句话可能会出现 RuntimeError: Expected object of scalar type Byte but got scalar type Bool for argument #2 'other' in call to _th_max这个问题,适当修改数据类型即可解决 原作者程序参考:原作者README.md

近期下载者

相关文件


收藏者