当前位置:网站首页>window10下半自动标注
window10下半自动标注
2022-08-02 14:02:00 【weixin_50862344】
前言
我看了一眼我们项目的标签很多不行,得重新标注。想借助一下自动标注或者半自动标注救救一万多近两万张照片
方法1:easyDL智能标注
(1)借助百度easyDL进行标注
- 选择EasyDL图像–>物体检测
我是做图像识别所以选择EasyDL图像 - 简单的注册信息之后导入图片或者是压缩包就可以进行标注了
- 我标注了百来张就想试试自动标注
实际上后面还是要更正和修正
最后可以在数据总览看见如下图的结果 - 点击红圈圈出的“立即前往”,进入EasyDAata,点击 “立即使用”,再点击“导出”
- 在等待一段时间之后就可以下载了
最后放上一张结果图
它是一一对应的
后面估计还得写一个脚本,把两种文件分开
我写的脚本都会因为版权限问题失败,后面发现我自己好呆。直接在搜索栏里面输入.jpg或者是.json,然后全选复制到另一个文件夹就行了
方法2:使用labelimg和pytorch框架下的yolov5实现自动标注
(1)环境配置
环境配置的就不说了
框架选用的也是pytorch
(2)思路
先训练一个小批量数据的模型,然后使用这个权重进行识别并进行标注
!!!提醒一下大家小样本的训练集的数量,也不能真的太小(建议是有千来张,建议是根据自己的数据集)
出于两方面的考虑:①样本太小训练效果不好,到后面有可能变成半手动(出力不讨好)
②可以适当增加一些比较特殊的训练样本以增加训练效果
(3)步骤
1 )首先就是先训练一个小的权重
- 先利用之前标注好的文件进行yolov5训练
不知道怎么训练的看看Pytorch搭建YoloV5目标检测平台
但是有一个问题就是博主给的代码和官方给的代码是有差异的
左边是该博主的代码右边是在官网下载的,而且生成的权重文件是pth类型,官网下载的生成的好像是pt文件
- 如果只按照这个博主来的接下来就得考虑pth转pt文件了
下次一定写个脚本!!!
- 使用官方的代码的话
可以看看我之前写的这篇可能有些地方写得不清楚,可以私信我或者是直接评论,看到了(我会的)一定解答
2)开始自动标注
我试了很多代码最后效果比较好的就是神秘cv男的自动标注整体操作比较简单,还有视频讲解。
操作下:
- 直接在github下载在这
- 然后放入yolov5的文件夹中
pip Install natsort
因为之前没下载过报红了- 给个示意图吧!
一万六千张照片一会就搞完了!但是我发现有一个比较麻烦的问题是他只能在window系统下运行,如果在linux(我用的是ubantu)就会出现xml文件进入不了文件夹子
!!!
下次一定改改!下次一定下次一定!
3)xml转成yolo(即txt)格式
import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join
import glob
###!!!!!!!!!###
###(1)改类名
classes = ['number']
def convert(size, box):
dw = 1.0 / size[0]
dh = 1.0 / size[1]
x = (box[0] + box[1]) / 2.0
y = (box[2] + box[3]) / 2.0
w = box[1] - box[0]
h = box[3] - box[2]
x = x * dw
w = w * dw
y = y * dh
h = h * dh
return (x, y, w, h)
def convert_annotation(image_name):
###!!!!!!!!!###
#(2)修改为自己的xml路径
in_file = open('D:/computervision/ocr/data/xml_file/' + image_name[:-3] + 'xml') # xml文件路径
#(3)改txt路径
out_file = open('D:/computervision/ocr/data/txt/' + image_name[:-3] + 'txt', 'w') # 转换后的txt文件存放路径
f = open('D:/computervision/ocr/data/xml_file/' + image_name[:-3] + 'xml')
xml_text = f.read()
root = ET.fromstring(xml_text)
f.close()
size = root.find('size')
w = int(size.find('width').text)
h = int(size.find('height').text)
for obj in root.iter('object'):
cls = obj.find('name').text
if cls not in classes:
print(cls)
continue
cls_id = classes.index(cls)
xmlbox = obj.find('bndbox')
b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),
float(xmlbox.find('ymax').text))
bb = convert((w, h), b)
out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')
wd = getcwd()
if __name__ == '__main__':
###!!!!!!!!!###
###(4)改jpg文件路径
for image_path in glob.glob("D:/computervision/ocr/data/jpg_file/*.jpg"): # 每一张图片都对应一个xml文件这里写xml对应的图片的路径
image_name = image_path.split('\\')[-1]
convert_annotation(image_name)
这份代码存在一个问题就是没有xml文件(因为训练结果可能不一定保证每一张图片都能标注到),此时就要手动修正了!
方法3:基于PaddleHub和Labelimg
emmm…前面两种效果都很好 ,我就没仔细研究。下次一定!下次一定!
边栏推荐
猜你喜欢
文件加密软件有哪些?保障你的文件安全
网络安全第二次作业
Awesome!Alibaba interview reference guide (Songshan version) open source sharing, programmer interview must brush
网络安全第六次作业
Break the limit of file locks and use storage power to help enterprises grow new momentum
第二届中国Rust开发者大会(RustChinaConf 2021~2022)线上大会正式开启报名
About the development forecast of the market outlook?2021-05-23
Supervision strikes again, what about the market outlook?2021-05-22
数据机构---第六章图---图的遍历---选择题
shell脚本“画画”
随机推荐
方舟生存进化淘宝面板服务器是怎么一回事?
FFmpeg 的AVCodecContext结构体详解
【Tensorflow】AttributeError: module ‘keras.backend‘ has no attribute ‘tf‘
监管再次重拳出击,后市如何?2021-05-22
瑞吉外卖笔记——第08讲读写分离
xshell连接虚拟机步骤_建立主机与vm虚拟机的网络连接
定了!就在7月30日!
Interviewer: Can you talk about optimistic locking and pessimistic locking?
理解TCP长连接(Keepalive)
Sentinel源码(六)ParamFlowSlot热点参数限流
未来的金融服务永远不会停歇,牛市仍将继续 2021-05-28
关于C#使用DateTime数据的细节
关于Google词向量模型(googlenews-vectors-negative300.bin)的导入问题
保姆级教程:写出自己的移动应用和小程序(篇三)
网络安全第一次作业(2)
replay视频播放器_怎么让手机音乐跟视频一起放
网络安全第三次作业
无序数组排序并得到最大间隔
Swagger 的使用
不精确微分/不完全微分(Inexact differential/Imperfect differential)