變形卷積在Ubuntu下的環境配置

2021-10-08 08:12:47 字數 2774 閱讀 9041

使用變形卷積v1有兩種方式:

1、通過自定義op的方式在自己的python環境裡定義deform_conv這一op。定義op的.cpp以及.cu檔案可以參考git專案:

[mmdetection](

2、包torchvision的 較新版本(大於等於0.6.0)中已經定義好變形卷積。首先通過`pip install torchvision`安裝最新版本,之後在pycharm裡使用變形卷積的過程為:(我的環境下python版本為3.6)

import torch

from torchvision.ops import deformconv2d

model = deformconv2d(in_channels=

1, out_channels=

1, kernel_size=

3, padding=1)

x = torch.rand(1,

1,256,

256)

offset = torch.rand(1,

2*3*

3,256,

256)

out = model(x, offset)

print

(out)

為了使用更加方便,可以將deformconv2d進一步封裝成乙個模組,這樣呼叫時就和常規卷積nn.conv2d()一樣簡單,**如下:

class

deform_conv_v1

(nn.module)

:def

__init__

(self, in_channels, out_channels, kernel_size=

3, stride=1,

padding=

1, dilation=

1, groups=

1, offset_group=1)

:super

(deform_conv_v1, self)

.__init__(

) offset_channels =

2* kernel_size * kernel_size

self.conv_offset = nn.conv2d(

in_channels,

offset_channels * offset_group,

kernel_size = kernel_size,

stride = stride,

padding = padding,

dilation= dilation,

) self.dcn_v1 = ops.deformconv2d(

in_channels,

out_channels,

kernel_size= kernel_size,

stride= stride,

padding= padding,

dilation = dilation,

groups = groups,

bias =

false

)def

forward

(self, x)

: offset = self.conv_offset(x)

# print(offset.shape)

return self.dcn_v1(x, offset)

封裝以後,如果想在我們的模型中使用dcn-v1,只需要新增如下**:

deform_conv_v1(in_channel=

1, out_channel=

1, kernel_size=

3, padding=

1)

sudo

apt-get

install

aptitude

sudo

aptitude

install python3-dev

這樣就基本安裝好了所必須的庫。接下來編寫指令碼setup.py。這一指令碼的編寫很簡單,參考我的,需要改的只有name以及路徑。

from setuptools import setup

from torch.utils.cpp_extension import buildextension, cudaextension

setup(

name =

'deform_conv'

,# 這裡是你自定義的op的名字,自己設定即可

ext_modules =

[ cudaextension(

'deform_conv',[

'/home/***/models/ops/src/deform_conv_cuda.cpp'

,# 自定義op的cpp檔案的路徑

'/home/***/models/ops/src/deform_conv_cuda_kernel.cu'

,# 自定義op的cu檔案的路徑])

,], cmdclass=

)

編寫好指令碼以後,在setup.py目錄下,開啟命令列,切換到對應的環境(如我想在我的名為dcn的conda環境下安裝變形卷積,就切換到dcn這一環境),執行python setup.py install進行編譯。編譯成功後,import deform_conv應該就沒問題了。

我編譯成功的環境的配置為:

python3.6 torchvision0.4.2 cuda10.0 gcc5.4

ubuntu下tensorflow的環境搭建

安裝的方式也有好幾種,通過pip,docker,anacodnda等,因為ubuntu是自帶python和pip的,因此這裡給出的是pip的安裝方式。輸入命令python v確認python的版本,需要2.7或者是3.3 輸入命令pip v或pip3 v確認pip的版本,建議pip在8.1以上,或者...

ubuntu下雙環境

今天一不小心又把ubuntu系統給完壞了,因為我把python3解除安裝了,然後就。好了,不廢話了,接下來就說一下如何在ubuntu下管理python的多個版本。我這裡使用的是乙個叫pyenv的python版本管理工具。系統環境 ubuntu14.04lts,系統預設的python版本為2.7,我這...

ubuntu環境下python虛擬環境的安裝

在開發中安裝模組的方法 pip install 模組名稱 之前我們安裝模組都是直接在物理環境下安裝,這種安裝方法,後面一次安裝的會覆蓋掉前面一次安裝的。那如果一台機器上面開發多個專案使用到不同版本的模組呢?怎麼樣做才能不受版本影響!那麼需要用到虛擬環境,每個虛擬環境互相隔離,在乙個虛擬環境中安裝解除...