主頁 >  其他 > Intel Movidius神經元計算棒加速-Object Detection API訓練MobileNet-SSD模型全流程記錄

Intel Movidius神經元計算棒加速-Object Detection API訓練MobileNet-SSD模型全流程記錄

2021-02-05 13:38:13 其他

這篇文章記錄在臺式機ubuntu18.04下搭建Object Detection API框架,以及Intel Movidius神經元計算棒2代環境,并使用自己的訓練集對MobileNet-SSD網路進行訓練調參與測驗,以及VPU加速推理的全程序,這里對程序中遇到的各種血淚深坑以及奇葩問題進行完整記錄,便于后續歸檔與復現,

Object Detection API訓練MobileNet-SSD模型,以及使用Intel Movidius神經元計算棒加速完整步驟

      • 一/ 搭建Object Detection API 框架與相關環境
        • 1)Anaconda3 安裝與配置
        • 2)Cuda和Cudnn 安裝與配置
          • 2.1)Cuda9.0安裝
          • 2.2)Cudnn7.1.4安裝
        • 3)Tensorflow-gpu 安裝與配置
          • 3.1)創建Conda虛擬環境
          • 3.2)安裝Tensorflow-gpu
        • 4)Object Detection API 框架搭建
      • 二/ 制作訓練-測驗資料集,訓練MobileNet-SSD網路模型
        • 1)按照VOC資料集格式制作訓練-測驗資料集
          • 1.1)制作VOC格式資料集
          • 1.2).record格式的樣本生成
        • 2)訓練MobileNet-SSD網路模型
          • 2.1)配置.config檔案
          • 2.2)啟動訓練
          • 2.3)測驗訓練效果
      • 三/ 搭建OpenVINO? toolkit 框架與相關環境,以及VPU加速推理
        • 1)搭建OpenVINO? toolkit 框架與環境
          • 1.1)安裝OpenVINO? toolkit
          • 1.2)配置神經元計算棒2代硬體驅動
          • 1.3)測驗安裝
        • 2)使用VPU加速推理訓練好的tensorflow模型
          • 2.1)將自己訓練好的Tensorflow模型轉換為IR模型
          • 2.2)將IR推理模型轉換為二進制blob檔案格式
          • 2.3)使用VPU進行實際加速推理測驗

我這里PC端基礎環境為Ubuntu 18.04OpenCV 3.4.13python 3.6.8
之前原本一直用的都是Caffe環境,結果系統升級到18.04后,重新編譯caffe一直沒能編譯成功,試便了國內外各種論壇里的帖子,耗時整整一星期,把boost依賴庫都編出花了還是沒能解決…主要的問題在于編譯到最后一步會報如下錯誤,這里記錄一下:
.build_release/lib/libcaffe.so: undefined reference to boost::re_detail_106501::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const
因此最后就放棄Caffe環境改用Tensorflow了,但可能是運氣不大行,tf的坑貌似我也全部踩遍…
真心建議,不要輕易升級系統,從16.04升級后真的很多深坑,血淚的教訓QAQ…

正文開始之前先總結一下我在Ubuntu18.04系統下安裝依賴包時遇到的相關問題:

問題記錄-01 -------------------------------------------------------------------------------------------------------
當我升級系統后安裝新的依賴包非常慢,于是我更換了國內的阿里源,更換步驟為:
(1)備份原來的源,將以前的源備份一下,以防以后可以用的,

sudo cp /etc/apt/sources.list /etc/apt/sources_init.list

(2)更換源:

sudo gedit /etc/apt/sources.list

使用gedit打開檔案,將下邊的阿里源復制進去,然后點擊保存關閉,阿里官方源 (Ubuntu 18.04):

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://cn.archive.ubuntu.com/ubuntu/ bionic main restricted

## Major bug fix updates produced after the final release of the
## distribution.
# deb-src http://cn.archive.ubuntu.com/ubuntu/ bionic-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://cn.archive.ubuntu.com/ubuntu/ bionic universe
# deb-src http://cn.archive.ubuntu.com/ubuntu/ bionic universe
# deb-src http://cn.archive.ubuntu.com/ubuntu/ bionic-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://cn.archive.ubuntu.com/ubuntu/ bionic multiverse
# deb-src http://cn.archive.ubuntu.com/ubuntu/ bionic multiverse
# deb-src http://cn.archive.ubuntu.com/ubuntu/ bionic-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb-src http://cn.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner

# deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted
# deb-src http://security.ubuntu.com/ubuntu bionic-security universe
# deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse

deb http://security.ubuntu.com/ubuntu/ bionic-security restricted multiverse main universe
deb http://cn.archive.ubuntu.com/ubuntu/ bionic-updates restricted multiverse main universe
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse
# deb-src http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse

(3)更新源:

sudo apt-get update

修復損壞的軟體包,嘗試卸載出錯的包,重新安裝正確版本:

sudo apt-get -f install xxxxxxx

問題記錄-02 -------------------------------------------------------------------------------------------------------

無法獲得鎖 /var/lib/dpkg/lock-frontend - open (11: 資源暫時不可用) 

如果在apt get安裝依賴包時報這個錯誤,首先查看:

ls /var/lib/dpkg/lock-frontend

然后將其洗掉:

sudo rm -r -f /var/lib/dpkg/lock-frontend

如果依然報錯,洗掉:

sudo  rm  -r -f /var/lib/dpkg/lock

