يوم جيد للجميع. هناك بالفعل الكثير من المقالات حول العمل مع OpenCV on Go على المحور ( وفي الواقع على الإنترنت ).من المؤكد أن الرمز النهائي مثير للاهتمام ، ولكن يجب جمع معلومات أكثر تفصيلاً حول تثبيت برامج التشغيل على شكل قطع - سأحاول دمج جميع الإيماءات الضرورية في مقال واحد.لدي كمبيوتر محمول مع Ubuntu 18.04 على متن الطائرة ،- وحدة المعالجة المركزية: إنتل
- مُعالج الرسومات: Intel / Nvidia
تحاول Nvidia و Intel التغلب على بعضهما البعض ، وسأحاول الاستفادة من OpenVino و Cuda في نفس الوقت.أحذرك على الفور ، لاستخدام Cuda ، تحتاج إلى الحد الأدنى من قدرة الحوسبة (الإصدار) 5.3 ، يمكنك رؤية بطاقة الفيديو الخاصة بك هنا
كودا
لقد اخترت Cuda 10.0 حتى أتمكن من استخدام Tensorflow أيضًا.تحتاج أولاً إلى تنزيل حزمة باستخدام developer.nvidia.com (مثل الأمر Set time (local) ) Set
Setsudo sh cuda_10.0.130_410.48_linux.run
cudNN
ارتباط بالحزمتحتاج إلى تحديد الإصدار الذي يطابق Cuda ، أيتنزيل cuDNN v7.5.0 (21 فبراير 2019) لـ CUDA 10.0
 وتحميل حزمتين ديب
وتحميل حزمتين ديبمكتبة مطوري cuDNN لـ Ubuntu18.04 (Deb)
مكتبة مطوري cuDNN لـ Ubuntu18.04 (Deb)
إذا لم يكن لديك حساب https://developer.nvidia.com/ ، فستتم مطالبتك بتسجيل التثبيت:
التثبيت: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
سائق إنتل OpenCL
رابط المستودع .التركيب: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 (بشكل طبيعي مع العكازات) ، والتي ستجمع كل شيء بمفردها .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 )
 الآن دعونا نتحقق من كيفية عمل ذلك!نحن نستنسخ أنفسنا من شفرة المصدر:git clone https://github.com/Danile71/go_realtime_object_recognition
cd go_realtime_object_recognition
go get -d
go build
./go_realtime_object_recognition
يعمل التعرف على الفيديو على وحدة المعالجة المركزية و / أو VulkanAPI و / أو Cuda.لقد قدمت الآن عدة طلبات سحبgithub.com/hybridgroup/gocv
لدعم OpenVino + Cuda ، ولكن من غير المعروف إلى متى سيذهبون إلى الفرع الرئيسي ، لذلك دعونا نقوم ببعض الحيلة:#!/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
بحيث يمكنك استخدام OpenVino / CPU / VulkanAPI / Cuda في نفس الوقتgo build -tags openvino
./go_realtime_object_recognition
ولتحديد جهاز ، قم بتغييره- وحدة المعالجة المركزية
 
 modelNet.SetPreferableBackend(gocv.NetBackendDefault)
modelNet.SetPreferableTarget(gocv.NetTargetCPU)
 
 
- فولكانابي
 
 modelNet.SetPreferableBackend(gocv.NetBackendVKCOM)
modelNet.SetPreferableTarget(gocv.NetTargetVulkan)
 
 
- كودا
 modelNet.SetPreferableBackend(gocv.NetBackendCUDA)
modelNet.SetPreferableTarget(gocv.NetTargetCUDA)
 
 
- انتل GPU
 
 modelNet.SetPreferableBackend(gocv.NetBackendOpenVINO)
modelNet.SetPreferableTarget(gocv.NetTargetFP16)
 
 
- عصا الحوسبة العصبية Intel 2
 modelNet.SetPreferableBackend(gocv.NetBackendOpenVINO)
modelNet.SetPreferableTarget(gocv.NetTargetVPU)
 
 
إليك مثال صغير آخر مع التعرف على الجنس / العمر / العاطفة.و بعد ذلك الاعتراف من وجوه "الإنسان" باستخدام كودا.إذا المهتمة أي شخص، ولم شيء لم ينجح في مسعاه، الكتابة،سأكون سعيدا للمساعدة :-) تشوكشي ليس كاتبا، لكنني حاولت.تحديث.هناك أوقات تحتاج فيها إلى بناء ثنائي ثابت ؛ لهذا ، استبدل dldt و opencv في التجميع-D BUILD_SHARED_LIBS=ON
على ال-D BUILD_SHARED_LIBS=OFF