困难在于:不同的注释图像数据库具有不同的标志集。例如,IMM 数据库有近 60 个地标,而 BioID 有大约 17 个。一些地标在数据库之间是常见的“共享”,有些则不是。
我想就如何在 Haskell 中表示此类数据结构征求意见?任务是使用不同的图像数据库,用相同的工具训练它们,并能够“交叉”比较用它们训练的预测器的结果?
这里开始一些伪代码:
--
data FaceIMM = LeftEye RightEye Nose Mouth Chin
data FaceBioID = LeftEye RightEye LeftNoseTip RightNoseTip NoseTop Mouth
...
-- training
--
predictor <- train confParameters landmarkDescriptors positionValues
...
fitter <- meanShifter . predictors
...
-- detection
--
fitBioID = fitterBioID face
fitIMM = fitterIMM face
...
-- comparison
errorBioID = distance (fitBioID - truth)
errorIMM = distance (fitIMM - truth)
compare errorBioID errorIMM
为了清楚起见,我已经有了“训练”和“拟合”功能,它们目前要么存储要么接受数据列表。但我想做得比这更好。
我不希望看到完全完善的数据结构,而是会帮助我开始解决这个问题的东西。
EXTRA:将来我还想做:
取两个图像数据库的“交集”并训练具有少量地标但训练数据更大的拟合器。
取两个图像数据库的“联合”并训练另一个拟合器,该拟合器将具有最多的地标,但训练数据的大小可能较小,因为仅使用两个数据库共有的点。
FRANCK:链接到franck数据库
IMM:链接到 IMM 数据库
BioID:链接到 BioID 数据库