• 搭建环境
  • 准备数据集
    • 下载数据集
      • 数据集1:PASCAL_VOC 07+12 and Clipart
      • 数据集2:cityscapes and foggy_cityscapes
    • 修改数据集配置信息
  • 预训练模型
  • 训练模型
    • 训练数据集1:PASCAL VOC + clipart (no interpolation)
    • 训练数据集2:cityscapes + foggy_cityscapes (no interpolation)
    • 报错及解决办法
      • 报错1:ModuleNotFoundError: No module named 'model.utils.cython_bbox'
      • 报错2:NameError: name 'numpy_include' is not defined
      • 报错3:AttributeError: 'Namespace' object has no attribute 'set_cfgs'
      • 报错4:RuntimeError: set_sizes_contiguous is not allowed on a Tensor created from .data or .detach().
      • 报错5:RuntimeError: Legacy autograd function with non-static forward method is deprecated. Please use new-style autograd function with static forward method.
      • 报错6:编译报错,RuntimeError: The detected CUDA version (9.0) mismatches the version that was used to compile PyTorch (10.2). Please make sure to use the same CUDA versions
      • 报错7:编译报错,/usr/include/c++/6/tuple:502:1: error: body of constexpr function
      • 报错8:编译报错,/usr/include/c++/6/tuple:483:67: error: mismatched argument pack lengths while expanding
      • 报错9:AttributeError: module 'torch.jit' has no attribute 'unused'
  • 测试模型
    • 测试数据集1:PASCAL VOC + clipart (no interpolation)
    • 测试数据集2:cityscapes + foggy cityscapes (no interpolation)
    • 报错及解决办法
      • 报错1:TypeError: __ init__() got an unexpected keyword argument 'path_return'
  • 训练结果

搭建环境

克隆项目HTCN

git clone git://github.com/xiangxiangtao/HTCN.git

主要环境

  • python=3.6.9
  • pytorch=1.0.1
  • cuda=10.0

其他环境参考fasterrcnn所需环境

编译

cd lib
python setup.py build develop

准备数据集

下载数据集

数据集1:PASCAL_VOC 07+12 and Clipart

准备PASCAL_VOC 07+12

参考Pascal VOC数据集使用方法

准备Clipart

参考cross-domain-detection

数据集2:cityscapes and foggy_cityscapes

下载cityscapes和foggy_cityscapes

参考cityscapes和foggy_cityscapes数据集使用记录,下载数据集,并将两个数据集转成voc格式。

修改数据集配置信息

以PASCAL_VOC 07+12 and Clipart为例

添加lib/datasets/

将数据集对应的脚本添加到lib/datasets/中

  • 对voc数据集,lib/datasets/中已经有了对应的脚本pascal_voc.py,不需要再添加;
  • 对clipart数据集,lib/datasets/中已经有了对应的脚本clipart.py,不需要再添加,不过需要根据实际需要修改clipart.py脚本中的路径,否则代码中的默认路径和clipart默认的路径组织方式不一样;

修改lib/datasets/config_dataset.py

  • 修改__D.PASCAL和__D.CLIPART为实际的数据集所在路径;

修改lib/model/utils/parser_func.py

  • 对voc和clipart两个数据集,–dataset的值改为’voc_0712’,–dataset_t的值改为’clipart’,由于该脚本中set_dataset_args函数里已经有了对应的分支,不需要再进行修改;

修改lib/datasets/factory.py

根据前面的parser_func.py脚本中的args.imdb_name内容进行修改

  • args.dataset为"voc_0712"时,使用默认的代码即可;
  • args.dataset_t为"clipart"时,使用默认的代码即可;

预训练模型

下载预训练模型

点击HTCN中的链接,下载VGG16和ResNet101的预训练模型;
将预训练模型放到指定路径下,指定路径可以在lib/model/utils/config.py中进行修改;

训练模型

net可以选择vgg16/resnet101

python trainval_net_HTCN.py --dataset source_dataset --dataset_t target_dataset --net vgg16

训练数据集1:PASCAL VOC + clipart (no interpolation)

源数据集为pascal voc07+12,目标数据集为clipart,不采用论文的插值方法(cyclegan迁移);
使用论文中的res101预训练权重;

python trainval_net_HTCN.py --dataset 'voc_0712' --dataset_t 'clipart' --net res101

训练数据集2:cityscapes + foggy_cityscapes (no interpolation)

源数据集为cityscapes,目标数据集为foggy_cityscapes,不采用论文的插值方法(cyclegan迁移);
使用论文中的vgg16预训练权重;

python trainval_net_HTCN.py --dataset 'cs' --dataset_t 'cs_fg' --net vgg16

报错及解决办法

报错1:ModuleNotFoundError: No module named ‘model.utils.cython_bbox’

解决办法:

参考No module named ‘model.utils.cython_bbox’ #7

打开setup.py

gedit lib/setup.py

