当前位置:网站首页>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…前面两种效果都很好 ,我就没仔细研究。下次一定!下次一定!
边栏推荐
猜你喜欢
随机推荐
php开源的客服系统_在线客服源码php
A number of embassies and consulates abroad have issued reminders about travel to China, personal and property safety
智能指针-使用、避坑和实现
logback源码阅读(二)日志打印,自定义appender,encoder,pattern,converter
2022-08-02日报:2022年7月最热的10篇AI论文
RHCE第一天作业
网络安全第五次作业
配置zabbix自动发现和自动注册。
els 长条碰撞变形判断
Sentinel源码(一)SentinelResourceAspect
EasyExcel 的使用
You can't accept 60% slump, there is no eligible for gain of 6000% in 2021-05-27
Flask框架
How to solve 1045 cannot log in to mysql server
C# 编译错误:Compiler Error CS1044
ZABBIX配置邮件报警和微信报警
Mysql's case the when you how to use
Image retrieval method based on deep learning!
栈 && 队列
监管再次重拳出击,后市如何?2021-05-22