• Wenbin Chen's avatar
    libavfi/dnn: add LibTorch as one of DNN backend · f4e0664f
    Wenbin Chen authored
    PyTorch is an open source machine learning framework that accelerates
    the path from research prototyping to production deployment. Official
    website: https://pytorch.org/. We call the C++ library of PyTorch as
    LibTorch, the same below.
    
    To build FFmpeg with LibTorch, please take following steps as
    reference:
    1. download LibTorch C++ library in
     https://pytorch.org/get-started/locally/,
    please select C++/Java for language, and other options as your need.
    Please download cxx11 ABI version:
     (libtorch-cxx11-abi-shared-with-deps-*.zip).
    2. unzip the file to your own dir, with command
    unzip libtorch-shared-with-deps-latest.zip -d your_dir
    3. export libtorch_root/libtorch/include and
    libtorch_root/libtorch/include/torch/csrc/api/include to $PATH
    export libtorch_root/libtorch/lib/ to $LD_LIBRARY_PATH
    4. config FFmpeg with ../configure --enable-libtorch \
     --extra-cflag=-I/libtorch_root/libtorch/include \
     --extra-cflag=-I/libtorch_root/libtorch/include/torch/csrc/api/include \
     --extra-ldflags=-L/libtorch_root/libtorch/lib/
    5. make
    
    To run FFmpeg DNN inference with LibTorch backend:
    ./ffmpeg -i input.jpg -vf \
    dnn_processing=dnn_backend=torch:model=LibTorch_model.pt -y output.jpg
    
    The LibTorch_model.pt can be generated by Python with torch.jit.script()
    api. https://pytorch.org/tutorials/advanced/cpp_export.html. This is
    pytorch official guide about how to convert and load torchscript model.
    Please note, torch.jit.trace() is not recommanded, since it does
    not support ambiguous input size.
    Signed-off-by: 's avatarTing Fu <ting.fu@intel.com>
    Signed-off-by: 's avatarWenbin Chen <wenbin.chen@intel.com>
    Reviewed-by: 's avatarGuo Yejun <yejun.guo@intel.com>
    f4e0664f
dnn_interface.h 5.27 KB