神通情人夢的願望3(Tensorflow+GPU基礎建設中)



話說為了神通情人夢的願望 , 只好著手DIY搞一套GPU基礎建設 (參考此篇 : 神通情人夢的願望2(設法採用GPU提升DCGAN速度)) , 還特地跑了一趟光華原價屋買了一顆 WD 藍標 250G SSD (NT $1390) , 原本是想買 Intel 545s 256G SSD (Pchome 約 NT $1499) , 但原價屋店員跟我說WD三創就有保固 , Intel保固還要送國外原廠 , 想想似乎也有道理 , 就買了 ( 很不堅持 XD ) , 順便經過電子材料行 , 買了個開關回家 , 不然開關機還要一直用"羅賴把" 去 touch 它 ...

順手買了個 8元的開關  有沒感覺按了會爆炸 ...

該有的都有了 , 開始搞東西 , 首先評估到底要用 CenOS or Ubuntu , 爬了一下資料 , 似乎Ubuntu的使用案例較多 ,  參考底下資料 : Install Tensorflow-GPU to use Nvidia GPU using anaconda on Ubuntu 18.04 / 18.10 do AI!

似乎到時編譯CUDA9.0時會遇到 GCC 版本問題   
用Ubuntu似乎比較輕鬆 (參考Ubuntu + CUDA9.0 + tensorflow-gpu 安装过程)

但央喜還是比較喜歡CentOS的環境 , 爬了些資料也是有人用CentOS來玩 , 加上CentOS比較 for Server , ISO下載檔案小 , 央喜習慣用SSH遠端操作 , 不太愛用桌面UI , 想想還是來搞CentOS吧.
( 備忘參考: CentOS 7 安装TensorFlow GPU深度学习环境 )


底下開始來搞東搞西 :

1. 不想燒光碟 , 找了一個4G USB隨身碟 , 準備製作CentOS USB開機

(1)先至官網下載CentOS  (央喜喜歡用 Minimal ISO 安裝  , 反正網路好後有需要的都網路在裝) 
(一開始選用偏愛的元智yzu 載點  , 下載不到一半就卡住 = =  似乎有點障礙  ,  查了一下 mirror status
後來改選用 hinet idc 的 mirror 站台下載飛快 , What happen !? 元智!! 加油!!  )

Hinet IDC 載點 CentOS-7-x86_64-Minimal-1810.iso

(2)要如何做把ISO燒進USB並可以boot呢 ? (參考此篇 : 如何通過 USB 設備來安裝 CentOS)

文中提到 : 由 CentOS 6.5 及 7.0 起,建立 USB 儲存器的首選方法是利用 dd , but 發現被騙了... XD 

用 dd 跑好久 USB讀寫燈一直閃爍 , 後來索性直接 Crtl + C , 還把USB搞壞 , 爬了一下文才把USB修好 (參考 : USB容量變小的恢復解決辦法 ) , 改採 Win32 Disk Imager , 不到片刻就完成了 ... 插進去 , 開機 ! OK!

可用 Win32 Disk Imager 將CentOS ISO寫入USB 做安裝 
( 若你覺的螢幕髒髒的  不是你
的螢幕問題 XD)


2.再來就是設CentOS7網路 . 開發工具 . 需要的套件等等:

反正缺啥就裝啥 , 網路很多資料 , 就不多寫了 , 主要看來大部分 Tensorflow 網路Sample都是 python 的語言寫 , 於是先來裝個 python3吧 

(1)把預設環境設定為Python3  , 參考【Python】CentOS7 安裝 Python3

(2)先安裝測試CentOS yum 自帶的OpenCV 版本  How to Install OpenCV on CentOS 7

(3)用Python爬蟲抓一些圖來試試  百度圖片爬蟲,基於python3

Sample code  ( Test with Python 3.6.3):
============================
import cv2
import sys
import os.path
from glob import glob

def detect(filename, cascade_file="/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml"):
    if not os.path.isfile(cascade_file):
        raise RuntimeError("%s: not found" % cascade_file)

    cascade = cv2.CascadeClassifier(cascade_file)
    image = cv2.imread(filename)
    if image is None: # read failure and skip this image
      return
    if image.shape[2]==1: # drop gray images
      return
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    gray = cv2.equalizeHist(gray)

    faces = cascade.detectMultiScale(gray,
                                     # detector options
                                     scaleFactor=1.1,
                                     minNeighbors=3,
                                     minSize=(96, 96))
    for i, (x, y, w, h) in enumerate(faces):
        face = image[y: y + h, x:x + w, :]
        face = cv2.resize(face, (96, 96))
        save_filename = '%s-%d.jpg' % (os.path.basename(filename).split('.')[0], i)
        cv2.imwrite("face/" + save_filename, face)


if __name__ == '__main__':
    if os.path.exists('face') is False:
        os.makedirs('face')
    file_list = glob('./test/*.jp*')
    for filename in file_list:
        print(filename)
        detect(filename)

============================

(4) 再來先測一下  DCGAN in Tensorflow  , 反正也是缺啥就用 pip 裝一裝 (此時 CUDA還沒搞上去 , 已經累了 XD  ... 先測一下DCGAN可不可以 work)

YES ! 可以RUN ! 也快多了 ( 還沒上 CUDA ) 

似乎有 deprecated 訊息 , 先不管它 , 先筆記一下日後再查 ,  來睏 ~~ XD
=====================================
/opt/rh/rh-python36/root/usr/lib64/python3.6/site-packages/scipy/misc/pilutil.py:482: FutureWarning: Conversion of the second argument of issubdtype from `int` to `np.signedinteger` is deprecated. In future, it will be treated as `np.int64 == np.dtype(int).type`.
  if issubdtype(ts, int):
/opt/rh/rh-python36/root/usr/lib64/python3.6/site-packages/scipy/misc/pilutil.py:485: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
=====================================

DCGAN in Tensorflow running OK , 速度有快許多!! (還沒上 CUDA)

留言

這個網誌中的熱門文章

舊公寓對講機變身為手機遙控門鎖研究筆記

舊大門換裝小米電子鎖筆記

解決愛奇藝APP在SONY電視上花屏問題筆記