ubuntu+anaconda+mxnet環境配置


為了insightface和mxnet較勁的一天

mxnet環境:

官網下載pyhton2.7版本的anaconda,隨便找個安裝教程

sh Anacondaxxxx.sh  #一路默認即可,第二個回車符后修改自己想要安裝的路徑
#安裝完畢后重啟命令行,再次打開切換成了(base)
conda create -n mxnet python=2.7
#等待配置,完成以后繼續:
conda activate mxnet
cat /usr/local/cuda/version.txt  #輸出9.0.xxx
pip install mxnet-cu90

按insightface readme操作,每次加載完數據開始執行時報錯out of memory, batchsize改成1也不行,issue#32有關於這個報錯的討論,結合其他資源各種瞎試,目測是mxnet-cu90的鍋。

conda清華源不支持的解決:

conda info

刪除.condarc里跟清華源有關的網址並保存就可以了

或者也可以一條一條刪除:

conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

 有些環境配不上可能是源的問題,半年沒用,機器默認鏡像被改成阿里源了, scikit-image就一直裝不上,要求python2裝0.15以下版本,按報錯提示還是裝不成,靈機一動加上-i清華源就好了:

 pip install 'scikit-image<0.15' -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

 

----------2019.05.02 還真不是,后來同事說剛好那台機器有塊卡壞了,今天在另外一台也是cu90的機器上裝了,沒啥問題......----------

錯誤信息:

[14:15:31] src/storage/./pooled_storage_manager.h:143: cudaMalloc failed: out of memory

未果的嘗試如下:

1. 強制安裝mxnet-cu92 - 跑不了,cuda版本和mxnet不一致;

    在一個有cuda9.2版本的機器上好不容易裝好了mxnet-cu92,報錯如下:

    OSError: libcudart.so.9.2: cannot open shared object file: No such file or directory

解決方案

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64

    然后各種環境配齊,還是錯:

    Check failed: e == cudaSuccess || e == cudaErrorCudartUnloading CUDA: CUDA driver version is insufficient for CUDA runtime version

    cuda有個對應版本,顯卡太老不支持9.2

2. 直接pip install mxnet - 就是裝了cpu版本,跑不了,程序會強烈要求設置cuda=1;

3. 執行如下指令:

    - 一樣的out of memory問題

4. 用conda create -n mxnet python=3.6搭建python3環境,運行時各種版本不對導致的xrange ascii錯誤

最后找了一個cuda版本7.5的,重復上述步驟改為pip install mxnet-cu75就可以跑了,K80的卡resnet50網絡batchsize=32顯存也就用了一半。

實際訓練batchsize=32會導致lossval=Nan,改成128*8塊卡,每塊卡占8319MB,loss比較穩定的開始下降了

5. (2019.10.29)在cuda-9.0的機器上裝了1.2.1版本的mxnet,用triplet finetune結果很詭異,loss在第一個bag不降,然后驟降,測試結果還不如原始模型。不太確定當時怎么配的環境了,pip install mxnet-cu90換成1.5.1就正常

    ---> 

 

 

其他環境:

1. No module named memonger

git clone https://github.com/dmlc/mxnet-memonger.git
export PYTHONPATH=$PYTHONPATH:/clone下來的memonger路徑

2. pip install sklearn pillow opencv-python等,如果出現 Read timed out. 后加--default-timeout

pip install mxnet-cu80 --default-timeout=1000

3. 安裝Anaconda后推出shell也不自動進入conda環境

vi ~/.bashrc
export PATH=$PATH:/home/xxx/anaconda2/bin  #輸入以后保存退出
source ~/.bashrc

 再次退出shell再進入就好了。

4. openBlas安裝

 

運行insightface:

訓練

可以用src/train_softmax.py  r100網絡K80的卡要設batchsize=64

config.py里面的num_classed要和數據里面的id數匹配(不匹配的症狀是lossvalue到4000個batch會慢慢變大,最后nan)

CUDA_VISIBLE_DEVICES是一種臨時環境變量,用來指示mxnet哪些gpu是可用的。

數據准備

mxnet生成rec的正確姿勢:

python im2rec.py /xxx/data/celeb /ddd/FR/celebrity --list --recursive
python im2rec.py --num-thread 28 /xxx/data/celeb.lst /ddd/FR/celebrit

 prefix和root放在前邊,list和recursive如果顯示指定就是True,否則作為False,應有如下打印信息和輸出:

lst格式如下,Label從0開始需要連續:

其他問題

bind報錯,"RuntimeError: softmax_label is not presented"

參考這里

  provide_data  = test_dataiter.provide_data
  provide_label = test_dataiter.provide_label
  model.bind( data_shapes=provide_data, \
    label_shapes=provide_label, for_training=False
  )
  model.set_params(arg_params, aux_params, allow_missing=True)  #加上allow_missing=True就可以了

 

 

資源:

本來是要趁着五一小長假擼一遍論文系統整理一下的,發現資源已經很豐富了:

FaceResources

awesome-face

最開始的幾篇經典整理如下:

測試指標:

先看1再看2,竊以為,把相同id做為P;不同id作為N,TAR相當於TPR;FAR相當於FPR,人臉識別領域的TAR和分類的TPR以及檢測的Recall是同一個指標。

測試時如果在萬分之一之前都正常,到某個量級突然閾值變得很大,TPR驟降,多半是測試數據集標注錯誤比例過高(相對於測試量級),如果測試id本身不夠多,比如只有2000個id,負例對只有約400萬個,要測百萬分之一,就要取分數的倒數第4個作為閾值,而測試樣本里有幾個明明是同一個人被標成了不同人,取到的閾值就會很大,導致正例對中大量閾值稍小的樣本對被誤判為不同人。

經查是切圖代碼bug,有的id對應的原始圖像是壞的,try except里沒有continue,導致保存了上一次處理的圖像作為這個id。

megaface測試

tricks:

蘇寧:只微調最后一層特征,在調整到一定程度之后,才會放開所有的參數,微調整個模型。

 

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

paddlepaddle的環境,懶得建新文檔,就放這里吧,按照官方的來,不管復雜的安裝手續,直接執行:

pip install paddlepaddle-gpu==1.7.1.post97 -i https://mirror.baidu.com/pypi/simple

傻瓜式安裝,不知道百度給裝了什么依賴庫,裝好以后服務器的消息都是中文的了,暫未發現其他影響,然后按官方提供方式驗證:

import paddle.fluid paddle.fluid.install_check.run_check()

果然報錯了,libcublas找不到

locate libcublas.so   #找到本地地址

根據找到的地址,執行:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH://usr/local/cuda-9.0/targets/x86_64-linux/lib/

就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM