logo资料库

YOLOv5训练笔记.pdf

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
YOLOv5训练笔记 一、环境安装 #pytorch 1.7.0 #torchvision 0.5.0 #vs2019 conda create -n yolov5 python=3.7 conda activate yolov5 conda install pytorch torchvision cudatoolkit=10.1 pip install -U -r requirements.txt #安装pycocotools   cd cocoapi/PythonAPI   python setup.py build_ext install   #安装apex   cd apex-master   pip install -r requirements.txt   python setup.py install #测试网络是否可用 python detect.py --source 0 --weights="weights/yolov5x.pt" 将detect.py文件中的112行if cv2.waitKey(0) == ord('q'):这一句改成if cv2.waitKey(1) == ord('q')显示1ms等待 二、开始准备训练自己要识别的目标 labelImg的使用 安装: • pip install pyqt5 • pip install labelImg 使用: 1、命令行模式 键入labelimg 2、view 选上Auto save mode、show/hide label panel、Advanced mode。
3、 注:文件夹设置 1、photos: 存放原图片 2、Annotations: 存放xml标注信息文件 3、JPEGImages: 存放压缩图片(我没有用上哎) 4、YOLO数据集是txt格式的 4、图片的来源,网上爬虫下载。 import requests import os import urllib class Spider_baidu_image():
   def __init__(self):        self.url = 'http://image.baidu.com/search/acjson?'        self.headers = {            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.\           3497.81 Safari/537.36'}        self.headers_image = {            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.\           3497.81 Safari/537.36','Referer':'http://image.baidu.com/search/index? tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1557124 645631_R&pv=&ic=&nc=1&z=&hd=1&latest=0©right=0&se=1&showtab=0&fb=0&width=&he ight=&face=0&istype=2&ie=utf-8&sid=&word=%E8%83%A1%E6%AD%8C'}        # self.keyword = '刘亦菲壁纸'        self.keyword = input("请输入搜索图片关键字:")        self.paginator = int(input("请输入搜索页数,每页30张图片:"))        # self.paginator = 50        # print(type(self.keyword),self.paginator)        # exit()    def get_param(self):        """       获取url请求的参数,存入列表并返回       :return:       """        keyword = urllib.parse.quote(self.keyword)        params = []        for i in range(1,self.paginator+1):            params.append('tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord= {}&cl=2&lm=-1&ie=utf-8&oe=utf- 8&adpicid=&st=-1&z=&ic=&hd=1&latest=0©right=0&word= {}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&cg= star&pn={}&rn=30&gsm=78&1557125391211='.format(keyword,keyword,30*i))        return params    def get_urls(self,params):        """       由url参数返回各个url拼接后的响应,存入列表并返回       :return:       """        urls = []        for i in params:            urls.append(self.url+i)        return urls    def get_image_url(self,urls):        image_url = []        for url in urls:            json_data = requests.get(url,headers = self.headers).json()            json_data = json_data.get('data')            for i in json_data:                if i:                    image_url.append(i.get('thumbURL'))        return image_url    def get_image(self,image_url):        """       根据图片url,在本地目录下新建一个以搜索关键字命名的文件夹,然后将每一个图片存入。       :param image_url:
      :return:       """        cwd = os.getcwd()        file_name = os.path.join(cwd,self.keyword)        if not os.path.exists(self.keyword):            os.mkdir(file_name)        for index,url in enumerate(image_url,start=1):            with open(file_name+'\\{}.jpg'.format(index),'wb') as f:                f.write(requests.get(url,headers = self.headers_image).content)            if index != 0 and index % 30 == 0:                print('{}第{}页下载完成'.format(self.keyword,index/30))    def __call__(self, *args, **kwargs):        params = self.get_param()        urls = self.get_urls(params)        image_url = self.get_image_url(urls)        self.get_image(image_url) if __name__ == '__main__':    spider = Spider_baidu_image()    spider() 5、把标注好的文件放在yolov5-master/data/coco/images/ images的目录结构 (images是放图片的,图片分为训练集和测试集,labels是放txt文件的,同样分训练集和测试集,注意 images文件下和labels文件夹下文件的对应顺序) 从Annotations复制txt文件时注意不要将classes.txt复制过去。 6、在yolov5_material\yolov5-master\data文件夹下 修改coco128.yaml, 先修改nc后面的数,原来是2,训练多少种类别,就改成多少 再修改names列表的内容,就是labelimg中的标签名,顺序要与classes.txt顺序对应 7、再yolov5_material\yolov5-master\models文件夹下 修改yolov5x.yaml(需要训练的那个 ) 修改nc后面的数,原来是2,训练多少种类别,就改成多少,其余的内容不懂的话就不要改 8、开始正式的训练
python train.py --img 640 --data data/coco128.yaml --cfg models/yolov5x.yaml --weights weights/yolov5x.pt --batch-size 8 --epochs 100 添加下滑线的位置都是可以修改的。学习率再train.py中的第30行修改 复制上面命令到命令行,在weights文件夹下得到best.pt。 9、裁剪权重strip_optimizer(best),在train.py结尾调用,原项目没有,但是给了接口。 10、我的显卡是960M,训练不了。用的是yolov5s,可以训练。羡慕那些有着强力显卡的大佬。 11、检测,运行命令。 python detect.py --source 00000.jpg --weights="weights/best.pt" --view-img detect.py的命令 $ python detect.py --source 0 # webcam                           file.jpg # image                           file.mp4 # video                           path/ # directory                           path/*.jpg # glob                           rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa # rtsp stream                           rtmp://192.168.1.105/live/test # rtmp stream                           http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8 # http stream 12、结果
训练集46张,测试集10张,epoch=100 12、结束 原本用yolov5,把batch size设置到1,依然显示显卡内存不足,有个好显卡还是很重要的,特别是我 这种对网络修改和优化都不了解的菜鸡来说。 参考:B站 UP主:小鸡炖技术(https://www.bilibili.com/video/BV1jz411v7J7?t=546)
分享到:
收藏