torchlm: Can't use cuda in pipnet
I want use cuda in pipnet, so I run the following code:
import torchlm
from torchlm.tools import faceboxesv2
from torchlm.models import pipnet
import cv2
image_path = '../rgb/image0/1.png'
image = cv2.imread(image_path)
torchlm.runtime.bind(faceboxesv2())
torchlm.runtime.bind(
pipnet(backbone="resnet18", pretrained=True,
num_nb=10, num_lms=98, net_stride=32, input_size=256,
meanface_type="wflw", checkpoint=None, map_location="cuda")
)
torchlm.runtime.forward(image)
Then I get a error that say:
RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same or input should be a MKLDNN tensor and weight is a dense tensor
I know it due to my image data is still stay in cpu instead of gpu, and I need load my data to gpu. So I add a line code like following:
image = cv2.imread(image_path)
image = torch.tensor(image).cuda()
But now I get another error:
File "C:\Home\Development\Anaconda\envs\DeepLearning\lib\site-packages\torchlm\tools\_faceboxesv2.py", line 305, in apply_detecting
image_scale = cv2.resize(
cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function 'resize'
> Overload resolution failed:
> - src is not a numpy array, neither a scalar
> - Expected Ptr<cv::UMat> for argument 'src'
It means I need pass a ndarray array instead of a torch tensor. But if I pass a ndarray, its data will stay in cpu, and I will get the first error again.
What shold I do? Hava anyone get the same error?
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 15 (7 by maintainers)
Commits related to this issue
- fix(pipnet): fixed cuda error in pipnet. (#56) — committed to DefTruth/torchlm by DefTruth 2 years ago
- fix(pipnet): fixed cuda error in pipnet. (#56) — committed to DefTruth/torchlm by DefTruth 2 years ago
- Merge pull request #57 from DefTruth/dev fix(pipnet): fixed cuda error in pipnet. (#56) — committed to DefTruth/torchlm by DefTruth 2 years ago
可以安装新版本试试