本文运行再colab环境下
目录
1.准备
a.库的安装
依赖项:opencv、1.15>=tensorflow>=1.4、keras,
pip install imagea
b.colab环境的准备
修改——笔记本设置——选择GPU
然后运行以下命令,更换tf版本
!sudo pip install tensorflow-gpu==1.13.1
否则导致报错
最后,代码执行程序——重新启动代码执行程序。准备完成。
2.模型的训练
a.准备数据集
每个是识别的图片最好200张以上
之后通过lableimage标记图片,标记图片时候路径不要含有中文,可以新建一个Images文件保存图片
图片和xml名字例如:image(1).png,image(1).xml
建立如下目录
└───dataset
├───train
│ ├───annotations
│ └───images
└───validation
├───annotations
└───images
将所有图片和对应xml的百分之七八十分别放在train内的Images和annotations内
将剩余图片和对应xml放在validation内的annotations和images内
数据集至此准备完毕
b.训练
运行一下代码开始训练
from imageai.Detection.Custom import DetectionModelTrainer
trainer = DetectionModelTrainer()
# 训练的是YOLOV3模型
trainer.setModelTypeAsYOLOv3()
# 数据集地址
trainer.setDataDirectory(data_directory="dataset")
# 图片类别,batch_size,训练次数,train_from_pretrained_model="pretrained-yolov3.h5"可以决定是否采用转移训练
trainer.setTrainConfig(
object_names_array=["1", "2", "3","4", "5", "6","7", "8"],
batch_size=2,
num_experiments=10,
)
# In the above,when training for detecting multiple objects,
#set object_names_array=["object1", "object2", "object3",..."objectz"]
trainer.trainModel()
后续训练需要modle内的h5文件和json内的detection_config.json文件
3.通过模型进行目标检测
需要用到的文件:上面训练得到的h5和json文件,识别的图片
运行下列代码
from imageai.Detection.Custom import CustomObjectDetection
detector = CustomObjectDetection()
detector.setModelTypeAsYOLOv3()
# h5文件地址
detector.setModelPath("detection_model-ex-013--loss-0027.176.h5")
# json文件地址
detector.setJsonPath("detection_config.json")
detector.loadModel()
# 输入输出图片地址
detections = detector.detectObjectsFromImage(input_image="metro1.png", output_image_path="metro1_new.png")
for detection in detections:
print(detection["name"], " : ", detection["percentage_probability"], " : ", detection["box_points"])
完成检测
4.注意:
卡在cpoch 1/xxx不动,可能是电脑性能问题
数据集修改后,一定要删除除了train和annotations外的其他文件,再进行训练