转自:http://blog.csdn.net/raby_gyl/article/details/17716283
Tim Cootes 个人主页:http://personalpages.manchester.ac.uk/staff/timothy.f.cootes/
http://www.isbe.man.ac.uk/~bim/Models/aam.html
1、am_tools工具
am_tools——Modelling and Search Software
地址:http://personalpages.manchester.ac.uk/staff/timothy.f.cootes/software/am_tools_doc/index.html
这个文档用来描述如何建立,显示和使用统计表观模型
这些工具仅可用于研究/非商业使用。
可以利用下面的工具:
1、am_build_apm——用来建立表观模型(For building appearance models)
2、am_build_aam——用来建立主动表观模型(For building active appearance models(AAMs))
3、am_view_shape_model——用来显示形状模型(For displaying shape models)
4、am_view_apm——用来显示表观模型(For displaying appearance models)
5、am_markup——用来使用模型进行迭代图像搜索(For interactive image search with the models)
6、am_tri_editor——用来产生和编辑三角剖分(For generating and editing triangulations)
7、am_get_params——用来从标记的图像中获取模型的参数(For getting model parameters from sets of annotated images)
8、am_make_image——用来使用模型产生图像(For generating images using the models )
下载工具和数据:(Windows)
2、模型化和搜索软件:基本手册——Modelling and Search Software:Basic Tutorial
当你下载了工具之后,你应该也获得了一个小的标记数据集,我们可以用它来进行实验。
数据由三个子目录组成:
1、images——包含图像
2、points——包含每一个图像上的注释点
3、models——包含描述模型的数字文件
为了编译模型,在命令行执行下面的步骤:
(注释:
方法1:如我将这个文件下载后加压到D盘根目录,那么我执行下面的操作:开始——运行——cmd——d:——cd D:\am_tools\win_bin 记得要先把models文件夹下需要的文件拷贝进去
方法2:为程序增加这个路径到系统:控制面板——系统——高级——环境变量,在下级面板通过在分号后增加适当的路径来编辑the path statement。在这种改变生效之前,计算机需要重启。然后按下面步骤1开始即可。例如我们上面描述工具(如am_build_apm)在D:\am_tools\win_bin 目录下,我们将其添加到环境变量中的path变量中,然后重启计算机即可。)
1)移动到models子目录
2)运行命令"am_build_apm tim_face"
3)运行命令"am_build_aam tim_face"
4)运行"am_view_shape_model tim_face"来观察形状模型(detail如下:am_view_shape_model)
5)运行"am_view_apm tim_face"来观察表观模型(detail如下:am_view_apm)
6)运行“am_markup tim_face”来进行搜索实验:(detail如下:am_markup)
(1)加载一个单独的测试集图像:选择"File->Load Image Set",从中选择"tim_face_test.smd"
(2)打开搜索参数面板:"Props->Search"
(3)点击"Search"按钮,运行AAM搜索
(4)在主窗口左侧的一行按钮中选择"Move All"
(5)使用鼠标在周围拖动模型点集
(6)重新运行"Search"
(7)使用"+1>"按钮移动到下一个图像
(8)发挥你自己内心的内容和想象。
am_view_shape_model
用来显示一个形状模型模式的变化的一个工具。(A tool to display the modes of variation of a shape model)
它从*.apm文件中读取形状模型(通过am_build_apm建立)
它同时读取关联的parts文件,该文件描述点是如何连接的。
允许操作的控件(control)如下:
1、模型感兴趣的模型(Mode:)
2、改变展示模式样本的数量(N.egs:)
3、改变模型变化的范围(Limit(SD%))(SD——Standard deviation 标准方差)
4、改变用来显示形状的线宽(Width)
另外,允许操作的按钮(buttons)如下:
1、动画显示形状的变化(Animate )
2、产生当前图形的一个封装的PostScript格式(用于包含在文献中)
3、保存一系列的图像,适合用来创建一个movie(注释:当进行这个操作时,最好仅显示一个形状)
am_view_apm
am_markup
导入一个模型——Loading a model
操作模型——Manipulating the Model
用模型进行搜索——Searching with the Model
保存结果——Saving Results
总结:
模型化和搜索软件:练习——Modelling and Search Software:Exercises
1、操作存在的模型——Playing with existing models
当你下载这个工具之后,你应当也获得了一些标记的数据集,我们可以用它们来进行实验。
建立模型之后,试试以下的实验,让自己熟悉模型的建立和搜索过程。
1、编辑SMD文件,将“Colour:”值该为"RGB‘。重新建立模型并且显示它。(注:这里要RGB和//之间有个空格)
2、编辑SMD文件,增加"n_pixels:"变量到20000。重新建立模型并且显示。
3、当使用am_markup进行搜索时,尝试在运行搜索前增加数量(amount),然而显示。估计区域的大小使得模型能够正确地收敛。
4、尝试导入其他人脸图像——模型匹配情况如何?
5、当搜索中使用的模式数量减少时,将发生什么?
2、建立一个新的模型——Building a new model
How to build a new model?
这个文档概括了如何从零开始创建模型,假设你现在所拥有的仅是一组为标记 的图像。
假定你已经建立了你自己的路径,以使得各种各样的工具可以从命令行运行。(例如,在Windows下,为程序增加这个路径到系统:控制面板——系统——高级——环境变量,在下级面板通过在分号后增加适当的路径来编辑the path statement。在这种改变生效之前,计算机需要重启,例如我的am_markup.exe等程序在D:\am_tools\win_bin下,我们将这个目录添加到环境变量中的path变量中)
(1)预备任务——Preparatory Tasks
1、创建一个工程目录(目录和文件名不能有空格),例如osteo
2、为模型(例如 models),点文件(point files)以及图像(images)添加三个子目录。
3、复制下面文件的模版到models目录:xxxx.smd,xxxx.aaprops。使用适当的模型名字替代xxx,例如foream_distal.
4、编辑.smd文件并且增加模型名字(例如forearm_distal),parts文件名(例如forearm_distal)以及需要的各种目录名。也在training_set下增加一对点/图像文件。图像文件是第一个进行分析的图像。
5、编辑.aamprops文件,并且增加模型名字(例如forearm_distal)到am_name、aam_name以及models目录名。
6、创建一个虚拟点文件,称为"points/dummy.pts",如下
- version: 1
- n_points: 2
- {
- 0.0 0.0
- 1.0 1.0
- }
(2)标记第一个图像——Annotating the First Image
假定你正在运行一个shell或者command prompt。改变目录到你创建好的models目录。
1、运行am_markup开始程序,通过使用SMD文件名字调用它(例如" am_markup start forearm_distal")
2、选择Add Curse并且标记第一个点轮廓。定位终点在第一个点上来关闭轮廓。
3、选择Move One调整单个点的位置。如文使用其他工具。
4、当需要时创建额外的轮廓。如果期望建立一个主动形状模型,期望形状周围的轮廓应该充足。对于一个主动表观模型,形状周围的区域同样被确定。
5、通过"File>Save Points As"选择上面创建points子目录来保存点轮廓并且使用图像的文件名,扩展名为.pts
6、通过"File>Save Parts As"选择上面创建的models子目录来保存轮廓的描述并且使用模型的文件名,扩展名为.parts,例如 forearm_distal.parts
7、退出am_markup
(3)创建第一个模型——Create a First Model
1、使用模型的名字运行表观模型建立器(例如"am_build_apm forearm_distal")
2、通过运行"am_build_aam forearm_distal"建立主动表观模型。
3、通过运行"am_view_apm forearm_distal"观察表观模型。
(4)进一步标记图像——Annotating Further Images
1、创建一个SMD文件(称作,例如 data_todo.smd),包含你希望操作的所有图像列表。设置点文件为"dummy.pts"。这简单地使遍历数据更容易。
2、再次运行am_markup(例如am_markup forearm_distal)。先前标记的第一个图像和它的模型在窗口中用黄色显示。
3、使用"File->Load Image Set"导入文件列表进行标记(data_todo.smd)
4、进入Props->Graphics Props并且重复地按Model Points右边的+按钮来扩大model-points的大小(绿色)。
5、使用"Props->Search Props"菜单栏目来获得搜索面板。
6、按左侧栏的"Move All"按钮进入一个模式,在该模式下所有点被移动(使用左键拖动鼠标)或者尺度/旋转(拖动右键)。移动点集到粗略地正确位置。
7、使用搜索面板上的“Search”按钮开始搜索。
8、编辑点集(例如进入"Move one"模式)直到满意。
9、按"Save,Add,Update"或者"Save,Add,Update,Next,Labels,Frame"按钮,后一个按钮将自动的导入列表上的下一个图像。
10、遍历剩下的图像并且退出am_markup。
如果仅使用单个图像训练,搜索将工作的不是很好。建议,当我们增加了一些图像之后,重新建立模型。为了这样做,退出am_markup并且重新运行am_build_apm/am_build_aam工具。模型SMD文件将自动的更新来包含你已经标记的图像(但是值得检查确保没有重复或者任何问题)。从data_todo.smd文件中删除标记的文件。然而重新运行am_markup并且如上继续。
当更多的图像添加到模型后,模型变的更灵活并且能够更好的推广。
3、创建嘴唇形状的一个统计形状/统计纹理模型
这里步骤是安装上述2中操作获取的,这里仅简单的贴一下运行过程的操作效果图。
1、Cootes关于创建一个嘴唇形状的教程中,将嘴唇的左角点和右角点连接起来,我的下面没有,仅是操作的嘴唇的边缘,当然你自己在操作的过程中可以把这个连通性也添加进去。
2、用一幅图像建立模型之后,运行"am_view_apm mouth"观察的表观模型:(上面步骤3.3)
3、再次运行am_markup(例如am_markup mouth)。先前标记的第一个图像和它的模型在窗口中用黄色显示:(上面步骤4.2)
4、进入Props->Graphics Props并且重复地按Model Points右边的+按钮来扩大model-points的大小(绿色):(上面步骤4.4)
5、模型训练完后,导入训练的模型:mouth.smd,然而导入一个测试图像列表,我们这里还是用先前创建的data_todo.smd,然而,我们移动嘴唇大致在嘴唇的位置,然而运行搜索按钮:
拖动鼠标右键改变了一下形状和大小如下图:
点击“Search”按钮,搜索后的结果如下: