Caffe+windows7制作深度学习标签的工具

1.C++的制作标签的工具:SetLab

/*
Author     :    honghuichao
Data       :    2017-08-22
修改日志   :   空
功能       :   输入目录,为相应的目录做标签

例子       :   调用TraverseFiles函数,TraverseFiles("c:/", 1);
                会在c:/目录生成  1.txt文件
                1.txt的格式为:
                文件路径1 1
                文件路径2 1
                文件路径3 1
                ....
				文件路径n 1
*/
#include <iostream>
#include<fstream>
#include <string>  
#include <io.h>  
using namespace std;

//遍历当前目录下的文件夹和文件,默认是按字母顺序遍历  
bool TraverseFiles(string path, char* lab, ofstream& out)
{
	
	_finddata_t file_info;
	string current_path = path + "/*.jpg"; //可以定义后面的后缀为*.exe,*.txt等来查找特定后缀的文件,*.*是通配符,匹配所有类型,路径连接符最好是左斜杠/,可跨平台  
	//打开文件查找句柄  
	int handle = _findfirst(current_path.c_str(), &file_info);
	//返回值为-1则查找失败  
	if (-1 == handle)
		return false;
	do
	{
		//判断是否子目录  
		string attribute;
		if (file_info.attrib == _A_SUBDIR) //是目录  
			attribute = "dir";
		else
			attribute = "file";
		//输出文件信息并计数,文件名(带后缀)、文件最后修改时间、文件字节数(文件夹显示0)、文件是否目录  
		out << path << file_info.name << ' ' <<lab<< endl; //获得的最后修改时间是time_t格式的长整型,需要用其他方法转成正常时间显示  
		
	} while (!_findnext(handle, &file_info));  //返回0则遍历完  
	//关闭文件句柄  
	_findclose(handle);
	return true;
}

int main(int argc, char *argv[])
{
	ofstream out("train.txt");
	ofstream out1("test.txt");
	char* lab_0 = "0";
	char* lab_1 = "1";
	char* lab_2 = "2";
	char* lab_3 = "3";
	char* lab_4 = "4";

	//char* lab_2 = "2";
	TraverseFiles("C:/Users/Administrator/Desktop/re/train/0/", lab_0,out);
	TraverseFiles("C:/Users/Administrator/Desktop/re/train/1/", lab_1,out);
	TraverseFiles("C:/Users/Administrator/Desktop/re/train/2/", lab_2,out);
	TraverseFiles("C:/Users/Administrator/Desktop/re/train/3/", lab_3,out);
	TraverseFiles("C:/Users/Administrator/Desktop/re/train/4/", lab_4,out);

	TraverseFiles("C:/Users/Administrator/Desktop/re/test/0/", lab_0, out1);
	TraverseFiles("C:/Users/Administrator/Desktop/re/test/1/", lab_1, out1);
	TraverseFiles("C:/Users/Administrator/Desktop/re/test/2/", lab_2, out1);
	TraverseFiles("C:/Users/Administrator/Desktop/re/test/3/", lab_3, out1);
	TraverseFiles("C:/Users/Administrator/Desktop/re/test/4/", lab_4, out1);
	//TraverseFiles("C:/Users/Administrator/Desktop/基于卷积神经网络的煤矸石分选技术/MatlabCaffe/caffe/data/CharacterDiscrimination/test/煤矸石/", lab_1);
	//TraverseFiles("C:/Users/Administrator/Desktop/基于卷积神经网络的煤矸石分选技术/MatlabCaffe/caffe/data/CharacterDiscrimination/val/煤/", lab_0);

	//TraverseFiles("C:/Users/Administrator/Desktop/基于卷积神经网络的煤矸石分选技术/MatlabCaffe/caffe/data/CharacterDiscrimination/val/煤矸石/", lab_1);
	system("pause");
	return 0;
}


2.python制作标签的工具,要放在和图片的文件在同一级文件夹中:new_setlab.py

# coding: utf-8
''''' 
Created on Jul 29, 2016 
 
@author: sgg 
'''  
  
"<span style=""font-family:Arial;font-size:18px;"">"  
"<span style=""font-size:18px;"">"  
"<span style=""font-size:18px;"">"   
import os  
  
def IsSubString(SubStrList,Str):  
    flag=True  
    for substr in SubStrList:  
        if not(substr in Str):  
            flag=False  
      
    return flag  
  

def GetFileList(FindPath,FlagStr=[]):  
    FileList=[]  
    FileNames=os.listdir(FindPath)  
    if len(FileNames)>0:  
        for fn in FileNames:  
            if len(FlagStr)>0:  
                if IsSubString(FlagStr,fn):  
                    fullfilename=os.path.join(FindPath,fn)  
                    FileList.append(fullfilename)  
            else:  
                fullfilename=os.path.join(FindPath,fn)  
                FileList.append(fullfilename)  
      
    if len(FileList)>0:  
        FileList.sort()  
          
    return FileList  
  
  
  
train_txt=open('train.txt','w')  
 
imgfile=GetFileList('train/traincar/')#将数据集放在与.py文件相同目录下  
for img in imgfile:  
    str1=img+' '+'0'+'\n'        #用空格代替转义字符 \t   
    train_txt.writelines(str1)  
      
  
imgfile=GetFileList('train/traindinosaur/')  
for img in imgfile:  
    str2=img+' '+'1'+'\n'  
    train_txt.writelines(str2)  

  
imgfile=GetFileList('train/trainelephant/')  
for img in imgfile:  
    str2=img+' '+'2'+'\n'  
    train_txt.writelines(str2)  
 
  

imgfile=GetFileList('train/trainflower/')  
for img in imgfile:  
    str2=img+' '+'3'+'\n'  
    train_txt.writelines(str2)  
 
  
  
imgfile=GetFileList('train/trainhorse/')  
for img in imgfile:  
    str2=img+' '+'4'+'\n'  
    train_txt.writelines(str2)  
train_txt.close()


#测试集文件列表  
test_txt=open('val.txt','w')  
#制作标签数据,如果是男的,标签设置为0,如果是女的标签为1  
imgfile=GetFileList('val/testcar/')#将数据集放在与.py文件相同目录下  
for img in imgfile:  
    str3=img+' '+'0'+'\n'  
    test_txt.writelines(str3)  
      
  
imgfile=GetFileList('val/testdinosaur/')  
for img in imgfile:  
    str4=img+' '+'1'+'\n'  
    test_txt.writelines(str4)  
 

imgfile=GetFileList('val/testelephant/')  
for img in imgfile:  
    str4=img+' '+'2'+'\n'  
    test_txt.writelines(str4)  
 
  

imgfile=GetFileList('val/testflower/')  
for img in imgfile:  
    str4=img+' '+'3'+'\n'  
    test_txt.writelines(str4)  


imgfile=GetFileList('val/testhorse/')  
for img in imgfile:  
    str4=img+' '+'4'+'\n'  
    test_txt.writelines(str4)  
test_txt.close()  

  
print("成功生成文件列表")

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值