我使用的YOLO的GPU版本工程是代码链接是:yolo-windows-master,其博客地址是:http://blog.csdn.net/sinat_30071459/article/details/53161113

CPU版本的博客地址是:http://blog.csdn.net/luojun2007/article/details/52370140

1、GPU配置,其中yolo使用的GPU版本的,其网上下载的代码基本是用CUDA7.5计算版本的,如果自己系统装的不是这个版本的则会出现加载工程失败,其错误信息如下:

此时双击上面的无法加载cuda属性表的错误,这个属性表是我们在安装CUDA时会在系统目录下自动生产相应版本的。如果我们安装的时8.0的,则改为:

保存后重新加载项目,此后会出现一些7.5的字眼,把其改为8.0即可,最后会出现一个:

这时关闭sln那个工程,打开自己的path路径下的\yolo-windows-master\build\darknet\darknet下的那个darknet.vcxproj工程,重新加载则可以加载成功。如下图:

接下来就时配置opencv、thread、cuda。

a、配置opencv,其默认使用的opencv版本时249的,如果配置自己的则需要删除掉:yolo_demo.c、yolo_kernels.cu

两个文件下的opencv引用。然后就可以配置自己的opencv了。

b、其中thead已经配置好了。也是需要自己手动配置工程的。

c、如果前面的cuda路径正确的话,则其也已经配置好了。也是需要自己手动配置工程的。

工程编译需要修改的地方:

a、这个工程使用的时没有配置生产debug的exe的,而是release模式的,此时我们应该做的是:右键解决方案-》配置属性,把图中的1跟2的属性选成一样的即可。

2、window上YOLO训练样本的制作

a、图像数据标注:

参考文章:http://blog.csdn.net/qq_30401249/article/details/51504816

其中使用BBox-Label-Tool的时候需要注意:要从Examples下有的那类开始标注,因为程序是从这里按类别加载例子数据的,如果没有加载到的话会报错。其代码如下;

       # load example bboxes,这说明刚开始标注数据的时候需要从Examples里有的类开始,否则会报错,然后退出。self.egDir = os.path.join(r'./Examples', '%03d' %(self.category))if not os.path.exists(self.egDir):returnfilelist = glob.glob(os.path.join(self.egDir, '*.JPEG'))self.tmp = []self.egList = []random.shuffle(filelist)for (i, f) in enumerate(filelist):if i == 3:breakim = Image.open(f)r = min(SIZE[0] / im.size[0], SIZE[1] / im.size[1])new_size = int(r * im.size[0]), int(r * im.size[1])self.tmp.append(im.resize(new_size, Image.ANTIALIAS))self.egList.append(ImageTk.PhotoImage(self.tmp[-1]))self.egLabels[i].config(image = self.egList[-1], width = SIZE[0], height = SIZE[1])self.loadImage()print '%d images loaded from %s' %(self.total, s)

还有一个就是生成的标注数据格式:

class_number 
box1_x1 box1_y1 box1_width box1_height 
box2_x1 box2_y1 box2_width box2_height 
其中的class_number 指的是训练样本里的同类目标的个数,及在数据标注的时候如果有多个同类目标的话可以把其都标注出来,每次标注时会出现不同的颜色框,其对应于代码为:

# colors for the bboxes
COLORS = ['red', 'blue', 'yellow', 'pink', 'cyan', 'green', 'black']

对应的图片为:


b、接着就是数据转换,转成yolo能够处理的形式,其需要借助:darknet/scripts/convert.py

其这个代码是在linux系统下的,如果应用带window上有一些需要修改的,主要参考:http://blog.csdn.net/qq_30401249/article/details/51564871 ,一些额外的修改或改正的地方:

(1)文件路径的正确与否:

mypath = "Labels/001/"   #路径要正确
outpath = "Labels/stopsign/"

(2)修改换行符:

for txt_name in txt_name_list:# txt_file =  open("Labels/stop_sign/001.txt", "r")""" Open input text files """txt_path = mypath + txt_nameprint("Input:" + txt_path)txt_file = open(txt_path, "r")lines = txt_file.read().split('\n')  # for ubuntu, use "\r\n" instead of "\n" 

注意:网上下载的这个转换代码基本上是linux上运行的,其换行符石“\r\n”,所以当我们在window上运行时需要改为“\n”.否则程序会报错。

注意上面的几步,基本可以完成数据的转化,其转换结果会为:

class_index box1_x1_ratio box1_y1_ratio box1_width_ratio box1_height_ratio 
class_index box2_x1_ratio box2_y1_ratio box2_width_ratio box2_height_ratio 
这里的class_index 与上面的class_number 不同,这里是类别索引,就是自己的类别在数组里的ID,例子如下:

其中相应的代码为:

classes = ["001","002"]
.......
cls = "001"
if cls not in classes:exit(0)
cls_id = classes.index(cls)

c、生成标签文件:

打开./data/labels/make_labels.py 
加入需要生成的标签,注意标签的文件名stopsign.png和yeildsign.png需要与存放图像的文件夹images和存放框信息的labels文件夹下面的文件夹名称相同。

