yolov3系列(一)-keras-yolo3环境搭建

论 文

https://pjreddie.com/media/files/papers/YOLOv3.pdf

翻译

https://zhuanlan.zhihu.com/p/34945787

yoloV3主页:

https://pjreddie.com/darknet/yolo/

keras-yolo3代码:

https://github.com/qqwweee/keras-yolo3.git
最新:https://github.com/pjreddie/darknet

VOC数据集

http://host.robots.ox.ac.uk/pascal/VOC/

环境需求

  • tensorflow-gpu1.4.0
  • keras2.1.3
  • python3.6.0

demo

  • 下载代码
    https://github.com/qqwweee/keras-yolo3.git
  • 下载 yoloV3 权重文件
    https://pjreddie.com/media/files/yolov3.weights
  • 权重下载太慢的话可以到下面的连接下载
链接:https://pan.baidu.com/s/1HqSZPEC5OiBhFB4I060TUg 
提取码:b99w
  • 将darknet下的yolov3配置文件转换成keras适用的h5文件
    python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

运行预测图像程序

  • 运行预测图像
    python yolo_video.py --image
识别图片的代码逻辑
  1. 要求输入图片,进入yolo.py的detect_image()方法,计时开始
  2. 新建一个长宽均为416,RGB为[128, 128, 128]的图片,把原始图片按比例缩放,画到新建的图片上,返回该图片
   iw, ih = image.size
   # size:[416, 416]
   w, h = size
   scale = min(w/iw, h/ih)
   nw = int(iw*scale)
   nh = int(ih*scale)

   image = image.resize((nw,nh), Image.BICUBIC)
   new_image = Image.new('RGB', size, (128,128,128))
   Image._show(new_image)
   new_image.paste(image, ((w-nw)//2, (h-nh)//2))
   Image._show(new_image)
   return new_image
  1. 把返回的图片每个像素放到数组里,归一化到0-1之间,并把数组维度扩充为4维
image_data = np.array(boxed_image, dtype='float32')
image_data /= 255.
image_data = np.expand_dims(image_data, 0)
  1. 开始预测
out_boxes, out_scores, out_classes = self.sess.run(
           [self.boxes, self.scores, self.classes],
           feed_dict={
               self.yolo_model.input: image_data,
               self.input_image_shape: [image.size[1], image.size[0]],
               K.learning_phase(): 0
           })
  1. 取得预测结果进一步处理,把 类别,分数,lable画到图片上
  • 运行预测视频
    # python yolo_video.py --input --output
    python yolo_video.py --input d:\ai\test.mp4 --output d:\ai\test_success.mp4
  • 调用预测本地摄像头
    yolo.py 中大致175行 把 vid = cv2.VideoCapture(video_path) 修改为 vid = cv2.VideoCapture(0)
    然后运行python yolo_video.py
  • 调用远程 rtmp/rtsp 流进行预测
    yolo.py 中大致175行 把 vid = cv2.VideoCapture(video_path) 修改为 vid = cv2.VideoCapture('rtmp://58.200.131.2:1935/livetv/hunantv')
    然后运行python yolo_video.py

你可能感兴趣的:(人工智能)