FlowNet2.0 win10系统疑难问题解决

前言:在之前的学习过程中,FlowNet2.0网络模型的代码配置到win10环境中进行调用,训练遇到了各种各样的问题。到目前为止,已经能够实现对FlowNet网络的训练,修改以及目标物视频中的光流识别。

环境搭建-硬件软件搭配

硬件环境

本机配置:显卡NVIDIA GeForce GTX 1050 Ti 内存 16.00 GB ( 2400 MHz) CPU (英特尔)Intel® Core™ i7-7700HQ CPU @ 2.80GHz(2801 MHz)

系统环境搭建

重点 显卡驱动版本、CUDA版本和Pytorch要对应,这部分可以在网上搜一下《老黄的工程师在这个地方根本没有说明,而且GItHub上光流网络的项目的Readme也一直没有更新,完全靠大家摸索了》,教程很多,在此不详述了。下面是我的设备参数:
NVIDIA硬件驱动信息
CUDA版本

python 模块版本

几个关键模块的版本

训练代码解释

Train and validation 训练模型

python main.py --batch_size 8 --model FlowNet2C --optimizer=Adam --optimizer_lr=1e-4 --loss=MultiScale --loss_norm=L1    --loss_numScales=5 --loss_startScale=4 --optimizer_lr=1e-4 --crop_size 384 512    --training_dataset FlyingChairs --training_dataset_root  /FlyingChairs/FlyingChairs_release/data/      --validation_dataset FlyingChairs --validation_dataset_root  /FlyingChairs/FlyingChairs_release/data/

Inference 调用训练好的模型提取光流信息

python main.py --inference --model FlowNet2 --save_flow --inference_dataset FlyingChairs --inference_dataset_root /FlyingChairs/FlyingChairs_release/data/ --resume FlowNet2_checkpoint.pth.tar

注意数据路径引用,其它没有什么大问题

重点:调用自己训练的模型并提取视频中的光流数据

from models import FlowNet2  # the path is depended on where you create this module
from utils.flow_utils import flow2img
import matplotlib.pyplot as plt
cap = cv2.VideoCapture('video')
#获取第一帧
ret, frame1 = cap.read()
prvs = frame1
i = 0 #控制实现的张数
count = 0
save_path = 'save_path'
while(1):
    ret, frame2 = cap.read()
    prvs_t = prvs
    crop_size = (512,256)
    prvs_t = cv2.resize(prvs_t,crop_size)
    cv2.imwrite("save_path" + str(count) + ".jpg",prvs_t)
    next = frame2
    count += 1
    pim1 = cv2.resize(prvs, crop_size, interpolation = cv2.INTER_CUBIC)
    pim2 = cv2.resize(next, crop_size, interpolation = cv2.INTER_CUBIC)
    
    # obtain the necessary args for construct the flownet framework
    parser = argparse.ArgumentParser()
    parser.add_argument('--fp16', action='store_true', help='Run model in pseudo-fp16 mode (fp16 storage fp32 math).')
    parser.add_argument("--rgb_max", type=float, default=255.)  
    args = parser.parse_args()
    # initial a Net
    net = FlowNet2(args).cuda()
    # load the state_dict
    dict = torch.load("model_save_path")
    net.load_state_dict(dict["state_dict"])
    images = [pim1, pim2]
    images = np.array(images).transpose(3, 0, 1, 2)
    im = torch.from_numpy(images.astype(np.float32)).unsqueeze(0).cuda()
    start = time.time()
    result = net(im).squeeze()      
    end = time.time()
    print(end-start)
    data = result.data.cpu().numpy().transpose(1, 2, 0)
    result1 = np.array(data).reshape(-1,2)
    print(result1)
    img = flow2img(data)
    cv2.imwrite(save_path + str(i)+'.png',img)
    i = i+1
    prvs = next

测试

利用自己视频提取的光流信息
test

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值