傻瓜式教程:如何入门做图像检测的项目

一、制作图像分割数据集

1、ubuntu首先安装使用做标签的软件:sudo pip install labelImg ,接着调用labelImg软件,在终端中输入:labelImg

 

 

 

 

 

 

2、使用labelimg制作图像分割的标签

这里贴两个链接:https://www.cnblogs.com/kekeoutlook/p/8063077.html

                             https://blog.csdn.net/xunan003/article/details/78720189

大家可以根据自己的需要制作自己的标签:

如上图所示从左到右分别是:img:自己找的图片数据集以及其中的内容,label:自己制作的图片的标签的内容

3、制作基于mxnet的图像数据集

主要参考该链接:https://github.com/secretdragon/SSD_Demo

 由于笔者是基于MXNET框架构建模型图像检测模型的,所以需要制作该模型能够读取的数据类型。其中需要调用的包已经上传,参见:https://download.csdn.net/download/shouhan6396/10557450

#首先导入一些必要的库
import os
from PIL import Image
import sys
#这边导入parse_voc_xml:读取xml的文件,导入mkdir_if_not_exist:制作文件夹
sys.path.append('/home/xm/桌面/图像检测/SSD_Demo-master')
from utils import parse_voc_xml,mkdir_if_not_exist
class_names = ['seadan']
#这边是我存放图片文件夹(img)以及标签文件夹(labels)的总路径
os.environ['data_root'] = data_root = '/home/xm/桌面/newdataset/dataset/data'
os.environ['im2rec']= "python /home/xm/桌面/图像检测/SSD_Demo-master/im2rec.py"
resize = (512,512)#尺寸统一为512×512
os.environ['resize'] = resize_str = str(resize[0]) + '_' + str(resize[1])
mkdir_if_not_exist(data_root+'/rec')
#读取图片数据集所有图片,并对图片尺寸进行统一
for imgName in os.listdir(data_root+'/img'):
	imgPath = data_root + '/img/' + imgName
	img = Image.open(imgPath)
	img = img.resize(resize,Image.BILINEAR)
	print(data_root+'/'+'img%d_%d'%(resize[0],resize[1]))
	mkdir_if_not_exist(data_root+'/'+'img%d_%d'%(resize[0],resize[1]))
	img.save(data_root + '/'+'img%d_%d'%(resize[0],resize[1]) + '/' + imgName)
#这一行代码极为关键,主要是生成lst文件,lst文件就相当于图片的身份信息,并且将数据集的90%作为训练集,10%作为测试集
os.system('$im2rec --list --train-ratio 0.9 ${data_root}/rec/img_$resize ${data_root}/img%d_%d'%(resize[0],resize[1]))
#接下来的代码主要根据train.lst文件来制作有标签.lst文件,其实此次.lst文件就是train.lst文件的扩充,根据train.lst文件的将图片的身份信息与标签文件夹labels结合,从而生成.lst文件,此次生成的.lst文件即是根据之前的图片身份信息的.lst文件形成的,只不过此次的.lst文件不仅包含了图片的身份信息,还有图片的标签信息。
new_lst_content = ''
with open(data_root + '/rec/img_%s_train.lst'%(resize_str)) as f:
	contents = f.read().split('\n')
	for content in contents:
		if content == '':
			break
		content = content.split('\t')
		idx = content[0]
		file = content[-1][:-3] + 'xml'
		# analyse .xml files
		bndboxs, names, filename = parse_voc_xml(data_root + '/labels/' + file)
		data = idx + '\t2\t5\t'
		for bndbox, name in zip(bndboxs,names):
			data += '%d\t%f\t%f\t%f\t%f\t'%(1,bndbox[0],bndbox[1],bndbox[2],bndbox[3])
			# data += filename + '\t'
			print(data)
		new_lst_content += data + filename + '\n'
 with open(data_root+'/rec/img_%s_train.lst'%(resize_str),'w') as f:
	f.write(new_lst_content)
#接下来主要是生成.rec文件,有利于mxnet对于图片的读取
os.system('$im2rec --num-thread 10 --pass-through --pack-label $data_root/rec/img_$resize $data_root/img$resize --encoding=.jpg --quality 100')

如果不出错的话,会生成如下前6个文件:

二、模型的训练以及预测:

模型的训练以及预测,主要参照https://zhuanlan.zhihu.com/p/28867241,将相应的数据集进行替换就可以完成自己图像检测的小任务啦、撒花

 

本文所有参考都给出相应链接,如有未经允许擅自引用的,联系笔者,笔者会立即作出修改。如果读者有任何问题欢迎留言,大家一起讨论进步。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值