其主要是通过使用python的os指令来运行shell里的convert命令。os的使用方法如下:

对应在darknet/src/yolo.c中是:

void run_yolo(int argc, char **argv)
{int i;for(i = 0; i < 20; ++i){char buff[256];sprintf(buff, "data/labels/%s.png", voc_names[i]);voc_labels[i] = load_image_color(buff, 0, 0);}
}

至此:训练样本的制作已经完成,接下来的工作就是修改网络进行训练;还有v2版的是不用生产标签文件了,只要在data下有labels文件夹即可。

d:相关文件的修改:

YOLO工程代码如何在windows上配置和运行!window上YOLO训练样本的制作相关推荐

  1. 如何在 Windows 10/8.1/8/7 上无密码删除 Deep Freeze

    如何在 Windows 10/8.1/8/7 上无密码删除 Deep Freeze 有些人认真对待计算机安全问题.这些人会安装 Deep Freeze 冰点来保护他们的计算机.该应用程序的便利之处在于 ...

  2. Windows服务器上配置环境,并上传Django项目流程记录

    配置环境: python3.6 Django2.2 mysql5.6 下载python库所需要代码: python -m pip install --upgrade pip -i http://pyp ...

  3. linux上的客户端连接window上的服务器

    server代码: window上的服务器代码不变,但是需要注意一点:linux上的client连接服务器上的server时服务器的防火墙必须关闭才能连接成功. #define WIN32_LEAN_ ...

  4. SVN+SSH协议工作方式全解析,以Sourceforge为例讲解如何在Windows下配置TortoiseSVN和Su

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 简单地说 ...

  5. xbox one x驱动_如何在Windows,OS X和Linux上使用Xbox One控制器

    xbox one x驱动 The Xbox One Controller is a fantastic gamepad, and although Microsoft has only recentl ...

  6. 如何在 Windows 2000、XP 的桌面上增加公文包

    问题描述: 从 Windows 2000开始,微软的公文包图标从桌面上消失了,程序组中也没有,如果要使用它,是否很麻烦呢? 解决方案: 在 Windows 2000 或 Windows XP 操作系统 ...

  7. Win10系统VS2015上配置YOLOv3运行训练环境(包含OpenCv3.40安装配置,cuda9.2安装配置)

      前言 第一次写博客,迟迟不敢下笔,只怕在言语之间有所纰漏.在下区区学生一枚,在此斗胆写下在win10上搭建yolo_v3环境的过程与感受.博文部分安装配置过程将会引用其他博文,如有侵权,通知立删. ...

  8. window上安装mysql_在window上安装mysql - MySQL5.7.24 版本

    1.下载安装包 下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 备注:选择对应你电脑的版本,现在一般都是64位的电脑 2.解 ...

  9. 什么错误是计算机检查不出来的,如何在Windows 10中修复计算机检查异常BSOD | MOS86...

    机器检查异常是Windows系统的严重错误. 结果? 死亡的蓝屏. 不幸的是,机器检查异常错误通常不是一次性的. 一些用户报告说,他们受到"机器检查异常"错误的困扰,必须在到达承诺 ...

最新文章

  1. 无限极分类,子集跟着父集排列,用于后台显示菜单管理
  2. 数据库连接池技术--c3p0
  3. php的range函数
  4. 调用某个按钮事件_Event 对象之事件句柄 (Event Handlers)
  5. 排序算法之——快速排序分析
  6. 年底购物狂欢,移动支付安全不容忽视
  7. 全网首发:修改完善FreeSwitch的Banner功能
  8. c语言输出英文字母表,菜鸟求助,写一个随机输出26个英文字母的程序
  9. Windows搭建kms服务器
  10. 如何在MAC上查看系统运行信息、内存使用率等
  11. windows 7 专业版 64位 无法安装.Net 4.7版本解决方案
  12. android edittext 下划线没了,关于android:如何在EditText中隐藏下划线
  13. 【ZYNQ】IP核_DDR4_SDRAM(MIG)的详细介绍
  14. Centos6.8系统镜像下载
  15. JVM vs DVM
  16. 零基础学HTML5的学习路线完整版
  17. 用Python下载Lofter上“喜欢”的文章和图片
  18. 8Manage PPM,助力北京测威提升项目运营效益
  19. 计算机毕业设计JAVA家庭健康预警系统mybatis+源码+调试部署+系统+数据库+lw
  20. Java键盘输入一个int数组

热门文章

  1. tcp 与udp 的区别
  2. 如何制作GIF表情包,动态GIF怎么做
  3. Electron渲染进程与主进程进行通信
  4. 如何在IDEA配置Tomcat
  5. 问题解决:inittramfs unpacking failed:Decoding failed
  6. Fiddler跟F12
  7. SIGIR 2021 | 推荐系统相关论文分类整理
  8. 虚拟机能ping主机,主机ping虚拟机请求超时
  9. python在excel中数据画线_在python中使用excel工作表中的数据绘制图形
  10. 原谅帽大作战游戏程序