Mask_RCNN训练自己的数据,标注工具Labelme的使用说明

Mask_RCNN训练自己的数据,标注工具Labelme的使用说明#2018/05/04更新由于labelme的数据预处理过程还是太繁琐,现在换成了类似于COCO数据集注释的方式(JSON文件):https://blog.csdn.net/qq_15969343/article/details/80167215#以下为原文该Mask_RCNN版本为基于:Python3,Keras,TensorFlow,我使用的具体版本为:Python3.6.3TensorF………

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

  ⚡插播一条老家自产的糖心苹果,多个品种,欢迎选购!有问题随时私信我⚡:

??来自雪域高原的馈赠——海拔2000米的大凉山高原生态糖心苹果??Mask_RCNN训练自己的数据,标注工具Labelme的使用说明https://blog.csdn.net/qq_15969343/article/details/126107252

#2018/07/03 更新

制作好训练集之后,如何进行训练?戳这里:

Mask_RCNN训练自己的数据Mask_RCNN训练自己的数据,标注工具Labelme的使用说明https://blog.csdn.net/qq_15969343/article/details/80893844

#2018/06/29 更新

这个版本的Mask_rcnn精度和速度都没有FAIR的detectron好,同一个数据集,detectron要高出至少20%的精度,而且由于框架的特性,detectron速度也要快得多~~要不要了解一下如何把自己的数据转换为detectron所需的coco格式?需要的同学点这里:

Detectron:训练自己的数据集——将自己的数据格式转换成COCO格式_Jayce~的博客-CSDN博客_数据集转为coco格式Mask_RCNN训练自己的数据,标注工具Labelme的使用说明https://blog.csdn.net/qq_15969343/article/details/80848175

#2018/06/04 更新

使用官方的权重只检测特定的类别看这里:

Mask_RCNN:使用COCO权重进行特定类别预测(只标记出你需要的类别)Mask_RCNN训练自己的数据,标注工具Labelme的使用说明https://blog.csdn.net/qq_15969343/article/details/80568579

#2018/05/22 更新

使用训练好的Mask_RCNN模型进行预测看这里:

Mask_RCNN:使用自己训练好的模型进行预测Mask_RCNN训练自己的数据,标注工具Labelme的使用说明https://blog.csdn.net/qq_15969343/article/details/80388311

#2018/05/04 更新

由于labelme的数据预处理过程还是太繁琐,现在换成了类似于COCO数据集注释的方式(JSON文件):

Mask_RCNN训练自己的数据,制作类似于COCO数据集中所需要的Json注释Mask_RCNN训练自己的数据,标注工具Labelme的使用说明https://blog.csdn.net/qq_15969343/article/details/80167215

#以下为原文

该Mask_RCNN版本为基于:Python3,Keras,TensorFlow,我使用的具体版本为:

  • Python 3.6.3
  • TensorFlow 1.7
  • Keras 2.1.5
  • PyQt5  5.9.2
  • Labelme 2.8.0

Mask_RCNN来自matterport,地址为:

点击打开链接Mask_RCNN训练自己的数据,标注工具Labelme的使用说明https://github.com/matterport/Mask_RCNN

使用的标记工具为Labelme,地址如下:

点击打开链接Mask_RCNN训练自己的数据,标注工具Labelme的使用说明https://github.com/wkentaro/labelme

安装完Labelme之后,直接在CMD窗口输入labelme,即可打开:

Mask_RCNN训练自己的数据,标注工具Labelme的使用说明

点击view下面的高级模式,可以控制图像显示的大小:

Mask_RCNN训练自己的数据,标注工具Labelme的使用说明

点击Create_Polygon在图像上标记需要的东西,并命名:

Mask_RCNN训练自己的数据,标注工具Labelme的使用说明

保存该标注,可以得到一个.json文件,该文件包含了图像文件本身以及标注的对象框,打开该文件,可以看到其中包含的内容:

Mask_RCNN训练自己的数据,标注工具Labelme的使用说明

如何打开json可以查看我的这篇博客:

格式化打开JSON数据以及Notepad++没有插件管理器(Plugin Manager)的解决方法_Jayce~的博客-CSDN博客Mask_RCNN训练自己的数据,标注工具Labelme的使用说明https://blog.csdn.net/qq_15969343/article/details/79817354

该json需要转换为训练程序需要的Mask数据,此时在CMD窗口输入以下指令(以刚才生成的json示例,你只需要把路径转换为json文件所在的路径)即可转换:

labelme_json_to_dataset C:\Users\Administrator\Desktop\8433365521_9252889f9a_z.json

此时可以得到以json文件名而命名的一个文件夹,打开该文件夹,可以看到里面包含了五个文件:

img.png(原图);

info.yaml;

label.png;

label_names.txt;

