close

 

AI人工智慧 Caffe遷移式學習:圖片分類

 

使用Docker套件Caffe製作簡易AI圖片分類

 

前言:本篇文章為個人「期末作業」,這次是我第一次自行使用Docker的模組來製作簡易的AI功能,對於剛接出Linux系統不久,在專業知識以及技術都尚未成熟,因此決定將題目訂為老師課堂上所教的內容,雖然過程不太順利,不過在完成後也對Linux以及Docker有更進一步的認識,而且非常有成就感。

 

參考網址:

 

  • 成果展示 * * * * 

DSC_0026.JPG

 

 

  • 訓練檔案網址* * * * 

檔案位置:https://goo.gl/TXdMfu

 

 

 - 製作過程  -

 

環境:已安裝Docker

 

一、安裝Caffe

DSC_0030.JPG

 

1.安裝Caffe

docker pull bvlc/caffe:cpu

 

2.設定

export AILAB_DATA=/home/ckhung/ailab

 

3.實際Run一次

docker run -it --name ailab -v $AILAB_DATA:/root/exdata bvlc/caffe:cpu bash

 

4.確認沒問題就離開Docker(Ctrl+C)

exit

 

 

二、收集訓練用圖片

DSC_0027.JPG

 

1.新建一個資料夾並在內部進行收集訓練圖片動作 (這邊取名為"caffee")

mkdir caffee

cd caffee

 

 

2.下載超連結清單「fall11_urls.txt

wget http://image-net.org/imagenet_data/urls/imagenet_fall11_urls.tgz

tar zxvf imagenet_fall11_urls.tgz

 

3.下載分類代號對照表「synset_words.txt

wget http://dl.caffe.berkeleyvision.org/caffe_ilsvrc12.tar.gz

tar zxvf caffe_ilsvrc12.tar.gz

 

4.整理網址清單

time sed 's/_.*//' fall11_urls.txt | sort | uniq -c | perl -pe 's/\s*(\d+)\s+(\w+)/$2,$1/' > freq_wnid.csv

sed 's#, *#/#g; s/ /,/; s/ /_/g' synset_words.txt | sort > wnid_text.csv

join -t , -a 1 -a 2 freq_wnid.csv wnid_text.csv | sort -t , -k 2 -nr > wnid_freq_text.csv

 

5.將要訓練的名稱和代號做轉寫成「ape-wnid.txt」(後面訓練用檔案)

nano ape-wnid.txt

 

6.下載快速下在文件「imnetget.perl

https://gist.githubusercontent.com/ckhung/5a5bf37a3e9ef469310af1b7c41cce16/raw/2d06853aab0cfcc28ecdbd866798dca75ba0be69/imnetget.perlwget 

 

7.執行下載指令整合

./imnetget.perl -n 50 -i 1 ape-wnid.txt < fall11_urls.txt > cmd.sh

 

8.創建以個資料夾用於存放圖片("Birds"),後下載圖片

mkdir Birds

cd Birds

source ~/caffee/cmd.sh

 

9.刪除破損的圖片

file *.jpg | grep -v 'image data'

rm $(file *.jpg | grep -v 'image data' | sed 's/:.*//')

 

 

三、在本機的 docker 裡, 用 CPU 進行遷移學習

DSC_0029.JPG

 

1.在家目錄新增資料夾"transfer",並且下載需要的套件並解壓縮

mkdir ~/transfer

cd ~/transfer

wget http://fs.cyut.edu.tw/ckhung/180526/code.tgz

tar xzf code.tgz

wget http://fs.cyut.edu.tw/ckhung/180526/bvlc.tgz

tar xzf bvlc.tgz

wget http://fs.cyut.edu.tw/ckhung/180526/curated-fruit.tgz

tar xzf fruit-curated.tgz

 

2.在transfer中在新建birdsimages和output二個資料夾用於存放後續資料

mkdir birdsimages output

 

3.進入caffe

docker rm ailab

docker run -it --name ailab -v ~/transfer:/SH bvlc/caffe:cpu bash

 

4.安裝opencv-python和lmdb,後進入/SH/birdsimages

pip install opencv-python lmdb

cd /SH/fruit-lmdb

 

5.執行python程式pic2lmdb.py,和剛才的ape-wnid.txt檔(這裡改名成birds-wnid.txt)

python /SH/code/pic2lmdb.py -h

time python /SH/code/pic2lmdb.py /SH/code/birds-wnid.txt /SH/Birds

 

6.建置訓練需要的檔案

wc training/index.txt validation/index.txt

$CAFFE_ROOT/build/tools/compute_image_mean -backend=lmdb training/ mean.binaryproto

python /SH/code/bpt2npy.py mean.binaryproto mean.npy

 

7.修改資料夾code中的solver.prototx和train.prototxt的路徑

cd /SH/code

nano solver.prototx

nano train.prototxt

 

8.開始訓練AI

$CAFFE_ROOT/build/tools/caffe train --solver=/SH/code/solver.prototxt --weights /SH/bvlc/bvlc_reference_caffenet.caffemodel > /SH/train.log 2>&1

 

9.察看進度

tail -f ~/transfer/train.log

 

 

四、訓練成果

DSC_0026.JPG

 

1.用貓咪圖片進行AI分類

python /SH/code/cnclassify.py --model /SH/code/deploy.prototxt --weights birds_iter_10.caffemodel --labels /SH/code/birds-wnid.txt /SH/cat.jpg

 

 

備註:Linux系統

 

by -tai-

arrow
arrow

    tim318407 發表在 痞客邦 留言(0) 人氣()