問題記錄-03 -------------------------------------------------------------------------------------------------------
ubuntu18.04 處理依賴包問題,遇到 Depends: python3-software-properties (= 0.96.20.9)

應該是因為源本身有問題,例如我升級為Ubuntu 18.04后,如果替換為國內16.04的阿里源就是遇到上述問題,查閱相關檔案后替換為Ubuntu 18.04的阿里官方源問題得以解決,

問題記錄-04 -------------------------------------------------------------------------------------------------------
pip安裝依賴包時,報錯ModuleNotFoundError: No module named 'pip._internal'

當安裝了Python3.6后,我通過修改默認為Python3.6,結果pip就不能用了,一直報錯如下:

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 7, in <module>
    from pip._internal import main
ModuleNotFoundError: No module named 'pip._internal'

輸入pip更新指令python -m pip install --upgrade pip,問題得以解決,
如果輸入運行后依舊繼續出現錯誤“no module named pip”,則運行以下指令:

python -m ensurepip
easy_install pip

繼續報錯:No module named “ensurepip” “ easy_install ”
則可以通過原始碼編譯安裝,命令列如下:

wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate
sudo python get-pip.py
pip --version

------------------------------------------------------------------------------------------------------------------------

一/ 搭建Object Detection API 框架與相關環境

1)Anaconda3 安裝與配置

(1)下載安裝包,官網下載地址:https://www.anaconda.com/download/#linux
在這里插入圖片描述(2)下載完之后是后綴.sh檔案,在終端輸入:

bash Anaconda3-5.1.0-Linux-x86_64.sh

在這里插入圖片描述
點擊回車按鈕進行后續安裝,

(3)終端輸入python查看版本,如果默認不是python3,則在終端輸入:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

執行完上述兩行命令之后在終端輸入python,如果第一行資訊是3.6,則成功,效果圖如下:
在這里插入圖片描述如果要切換到Python2,執行:

sudo update-alternatives --config python

(4)將Python添加到環境變數中,如果在安裝Anaconda的程序中沒有將安裝路徑添加到系統環境變數中,需要在安裝后手工添加,
打開bashrc檔案:sudo gedit ~/.bashrc,在檔案末尾處添加以下陳述句:

export PATH=/home/XXX/anaconda3/bin:$PATH    XXX為自己的用戶名

最后在終端輸入source ~/.bashrc,使環境變數立即生效,
至此,輸入conda -V顯示版本號即為安裝成功,如果沒有成功,重啟系統即可,
也可以在終端輸入ecoh $PATH查看已有的環境變數 ,確認輸出是否已經有Anaconda路徑,

2)Cuda和Cudnn 安裝與配置

最終我這里安裝了Cuda9.0Cudnn7.1.4,這里遇到了很多的問題,
總結一下就是首先cuda的版本一定要和驅動的版本相匹配,不然一切都是白做,我的驅動版本安裝的是390,對應的cuda應該是9.1,但是Cuda9.1版本的tensorflow-gpu只有部分版本的輪子,并且很多博文都說其實Cuda9.1對tensorflow-gpu并不支持,
我安裝到后面Object Detection API那里測驗時也驗證了這個說法,所以我又回來卸載了Cuda9.1,重新安裝了cuda9.0版本,
在這里插入圖片描述

問題記錄-05 -------------------------------------------------------------------------------------------------------

如何卸載CUDA舊版本:

sudo apt-get remove cuda
sudo apt-get autoclean
sudo apt-get remove cuda*

cd /usr/local/
sudo rm -r cuda-9.1

此外,如果是采用deb格式檔案的安裝方式,需要在源中將舊版本的CUDA取消勾選,例如當卸載完CUDA9.1后需要將下圖這個界面與CUDA9.1相關的驅動刪掉,否則后續安裝新的CUDA版本時會直接鏈接到舊版本驅動中,導致無法正確安裝新版本,
在這里插入圖片描述

----------------------------------------------------------------------------------------------------------------------------

2.1)Cuda9.0安裝

Ubuntu18.04自帶了NVIDIA驅動,但是它沒有安裝完整,不能在終端使用nvidia-smi命令查看,在之后的CUDA編譯測驗里面也會出現問題,因此需要重新安裝,重新安裝的方式如下:

首先,檢測NVIDIA圖形卡和推薦的驅動程式的模型,在終端輸入:ubuntu-drivers devices
在這里插入圖片描述

從中可以看到,這里有一個設備是GTX 1070,對應的驅動是NVIDIA -390,所以安裝390版本的驅動,選擇安裝所有推薦的驅動:

sudo ubuntu-drivers autoinstall

執行完命令后,在終端輸入:nvidia-smi 可以得到相關資訊,
在這里插入圖片描述

問題記錄-06 -------------------------------------------------------------------------------------------------------
注意,這里一定要把驅動安裝成功后再重啟,否則會出現無法進入圖形界面的問題,例如:

linux(ubuntu)16.04 開機報錯“Stopping User Manager for UID 123

一直黑屏,連命令列界面也進不去,嚇出一身冷汗,差點就想刪庫跑路了…(危)
參考鏈接(強烈感謝這位大佬):https://blog.csdn.net/u012150360/article/details/90244858

解決思路:
Run mount -o rw,remount / to mount the drive in Read-Write mode.
Run sudo apt-get purge nvidia-* to purge the NVIDIA driver.
You may also need to purge xserver-xorg and reinstall it, which will require you to enable networking in Recovery.(apt-get purge xserver-xorg)
reboot 重啟一下,

