AI人工智慧 Caffe遷移式學習:圖片分類
使用Docker套件Caffe製作簡易AI圖片分類
前言:本篇文章為個人「期末作業」,這次是我第一次自行使用Docker的模組來製作簡易的AI功能,對於剛接出Linux系統不久,在專業知識以及技術都尚未成熟,因此決定將題目訂為老師課堂上所教的內容,雖然過程不太順利,不過在完成後也對Linux以及Docker有更進一步的認識,而且非常有成就感。
參考網址:
- 「很犯規的caffe初體驗:省略訓練直接跳到影像辨識」:https://goo.gl/YSugzt
- 「按照類別下載 ImageNet 訓練圖片的一小部分」:https://goo.gl/2rzH7m
- 「Caffe 遷移學習範例: 分辨猿類相片」:https://goo.gl/BUbKah
- 成果展示 * * * *
- 訓練檔案網址* * * *
- 製作過程 -
環境:已安裝Docker
一、安裝Caffe
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
二、收集訓練用圖片
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 進行遷移學習
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
四、訓練成果
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-
留言列表