【1】安装SSD(caffe)
终端输入:
sudo apt-get install git
终端输入(即切换至/home/mrchao),即当前Linux用户的主文件夹,mrchao为当前用户(下同)
git clone https://github.com/weiliu89/caffe.git #克隆cafee源码
cd caffe #切换至caffe根目录
git checkout ssd #(切换到ssd分支,出现“分支”则OK)
注意事项:在同一项目下,终端运行任何命令的时候,切记在根目录下运行某子目录内的内容(eg:./data/VOC0712/create_list.sh),否则可能会出现一定的问题。
【2】配置SSD(caffe)
(1)终端输入:
cd /home/mrchao/caffe #切换至caffe根目录
cp Makefile.config.example Makefile.config # 复制caffe提供的Makefile.config样例
vim Makefile.config #修改配置文件
8行,取消注释 CPU_ONLY := 1
21行,取消注释OPENCV_VERSION := 3
48行,如果安装的是openblas,则将值atlas改为open
92行,在INCLUDE_DIRS字段后面添加/usr/include/hdf5/serial
101行,取消USE_PKG_CONFIG字段的注释,否则可能会报错opencv的相关错误
esc键-→:wq! #保存退出Makefile.config文件
(2)终端输入:
cd /home/mrchao/caffe # 切换至caffe根目录
mkdir build #
cd build # 切换至build目录
cmake .. # cmake和..中间又一个空格
make all -j4 #"‐j4"是使用 CPU 的多核进行编译,可以加速编译的速度,这里我选用的j4
make install
make runtest #这一步可以省略,没有影响
make pycaffe #编译pycaffe
(1)预训练模型下载
在caffe/models文件夹下新建VGGNet文件夹,将刚刚下载下来的文件放入这里
(2)下载VOC2007和VOC2012数据集
在主文件夹下(即/home/mrchao/)新建data文件夹
终端输入:
cd /home/mrchao/data #切换至data,目的存放数据集
方法1:
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
方法2:提前下载好,copy过来
解压这三个文件,终端输入(为了不出问题,严格按照以下顺序解压):
cd /home/mrchao/data
tar -xvf VOCtrainval_11-May-2012.tar #解压数据量可能大一些
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
终端输入:#导入Python环境(提前install好)
export PYTHONPATH=$PYTHONPATH:/home/mrchao/caffe/python
终端输入:
cd /home/mrchao/caffe # 切换至caffe根目录
./data/VOC0712/create_list.sh
./data/VOC0712/create_data.sh
注意事项:执行这两条语句的时候,确保用户有caffe目录下的任何子文件的读写可执行权限。
新打开终端,切换至mrchao目录下,命令:chmod -R 777 ./caffe 使用户对caffe目录下所有子文件有读写可执行文件。
若用CPU,则注销以下几行,程序会以CPU形式训练,保存后退出。
#Ifnum_gpus >0:
# batch_size_per_device =int(math.ceil(float(batch_size) / num_gpus))
#iter_size =int(math.ceil(float(accum_batch_size) / (batch_size_per_device * num_gpus)))
# solver_mode =P.Solver.GPU
# device_id =int(gpulist[0])
打开caffe/examples/ssd/ssd_pascal.py这个文件,找到gpus=’0,1,2,3’这一行,如果您的服务器有一块显卡,则将123删去,如果有两个显卡,则删去23,以此类推。
cd /home/mrchao/caffe
python examples/ssd/ssd_pascal.py
【Problem one】:
问题cudasuccess(2vs0)则说明电脑显卡计算量有限,
Solve:再次打开caffe/examples/ssd/ssd_pascal.py这个文件,找到batch_size =32这一行,修改数字32,可以修改为16,或者8,甚至为4,2,1,保存后退出。
【Problem two】:
I0511 17:52:25.115056 63914 caffe.cpp:185] Using GPUs 0
F0511 17:52:25.116345 63914 common.cpp:66] Cannot use GPU in CPU-only Caffe: check mode.
..* Check failure stack trace: *
@ 0x7f6c824c65cd google::LogMessage::Fail()
@ 0x7f6c824c8433 google::LogMessage::SendToLog()
@ 0x7f6c824c615b google::LogMessage::Flush()
@ 0x7f6c824c8e1e google::LogMessageFatal::~LogMessageFatal()
@ 0x7f6c8284c7f0 caffe::Caffe::SetDevice()
@ 0x7f6c81753a40 __libc_start_main
@ (nil) (unknown)
Aborted (core dumped)
Solve:打开CMakeLists.txt,修改:29行,CPU_ONLY为ON就OK!
python examples/ssd/ssd_pascal.py
python examples/ssd/score_ssd_pascal.py
出现(1)中的问题,修改score_ssd_pascal.py内容注释掉与GPU有关的部分内容
python examples/ssd/ssd_pascal_webcam.py
出现(1)中的问题,修改ssd_pascal_webcam.py内容注释掉与GPU有关的部分内容
vim ./examples/ssd/ssd_detect.py
39行,注释掉caffe.set_device(gpu_id)
40行,修改成caffe.set_mode_cpu()
python ./examples/ssd/ssd_detect.py
eog detect_result.jpg #查看效果图
参考资料:
http://www.voidcn.com/article/p-gqxyukkt-xp.html
https://blog.csdn.net/manong_wxd/article/details/78734856
https://blog.csdn.net/GoJawee/article/details/78136430?locationNum=8&fps=1
https://blog.csdn.net/samylee/article/details/51822832
https://blog.csdn.net/rockwzy/article/details/79155566
https://github.com/weiliu89/caffe