YOLOV2 使用voc2007 单独训练某些类而删除不含有这些类的数据

使用说明:

由于voc2007中包含有20类的图像数据,但我只拿来训练person类,所以利用darknet自带的脚本生成的train2.txt无法满足要求(直接使用会导致对应的图片中并没有此类,但参与了网络的训练),此代码用于清除掉train2中那些并不包含person类的图片地址。

代码如下:

#coding=utf-8

import os
import os.path

filePath ='/home/dlc/yolo/darknetyolov25/vocdata/VOCdevkit/VOC2007/labels'
list_save=[]



#遍历文件夹
#三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字
for parent ,dirnames , filenames in os.walk(filePath):
    #输出文件夹信息
    for dirname in dirnames:
        print 'parent is :'+parent
        print 'dirname is '+ dirname
    #输出文件信息
    for filename in filenames :
        print 'parent is :'+parent
        print 'filename is :' + filename
        #输出文件路径信息
        currentPath = os.path.join(parent,filename)
        print 'the fulll name of the file is :'+ currentPath
        filesize = os.path.getsize(currentPath)
        print 'the file size is : %.3f bytes' %(filesize)
        #删除大于50m的文件
        if filesize <=0:
           #os.remove(currentPath)
           list_save.append(filename);

print list_save
list_num=[]
for list1 in list_save:
   temp=list1[0:len(list1)-4]
   temp2='.jpg'
   temp3=temp+temp2
   list_num.append(temp3)

print list_num



f2=open('/home/dlc/yolo/darknetyolov25/vocdata/VOCdevkit/VOC2007/train2.txt')
list_file = open('/home/dlc/yolo/darknetyolov25/vocdata/VOCdevkit/VOC2007/train.txt','wb')
for line in f2:
   exist_flag=0;
   for list_a in list_num:  
      if line.find(list_a)!=-1:   #当这一行里面找到了相等的
          exist_flag=1            #标志位置1
          continue                #不需要再找
   if exist_flag==0:
      list_file.write(line)
               
f2.close()  
list_file.close()

          
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值