Halcon deep learning之目标检测笔记(一)

Halcon目标检测的学习主要参考了自带的detect pills的例子,该例子分了四部分,分别是

  • 创建网络和数据预处理
  • 训练网络
  • 评估训练的效果
  • 测试新图像

本文记录了对其中第一步,即创建网络和数据集预处理这部分的一些理解。

创建深度学习网络
  • 设置网络参数
    这一步主要是设置选择halcon深度学习网络模型,如pretrained_dl_classifier_compact.hdl。设置类别的数量。指定图像的宽、高、通道数等。
  • 创建目标检测网络的模型
    Halcon从18.11版本起,有了数据字典这样的概念。可以将上述设定的网络参数,以关键字的形式,存放在一个字典文件中。因而可以用create_dict算子创建数据字典,并set_dict_tuple将网络的参数存储在数据字典中。以修改“Key”值的方式设置模型的参数。
    最后使用create_dl_model_detection创建网络的模型,输入上一步设置的模型参数等信息,输出一个DLModelHandle的模型句柄。
    假如之前已经创建过合适的网络模型,并用write_dl_model算子进行过保存,也可以使用read_dl_model算子读取它。
数据集预处理
  • 设置输入输出的路径
    输入路径有两个,一个是图像路径HalconImageDir,一个是Json文件路径PillBagJsonFile。这两个参数用于后续在图像路径中读取coco文件。
    输出路径首先定义一个新的文件夹路径,用于存放样本和模型文件等数据。
    设置基于深度学习的目标检测模型的路径,该模型文件以.hdl结尾。
    设置样本数据文件夹ExampleDataDir:'detect_pills_data'
    数据字典文件夹路径,用于存放DLSampple文件。
    设置存储预处理参数文件的路径。
  • 设置分割数据集参数
    分割数据集是为了区分出训练数据集和验证数据集。这一步设置分割的比例,例如:
    TrainingPercent := 70
    ValidationPercent := 15
    则表示训练数据集占70%,验证数据集占15%,剩下的为测试数据集。
    同时指定随机数,用于选择随机图片组成数据集。因为想要在复现训练结果时数据集本身是固定的,因此先使用随机数将数据分散,然后进行分割。
  • 创建DLDataset数据集并调整模型
    先检查样本数据集文件夹是否存在,不存在就创建一个。
    创建数据集DLDataset调用了自定义的函数read_dl_dataset_from_coco。其输入参数为coco文件名(以.json结尾)和图像路径,输出数据集名为DLDataset。
    该函数主要是根据.json文件中的关键字对图像进行解析,如'categories'、'images'、'annotations'。'annotations'里面再读取'bbox'属性。然后将这些属性读取并转化,以key的形式存入数据字典DLDataset和DLSample。
    存入数据字典DLDataset的属性有:
     'image_dir'
     'class_ids'
     'class_names'
    存入DLSample数据字典的属性有:
     'image_id'、
     'image_file_name'、
     'bbox_row1'、
     'bbox_col1'、
     'bbox_row2'、
     'bbox_col2'、
     'bbox_label_id'、
     'coco_raw_annotations'
    最后将DLSample数据字典以‘sample’的形式存入DLDataset数据字典。
    创建好数据字典之后,读取DLDataset中的'class_ids'属性,将其设置为深度学习网络模型DLModelHandle的'class_ids'属性,同时根据网络模型的句柄DLModelHandle将该模型保存到预设的文件夹路径下,完成了目标检测模型的初始化操作。
  • 分割数据集。
    这一部分将数据集分割为训练数据集、验证数据集和测试数据集三类。先设置系统随机数SeedRand。再按照之前设置的分割比例,进行数据集的分割。Halcon的例程中使用了自定义函数split_dl_dataset完成这一步操作。该函数先从DLDataset中获取样本数据,将样本与标注的类对应起来。然后创建了数据字典,基于单个分类进行分割。在每个类别的图像中提取一定比例用于构建三类数据集。
  • 数据集预处理
    先从模型中获取预处理参数,例程中使用了自定义函数create_dl_preprocess_param_from_model从深度学习网络中提取预处理参数,如:
    'type'
    'image_width'
    'image_height'
    'image_num_channels'
    'image_range_min'
    'image_range_max'
    'ignore_class_ids'
    并创建预处理参数字典DLPreprocessParam。
    接下来这部分是最耗时的,即数据的预处理。例程中使用了自定义的preprocess_dl_dataset算子,用于对数据字典中的DLDataset、DLPreprocessParam样本进行预处理。
    获取DLDataset中的'samples',存为DLDatasetSamples。这里面DLDatasetSamples一共有400个样本。将每个样本保存为一个数据字典,并对样本进行预处理。处理的步骤包括给每一个DLSamples样本创建数据字典,获取样本的图像,从图像中获取标注框区域,存入DLSamples数据字典中等。
  • 预览预处理数据集
    在开始训练之前,建议检查一遍预处理的数据集。使用get_dict_tuple算子从数据字典DLDataset中提取样本DatasetSamples。接着对其进行排序。读取排序后的样本并使用dev_display_dl_data算子将其显示出来。

ps:
在读取read_dl_dataset_from_coco时,如果要使用自己的数据集,需要先将标注文件转为coco格式的.json文件,这部分有空再写。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容