训练好的Caffe网络结构,可以固定下来,直接载入程序作为数据库接口使用。本文使用Eric构建运行于Python环境下的图片识别应用程序,因为Eric使用QT作为GUI,且有Python的接口,可直接无缝使用Caffe,并可使用在Linux和Windows环境中。

1.编译好Pycaffe之后,安装Eric4、PyQt4。

软件中心安装 Eric4、PyQt4;

2.配置Eric:

根据程序设置向导配置Eric使用的Python版本、其他设置。

3.建立项目:

点击Eric主界面,Project->new ,设置项目名称、位置;

3.1、界面设计

将左侧的【源代码】选项卡切换至【窗体】选项卡(左数第二个)。

右键空白区域,选择【新建窗体】。

在弹出的对话框中选择【对话框】。

点击Ok之后,填写保存位置,生成一个QtDesigner可以修改的UI文件。

工程左栏右键点击UI文件,点击Open in Qt-Designer弹出设计界面,便可以进行界面设计。

4、设计界面,建立自定义槽

对于Button文件,可以在设计界面添加空槽,再进行代码文件内编辑

也可以不在设计界面添加槽,保存UI文件。

回到工程界面,右键点击编译,生成UI_.....Py文件;

再点击生成对话框代码,生成类代码文件。

因为MCV设计模式使设计和逻辑分离,可以设计好界面后,修改任意类代码不影响界面效果。

默认槽的函数形式为:

若按钮名称为btnParse,则类内槽函数为

@pyqtSignature("")
def on_btnParse_clicked(self):

程序编译运行后,按动按钮btnParse,触发on_btnParse_clicked(self) 设定的行为。

 5.设计逻辑

我的程序主要使用了类文件里面的成员函数on_RecogOne_clicked(self);

以下是参考代码:

import ClassifyFace as cf
.......................................@pyqtSignature("")def on_RecogOne_clicked(self):"""Slot documentation goes here."""#self.tvResult.clear()fName = self.lblPath.text()#print ("fName:%s", fName )#u'Please, load a log file'# 获取地址框内的文件名pattern = self.txtReToMatch.displayText();print ("pattern:%s", pattern)#fileName!path = pattern.toAscii();path=path[7:];path=str(path )# 异常必要的强制转化!print path;#载入识别过程pathSrc =pathOut, pathRec=cf.recogImg(path);#识别函数Num=-1;idx =0;if(Out ==-1):print ("Face Detect fail!");return;else:for i in Out:if (i ==1):Num=idx;idx+=1;#画出修改图像pixmapO=QPixmap()pixmapO.load(pathRec);itemO=QGraphicsPixmapItem(pixmapO)self.scene2.addItem(itemO)self.graphicsView_Out.setScene(self.scene2)if(Num==-1):print ("The Face is not a Baby!");else:print ("The serias %d face is a baby face"%Num);#画出脸部图像pathf=path+"face"+str(Num)+".jpg";pixmapf=QPixmap();pixmapf.load(pathf);itemf=QGraphicsPixmapItem(pixmapf)self.scene3.addItem(itemf)self.graphicsView_Face.setScene(self.scene3)OutStr ="The serias"+ str(Num)+ " X face is a baby face"self.label_Outshow.setText(OutStr);#显示原图像pixmap=QPixmap()pixmap.load(pathSrc);item=QGraphicsPixmapItem(pixmap)self.scene.addItem(item)self.graphicsView_Src.setScene(self.scene)

6.Debug调试程序

注意事项:调试时在主程序打开文件窗口按下F2键,否则可能出现异常提示;

依次关闭调试使用shift+F10按键,不要按退出键按钮;

软件效果:

file:///home/wishchin/图片/smplayer_screenshots/屏幕截图 2015-04-09 12:27:33.png

程序运行效果:

总结

对于简单的图像处理使用CNN问题,比如给出了类似于人脸的结果图片,再进行模式识别。若从0开始,一般可以使用最简单的六层网络,使用Caffe可以仅配置参数就可以构建简单的CNN,一般的六层网络是这样设置的:

InPut——>Conv层——>Pooling层——>Conv层——> Pooling层/ ReLU整流层+pooling层——>全链接层——>softMax层——>输出类别概率。

卷积核实现特征提取的各种不变性,同时可以完成梯度计算、主方向确定等功能。当然一般来说使用越大的卷积核越能学习全局的特征,且若要学到较为全局的特征,需要使用至少两个卷积层。

