gpt4 book ai didi

haskell - Haskell中带注释的人脸图像数据库表示

转载 作者:行者123 更新时间:2023-12-03 14:41:11 25 4
gpt4 key购买 nike

困难在于:不同的注释图像数据库具有不同的标志集。例如,IMM 数据库有近 60 个地标,而 BioID 有大约 17 个。一些地标在数据库之间是常见的“共享”,有些则不是。

我想就如何在 Haskell 中表示此类数据结构征求意见?任务是使用不同的图像数据库,用相同的工具训练它们,并能够“交叉”比较用它们训练的预测器的结果?

enter image description here

这里开始一些伪代码:

-- 

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:将来我还想做:
  • 取两个图像数据库的“交集”并训练具有少量地标但训练数据更大的拟合器。
  • 取两个图像数据库的“联合”并训练另一个拟合器,该拟合器将具有最多的地标,但训练数据的大小可能较小,因为仅使用两个数据库共有的点。

  • 法兰克: link to franck database

    IMM: link to IMM database

    生物识别号: link to BioID database

    最佳答案

    最简单的方法可能是

    import qualified Data.Map as M

    data MarkType = LeftEye | RightEye | LeftNoseTip | RightNoseTip | NoseTop | Mouth

    data MarkData = MarkData { mdX :: Int, mdY :: Int, ... }

    type Face = M.Map MarkType MarkData

    因此,您列出了 MarkType 中所有数据集的单个标记标识符。然后是 Face可以有不同的标记,如果你想在 2 个面之间共享标记,你可以 M.intersect .

    关于haskell - Haskell中带注释的人脸图像数据库表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18733984/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com