库位角点检测之Centernet/CornerNet算法

1.CornerNet

CornerNet

库位角点检测之Centernet/CornerNet算法_第1张图片

库位角点检测之Centernet/CornerNet算法_第2张图片

库位角点检测之Centernet/CornerNet算法_第3张图片

那么我们从bounding box左上角(top-left corner)看物体。视线横着的话,物体就在视线的下面(那么视线所在位置为the topmost boundary of an object)。视线竖着的话,物体就在视线的右边,那么视线位置为the leftmost boundary

我们每次都将沿着图中箭头方向已遇到最大的值作为填充值即可快速实现 corner pooling。这样每行或者每列只需要进行少量的判断即可,不像之前那样,还需要每个点都要判断所沿方向上所处行和列中的最大值,大大提升了效率。

库位角点检测之Centernet/CornerNet算法_第4张图片

2.Centernet

2.1 Win10+ Anaconda配置与测试

1)anaconda3安装

 安装软件包后配置好python 3.11环境变量。

2)创建隔离环境

conda create -n CenterNet python=3.8 #

activate CenterNet # 切换环境至CenterNet

3) 确认python版本

确认安装的python32位或64,若为32位,下文的torch文件whl 64会冲突,出现

xxx.whl is not a supported wheel on this platform.

(CenterNet) C:\Users\xxx>python
Python 3.8.18 (default, Sep 11 2023, 13:39:12) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.

3)安装CUDA和CUDANN

在选择CUDA时要考虑好Pytorch、CUDA、驱动和显卡之间的版本关系。具体参考版本对应关系

4)下载  torchvision , 下载 torch

若按照如下命令直接下载并安装,可能不成功

conda install pytorch==1.8.0 torchvision==0.9.0

# pip install pytorch==1.8.0 torchvision==0.9.0

可先下载到本地路径,根据相应路径安装,

pip install "D:\downloads\torch-1.8.0+cu111-cp38-cp38-win_amd64.whl"

pip install "D:\downloads\torchvision-0.9.0+cu111-cp38-cp38-win_amd64.whl"

 测试验证安装后的版本

import torch
print(torch.version.cuda)
print(torch.__version__)

print(torch.cuda.is_available()) #查看cuda是否可用

print(torch.cuda.device_count()) #查看可行的cuda数目

5)安装Visual Studio 2019 并配置环境

6)进入CenterNet路径下,cmd 切换到对应隔离环境。

E:\model\CenterNet>activate CenterNet

7)安装必需的依赖库,其中 opencv-python

pip install -r requirements.txt

###################################
opencv-python # 修改-> opencv_python,若继续无法安装成功,可下载后再安装
Cython
numba
progress
matplotlib
easydict
scipy

8) 编译NMS

cd ..\CenterNet\src\lib\external
python setup.py build_ext --inplace

在编译NMS时,cl: 命令行error D8021 :无效的数值参数“/Wno-cpp”,注释

..\CenterNet\src\lib\external\set_up.py 对应 extra_compile_args

import numpy
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize

extensions = [
    Extension(
        "nms", 
        ["nms.pyx"],
        # extra_compile_args=["-Wno-cpp", "-Wno-unused-function"]  注释掉
    )
]

setup(
    name="coco",
    ext_modules=cythonize(extensions),
    include_dirs=[numpy.get_include()]
)

9)编译DCNv2

#下载版本,pytorch_1.9,若选择默认的master版本可能导致后续编译报错
https://github.com/lbin/DCNv2.git

下载解压后置于下列路径下替换原有文件DCNv2

..\CenterNet\src\lib\models\networks

#编译DCNv2
cd ..\CenterNet\src\lib\models\networks
cd DCNv2
python setup.py build develop

10) 运行demo

