本文用已经训练好的模型在caffe上跑yolo-tiny的coco和voc数据集测试
注:如果需要cfg和weights转换到prototxt和caffemodel,请参照yolo-caffe转换
本文提供转换好的模型以及实现所需代码下载供下载使用(密码:g3m9),本文代码采用摄像头读入测试,平台为JETSON TK1开发板,测试速度
将下载的文件都放入caffe的python文件夹内,运行命令:
#coco数据集测试,文件路径修改为自己的路径
python '/home/ubuntu/caffe-test-v2.0/python/yolo_detect_camera.py' '/home/ubuntu/caffe-test-v2.0/python/yolo_tiny_deploy.prototxt' '/home/ubuntu/caffe-test-v2.0/python/yolo_tiny_coco.caffemodel' coco
#voc数据集测试,文件路径修改为自己的路径
python '/home/ubuntu/caffe-test-v2.0/python/yolo_detect_camera.py' '/home/ubuntu/caffe-test-v2.0/python/tiny_yolo_voc_deploy.prototxt' '/home/ubuntu/caffe-test-v2.0/python/yolo_tiny_voc.caffemodel' voc
可以调整输入图片大小以适应不同速度和准确率要求,修改yolo_tiny_deploy.prototxt或者tiny_yolo_voc_deploy.prototxt 文件第9. 10行大小为
dim: 104
dim: 104
再次在开发板上运行速度较快,能够达到实时要求
主程序的python代码如下:
""" YOLO webcam detection demo in Caffe """
from __future__ import print_function, division
import argparse
from datetime import datetime
import numpy as np
import matplotlib.pyplot as plt
import cv2
import caffe
import time
USE_GPU = True
if USE_GPU:
GPU_ID = 0 # Switch between 0 and 1 depending on the GPU you want to use.
caffe.set_mode_gpu()
caffe.set_device(GPU_ID)
else:
caffe.set_mode_cpu()
def load_names(filename):
""" load names from a text file (one per line) """
with open(filename, 'r') as fid:
names = [l.strip() for l in fid]
return names
PRESETS = {
'coco': { 'classes': [
"person", "bicycle", "car", "motorcycle", "airplane", "bus", "train",
"truck", "boat", "traffic light", "fire hydrant", "stop sign",
"parking meter", "bench", "bird", "cat", "dog", "horse", "sheep", "cow",
"elephant", "bear", "zebra", "giraffe", "backpack", "umbrella",
"handbag", "tie", "suitcase", "frisbee", "skis", "snowboard",
"sports ball", "kite", "baseball bat", "baseball glove", "skateboard",
"surfboard", "tennis racket", "bottle", "wine glass", "cup", "fork",
"knife", "spoon", "bowl", "banana", "apple", "sandwich", "orange",
"broccoli", "carrot", "hot dog", "pizza", "donut", "cake", "chair",
"couch", "potted plant", "bed", "dining table"