将里面的

    ext_modules = [extension("model._C",sources,include_dirs=include_dirs,define_macros=define_macros,extra_compile_args=extra_compile_args,)]

替换成

ext_modules = [ extension( "model._C", sources, include_dirs=include_dirs, define_macros=define_macros, extra_compile_args=extra_compile_args, ), extension( "model.utils.cython_bbox", ["model/utils/bbox.pyx"], extra_compile_args={'cxx':[],'gcc': ["-Wno-cpp", "-Wno-unused-function"]}, include_dirs=[numpy_include] ) ]

报错2:NameError: name ‘numpy_include’ is not defined

解决办法

打开setup.py

gedit lib/setup.py

在刚才的ext_modules前面添加下面几行内容

    import numpy as nptry: numpy_include = np.get_include() except AttributeError: numpy_include = np.get_numpy_include()

报错3:AttributeError: ‘Namespace’ object has no attribute ‘set_cfgs’

解决办法:

数据集没配置好,参考前面的内容进行配置;

报错4:RuntimeError: set_sizes_contiguous is not allowed on a Tensor created from .data or .detach().

解决办法:

pytorch版本问题,参考报错提示进行修改,去掉data。

报错5:RuntimeError: Legacy autograd function with non-static forward method is deprecated. Please use new-style autograd function with static forward method.

原因:

网上说时由于pytorch版本大于1.3所以报错,但是我的pytorch版本时1.0.1,分析是由于我当前使用的系统cuda版本是10.2,目前不支持1.2及其以下的GPU版的pytorch,因此改为使用cuda9;

解决办法:

  • 切换系统默认的cuda
    因为本机装了10.2和9.0两个版本,在/usr/local中把cuda的软链接改为cuda-9.0,然后重新编译项目;

报错6:编译报错,RuntimeError: The detected CUDA version (9.0) mismatches the version that was used to compile PyTorch (10.2). Please make sure to use the same CUDA versions

原因:

检查了一下,发现CUDA_HOME这个环境变量已经改成了cuda9,nvcc的版本也变成了cuda9,但是在虚拟环境中使用conda list和进入命令行之后使用torch.__version__两种方式查看得到的pytorch版本不同,感觉可能是当前虚拟环境装了两个pytorch,再用pip list进行查看,果然发现pip还装了一个torch。

解决办法:

两个pytorch卸载掉不需要的一个即可;

报错7:编译报错,/usr/include/c++/6/tuple:502:1: error: body of constexpr function

原因:

参考CUDA9.0编译nvcc报错‘/usr/include/c++/6/tuple’,gcc当前版本为gcc-7,版本过高,切换到gcc-5;

解决办法:

参考ubuntu18.04 gcc-7安装与多版本切换切换到gcc-5;

报错8:编译报错,/usr/include/c++/6/tuple:483:67: error: mismatched argument pack lengths while expanding

原因:

查阅网上的解决方案,不确定时cuda的问题还是gcc的版本问题,尝试更换系统cuda版本。

解决办法:

重装了一个cuda10.0,编译通过。

报错9:AttributeError: module ‘torch.jit’ has no attribute ‘unused’

原因:

测试了一下,发现import torchvision会报该错误

解决办法:

无法解决,本地环境有点问题,直接pull了一个pytorch1.0,cuda10.0的docker环境,在docker环境下就没有该问题了,搭建方法参考docker搭建pytorch环境。

测试模型

net根据训练时取的主干网络进行选择

python test_net_HTCN.py --dataset source_dataset --dataset_t target_dataset --net vgg16 --load_name path_to_model

测试数据集1:PASCAL VOC + clipart (no interpolation)

python test_net_HTCN.py --dataset 'voc_0712' --dataset_t 'clipart' --net res101 --load_name 'models/res101/pascalvoc-clipart_res101_no_interpolation/target_clipart_eta_0.1_local_True_global_True_gamma_3_session_1_epoch_14_step_10000.pth'

测试数据集2:cityscapes + foggy cityscapes (no interpolation)

python test_net_HTCN.py --dataset 'cs' --dataset_t 'cs_fg' --net vgg16 --load_name 'models/vgg16/cityscapes-foggycigyscapes_vgg16_no_interpolation/globallocal_target_cs_fg_eta_0.1_local_context_True_global_context_True_gamma_3_session_1_epoch_7_step_8000.pth'

报错及解决办法

报错1:TypeError: __ init__() got an unexpected keyword argument ‘path_return’

解决办法:

去掉test_net_HTCN.py里132行的path_return=True参数

训练结果

[1]:Pascal VOC数据集使用方法
[2]:HTCN
[3]:ubuntu安装pytorch及使用过程的报错记录
[4]:CUDA9.0编译nvcc报错‘/usr/include/c++/6/tuple’
[5]:ubuntu18.04 gcc-7安装与多版本切换
[6]:docker搭建pytorch环境
[7]:cross-domain-detection
[8]:cityscapes和foggy_cityscapes数据集使用记录

搭建目标检测模型之Harmonizing Transferability and Discriminability for Adapting Object Detectors相关推荐

  1. 论文笔记:Harmonizing Transferability and Discriminability for Adapting Object Detectors

    论文地址:https://ieeexplore.ieee.org/document/9157147 源码地址:https://github.com/chaoqichen/HTCN 1 Main Ide ...

  2. 论文简读《Harmonizing Transferability and Discriminability for Adapting Object Detectors》

    CVPR2020 | Code 思想:首先文章提出当前基于对抗的方法 image and instance levels alignment [7], strong-local and weak-gl ...

  3. CVPR2020 Harmonizing Transferability and Discriminability for Adapting Object Detector

    Harmonizing Transferability and Discriminability for Adapting Object Detector code:https://github.co ...

  4. 夏侯南溪搭建目标检测模型——文件结构设计篇

    1 前言 此文章是夏侯南溪搭建目标检测模型--文件夹结构设计篇- 2 文件夹命名 使用小写字母命名,单词之间用短线"-"进行连接,例如: plane-detection 3 项目文 ...

  5. 夏侯南溪搭建目标检测模型——数据读取篇

    1 介绍 在PyTorch中定义自己的数据集类,需要继承父类Dataset, 自定义的Dataset类需要实现以下三个函数: init():用来实现初始化的操作: len():用来返回数据集的样本数目 ...

  6. 《南溪的目标检测学习笔记》——目标检测模型的设计笔记

    1 南溪学习的目标检测模型--DETR 南溪最赞赏的目标检测模型是DETR, 论文名称:End-to-End Object Detection with Transformers 1.2 decode ...

  7. Tensorflow object detection API 搭建自己的目标检测模型并迁移到Android上

    参考链接:https://blog.csdn.net/dy_guox/article/details/79111949 之前参考上述一系列博客在Windows10下面成功运行了TensorFlow A ...

  8. 【AI实战】微小目标检测模型MMDet-RFLA--训练环境从零开始搭建

    [AI实战]微小目标检测模型MMDet-RFLA--训练环境搭建 RFLA介绍 环境搭建 安装依赖 参考 RFLA介绍 官方连接 https://github.com/Chasel-Tsui/mmde ...

  9. 大连理工IIAU Lab提出SSLSOD:自监督预训练的RGB-D显著性目标检测模型(AAAI 22)

    作者丨Lart 编辑丨极市平台 导读 本文在显著性目标检测任务(SOD)中,首次引入自监督预训练.凭借提出的有效的前置任务(pretext task),在仅使用少量无标签的RGB-D数据进行预训练的情 ...

最新文章

  1. 数据库-SQL中like的用法
  2. Image Semantic Segmentation之DeepLab两个坑
  3. (转载)Google Analytics(Google分析)使用技巧
  4. [Python图像处理] 四十一.Python图像平滑万字详解(均值滤波、方框滤波、高斯滤波、中值滤波、双边滤波)
  5. 系统属性的JDK 12 Javadoc标记
  6. 扎根中国20年,F5“代码到用户”线上峰会盛大启幕
  7. GossipView:圆圈布局的自定义view
  8. linux 服务器间通信,Linux 下的进程间通信:套接字和信号 | Linux 中国
  9. linux .net core 后台执行,.NET Core基于Generic Host实现后台任务方法教程
  10. 7个开放式的前端面试题
  11. 注:以前我的博客,因为丢了用户名和口令,无法使用,声明作废;现转于此。...
  12. oracle 导入文件 年月日,oracle导入文件时,日期格式问题
  13. 联想 DXL 系列对象存储
  14. 中美线径对照表_常用线规号码与线径对照表
  15. 几行代码让qq机器人关键词检测,让机器人也可以又哭又笑,戳一戳你
  16. 关于java的1234
  17. RFC1951的部分翻译及原文(1/2) (转)
  18. 英语语音中的调核例子_英语调核研究.pdf
  19. 春招大盘点:找工作除了招聘网站还有哪些渠道?
  20. js获取唯一设备码_HTML5+下用js获取设备的唯一识别码和本地数据库的操作

热门文章

  1. linux下ipvsadm命令,ipvsadm命令
  2. 基于Centos7系统搭建Redis集群之主从复制(新手教程)
  3. this.$confirm用法
  4. HTML第十三天作业,做一个QQ注册的简单页面
  5. 获取sas员工转正日期 (传入入职时间:‘2018-01-29’、转正月份数:3个月、6个月)
  6. xp如何添加桌面计算机回收站,xp桌面没有回收站,xp桌面回收站图标不见了怎么办...
  7. Service Provider Access resulted in exception 'oracle apps f
  8. Windows工具之——动态壁纸软件lively
  9. 如何写出一篇优秀得csdn的文章?为什么要写作?有什么好处?(送给正在努力的你们)
  10. C# winform 简单五子棋 200代码实现双人网络匹配对战