يوم جيد للجميع. هناك بالفعل الكثير من المقالات حول العمل مع 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) )
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