Hari baik untuk semua Sudah ada banyak artikel tentang bekerja dengan OpenCV on Go on the hub ( dan memang di Internet ).Kode yang sudah selesai tentu menarik, tetapi informasi yang lebih terperinci tentang cara menginstal driver harus dikumpulkan dalam beberapa bagian - saya akan mencoba menggabungkan semua gerakan yang diperlukan menjadi satu artikel.Saya punya laptop dengan Ubuntu 18.04 on board,- CPU: Intel
- GPU: Intel / Nvidia
Nvidia dan Intel berusaha untuk saling mengalahkan, dan saya akan mencoba memanfaatkan OpenVino dan Cuda pada saat yang bersamaan.Saya segera memperingatkan Anda, untuk menggunakan Cuda Anda memerlukan kemampuan Compute minimum (versi) 5.3, Anda dapat melihat untuk kartu video Anda di sini
Cuda
Saya memilih Cuda 10.0 sehingga saya bisa menggunakan Tensorflow juga.Pertama, Anda perlu men-download paket dengan developer.nvidia.com (seperti runtime (lokal) )
Set perintahsudo sh cuda_10.0.130_410.48_linux.run
tidak bisa
Tautan ke paket.Anda harus memilih versi yang cocok dengan Cuda, yaituUnduh cuDNN v7.5.0 (21 Feb 2019), untuk CUDA 10.0
Dan unduh dua paket debPerpustakaan Pengembang cuDNN untuk Ubuntu18.04 (Deb)
Perpustakaan Pengembang cuDNN untuk Ubuntu18.04 (Deb)
Jika Anda tidak memiliki akun https://developer.nvidia.com/ , Anda akan diminta untuk mendaftar
Instalasi:sudo dpkg -i libcudnn7-dev_7.5.0.56-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7_7.5.0.56-1+cuda10.0_amd64.deb
Intel OpenCL Driver
Tautan ke repositori .Instalasi:wget https://github.com/intel/compute-runtime/releases/download/20.04.15428/intel-gmmlib_19.4.1_amd64.deb
wget https://github.com/intel/compute-runtime/releases/download/20.04.15428/intel-igc-core_1.0.3151_amd64.deb
wget https://github.com/intel/compute-runtime/releases/download/20.04.15428/intel-igc-opencl_1.0.3151_amd64.deb
wget https://github.com/intel/compute-runtime/releases/download/20.04.15428/intel-opencl_20.04.15428_amd64.deb
wget https://github.com/intel/compute-runtime/releases/download/20.04.15428/intel-ocloc_20.04.15428_amd64.deb
sudo dpkg -i *.deb
Opencv + OpenVinoScript (secara alami dengan kruk), yang akan mengumpulkan semuanya dengan sendirinya.run.sh#!/bin/bash
git clone https://github.com/opencv/dldt -b 2019 && \
(cd dldt/inference-engine && \
git submodule init && \
git submodule update --recursive && \
./install_dependencies.sh && \
mv -f thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/Release thirdparty/clDNN/common/intel_ocl_icd/6.3/linux/RELEASE && \
mkdir -p build && \
cd build && \
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_SHARED_LIBS=ON \
-D ENABLE_TESTS=OFF \
-D ENABLE_VPU=ON \
-D ENABLE_MKL_DNN=ON \
-D ENABLE_CLDNN=ON .. && \
make -j $(nproc --all) && \
touch VERSION && \
mkdir -p src/ngraph && \
sudo cp -r ../bin/intel64/RELEASE/lib/* /usr/local/lib && \
cp thirdparty/ngraph/src/ngraph/version.hpp src/ngraph && \
sudo make install)
OPENCV_VERSION="4.2.0"
curl -Lo opencv.zip https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \
unzip -q opencv.zip && \
curl -Lo opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \
unzip -q opencv_contrib.zip && \
rm opencv.zip opencv_contrib.zip && \
(cd opencv-${OPENCV_VERSION} && \
mkdir build && cd build && \
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-${OPENCV_VERSION}/modules \
-D InferenceEngine_DIR=../../../dldt/inference-engine/build \
-D WITH_JASPER=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_EXAMPLES=OFF \
-D ENABLE_CXX11=ON \
-D WITH_INF_ENGINE=ON \
-D WITH_QT=OFF \
-D WITH_GTK=ON \
-D WITH_FFMPEG=OFF \
-D CUDA_ARCH_BIN=5.3,6.0,6.1,7.0,7.5 \
-D CUDA_ARCH_PTX=5.3 \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D ENABLE_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D WITH_TIFF=OFF \
-D WITH_WEBP=OFF \
-D WITH_QT=OFF \
-D WITH_PNG=OFF \
-D WITH_1394=OFF \
-D HAVE_OPENEXR=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_opencv_java=NO \
-D BUILD_opencv_python=NO \
-D BUILD_opencv_python2=NO \
-D BUILD_opencv_python3=NO \
-D BUILD_SHARED_LIBS=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON .. && \
make -j $(nproc --all) && \
sudo make preinstall && sudo make install && sudo ldconfig )
Sekarang mari kita periksa bagaimana ini akan berhasil!Kami mengkloning sendiri kode sumber:git clone https://github.com/Danile71/go_realtime_object_recognition
cd go_realtime_object_recognition
go get -d
go build
./go_realtime_object_recognition
Pengenalan video akan bekerja pada CPU, VulkanAPI dan / atau Cuda.Sekarang saya telah membuat beberapa permintaan tarikgithub.com/hybridgroup/gocv
untuk mendukung OpenVino + Cuda, tetapi tidak diketahui berapa lama mereka akan pergi ke cabang master, jadi mari kita lakukan sedikit trik:#!/bin/bash
cd $GOPATH/src/gocv.io/x/gocv
wget https://patch-diff.githubusercontent.com/raw/hybridgroup/gocv/pull/607.patch
wget https://patch-diff.githubusercontent.com/raw/hybridgroup/gocv/pull/609.patch
wget https://patch-diff.githubusercontent.com/raw/hybridgroup/gocv/pull/610.patch
wget https://patch-diff.githubusercontent.com/raw/hybridgroup/gocv/pull/612.patch
patch -p1 < 607.patch
patch -p1 < 609.patch
patch -p1 < 610.patch
patch -p1 < 612.patch
Sehingga Anda dapat menggunakan OpenVino / CPU / VulkanAPI / Cuda secara bersamaango build -tags openvino
./go_realtime_object_recognition
Dan untuk memilih perangkat, ubah- CPU
modelNet.SetPreferableBackend(gocv.NetBackendDefault)
modelNet.SetPreferableTarget(gocv.NetTargetCPU)
- VulkanAPI
modelNet.SetPreferableBackend(gocv.NetBackendVKCOM)
modelNet.SetPreferableTarget(gocv.NetTargetVulkan)
- Cuda
modelNet.SetPreferableBackend(gocv.NetBackendCUDA)
modelNet.SetPreferableTarget(gocv.NetTargetCUDA)
- GPU Intel
modelNet.SetPreferableBackend(gocv.NetBackendOpenVINO)
modelNet.SetPreferableTarget(gocv.NetTargetFP16)
- Intel Neural Compute Stick 2
modelNet.SetPreferableBackend(gocv.NetBackendOpenVINO)
modelNet.SetPreferableTarget(gocv.NetTargetVPU)
Berikut contoh kecil lainnya dengan pengenalan gender / usia / emosi.Dan kemudian pengakuan objek "orang" menggunakan Cuda.Jika ada yang tertarik, dan sesuatu tidak berhasil, tulis,saya akan dengan senang hati membantu :-) Chukchi bukan seorang penulis, tetapi saya mencoba.upd.Ada saat-saat ketika Anda perlu membuat biner statis, untuk ini, ganti dldt dan opencv di majelis-D BUILD_SHARED_LIBS=ON
di-D BUILD_SHARED_LIBS=OFF