我正在研究图像复制库,它使用机器学习来预测图像相似度。在此过程中, 均方根用于计算两个图像之间的相似度(我不讨论如何计算)。执行此操作的函数如下所示。
# Function that calulates the mean squared error (mse) between two image matrices
def _mse(imageA, imageB):
err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2)
err /= float(imageA.shape[0] * imageA.shape[1])
return err
Run Code Online (Sandbox Code Playgroud)
当我在包含 5K 图像的文件夹上测试时,我的模型运行良好,但花费了太多时间。所以我决定重构我的代码并将所有张量存储在数据库中。为什么?
如果我将所有图像的张量存储在数据库中而不是用它查询即将到来的图像张量,我将很快得到结果。一遍又一遍地循环所有图像+将一个图像的RMS与其他图像进行匹配将产生许多组合,这将需要时间。
解决方案
如果我存储列表或数组的所有张量并将它们存储在像 Postgres 这样的数据库中,那么我可以轻松地使用RMS查询它们,以便一次获取所有图像,而不是循环遍历它们并找出口是心非。
我需要你的帮助来弄清楚是否有任何方法可以查询 Postgres 以获取具有最接近RMS 的图像
像这样的东西:
SELECT ID_PARTNER, ID_ACCOUNT
, SQRT(Avg( POWER(Act_F_1 - Pred_F_1 , 2) ) ) as feature_1_rmse
FROM ...
GROUP BY ID_PARTNER, ID_ACCOUNT
Run Code Online (Sandbox Code Playgroud)
类似的问题:直接从表中获取数据时获取 RMSE 分数。为此编写一个查询
这就是数据库的样子