Skip to content

txin96/Crowd-Counting

Repository files navigation

Crowd-Counting

2018百度之星开发者大赛总决赛优胜奖作品

ResNet-Based Model

Usage

  1. 运行create_training_data.py对训练集图像进行分割,可设置IMG_SIZE使得分割图片大小统一
  2. 运行train.py训练模型
  3. 运行infer.csv可对模型进行评估,infer_write_csv.py可生成符合提交条件的csv文件

Object Detection(SSD)

Usage

  1. 运行create_xml.py生成适用于SSD训练的输入
  2. 运行train.py训练模型
  3. 运行infer.py预测图片中的人数
  4. 运行txt_to_csv.py将第5步得到的txt文件转换为csv文件(包含img_name列,不符合提交条件)

Statistics and Combination

  1. 经训练集的统计,type为bbox的图像数量与type为dot的图像数量比约为4:6,其中用于SSD训练的图像中人数范围从1到92,适用于ResNet-Based-Model训练的图像中人数从1到2000+不等,但人数的分布大致相同,集中于40人以下。
  2. 因为SSD与ResNet-Based-Model训练的图片范围不同,以至于在不同的场景下有各自的优势(比如SSD适用于人少的场景,ResNet-Based-Model适用于人很多的场景),在实际预测时需要适当组合,选择最合适的模型预测出的人数,所以我们在预测结果上使用线性回归,组合出最接近真实值的人数值。该方法的思想类似于决策树,对预测结果分类处理。我们尽量把条件设置成可以将图片数量二等分或多等分,使得每个分支图像数量尽量均匀,同时我们也以图像的大小作为依据之一。使用的工具为Excel的数据分析工具。

如何复现本项目

  1. 下载本项目
  2. 使用训练好的模型,并将预测结果组合使用
    • ResNet Based Model:
      • 如果想自己训练模型,则运行train.py
      • 运行infer_write_csv.py文件预测,结果输出为result_resnet.csv
    • SSD
      • 将当前工作目录切换至ssd文件夹下
      • 如果想自己训练模型,则运行train.py
      • 预测前请先运行process_test_set.py将图片的ignore_region添加到图片上
      • 运行infer.py文件预测,结果输出为people_num.txt
      • 运行根目录下的txt_to_csv.py文件将people_num.txt转换为result_ssd.csv
    • 组合使用
      • 手动拼接(与自动拼接选择一个即可)
        • 将result_ssd.csv与result_resnet.csv横向拼接,第一列为id,第二列为ssd的预测结果,第三列为ResNet Based Model的预测结果,同时将第一行标题删除,并将文件命名为result_wait_to_process.csv
      • 自动拼接
        • 运行merge_csv.py
      • 运行concate_csv.py生成符合提交条件的result.csv

About

The code for Baidu Astar Development Competition 2018.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages