darknet-yolov3训练自己的数据集,并测试训练结果

来源:https://blog.csdn.net/qq_42145185/article/details/105816128


 参考链接:https://www.cnblogs.com/answerThe/p/11481564.html  (参考链接已经讲的很清楚了,这里就不再赘述,下面是完成之后,记录在走参考链接时一部分自己看的笔记)

 

自己的数据集下载链接:https://download.csdn.net/download/qq_42145185/12373126

1.先使用python脚本获取自己脸的图片

结果:

脚本如下:


 
   
   
   
   
  1. # -*- coding: cp936 -*-
  2. """
  3. Author:xxxxxx
  4. Date:2019-09-23
  5. Discription:Read Camaro picture and save
  6. """
  7. import cv2,os,time
  8. import numpy as np
  9. from multiprocessing import Process
  10. import _thread
  11. class CamaroCap(object):
  12. #打开摄像头
  13. def __init__(self):
  14. self.cap = cv2.VideoCapture( 0)
  15. """
  16. self.cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))
  17. self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
  18. self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480);
  19. """
  20. #图片信息打印
  21. def get_image_info(self,image):
  22. print(type(image))
  23. print(image.shape)
  24. print(image.size)
  25. print(image.dtype)
  26. pixel_data = np.array(image)
  27. print(pixel_data)
  28. #逐帧读取数据并保存图片到本地制定位置
  29. def Camaro_image(self):
  30. i = 0
  31. while( 1):
  32. """
  33. ret:True或者False,代表有没有读取到图片
  34. frame:表示截取到一帧的图片
  35. """
  36. #ret,frame = self.cap.read()
  37. ret,frame = self.cap.read()
  38. #print("打印图片信息")
  39. #self.get_image_info(frame)
  40. # 展示图片
  41. cv2.imshow( 'capture',frame)
  42. #保存图片
  43. cv2.imwrite( r"D:\python_project\\"+ str(i) + ".jpg",frame)
  44. i = i + 1
  45. if cv2.waitKey( 1) & 0xFF == ord( 'q'):
  46. break
  47. if __name__ == '__main__':
  48. outmasages = CamaroCap()
  49. #调用摄像头
  50. outmasages.Camaro_image()
  51. #释放对象和销毁窗口
  52. outmasages.cap.release()
  53. cv2.destroyAllWindows()

 2.标注图片

darknet-yolov3训练自己的数据集,并测试训练结果_第1张图片

具体步骤已经在推荐链接中展示了,下面主要记录几个自己在做的时候遇到的坑的记录。

1.cfg文件记录

darknet-yolov3训练自己的数据集,并测试训练结果_第2张图片

2模型文件和标签文件

darknet-yolov3训练自己的数据集,并测试训练结果_第3张图片

darknet-yolov3训练自己的数据集,并测试训练结果_第4张图片

darknet-yolov3训练自己的数据集,并测试训练结果_第5张图片

 

mydata文件下的目录:


 
   
   
   
   
  1. dobot@dobot:~/YOLO_V3/darknet/mydata$ tree
  2. .
  3. ├── Annotations
  4. │   ├── 000000.xml
  5. │   ├── 000001.xml
  6. │   ├── 000002.xml
  7. │   ├── 000003.xml
  8. │   ├── 000004.xml
  9. │   ├── 000005.xml
  10. │   ├── 000006.xml
  11. │   ├── 000007.xml
  12. │   ├── 000008.xml
  13. │   ├── 000009.xml
  14. │   ├── 000010.xml
  15. │   ├── 000011.xml
  16. │   ├── 000012.xml
  17. │   ├── 000013.xml
  18. │   ├── 000014.xml
  19. │   ├── 000015.xml
  20. │   ├── 000016.xml
  21. │   ├── 000017.xml
  22. │   ├── 000018.xml
  23. │   └── 000019.xml
  24. ├── ImageSets
  25. │   └── Main
  26. │   ├── test.txt
  27. │   ├── train.txt
  28. │   ├── trainval.txt
  29. │   └── val.txt
  30. ├── JPEGImages
  31. │   ├── 000000.jpg
  32. │   ├── 000001.jpg
  33. │   ├── 000002.jpg
  34. │   ├── 000003.jpg
  35. │   ├── 000004.jpg
  36. │   ├── 000005.jpg
  37. │   ├── 000006.jpg
  38. │   ├── 000007.jpg
  39. │   ├── 000008.jpg
  40. │   ├── 000009.jpg
  41. │   ├── 000010.jpg
  42. │   ├── 000011.jpg
  43. │   ├── 000012.jpg
  44. │   ├── 000013.jpg
  45. │   ├── 000014.jpg
  46. │   ├── 000015.jpg
  47. │   ├── 000016.jpg
  48. │   ├── 000017.jpg
  49. │   ├── 000018.jpg
  50. │   └── 000019.jpg
  51. ├── labels
  52. │   ├── 000000.txt
  53. │   ├── 000002.txt
  54. │   ├── 000003.txt
  55. │   ├── 000004.txt
  56. │   ├── 000005.txt
  57. │   ├── 000006.txt
  58. │   ├── 000007.txt
  59. │   ├── 000008.txt
  60. │   ├── 000009.txt
  61. │   ├── 000010.txt
  62. │   ├── 000011.txt
  63. │   ├── 000012.txt
  64. │   ├── 000014.txt
  65. │   ├── 000015.txt
  66. │   ├── 000016.txt
  67. │   ├── 000017.txt
  68. │   ├── 000018.txt
  69. │   └── 000019.txt
  70. ├── mydata_test.txt
  71. ├── mydata_train.txt
  72. ├── test.py
  73. ├── voc.names
  74. └── weights
  75. ├── yolov3-voc_100.weights
  76. ├── yolov3-voc_200.weights
  77. ├── yolov3-voc_300.weights
  78. ├── yolov3-voc_400.weights
  79. ├── yolov3-voc_500.weights
  80. └── yolov3-voc.backup
  81. 6 directories, 72 files
  82. dobot@dobot:~/YOLO_V3/darknet/mydata$

 

另外的两个cfg文件在 如下:(my_data.data   ,    yolov3-voc.cfg)

darknet-yolov3训练自己的数据集,并测试训练结果_第6张图片

yolov3-voc.cfg文件修改如下:


 
   
   
   
   
  1. [net]
  2. # Testing
  3. #batch=1
  4. #subdivisions=1
  5. # Training
  6. batch=1 #修改这地方
  7. subdivisions=1 #修改这地方
  8. width=416
  9. height=416
  10. channels=3
  11. momentum=0.9
  12. decay=0.0005
  13. angle=0
  14. saturation = 1.5
  15. exposure = 1.5
  16. hue=.1
  17. ..................
  18. ..................
  19. ..................
  20. [yolo]
  21. mask = 0,1,2
  22. anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
  23. classes=1
  24. num=9
  25. jitter=.3
  26. ignore_thresh = .5
  27. truth_thresh = 1
  28. random=0 #修改这地方

完成准备之后训练数据:

 $ ./darknet detector train cfg/my_data.data cfg/yolov3-voc.cfg darknet53.conv.74

darknet-yolov3训练自己的数据集,并测试训练结果_第7张图片

 darknet-yolov3训练自己的数据集,并测试训练结果_第8张图片

训练生成的数据集如下:

 darknet-yolov3训练自己的数据集,并测试训练结果_第9张图片

 完成训练之后,测试结果:

命令:$ ./darknet detector demo  cfg/my_data.data cfg/yolov3-voc.cfg mydata/weights/yolov3-voc_500.weights

 

测试结果,本人只是用了18图片迭代训练了500次,测试识别结果并不是很好,框容易框的很大!!!

 

 

 测试图片的命令行:

$ ./darknet detector test cfg/my_data.data  cfg/yolov3-voc.cfg mydata/weights/yolov3-voc_500.weights mydata/JPEGImages/000013.jpg

 

你可能感兴趣的:(yolov3,ROS相关知识)