注意事项

运行过程中:出现cublas无法构建的事,好像是可以忽视的.............

没有使用cublas成功,貌似使用了哪一个blas库来着.........

使用Eric构建Caffe应用程序-Baby年龄识别相关推荐

  1. 使用Eric构建使用Caffe应用程序

    训练好的Caffe网络结构,可以固定下来,直接载入程序作为数据库接口使用.本文使用Eric构建运行于Python环境下的图片识别应用程序. 1.编译好Pycaffe之后,安装Eric4.PyQt4. ...

  2. websockets_如何将WebSockets与AWS API Gateway和Lambda一起使用来构建实时应用程序

    websockets by Janitha Tennakoon 通过詹妮莎·特纳库恩 如何将WebSockets与AWS API Gateway和Lambda一起使用来构建实时应用程序 (How to ...

  3. Ember——在构建Ember应用程序时,我们会使用到六个主要部件:应用程序(Application)、模型(Model)、视图(View)、模板(Template)、路由(...

    在构建Ember应用程序时,我们会使用到六个主要部件: 模板(Template).应用程序(Application).视图(View).路由(Routing).控制器(Controller)和模型(M ...

  4. 使用组件构建Android应用程序

    原文链接:http://android.eoe.cn/topic/android_sdk 应用程序组件 Android's application framework lets you create ...

  5. 用Xwt构建跨平台应用程序[转载]

    Xwt是为Mono和.NET创建的基于.NET框架的跨平台开源UI工具包,它使用通用的API,构建于所支持的每种平台的原生Widget工具包之上.它主要用来创建基于同一个代码库的跨平台桌面应用程序.使 ...

  6. 使用 Node.js、Express、AngularJS 和 MongoDB 构建一个Web程序

    为什么80%的码农都做不了架构师?>>>    使用 Node.js.Express.AngularJS 和 MongoDB 构建一个实时问卷调查应用程序 2014 年 3 月 20 ...

  7. java yii_构建 Java 应用程序

    构建 Java 应用程序 目标 了解对象或对象集合如何变成应用程序 使用 Eclipse 创建驱动程序类 应用程序入口点 所有 Java 应用程序都需要一个入口点,让 Java 运行时知道将从这里开始 ...

  8. Qt Creator构建Web应用程序

    Qt Creator构建Web应用程序 构建Web应用程序 要求 搭建开发环境 为WebAssembly设置Qt 启用WebAssembly插件 指定WebAssembly设置 添加WebAssemb ...

  9. 《Java和Android开发实战详解》——2.2节构建Java应用程序

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...

最新文章

  1. vb mysql数据导入到mssql,[请教]怎样把*.txt文本的数据导入sql数据库中?
  2. Linux环境下Android开发环境的搭建
  3. CodeForces - 1333D Challenges in school №41(构造+模拟)
  4. Gradle属性(四)
  5. 用C#访问Dynamic AX的WebService.
  6. Unique Email Addresses
  7. mybatis加载属性
  8. Vim 的几个彩蛋。。
  9. android-Vibrator的使用
  10. 二十套Java项目源码
  11. 三星内存编码_想问一下三星内存条的型号有什么区别
  12. 【搜索】训练E - Crazy Robot
  13. AcWing 292 炮兵阵地
  14. canvas 将两张图片叠加
  15. 在工作站计算机中创建策略,禁止任何计算机访问本机 8000 端口
  16. docker 常用命令(二)——容器命令
  17. OllyDbg 常用快捷键与命令
  18. SLAM论文粗译:3D Mapping with an RGB-D Camera
  19. Rocket Pool 、InfStones 、Lido 三种质押服务浅析
  20. Oracle学习笔记4

热门文章

  1. App相互唤醒的几种方式
  2. Vue响应式数据: Observer模块实现
  3. Mac下配置环境变量(转)
  4. android 布局滑动中scrollTo 和 scrollBy 方法使用说明
  5. 栈,堆,值类型,引用类型,装箱,拆箱 .NET中 6个重要的概念
  6. [ACM] hdu 1232 畅通工程(并查集)
  7. TortoiseSVN无法查看日志和SVN LOG无法查看日志的解决办法。
  8. SkMaskFilter (SkBlurMaskFilter的使用)
  9. Android 取得 ListView中每一个Item项目的值
  10. LeetCode 239. Sliding Window Maximum