問題記錄-07 -------------------------------------------------------------------------------------------------------
我在安裝驅動時候采用命令列sudo ubuntu-drivers autoinstall沒能安裝成功,遇到問題:正試圖覆寫...它同時被包含于軟體包...在處理時有錯誤發生...,以及問題:

下列軟體包有未滿足的依賴關系:nvidia-driver-390 : 依賴:...... 但是它將不會被安裝

后來將cuda重新卸載干凈,添加顯卡驅動源sudo add-apt-repository ppa:graphics-drivers/ppa
之后更新附加驅動sudo apt-get updata,再次安裝驚喜的發現成功了,

最后我這里的附加驅動界面如下所示:
在這里插入圖片描述

---------------------------------------------------------------------------------------------------------------------------

因為Ubuntu18.04默認gcc7.0,而CUDA9.0只支持gcc6.0及以下版本,因此需要降級,這里選擇降級到的版本是gcc5.5版本,

首先查看自己的版本:gcc –version,如果版本高于6.0,則需要降級版本并激活,
在終端輸入:

sudo apt-get install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc/usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/g++ g++/usr/bin/g++-5 50
gcc –version

之后安裝依賴庫,在終端輸入:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev
sudo apt-get install libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

之后在CUDA官網下載相關的CUDA版本,地址:
https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1704&target_type=runfilelocal
在這里插入圖片描述在這里插入圖片描述
在安裝包存放目錄處打開終端輸入:

sudo dpkg -i cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update-2_1.0-1_amd64.deb
sudo apt-get update

繼續在終端輸入:

sudo apt-get install cuda

問題記錄-08 -------------------------------------------------------------------------------------------------------

下列軟體包有未滿足的依賴關系: cuda : 依賴: cuda-9-0 (>= 9.0.176) 但是它將不會被安裝

發現是因為自己關閉了更新,
如果你也遇到問題的話,請按步驟:系統設定-軟體和更新-更新設定為下圖即可:
在這里插入圖片描述

-------------------------------------------------------------------------------------------------------------------------

進入/usr/local目錄下可以看到cudacuda-9.0兩個檔案夾,表明安裝成功,

安裝成功,接下來進行環境變數配置,步驟如下:
打開終端輸入:sudo gedit ~/.bashrc
在打開的組態檔中,將以下內容寫入末尾處.

export CUDA_HOME=/usr/local/cuda-9.0
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64:$LD_LIBRARY_PATHs
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64:/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/lib64"

使環境變數立即生效:source ~/.bashrc

最后對CUDA進行測驗,可以進入例子的檔案夾:cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery,然后執行make命令:sudo make,最后運行Demo:./deviceQuery,如果結果有GPU的資訊,說明安裝成功,自此CUDA9.0安裝配置完成,
在這里插入圖片描述
命令列輸入nvcc -V可以查看CUDA的安裝版本,

2.2)Cudnn7.1.4安裝

官網下載鏈接:https://developer.nvidia.com/rdp/cudnn-archive

為適應Cudn9.0,這里下載的是CuDnnv7.1.4,下載的是.solitairetheme8格式的檔案,安裝步驟如下:

tar -xvzf cudnn-9.0-linux-x64-v7.solitairetheme8
#解壓后的文件夾名稱為cuda ,將對應檔案復制到 /usr/local中的cuda內,
sudo cp cuda/include/cudnn.h   /usr/local/cuda/include 
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

#建立軟連接
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.7.6.4
sudo ln -sf libcudnn.so.7.6.4 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so   
sudo ldconfig

Cudnn安裝成功,這里記錄幾個問題:

問題記錄-09 -------------------------------------------------------------------------------------------------------

/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudnn.so.7 is not a symbolic link

如果后續在使用CUDA加速時遇到這個問題,首先打開libcudnn.so.7所在的目錄:

cd /usr/local/cuda-9.0/lib64/

發現Libcudnn.so.7 和libcudnn.so.7.1.4 兩個檔案,但 理論上只有一個libcudnn.so.7.1.4,
重新鏈接庫即可,在終端執行:

sudo ln -sf /usr/local/cuda-9.0/lib64/libcudnn.so.7.1.4 /usr/local/cuda-9.0/lib64/libcudnn.so.7

問題記錄-10 -------------------------------------------------------------------------------------------------------

其實一開始我的Cudnn版本安裝的是7.0.5,后續在import tensorflow as tf時遇到如下錯誤:

Loaded runtime CuDNN library: 7.0.5 but source was compiled with: 7.1.4.  
CuDNN library major and minor version needs to match or have higher minor version in case of CuDNN 7.0 or later version. 
If using a binary install, upgrade your CuDNN library.  

因為tensorflow-gpu的庫版本和Cudnn不匹配,要求cudnn版本為7.1.4,而我之前安裝的版本是7.0.5,因此需要對cudnn進行升級,升級方法很簡單,而且不會對現有安裝環境造成破壞,升級完之后tensorflow還可以正常使用,

首先使用以下指令查看現有Cudnn的版本:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

洗掉舊版本:

sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*

之后根據cuda和系統環境,在官網下載Cudnn的新版本,按照上文Cudnn的安裝步驟重新安裝,安裝后再次查看Cudnn版本發現已更新,且呼叫不報錯,
------------------------------------------------------------------------------------------------------------------------

3)Tensorflow-gpu 安裝與配置

tensorflow-gpu的安裝簡直吐血,吐吐吐,嘗試了1.5.0,1.8.0,1.13.0,1.14.0,最終我這里安裝了Tensorflow-gpu==1.12.0,踩坑無數,主要問題還是版本問題,要與CUDA版本匹配,同時要與后文Object Detection API版本匹配,否則就是刪號重來的操作…

3.1)創建Conda虛擬環境

創建Conda虛擬環境并激活:

conda create -n tf=1.12 python=3.6
conda activate tf=1.12

問題記錄-11 -------------------------------------------------------------------------------------------------------

“No module named conda”

python版本不小心被改變是產生這個錯誤的主要原因,我之前因為要安裝ROS切換回了python2.7,后來再使用Anaconda就出現了上述問題,

解決方案:
如果之前的Anaconda安裝包還在的話,執行直 bash -u 命令重新安裝anaconda一遍,這種方法可以保存之前創建的虛擬環境:

bash Anaconda3-5.1.0-Linux-x86_64.sh -u

如果以上方法解決不了的話,直接下載最新的安裝包(python版本對應上),安裝Anaconda后,將之前的envs檔案替換即可,

問題記錄-12 -------------------------------------------------------------------------------------------------------

CondaHTTPError: HTTP 000 CONNECTION FAILED for url

可能的原因是著作權問題,anaconda的國內鏡像源停止anaconda的鏡像服務,
解決方案:
在home檔案夾下按下Ctrl+h,找到隱藏的檔案.condarc
洗掉里面所有的內容,把下面的內容復制進去:

channels:
  - defaults
show_channel_urls: true
ssl_verify: false
report_errors: false

問題記錄-13 -------------------------------------------------------------------------------------------------------

CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘

解決方案:

# 激活 anaconda 環境
 source activate
# 退出 anaconda 環境
 source deactivate

激活成功后在命令列的前面會出現:(base) [root@xxxx] #
------------------------------------------------------------------------------------------------------------------------

3.2)安裝Tensorflow-gpu

就是在這里我發現CUDA9.1版本沒有支持的Tensorflow-gpu,具體錯誤資訊為import tensorflow as tf時報錯:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
雖然tiny mind開發了mind/wheels,即為Linux準備的特殊版本tensorflow,里面確實包含了支持CUDA9.1的tensorflow,參考鏈接:https://blog.csdn.net/gaoyu1253401563/article/details/82808269?utm_source=blogxgwz3
但實際上雖然我按照指引正確安裝了支持CUDA9.1的tensorflow-gpu版本,但后面在測驗Object Detection API時還是發現了很多版本不兼容的問題,因此全部卸載干凈,使用了CUDA9.0與Tensorflow-gpu=1.12.0版本,

source activate tf=1.12
pip install tensorflow-gpu==1.12

安裝完成后進入python環境,匯入tensorflow查看是否安裝成功:

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

要測驗是否啟用了GPU加速,可以用以下兩行代碼測驗:

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

如果輸出中有GPU的資訊,說明GPU加速已經啟用:

Sample Output
[name: "/cpu:0" device_type: "CPU" memory_limit: 268435456 locality { } incarnation: 4402277519343584096,
name: "/gpu:0" device_type: "GPU" memory_limit: 6772842168 locality { bus_id: 1 } incarnation: 7471795903849088328 physical_device_desc: "device: 0, name: GeForce GTX 1070, pci bus id: 0000:05:00.0" ]

問題記錄-14 -------------------------------------------------------------------------------------------------------

ImportError: Something is wrong with the numpy installation. 
While importing we detected an older version of numpy in [‘D:\Anaconda3\envs\tensorflow\lib\site-packages\numpy’]. 
One method of fixing this is to repeatedly uninstall numpy until none is found, then reinstall this version.

解決方案:

pip uninstall numpy

選擇y確認卸載,重復命令,直到顯示找不到時才為卸載干凈,之后下載numpy:

pip install numpy

問題記錄-15 -------------------------------------------------------------------------------------------------------

No module named 'absl'

解決方案:
方案一:指定版本安裝:

pip install absl-py==0.1.10

方案二:洗掉后使用pip3進行安裝:
1、洗掉site-packages檔案夾中與absl-py相關的檔案夾
2、輸入以下命令:

pip3 install absl-py -i https://pypi.tuna.tsinghua.edu.cn/simple

問題記錄-16 -------------------------------------------------------------------------------------------------------
之前在安裝tensorflow-gpu其他版本時還遇到了如下幾個問題:

ImportError: cannot import name 'keras_export'
ImportError: cannot import name 'tf_utils'

后來安裝了tensorflow-gpu=1.12.0版本后問題得以解決,或者把tensorflow cpu的版本卸載后也會大力出奇跡,
------------------------------------------------------------------------------------------------------------------------

4)Object Detection API 框架搭建

血淚教訓,這里一定不要直接git clone https://github.com/tensorflow/models.git獲取源代碼,而是去官網上的Releases板塊中下載與tensorflow-gpu版本對應的原始碼版本,一定要對應否則會出現很多問題,
官網鏈接:https://github.com/tensorflow/models/releases

在這里插入圖片描述

下載后放置在新建的tensorflow檔案夾中,例如<path_to_tensorflow>/models/

之后按照如下命令列指令依次安裝:

conda activate tf=1.12

# -------------------------------------------------
sudo apt-get install protobuf-compiler python-pil python-lxml python-tk
pip install --user Cython
pip install --user contextlib2
pip install --user pillow
pip install --user lxml
pip install --user jupyter
pip install --user matplotlib

