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