label_viz.png

Mask_RCNN训练自己的数据,标注工具Labelme的使用说明

可以看到本来标记的只有两类,但是打开标签可视化文件,可以看到自动加了背景,所以是1+2=3类,打开label_viz.png可见:

Mask_RCNN训练自己的数据,标注工具Labelme的使用说明

但是在训练的时候肯定是多个数据,不可能一个一个的挨着转换,所以肯定要批转换这些json:

linux下,使用如下命令:

str1="json路径"
str2=".json"
for((i=1;i<图片数量;i++))
do 
str3=${i}
labelme_json_to_dataset ${str1}${str3}${str2}
done

windows下,使用如下命令:

for /r 路径 %i in (*.json) do labelme_json_to_dataset %i

而转换后的label.png是其中非常重要的掩码文件,打开却是一片黑,这是什么情况?出BUG了?

Mask_RCNN训练自己的数据,标注工具Labelme的使用说明

其实,这是因为labelme将类别的像素值从1开始赋值,比如刚才的3类分别赋值0,1,2,因为值都很小,因此看着都是黑的;将图片使用matlab读入可以看到如上面所述:

Mask_RCNN训练自己的数据,标注工具Labelme的使用说明

我们可以将这些掩膜的像素值做一个映射(如像素值分别乘以100,当前的像素值则有(0,1,2)变为(0,100,200)),从而可以清楚的看到:

Mask_RCNN训练自己的数据,标注工具Labelme的使用说明

而从上面matlab的截图,可以清楚看到掩码标签为16位存储,我们需要将16位转8位,关于16位转8位,请关注我的另外一篇博客:

点击打开链接Mask_RCNN训练自己的数据,标注工具Labelme的使用说明https://blog.csdn.net/qq_15969343/article/details/79841446

都看到这里了,还不赶紧点赞评论收藏走一波?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189562.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • scrollIntoView 实现「建议收藏」

    scrollIntoView 实现「建议收藏」1.应用场景: 相信大家都曾经遇到过要将屏幕的某一部分滚到到用户视窗里,例如聊天信息的自动滚屏等,这个有不少解决方案: 1.聊天面板的scrolltop=scrollheight2.消息最后加一个element,然后element.scrollIntoView但是如果想要任一容器中间的一个元素,滚到该容器的视窗显示部分…

    2022年6月28日
    29
  • java复杂对象转json字符串_java处理json数据

    java复杂对象转json字符串_java处理json数据最近对自己写的elasticsearch客户端框架在进行性能优化,数据插入部分使用的是JAVABean对象方式传参,框架内部使用了fastjson进行对象转json字符串的操作,尝试着使用不同方式进行对象转json字符串操作。找到了一种性能更好的方式,具体请看下面代码段:packagetest;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importcom.google.common…

    2022年9月21日
    2
  • 国内可用的Internet时间同步服务器地址(NTP时间服务器)[通俗易懂]

    国内可用的Internet时间同步服务器地址(NTP时间服务器)[通俗易懂]不知道什么鬼我这系统自带的Internet时间同步服务器地址居然不可用,终端ping系统自带服务器两个居然都不通???难道时间服务器也和谐么?好在阿里云提供了7个NTP时间服务器也就是Interne

    2022年7月1日
    171
  • OV7725寄存器配置_i2c总线通信距离

    OV7725寄存器配置_i2c总线通信距离OV7725寄存器配置(为了替换NT99141研究了很长一段时间)部分参考链接:OV7725电器特性和时序图:https://www.cnblogs.com/raymon-tec/p/5087088.htmlOV7725摄像头的彩色图像采集原理与液晶显示(有必要了解框图):https://blog.csdn.net/huzhoudaxia/article/details/75269392…

    2022年9月24日
    3
  • 广义表中关于tail和head的计算

    广义表中关于tail和head的计算根据表头、表尾的定义可知:任何一个非空广义表的表头是表中第一个元素,它可以是原子,也可以是子表,而其表尾必定是子表。也就是说,广义表的head操作,取出的元素是什么,那么结果就是什么。但是tail操作取出的元素外必须加一个表——“ ()“举一个简单的列子:已知广义表LS=((a,b,c),(d,e,f)),如果需要取出这个e这个元素,那么使用tail和head如何将这个取出来。利用上面说的,tai…

    2022年5月4日
    107
  • maven配置阿里云仓库完整版

    maven配置阿里云仓库完整版阿里云仓库完成版好多博客仅仅是配置一个mirror,但是不一定起作用,还需要配置profiles节点,完整版如下:&lt;?xmlversion="1.0"encoding="UTF-8"?&gt;&lt;!–LicensedtotheApacheSoftwareFoundation(ASF)underoneormorecontributorlicens…

    2022年6月29日
    141

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号