# -------------------------------------------------
# COCO API installation
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
make
cp -r pycocotools <path_to_tensorflow>/models/research/

# -------------------------------------------------
# From tensorflow/models/research/
protoc object_detection/protos/*.proto --python_out=.

# -------------------------------------------------
# Add Libraries to PYTHONPATH
sudo gedit ~/.bashrc
export PYTHONPATH=$PYTHONPATH:/home/.../tensorflow/models/research/slim
source ~/.bashrc
 
# -------------------------------------------------
python setup.py build
python setup.py install
 

安裝結束后,在/home/.../tensorflow/models/research/路徑下執行測驗代碼:

python object_detection/builders/model_builder_test.py

如果正確顯示如下資訊,則證明Object Detection API 框架搭建成功,否則有問題一定要解決問題不能跳過,后面使用的時候才不會出現別的bug,

................
----------------------------------------------------------------------
Ran 16 tests in 0.112s

OK

問題記錄-17 -------------------------------------------------------------------------------------------------------

Error: No module named 'tf_slim'

解決方案:跳轉到/models/research/slim目錄下安裝:

python setup.py install

問題記錄-18 -------------------------------------------------------------------------------------------------------
如果protobuf出現了問題,需要重新安裝protobuf,雖然我這里沒有用上,但依舊記錄一下安裝步驟:
首先安裝相關的依賴包:

sudo apt-get install autoconf automake libtool curl make g++ unzip

下載protobuf安裝包:https://github.com/google/protobuf/releases/
之后進入下載的protobuf安裝包目錄下面,依次執行以下命令:

./autogen.sh
 ./configure
make
make check

sudo  make install
sudo ldconfig

測驗安裝:protoc --version,如果安裝正確會輸出版本號,
之后安裝protobuf的python模塊,進入protobuf安裝包下的python檔案目錄,執行以下命令:

python setup.py build
python setup.py test
python setup.py install #(如果在這一步沒有權限執行的話,就用sudo python setup.py install )

測驗安裝:

sudo python -c 'import google.protobuf;print google.protobuf.__version__'

----------------------------------------------------------------------------------------------------------------------

二/ 制作訓練-測驗資料集,訓練MobileNet-SSD網路模型

1)按照VOC資料集格式制作訓練-測驗資料集

訓練MobileNet-SSD網路模型時,官方的訓練腳本采用的是讀取VOC資料集,因此如果自己要制作新的資料集,仿照VOC資料集格式進行制作是最為便捷的方式,

1.1)制作VOC格式資料集

按照VOC資料集的要求,創建VOC2021檔案夾,并在檔案夾中創建如下子檔案夾:
Annotations:用于存放標注后的xml檔案,檔案命名000000六位格式;
ImageSets/Main:用于存放訓練集、測驗集、驗收集的檔案串列;
JPEGImages:用于存放原始影像,影像命名000000六位格式,
注意標簽檔案和圖片集檔案路徑中不要存在中文路徑,不然訓練可能會報相關utf-8 gbk的編碼錯誤,

ImageSets/Main中存放的train.txt,val.txt, trainval.txt,test.txt的獲取方法為:

import os
import random
trainval_percent = 0.5 #訓練全集
train_percent = 0.5   #訓練集
xmlfiles_path= 'Annotations'
txtsavepath = 'ImageSets/Main'
all_xmlfiles = os.listdir(xmlfiles_path)

num=len(all_xmlfiles)#圖片xml總數
xmlfiles_list=range(num) #串列
num_val=int(num*trainval_percent)#訓練全集數
num_tra=int(num_val*train_percent)#訓練全集中訓練集數
trainval= random.sample(xmlfiles_list,num_val)#在全部圖片xml中隨機取訓練全集數
train=random.sample(trainval,num_tra)#在訓練全集中隨機取訓練集數

trainval_file = open(txtsavepath+'/trainval.txt', 'w')
test_file = open(txtsavepath+'/test.txt', 'w')
train_file = open(txtsavepath+'/train.txt', 'w')
val_file= open(txtsavepath+'/val.txt', 'w')
for i in xmlfiles_list:
    name=all_xmlfiles[i][:-4]+'\n' #[:-4]從0開始到倒數第4個但不包括該位 此時為6位數圖片名稱.即檔案名稱000000.xml去掉.xml保留數字
    if i in trainval:
       trainval_file.write(name)
       if i in train:
          train_file.write(name)
       else:
          val_file.write(name)
    else:
     test_file.write(name)

trainval_file.close()
train_file.close()
val_file.close()
test_file.close()
1.2).record格式的樣本生成

*將object_detection/dataset_tools/create_pascal_tf_record.py中Line164和Line165:

   examples_path = os.path.join(data_dir, year, 'ImageSets', 'Main',
                                 'aeroplane_' + FLAGS.set + '.txt')

修改為:

examples_path = os.path.join(data_dir, year, 'ImageSets', 'Main', FLAGS.set + '.txt') 
                             ## 'aeroplane_' + FLAGS.set + '.txt')

并在Line56中添加資料集所在的檔案夾名稱:

YEARS = ['VOC2007', 'VOC2012', 'VOC2021', 'merged']

/research/object_detection/data/pascal_label_map.pbtxt備份一個到別的路徑下,例如object_detection/ssd_model/路徑下,之后將里面的內容替換為自己資料集里的標簽與類別數量,
最后執行如下命令列分別生成.record格式的訓練集與驗證集:

python object_detection/dataset_tools/create_pascal_tf_record.py --label_map_path=/home/.../tensorflow/models/research/object_detection/ssd_model/pascal_label_map.pbtxt  --data_dir=/home/.../tensorflow/models/research/object_detection/ssd_model/VOCdevkit --year=VOC2021 --set=train --output_path=/home/.../tensorflow/models/research/object_detection/ssd_model/pascal_train.record

python object_detection/dataset_tools/create_pascal_tf_record.py --label_map_path=/home/.../tensorflow/models/research/object_detection/ssd_model/pascal_label_map.pbtxt  --data_dir=/home/.../tensorflow/models/research/object_detection/ssd_model/VOCdevkit --year=VOC2021 --set=val --output_path=/home/.../tensorflow/models/research/object_detection/ssd_model/pascal_val.record

2)訓練MobileNet-SSD網路模型

2.1)配置.config檔案

object_detection\samples\configs\ssd_mobilenet_v2_coco.config另存為ssd_mobilenet_v2_pascal.config,并備份一個到別的路徑下,例如object_detection/ssd_model/路徑下,之后對該檔案進行修改:
修改1: 將Line9修改為自己資料集的類別數目:

num_classes: 9

修改2: 如果GPU加速性能較弱,需要將Line43中的網路輸入尺寸調小:

image_resizer {
      fixed_shape_resizer {
        height: 128
        width: 128
      }
    }

修改3: 如果GPU加速性能較弱,需要將Line141中的批處理大小調小:

batch_size: 8

修改4: Line156為預訓練權重路徑,可以將其注釋,從頭開始訓練:

fine_tune_checkpoint: "/home/lqs/models/ssd_mobilenet_v2_coco_2018_03_29/model.ckpt"

修改5: Line173,修改訓練集train_input_reader路徑:

train_input_reader: {
  tf_record_input_reader {
    input_path: "/home/.../tensorflow/models/research/object_detection/ssd_model/pascal_train.record"
  }
  label_map_path: "/home/.../tensorflow/models/research/object_detection/ssd_model/pascal_label_map.pbtxt"
}

修改6: Line182,修改驗證集val_input_reader路徑:

val_input_reader: {
  tf_record_input_reader {
    input_path: "/home/.../tensorflow/models/research/object_detection/ssd_model/pascal_val.record"
  }
  label_map_path: "/home/.../tensorflow/models/research/object_detection/ssd_model/pascal_label_map.pbtxt"
  shuffle: false
  num_readers:1
}?
2.2)啟動訓練

執行如下命令列啟動訓練程序:

python object_detection/legacy/train.py --train_dir object_detection/ssd_model/train --pipeline_config_path object_detection/ssd_model/ssd_mobilenet_v2_pascal.config

可以執行如下命令列進行訓練程序的Loss損失可視化:

tensorboard --logdir=/home/.../tensorflow/models/research/object_detection/ssd_model/train/

將終端輸出的http://xxxxxx網址復制到瀏覽器中打開即可查看,
在這里插入圖片描述

訓練結束后可以固化權重,獲得標準的.pb格式檔案,

python object_detection/export_inference_graph.py --input_type image_tensor --pipeline_config_path object_detection/ssd_model/ssd_mobilenet_v2_pascal.config --trained_checkpoint_prefix object_detection/ssd_model/train/model.ckpt-100000 --output_directory object_detection/ssd_model/model/

問題記錄-19 -------------------------------------------------------------------------------------------------------

tensorboard ValueError: Duplicate plugins for name projector

在查看訓練程序可視化時發現如上錯誤,解決辦法為:
在Conda虛擬環境的目錄site-packages檔案夾下, 刪掉tensorboard--1.x.xdist-info 即可,

問題記錄-20 -------------------------------------------------------------------------------------------------------

''tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[?]'' 

這是tensorflow 一個經常性錯誤,錯誤的原因在于:顯卡記憶體不夠
解決方法就是降低顯卡的使用記憶體,途徑有以下幾種措施:
1 減少Batch 的大小;
2 分析錯誤的位置,在哪一層出現顯卡不夠,比如在全連接層出現的,則降低全連接層的維度;
3 增加pool 層,降低整個網路的維度;
4 修改輸入圖片的大小,

問題記錄-21 -------------------------------------------------------------------------------------------------------

ImportError: No module named cv2

在進行影像測驗時遇到了這個問題,解決這個問題首先確保OpenCV安裝正確,之后安裝python-opencv

sudo apt-get install python-opencv

查看是否解決,如果沒有解決執行后續步驟:

如果沒有用anaconda,找到cv2.so檔案find / -name "cv2.so",復制到usr/local/lib/python2.7/site-packages檔案夾下,
如果用的是anaconda2,復制cv2.so到home/anaconda2/lib/python2.7/site-packages檔案夾下;如果使用的是anaconda3,找到cv2.cpython-36m-x86_64-linux-gnu.so,復制v2.cpython-36m-x86_64-linux-gnu.so到home/anaconda3/lib/python3.6/site-packages檔案夾,
然后在終端cd到home,輸入python然后輸入import cv2,此時如果沒有提示錯誤就證明已經解決了這個問題,
----------------------------------------------------------------------------------------------------------------------

2.3)測驗訓練效果

依舊在/home/…/tensorflow/model/research/路徑下執行如下命令列,呼叫官方提供的測驗腳本進行測驗評估:

python object_detection/legacy/eval.py --logtostderr --checkpoint_dir=object_detection/ssd_model/train --eval_dir=object_detection/ssd_model/eval --pipeline_config_path=object_detection/ssd_model/ssd_mobilenet_v2_pascal.config

問題記錄-22 -------------------------------------------------------------------------------------------------------

ModuleNotFoundError: No module named 'pycocotools'

如果遇到這個問題,表明Object Detection API搭建程序中pycocotools工具未成功搭建,重新執行:

# COCO API installation
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
make
cp -r pycocotools <path_to_tensorflow>/models/research/

問題記錄-23 -------------------------------------------------------------------------------------------------------

  File "/home/qinrunnan/tensorflow/models/research/object_detection/utils/object_detection_evaluation.py", line 307, in evaluate
    category_name = unicode(category_name, 'utf-8')
NameError: name 'unicode' is not defined

這個問題與python版本有關,可以將object_detection_evaluation.py檔案中的307行修改為:

category_name = category_name

----------------------------------------------------------------------------------------------------------------------

三/ 搭建OpenVINO? toolkit 框架與相關環境,以及VPU加速推理

1)搭建OpenVINO? toolkit 框架與環境

OpenVINO toolkit分為開源版與Intel版,其中Intel版是Intel發布的專注于推理的深度學習框架,其特點是可將TensorFlow、caffe、ONNX等模型轉換為Intel系列硬體兼容的模型,包括Movidius與Movidius NCS 2,

Intel官網下載toolkit for linux 安裝包,下載地址:
https://software.intel.com/en-us/openvino-toolkit/choose-download/free-download-linux
官方安裝教程:https://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_linux.html

我這里購買的是神經元計算棒2代,記錄一下在臺式機下搭建intel神經元計算棒開發環境的完整程序,

1.1)安裝OpenVINO? toolkit

首先進入下載地址,選擇Linux版,點擊注冊與下載,會收到一封郵件,里面有激活碼與下載地址,

在官網可以下載到toolkit:l_openvino_toolkit_.tgz,我這里用的版本是2020.2.120,在所在目錄下解壓:

tar xvf l_openvino_toolkit_2018.4.420.tgz

解壓后進入檔案夾:cd l_openvino_toolkit_2018.4.420
安裝依賴環境:

./install_cv_sdk_dependencies.sh

打開安裝的GUI界面:

./install_GUI.sh

此時會出現如下界面,按照一般安裝軟體的步驟運行即可,
在這里插入圖片描述
之后OpenVino平臺在CPU、GPU、計算棒VPU上都能夠提供加速推理支持,

1.2)配置神經元計算棒2代硬體驅動

更新udev規則使工具套件能夠與神經計算棒通信,
為此,在終端視窗運行以下命令:cd ~/Downloads,然后一次性復制以下一大塊代碼到命令列中:

cat < 97-usbboot.rules
SUBSYSTEM=="usb", ATTRS{idProduct}=="2150", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idProduct}=="2485", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idProduct}=="f63b", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
EOF

之后,一行一行運行以下命令:

sudo cp 97-usbboot.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo ldconfig
rm 97-usbboot.rules

問題記錄-24 -------------------------------------------------------------------------------------------------------
注:在運行到“sudo ldconfig”時可能會找不到鏈接檔案,解決方法如下:
進入.so檔案所在的路徑,按以下命令建立鏈接:
在這里插入圖片描述

再次執行“sudo ldconfig”就不會報錯了,
----------------------------------------------------------------------------------------------------------------------

1.3)測驗安裝

將神經計算棒插入計算機的 USB 埠,第一次運行這些命令時,可能需要一些時間,因為腳本要安裝軟體依賴項并編譯所有樣本代碼,

cd ~/opt/intel/computer_vision_sdk/deployment_tools/model_optimizer/install_prerequisites/
./install_prerequisites.sh

執行如下測驗代碼:

cd ~/opt/intel/computer_vision_sdk/deployment_tools/demo
sudo ./demo_squeezenet_download_convert_run.sh -d MYRIAD

這個demo是對于一幅汽車的影像進行分類檢測,輸出的預測型別與概率,引數檔案來自caffe,模型是squeezeNet,執行程序中要下載模型引數,程式自動轉換caffemodel到計算棒可以執行的graph檔案,最后程式開始運行推理,

至此,demo已經可以在計算棒上運行了,驗證安裝無誤,

問題記錄-25 -------------------------------------------------------------------------------------------------------

[ ERROR ] Can not init Myriad device: NC_ERROR

首先查看是否是硬體問題,推薦一個大佬的技術博客:https://blog.csdn.net/weixin_42730667/article/details/99676804

如果測驗后發現能夠正常發現設備,說明PC和計算棒能夠正常通信,不是硬體問題,最后發現這個問題是因為運行時需要輸入管理員密碼,應該是權限問題,重新運行:

sudo ./demo_security_barrier_camera.sh -d MYRIAD

-----------------------------------------------------------------------------------------------------------------------------

2)使用VPU加速推理訓練好的tensorflow模型

上面的步驟都是在跑官方提供的已經編譯好的模型檔案,下面介紹一下如何加速推理一個自己訓練的tensorflow模型,

2.1)將自己訓練好的Tensorflow模型轉換為IR模型

官方教程:
https://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_linux.html

OpenVINO提供了深度學習推理套件(DLDT),該套件可以將各種開源框架訓練好的模型進行線上部署,這里摘錄一個原理概念圖,描述的非常到位:
在這里插入圖片描述

首先配置Tensorflow模型轉換為IR模型所依賴的環境元素,在base環境下無需在conda的虛擬環境(否則會出現tensorflow版本沖突問題):

cd /opt/intel/openvino_2020.2.120/deployment_tools/model_optimizer/install_prerequisites
sudo ./install_prerequisites.sh

這個腳本能夠安裝支持 Caffe, TensorFlow 1.x, MXNet, Kaldi*, 以及 ONNX模型轉換的所有基礎環境依賴,
或者也可以僅安裝支持Tensorflow模型轉換的環境依賴:

cd /opt/intel/openvino_2020.2.120/deployment_tools/model_optimizer/install_prerequisites
sudo ./install_prerequisites_tf.sh   #For TensorFlow 1.x:
sudo ./install_prerequisites_tf2.sh   #For TensorFlow 2.x:

之后執行如下命令列進行.pb格式的Tensorflow模型轉換作業,轉為.bin.xml格式檔案:

sudo python mo_tf.py --input_model /opt/intel/openvino_2020.2.120/deployment_tools/model_optimizer/SSD_Mobilenet_V2_IR/tx2_model/frozen_inference_graph.pb --output=detection_boxes,detection_scores,num_detections -o /opt/intel/openvino_2020.2.120/deployment_tools/model_optimizer/SSD_Mobilenet_V2_IR/IR_Models/ --tensorflow_use_custom_operations_config /opt/intel/openvino_2020.2.120/deployment_tools/model_optimizer/extensions/front/tf/ssd_v2_support.json --tensorflow_object_detection_api_pipeline_config /opt/intel/openvino_2020.2.120/deployment_tools/model_optimizer/SSD_Mobilenet_V2_IR/tx2_model/pipeline.config -b 8 --data_type FP16 --reverse_input_channels

注:-b后填寫Tensorflow模型在訓練時的批處理batch_size大小,
不要參考官方給出的命令列,不能用,參考這里提煉的上述代碼,親測可行,

2.2)將IR推理模型轉換為二進制blob檔案格式

有時候IR推理模型在呼叫時會出現無法讀取或不穩定的問題,這時候需要將IR推理模型轉換為二進制blob檔案格式,

執行如下代碼,將OpenVINO的IR模型轉成blob模型:

cd /opt/intel/openvino_2020.2.120/deployment_tools/inference_engine/lib/intel64
set +u
source /opt/intel/openvino_2020.2.120/bin/setupvars.sh
set -u
export MYRIAD_COMPILE=$(find /opt/intel/ -iname myriad_compile)
$MYRIAD_COMPILE -m /home/....../frozen_inference_graph.xml -ip U8 -VPU_MYRIAD_PLATFORM VPU_MYRIAD_2480 -VPU_NUMBER_OF_SHAVES 4 -VPU_NUMBER_OF_CMX_SLICES 4

同樣的,不要參考官方給出的命令列,也不能用,參考這里提煉的上述代碼,親測可行,
注:.xml與.bin檔案需要放在有管理員權限的路徑下,并且兩個檔案需要在相同路徑下,否則會報錯:

1. blob file can not be opened for export
2. blob file can not be opened for export Unknown arguments: 0x200000000
solve:  also need .bin file ->IR(bin,xml)

問題記錄-26 -------------------------------------------------------------------------------------------------------

[Bug] myriad_compile fails with "Unexpected network type"
libinference_engine.so: cannot open shared object file

這個問題就是我按照官方檔案給出的命令列測驗時遇到的問題,替換為上述代碼即可解決,
參考鏈接:https://github.com/openvinotoolkit/openvino/issues/3703
-----------------------------------------------------------------------------------------------------------------------------

2.3)使用VPU進行實際加速推理測驗

初始化openvino環境:

source /opt/intel/openvino/bin/setupvars.sh

重新編譯檢測腳本:
/opt/intel/openvino_2020.2.120/inference_engine/samples/cpp
./build_samples.sh

使用MobileNet-SSD檢測腳本對IR模型進行測驗:

python /opt/intel/openvino_2020.2.120/deployment_tools/inference_engine/samples/python/object_detection_sample_ssd/object_detection_sample_ssd.py -i /home/.../test.png -m /opt/intel/openvino_2020.2.120/deployment_tools/model_optimizer/SSD_Mobilenet_V2_IR/IR_Models/frozen_inference_graph.xml -d CPU

我使用這個object_detection_sample_ssd.py py腳本呼叫測驗沒能成功,可能還是跟環境有關,
這里是通過C++檔案編譯后進行測驗的:

cd /home/qinrunnan/inference_engine_cpp_samples_build/intel64/Release/
./object_detection_sample_ssd -i /home/.../1.png -m /opt/intel/openvino_2020.2.120/deployment_tools/model_optimizer/SSD_Mobilenet_V2_IR/IR_Models/frozen_inference_graph.xml -d CPU

最后插入神經網路加速棒,進行VPU推理加速測驗:

./object_detection_sample_ssd -i /home/.../test.png -m /opt/intel/openvino_2020.2.120/deployment_tools/model_optimizer/SSD_Mobilenet_V2_IR/IR_Models/frozen_inference_graph.xml -d MYRIAD

-----------------------------------------------------------------------------------------------------------------------------
至此本部分內容已經全部結束,回家過年啦,新年快樂~~

最近沉迷人像攝影的喬木小姐
2021.02.03

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/256753.html

標籤:其他

上一篇:Python留出法與n折交叉驗證的對比,5折交叉驗證和15折交叉驗證的區別(回圈繪制ROC曲線)

下一篇:Springcloud+Vue阿里云部署

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more