cd ..\CenterNet\src
python demo.py ctdet --demo ../images/17790319373_bd19b24cfc_k.jpg --load_model ../models/ctdet_coco_dla_2x.pth --debug 2
python demo.py multi_pose --demo ../images/17790319373_bd19b24cfc_k.jpg --load_model ../models/multi_pose_dla_3x.pth --debug 2

运行过程中会在线下载ctdet_coco_dla_2x.pth,multi_pose_dla_3x.pth文件,可能会出现HTTP request请求超时报错。这里的两个文件,第一个是物体检测的,第二个是人体姿态检测的。

可以事先下载好以上两个文件,放入项目\CenterNet\models文件夹下.

若已经将文件下载至本地后,运行demo.py还是会在线下载模型,注释\CenterNet\src\lib\models\networkspose_dla_dcn文件中的pretrained行代码:

def dla34(pretrained=False, **kwargs):  # DLA-34
    model = DLA([1, 1, 1, 2, 2, 1],
                [16, 32, 64, 128, 256, 512],
                block=BasicBlock, **kwargs)
    if 0:#pretrained
        model.load_pretrained_model(data='imagenet', name='dla34', hash='ba72cf86')
    return model

库位角点检测之Centernet/CornerNet算法_第5张图片

库位角点检测之Centernet/CornerNet算法_第6张图片

2.2 VScode环境下修改测试验证

vscode配置python环境后,直接在终端窗口(Ctrl + `)切换隔离环境无效,

PS E:\XXX\CenterNet> conda activate CenterNet

原因

vscode 的 path 加载机制问题, vscode 的 Path 加载过程中,默认继承了一些 PATH,当这些 PATH 中包含系统全局的 PYTHON 版本路径时,则会出现永远加载系统版本的问题

解决方法

在 vscode 的首选项,设置中,去掉从 vscode 继承环境的选项,具体在窗口中

 文件/首选项/设置/终端 去掉对应的勾选项

库位角点检测之Centernet/CornerNet算法_第7张图片

 去掉后再次activate CenterNet 可切换到对应的隔离环境,但会导致常用的命令失效

(CenterNet) E:\XXX\CenterNet\src>ls
'ls' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

此时可在终端窗口右下角 + 添加新的终端窗口PowerShell,相应的ls命令可在新建终端运行。

注意:如果使用快捷键打开的终端窗口(Ctrl + `)默认位于powershell 窗口下,上述会方法失效

选择右侧 “+”,打开command prompt,在这个窗口下执行activate相关命令才能实现环境的切换。

2.3 coco数据集格式说明

{
  "images": [
    {
      "id": 1,
      "file_name": "image1.jpg",
      "width": 640,
      "height": 480
    },
    {
      "id": 2,
      "file_name": "image2.jpg",
      "width": 1280,
      "height": 1080
    }
  ],
  "annotations": [
    {
      "id": 1,
      "image_id": 1,
      "category_id": 1,
      "segmentation": [[x1, y1, x2, y2, ...]],
      "area": 1234,
      "bbox": [x, y, width, height],
      "iscrowd": 0
    },
    {
      "id": 2,
      "image_id": 1,
      "category_id": 2,
      "segmentation": [[x1, y1, x2, y2, ...]],
      "area": 567,
      "bbox": [x, y, width, height],
      "iscrowd": 0
    }
  ],
  "categories": [
    {
      "id": 1,
      "name": "person",
      "supercategory": "human"
    },
    {
      "id": 2,
      "name": "car",
      "supercategory": "vehicle"
    }
  ],
  "info": {
    "description": "COCO 2017 dataset",
    "version": "1.0",
    "year": 2017,
    "contributor": "Microsoft COCO group",
    "url": "http://cocodataset.org"
  },
  "licenses": [
    {
      "id": 1,
      "name": "CC BY-SA 2.0",
      "url": "https://creativecommons.org/licenses/by-sa/2.0/"
    }
  ]
}

2.4 Ubuntun环境下修改测试验证

你可能感兴趣的:(深度学习,深度学习,pytorch,人工智能)