织梦CMS - 轻松建站从此开始!

罗索

【Caffe】【场景分类】Places365安装、docker运行,以

jackyhwei 发布于 2020-10-27 16:52 点击:次 
默认的这个程序输出结果是存到一个npy文件中,不在terminal显示,所以需要继续修改让结果在terminal显示出来。
TAG: 场景分类  place365  

场景分类模型

安装文件github地址: https://github.com/metalbubble/places365

下载后解压缩

也可以直接运行:

  1. git clone https://github.com/metalbubble/places365 

同时在上面地址中选择并下载好你要用的pre_trained model。

1. 安装docker


下载地址: https://www.docker.com/community-edition

Ubuntu安装手册地址:

https://store.docker.com/editions/community/docker-ce-server-ubuntu?tab=description

先安装资源库:

  1. sudo apt-get -y install \ 
  2.   apt-transport-https \ 
  3.   ca-certificates \ 
  4.   curl 
  5.   
  6. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 
  7.   
  8. sudo add-apt-repository \ 
  9.        "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ 
  10.        $(lsb_release -cs) \ 
  11.        stable" 
  12.   
  13. sudo apt-get update 

在安装Docker CE

  1. sudo apt-get -y install docker-ce 

最后测试是否安装成功:

  1. sudo docker run hello-world 

测试后把测试image删掉:

  1. sudo su 
  2.   
  3. docker images 
  4.   
  5. docker rmi -f iamge_name or image ID 

2. 创建places365_container

  1. cd places365/docker 

打开README.md

我们可以看到这个容器里包含Ubuntu 14.04系统, Caffe和其相关依赖。

执行:

  1. docker build -t places365_container . 

需要一些时间来下载和安装,一共有3.5G多。

选择好的网络prototxt和对应的model复制到docker/models_places 目录下。

搞定后运行:

  1. docker run places365_container python run_scene.py images/mountains.jpg 

这里需要注意一下,可能是哪点我搞错了,我运行上面的命令说找不到places365_container,后来我改了一下。运行下面命令出结果了。

 

  1. docker run places365_contrainer python run_scene.py images/mountains.jpg

3.调用本地caffe

我定义本地caffe目录为$ROOT

把Places365文件夹复制到$ROOT目录下

这里有两种版本,一个是用caffe中python自带的classfy.py, 一个是用Places365的run_scene.py。这里我都讲一下。

3.1.使用classfier.py

先修改一下classfy.py

默认的这个程序输出结果是存到一个npy文件中,不在terminal显示,所以需要继续修改让结果在terminal显示出来。

找到这一行:

  1. mean = np.load(args.mean_file) 

在下面加上:

  1. meanmean=mean.mean(1).mean(1) 

再定位到:

  1. # Classify 
  2. start = time.time() 
  3. predictions = classifier.predict(inputs, not args.center_only) 
  4. print("Done in %.2f s." % (time.time() - start)) 

在下面加上:

  1. imagenet_labels_filename = '../places365/docker/resources/labels.txt'
  2. #注意这里要改成你自己labels.txt的路径 
  3. labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t'
  4. top_k = predictions.flatten().argsort()[-1:-6:-1] 
  5. for i in np.arange(top_k.size): 
  6.     print labels[top_k[i]] 

最后把132行的路径改成我们自己的文件路径。

  1. imagenet_labels_filename = '$ROOT/places365/docker/resources/labels.txt' 

3.1.1.生成labels.txt

对比就很容易发现,caffe需要的文件是每行只有类别名就好啦。把places365/docker/resources中的的labels.pkl改一下。

我写了下面的脚本,运行就会自动生成labels.txt啦

  1. #!/bin/sh 
  2. cp labels.pkl labels.txt 
  3. sed -i 1d labels.txt 
  4. sed -i 731d labels.txt 
  5. for num in {1..365}; 
  6. do 
  7.     sed -i "/p${num}/d" labels.txt 
  8. done 
  9. sed -i 's/aS//g' labels.txt 
  10. sed -i 's/S//g' labels.txt 
  11. sed -i 's/^.//g' labels.txt 
  12. sed -i 's/.$//g' labels.txt 

3.1.2.运行

使用下面命令运行

  1. cd $ROOT/python 
  2. python classify.py $ROOT/places365/docker/images/mountains.jpg result.npy \ 
  3. --model_def $ROOT/places365/docker/models_places/deploy_alexnet_places365.prototxt \ 
  4. --pretrained_model $ROOT/places365/docker/models_places/alexnet_places365.caffemodel 

其中result.npy是输出文件。

3.2使用run_scene.py

先把这个文件复制到$ROOT/python文件夹下面,

然后直接运行:

  1. python run_scene.py $ROOT/places365/docker/images/mountains.jpg 

搞定!

(renhanchi)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/202010/17760.html]
本文出处:CSDN博客 作者:renhanchi 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容