Ling-Bao
Ling-Bao
``` import numpy as np from matplotlib import pyplot as plt # load crowd map file mp_name = *** mp = np.load(mp_name + ".npy" ) # crowd counts people_counts =...
抱歉,我这里没有这个数据集
(1)这里的代码实现比较尴尬,在我训练完tf模型后才发现调用了两次self.g_L_bn_e2(),但name='g_L_e1_con'/'g_L_e2_con',阴差让错的不统一但结果是对的;后面没有时间训练新的模型就没有将代码统一起来。 ``` self.g_L_bn_e1 = batch_norm(name='g_L_bn_e1') self.g_L_bn_e2 = batch_norm(name='g_L_bn_e2') ...... e1 = self.g_L_bn_e2(conv2d(image, output_dim=64, k_h=6, k_w=6, d_h=2, d_w=2, name='g_L_e1_con')) e2 = self.g_L_bn_e2(conv2d(lrelu(e1), output_dim=64, k_h=4, k_w=4, d_h=2, d_w=2, name='g_L_e2_con')) ``` 建议:如果需要新训练模型又想统一代码风格,可以将第一个self.g_L_bn_e2()改为self.g_L_bn_e1()。 (2)没太明天你的问题。这里实现的功能是将图像沿长、宽中线分为4个等大小块(同理也需要将密度图分为4个等大小块),然后一次性送入self.generator_small()模型获取估计密度图。...
(1)点赞哈,我这里的写法确实有问题,只是凑巧图像长宽相等,在调试的时候没有发现。 (2)这个数据集由mcnn作者提供,怀疑是他的matlab标注工具有点问题。
我把网络做成了全卷积,所以输入可以是原图,但需要修改下网络的输入大小,可以参考[product.py](https://github.com/Ling-Bao/ACSCP_cGAN/blob/master/product.py),将Line 45的输入改为自己图像的尺寸
将密度图进行求和
> @Ling-Bao 没有在这两个数据集上做过测试,我认为有ROI时只需要对ROI求和
暂时没有遇见这个问题,可以检查下tensorflow版本,项目用的是python3.6和tensorflow1.0.0
可以有几种不同的处理方法: (1)将原始图像resize到720x720,然后在生成人群密度图;但这种方法会改变人头对象的形状,感觉不是特别好; (2)保证原始图像短边大于720,然后生成人群密度图;使用的时候,在原始图像上随机crop 720x720的图像用于训练;我在训练的时候采用的是这种方法,可以保证不改变人头对象形状的条件下,对数据样本进行增广; (3)其它处理方法。
ACSCP模型包括两个生成器:一个是G_large模型,输入为720x720;另一个是G_small,输入为240x240,由720x720图像等分为4块得到。论文作者认为4个小块的人群密度与整图的人群密度应该相等,设计了一个一致性损失,用于保证估计的人群密度图具有一致性。 也就是说G_large生成器输入为720x720;G_small生成器输入为240x240。 备注: 在进行预测时,仅使用G_large生成器模型进行人群密度的估计;同时,整个ACSCP模型为全卷积模型,所以训练完成后,G_large生成器模型的输入图像可以是任意大小(目前项目里的模型被我设置为了固定值)。