A Keras implementation of YOLOv3 (Tensorflow backend) for datas in Pascal VOC format
为了满足后续的模型训练需要,在安装操作系统时,将交换区设置得大一些,例如8G或16G,以防模型训练时读取大量样本导致内存溢出
安装Ubuntu后默认安装的是开源版本的显卡驱动,为了后续能够在使用tensorflow-gpu时能更好地发挥GPU的性能,推荐安装NVIDIA官方版本的驱动 在Ubuntu里面,打开“软件和更新”,点击里面的“附加驱动”标签页,选择使用NVIDIA driver,然后点击“应用更改”进行官方驱动的安装,安装后重启电脑即可 重启电脑后,只要在电脑的设备信息里面看到“图形”是显示了是自己显卡型号,则说明NVIDIA官方显卡驱动安装成功了,之后就能用nvidia-smi命令了
进入 https://developer.nvidia.com/cuda-downloads ,依次选择 CUDA 类型然后下载对应的CUDA即可
4.安装Anaconda,从Anaconda官网(https://www.continuum.io/downloads) 上下载安装包,选择Linux系统,安装基于Python 3.6版本
对下载的文件授予可执行权限,然后进行安装:
bash Anaconda3-5.2.0-Linux-x86_64.sh
当询问是否把Anaconda的bin添加到用户的环境变量中,选择yes
conda create –n KerasYolo3Demo python=3.6 numpy scipy matplotlib jupyter
其中-n指定虚拟环境的名称(上面的是KerasYolo3Demo文件夹里) 默认安装的路径位于anaconda安装目录下的envs文件夹里面,也可以使用—prefix参数来重新指定虚拟环境路径 如果要查看有哪些虚拟环境,则执行以下命令:
conda info -envis
如果在创建conda虚拟环境时没有指定python的版本,则默认是使用anaconda安装目录下bin中的python版本。为了实现虚拟环境的隔离,必须指定python版本
创建好conda虚拟环境后,在使用之前必须先进行激活。下面激活刚创建的KerasYolo3Demo虚拟环境,命令如下:
conda source activate KerasYolo3Demo
如果要注销退出当前的虚拟环境,则执行命令:
conda source deactivate tensorflow
conda source activate tensorflow
conda install tensorflow-gpu
conda将会检测tensorflow-gpu的最新版本以及相关的依赖包,包括调用NVIDIA显卡所需要的Cuda、Cudnn等依赖环境,都会自动按顺序进行安装
keras版本的yolo3还依赖于PIL工具包,如果之前没安装的,也要在anaconda中安装
conda install keras-gpu
conda install pillow
conda install --channel https://conda.anaconda.org/menpo opencv3
在Ubuntu里面安装PyCharm非常简单,在Ubuntu软件商城里面搜索“pycharm”,然后选择社区版“PyCharm CE”进行安装即可
为了能够在PyCharm中使用我们自己创建的conda虚拟环境,需要进行下配置。在Pycharm 的Files>>settings>>Project Interpreter>>Add local 里面添加刚才创建的conda虚拟环境的目录下所在的Python 3.6程序,应用之后就可以使用我们自己使用的虚拟环境了
https://github.com/wait1ess/keras-yolo3-voc
https://pjreddie.com/media/files/yolov3.weights
source activate tensorflow
python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5
class YOLO(object):
_defaults = {
"model_path": 'model_data/yolo_weights.h5',
# "model_path":"model_data/trained_weights_final.h5",
"anchors_path": 'model_data/yolo_anchors.txt',
"classes_path": 'model_data/coco_classes.txt',
# "classes_path": 'model_data/voc_classes.txt',
"score" : 0.7,
"iou" : 0.45,
"model_image_size" : (416, 416),
"gpu_num" : 0,
}
图片如下:
if __name__ == '__main__':
yolo=YOLO()
path = 'D:/VOCtrainval_06-Nov-2007/yoloV3conf/keras-yolo3-master/test001.jpg'
try:
image = Image.open(path)
except:
print('Open Error! Try again!')
else:
r_image = yolo.detect_image(image)
r_image.show()
yolo.close_session()
视频如下:
if __name__ == '__main__':
video_path="D:/VOCtrainval_06-Nov-2007/yoloV3conf/keras-yolo3-master/test002.mp4"
output_path="D:/VOCtrainval_06-Nov-2007/yoloV3conf/keras-yolo3-master/result002.mp4"
detect_video(YOLO(), video_path, output_path)
http://host.robots.ox.ac.uk/pascal/VOC/
使用方法详见:https://blog.csdn.net/weixin_41065383/article/details/90637205
YOLO采用的标注数据文件,每一行由文件所在路径、标注框的位置(左上角、右下角)、类别ID组成,格式为:image_file_path x_min,y_min,x_max,y_max,class_id 例子如下: path/00001.jpg xmin,ymin,xmax,ymax,class path/00002.jpg xmin,ymin,xmax,ymax,class xmin,ymin,xmax,ymax,class...
这种文件格式跟前面制作好的VOC_2007标注文件(Main中的txt)的格式不一样,Keras-yolo3里面提供了voc格式转yolo格式的转换脚本 voc_annotation.py
在转换格式之前,先打开voc_annotation.py文件,修改里面的classes的值为自己训练数据的label,然后执行即可,新的数据集标注文件保存于model_data目录
source activate tensorflow
python voc_annotation.py
annotation_path = 'model_data/2007_train.txt'
log_dir = 'model_data/logs/000/'
classes_path = 'model_data/voc_classes.txt'
anchors_path = 'model_data/yolo_anchors.txt'