当前位置: 首页 > news >正文

做流媒体视频播放网站求助站长推荐自动跳转导航入口

做流媒体视频播放网站求助,站长推荐自动跳转导航入口,大学生项目app策划书,谷歌查询关键词的工具叫什么致谢声明 本文在学习《Tensorflow object detection API 搭建属于自己的物体识别模型#xff08;2#xff09;——训练并使用自己的模型》的基础上优化并总结#xff0c;此博客链接#xff1a;https://blog.csdn.net/dy_guox/article/details/79111949#xff0c;感谢此博…致谢声明 本文在学习《Tensorflow object detection API 搭建属于自己的物体识别模型2——训练并使用自己的模型》的基础上优化并总结此博客链接https://blog.csdn.net/dy_guox/article/details/79111949感谢此博客作者。 0.前言 在进行本文操作之前需要先安装好tensorflow的gpu版本。 本文作者的环境python3.6、Windows10、tensorflow_gpu1.10 已经安装好的可以跳过学习如何安装tensorflow的gpu版本的读者请阅读本文作者的另外一篇文章《深度学习环境搭建-CUDA9.0、cudnn7.3、tensorflow_gpu1.10的安装》链接https://www.jianshu.com/p/4ebaa78e0233 本文是写给目标检测入门新手的指导文章会用示意图将每一步的详细实现过程展示出来。 本文作者接触深度学习2个月后开始进行目标检测实践。 本文作者的专题《目标检测》链接https://www.jianshu.com/c/fd1d6f784c1f 此专题的宗旨是让基础较为薄弱的新手能够顺利实现目标检测专题内容偏向于掌握技能学会工具的使用。 本文作者尚未具备清楚讲述目标检测原理的能力学习原理请自行另找文章。 文章编号文章名链接1目标检测实践_tensorflow版SSD运行示例https://www.jianshu.com/p/c1d8f1c76de72目标检测实践_tensorflow版SSD数据准备https://www.jianshu.com/p/3d9436b4cb663目标检测实践_tensorflow版SSD训练自己的数据https://www.jianshu.com/p/0e5f9df4686a4目标检测实践_tensorflow版SSD模型测试https://www.jianshu.com/p/7464c5e00716 1.下载图片 本文作者给读者演示的图片数据是来自ImageNet中的鲤鱼分类。 数据集在百度云盘链接: https://pan.baidu.com/s/1NksESNqBX--YqMJ4zptGdw 提取码: 6p3u 在桌面新建文件夹目标检测把下载好的压缩文件n01440764.tar放到其中如下图所示 image.png 选择解压到n01440764如下图所示 image.png 解压完成后桌面的目标检测文件夹中如下图所示 image.png 2.选择图片 在此数据集中大部分图片都较为清晰但是有极少数图片像素点少不清晰。 像素点少的图片不利于模型训练或模型测试所以在本章节中实现用python代码选出部分图片文件。 在桌面的目标检测文件夹中打开cmd即在路径中输入cmd后按Enter键如下图所示 image.png 在cmd中输入命令并运行jupyter notebook如下图所示 image.png 浏览器会自动打开1个标签页选择新建ipynb代码文件如下图所示 image.png 为ipynb文件重命名重命名按钮如下图红色箭头标记处所示 image.png 修改文件名为get_some_qualified_images如下图所示 image.png 复制下面一段代码到代码文件get_some_qualified_images.ipynb的单元格中复制后运行即可 import os import random from PIL import Image import shutil#获取文件夹中的文件路径 def getFilePathList(dirPath, partOfFileName):allFileName_list list(os.walk(dirPath))[0][2]fileName_list [k for k in allFileName_list if partOfFileName in k]filePath_list [os.path.join(dirPath, k) for k in fileName_list]return filePath_list#获取一部分像素足够即长宽都大于416的图片 def get_some_qualified_images(dirPath, sample_number, new_dirPath):jpgFilePath_list getFilePathList(dirPath, .JPEG)random.shuffle(jpgFilePath_list)if not os.path.isdir(new_dirPath):os.makedirs(new_dirPath)i 0for jpgFilePath in jpgFilePath_list:image Image.open(jpgFilePath)width, height image.sizeif width 416 and height 416:i 1new_jpgFilePath os.path.join(new_dirPath, %03d.jpg %i)shutil.copy(jpgFilePath, new_jpgFilePath)if i sample_number:break#获取数量为100的合格样本存放到selected_images文件夹中 get_some_qualified_images(n01440764, 100, selected_images)代码运行完成后在桌面的目标检测文件夹中会有一个selected_images文件夹如下图所示 image.png 3.缩小图片 在第2章选择图片中选出了100张像素足够的图片存放在selected_images文件夹中即淘汰了像素过小的图片。 在本章第3章中用代码实现将像素过大的图片做缩小。 在jupyter notebook中新建代码文件get_small_images.ipynb步骤与上一章中相同 打开cmd——运行jupyter notebook——新建代码文件——代码文件重命名 复制下面一段代码到代码文件get_small_images.ipynb的单元格中复制后运行即可 import os from PIL import Imagedef get_smaller_images(dirPath, new_dirPath):fileName_list os.listdir(dirPath)filePath_list [os.path.join(dirPath, fileName) for fileName in fileName_list]imagePath_list [filePath for filePath in filePath_list if .jpg in filePath]if not os.path.isdir(new_dirPath):os.mkdir(new_dirPath)for imagePath in imagePath_list:image Image.open(imagePath)width, height image.sizeimageName imagePath.split(\\)[-1]save_path os.path.join(new_dirPath, imageName)if width 600 and height 600:minification min(width, height) // 300 #此变量表示缩小倍数new_width width // minificationnew_height height // minificationresized_image image.resize((new_width, new_height), Image.ANTIALIAS)print(图片%s原来的宽%d,高%d, 图片缩小后宽%d,高%d %(imageName, width, height, new_width, new_height))resized_image.save(save_path)else:image.save(save_path)get_smaller_images(selected_images, smaller_images)在本文作者的实践中图片经过PIL库打开再保存保持图片质量的情况下能够缩小图片文件大小3倍左右。本文作者猜测可能是使用的图片压缩算法不同完成此步后文件夹大小如下图所示。 image.png 4.给图片打标签 使用打标签工具LabelImg下载页面链接https://tzutalin.github.io/labelImg/ 如果下载页面链接没法访问也可以从百度云盘中下载。 链接: https://pan.baidu.com/s/1jVmkLxqQMZNJIzyv75HilA 提取码: yysh 下载页面如下图所示 image.png 选择下载Windows_v1.8.0如下图中红色箭头标记处所示 image.png 把压缩文件windows_v1.8.0.zip放到D盘根目录中选择解压到当前文件夹。 解压后D盘根目录下会有windows_v1.8.0文件夹LabelImg软件在文件夹中。选择D盘根目录的原因如果windows_v1.8.0文件夹路径中带有中文打开LabelImg软件会闪退。 打开LabelImg软件点击下图红色箭头标记处。 image.png 在打开的软件界面点击Open Dir按钮如下图红色箭头标注处所示。 image.png 首先打开桌面的目标检测文件夹在选中文件夹smaller_images的情况下点击下图红色箭头标记处所示的选择文件夹按钮。 注意只需要鼠标选中文件夹smaller_images不需要进入文件夹smaller_images中。 image.png 在输入法为英文输入的情况下按键盘上的w键则可以开始绘制方框方框会框住图片中的物体。 完成绘制方框后还需要为方框标上类别如下图所示。注意每完成一张图的打标签一定要记得保存 image.png 在本文演示中需要给图片中的鲤鱼和人脸2个类别打标签。 鲤鱼的标签名叫做fish人脸的标签名叫human_face打标签的结果如下图所示。注意用方框框住物体时尽量框住物体的所有部位例如本文中的鱼鱼鳍是一个重要特征。保证框住物体所有部位的情况下也不要使方框四周留出过多空白。 image.png 遇到特征不明显的图片可以放弃为此图片打标签举例如下图所示 image.png 为100张图片打标签本文作者共花费44分钟。 用LabelImg软件打标签会给每张图片产生对应的xml文件。 检查是否给所有图片都打上标签在文件夹smaller_images中共有99个xml文件如下图所示。 因为有1张图片难以辨认所以没有给它打标签。 image.png 本文作者把已经打标签好的文件夹smaller_images做成压缩文件smaller_images.zip并上传到百度网盘。 下载链接: https://pan.baidu.com/s/1tkCV95pzLyRV5gSRF9sF8A 提取码: 7j88 5.xml转csv xml转csv的意思是将xml文件中的信息整合到csv文件中。 在桌面的目标检测文件夹中新建代码文件xml_to_csv.ipynb步骤与第2章中相同 打开cmd——运行jupyter notebook——新建代码文件——代码文件重命名 复制下面一段代码到代码文件xml_to_csv.ipynb的单元格中复制后运行即可 import os import pandas as pd import xml.etree.ElementTree as ET from sklearn.model_selection import train_test_splitdef xmlPath_list_to_df(xmlPath_list):xmlContent_list []for xmlPath in xmlPath_list:tree ET.parse(xmlPath)root tree.getroot()for member in root.findall(object):value (root.find(filename).text,int(root.find(size)[0].text),int(root.find(size)[1].text),member[0].text,int(member[4][0].text),int(member[4][1].text),int(member[4][2].text),int(member[4][3].text))xmlContent_list.append(value)column_name [filename, width, height, class, xmin, ymin, xmax, ymax]xmlContent_df pd.DataFrame(xmlContent_list, columnscolumn_name) return xmlContent_dfdef dirPath_to_csv(dirPath):fileName_list os.listdir(dirPath)all_xmlPath_list [os.path.join(dirPath, fileName) for fileName in fileName_list if .xml in fileName]train_xmlPath_list, test_xmlPath_list train_test_split(all_xmlPath_list, test_size0.1, random_state1)train_df xmlPath_list_to_df(train_xmlPath_list)train_df.to_csv(train.csv)print(成功产生文件train.csv,训练集共有%d张图片 %len(train_xmlPath_list))test_df xmlPath_list_to_df(test_xmlPath_list)test_df.to_csv(test.csv)print(成功产生文件test.csv,测试集共有%d张图片 %len(test_xmlPath_list))dirPath_to_csv(smaller_images)为了使读者与本文作者的复现结果一致本文作者将函数train_test_split的参数random_state的值设为1这样每次划分的训练集和测试集总是相同。如果不设置此参数则每次划分的训练集和测试集不同。 上面一段代码的运行结果如下 成功产生文件train.csv,训练集共有89张图片 成功产生文件test.csv,测试集共有10张图片 6.csv转tfrecord csv转tfrecord的意思是将csv文件中的信息和图片数据整合到tfrecord文件中。 6.1 配置环境 下载文件object_detection.zip 链接https://pan.baidu.com/s/1Q9SxtKlOqEty08tpFeUUHA 提取码: p2sm 选择提取到object_detection如下图所示 image.png 按照链接https://www.jianshu.com/p/0e5f9df4686a 中的第1章《解决第1个报错》添加环境变量。 6.2 编辑和运行代码 在桌面的目标检测文件夹中新建代码文件csv_to_tfrecord.ipynb步骤与第2章中相同 打开cmd——运行jupyter notebook——新建代码文件——代码文件重命名 复制下面一段代码到代码文件csv_to_tfrecord.ipynb的单元格中复制后运行即可 import os import pandas as pd import tensorflow as tf from object_detection.utils import dataset_util import shutildef csv2tfrecord(csv_path, imageDir_path, tfrecord_path):objectInfo_df pd.read_csv(csv_path)tfrecord_writer tf.python_io.TFRecordWriter(tfrecord_path)for filename, group in objectInfo_df.groupby(filename):height group.iloc[0][height]width group.iloc[0][width]filename_bytes filename.encode(utf-8)image_path os.path.join(imageDir_path, filename)with open(image_path, rb) as file:encoded_jpg file.read()image_format bjpgxmin_list list(group[xmin] / width)xmax_list list(group[xmax] / width)ymin_list list(group[ymin] / height)ymax_list list(group[ymax] / height)classText_list [classText.encode(utf-8) for classText in group[class]]classLabel_list [classText_to_classLabel(classText) for classText in group[class]]tf_example tf.train.Example(features tf.train.Features(feature {image/height: dataset_util.int64_feature(height),image/width: dataset_util.int64_feature(width),image/filename: dataset_util.bytes_feature(filename_bytes),image/source_id: dataset_util.bytes_feature(filename_bytes),image/encoded: dataset_util.bytes_feature(encoded_jpg),image/format: dataset_util.bytes_feature(image_format),image/object/bbox/xmin: dataset_util.float_list_feature(xmin_list),image/object/bbox/xmax: dataset_util.float_list_feature(xmax_list),image/object/bbox/ymin: dataset_util.float_list_feature(ymin_list),image/object/bbox/ymax: dataset_util.float_list_feature(ymax_list),image/object/class/text: dataset_util.bytes_list_feature(classText_list),image/object/class/label: dataset_util.int64_list_feature(classLabel_list),}))tfrecord_writer.write(tf_example.SerializeToString())tfrecord_writer.close()print(成功产生tfrecord文件保存在路径:%s %tfrecord_path)#如果训练自己的模型目标检测的类别不同需要修改此处 def classText_to_classLabel(row_label):if row_label fish:return 1elif row_label human_face:return 2else:return Nonedir_name training if not os.path.isdir(dir_name):os.mkdir(dir_name) csv2tfrecord(train.csv, smaller_images, training/train.tfrecord) csv2tfrecord(test.csv, smaller_images, training/test.tfrecord)本文作者花费了2个小时左右将原博客作者的代码精简成上面一段代码调用库更少调用方法更常用变量名命名表达意思更准确使读者更容易理解本段代码的作用。 上面一段代码的运行结果如下 成功产生tfrecord文件保存在路径training/train.tfrecord 成功产生tfrecord文件保存在路径training/test.tfrecord 上面一段代码运行完成后桌面的目标检测文件夹中会产生一个文件夹training如下图红色箭头标注处所示。 image.png 在文件夹training中有2个tfrecord文件如下图所示 image.png 7.编写pbtxt文件 在桌面文件夹目标检测的文件夹training中创建文本文件my_label_map.pbtxt。 复制下面一段内容到文本文件my_label_map.pbtxt中。 item {name : fishid : 1 } item {name : human_faceid : 2 }复制后保存即可此时文件夹training中有3个文件如下图所示 image.png 有一个细节需要特别注意因为此细节本文作者花费了1天半时间才解决报错问题。 文本文件fish_label.pbtxt在Windows系统下默认编码格式是ANSI格式工程中需要的就是此格式。 但是本文作者在认为python3对utf-8编码支持较好所以把文本文件fish_label.pbtxt的编码改成了utf-8格式导致工程报错。 8.编写配置文件 在桌面文件夹目标检测的文件夹training中创建配置文件ssdlite_mobilenet_v2_coco.config。 本文作者给读者提供2种方式获得正确的配置文件。 8.1 网盘下载 本文作者将适用于本文的配置文件的各项参数都已经设置好并且上传百度网盘。 链接: https://pan.baidu.com/s/1ERp0zJ4cpI5VHHeHcyI_Rg 提取码: ud28 8.2 修改原生配置文件 如果读者已经阅读过《目标检测》系列的第一篇文章《目标检测第1步-运行tensorflow官方示例》链接https://www.jianshu.com/p/c1d8f1c76de7 可以在object_detection文件夹中的samples/config路径下找到原生配置文件ssdlite_mobilenet_v2_coco.config如下图红色箭头标记处所示。 image.png 原生配置文件ssdlite_mobilenet_v2_coco.config先复制1份到桌面文件目标检测的文件夹training中。 原生配置文件中的需要修改的部分 第9行的num_classes对于本文来说此数设置为2。第143行的batch_size对于本文来说此数设置为5读者根据自己的电脑配置可以调高或者调低。第177行input_path设置成training/train.tfrecord。第179行label_map_path设置成training/my_label_map.pbtxt。第191行input_path设置成training/test.tfrecord。第193行label_map_path设置成training/my_label_map.pbtxt。第158、159这2行需要删除。 修改配置文件ssdlite_mobilenet_v2_coco.config并保存后此时文件夹training中有4个文件如下图所示 image.png 9.总结 1.本篇文章到此结束详细地介绍了数据准备的过程。 本篇文章的阶段性成果training文件夹已经上传百度云盘。 链接: https://pan.baidu.com/s/1Kgp9geSkTFVa_4tfc7ZPew 提取码: 9sy3 2.《目标检测》系列的下一篇文章《目标检测实践_tensorflow版SSD训练自己的数据》链接https://www.jianshu.com/p/0e5f9df4686a 作者潇洒坤 链接https://www.jianshu.com/p/3d9436b4cb66 来源简书 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。
http://www.pierceye.com/news/709036/

相关文章:

  • 网站图片展示代码怎样给响应式网站提速
  • 学校 网站建设 招标广而告之微信推广平台
  • 企业如何通过地方网站宣传网站中国建设银行招聘官网
  • 上海品牌网站建设公网站的开发与建设项目
  • 做网站的艰辛电子商务网站建设与维护概述
  • 织梦网站做关键词网站开发到上线的过程
  • 威海千淼网站建设北京知名广告公司有哪些
  • wordpress多站点可视化wordpress主题flarum
  • 网站免费虚拟主机申请成华区微信网站建设公
  • 机械制造设备类企业网站织梦模板网站模板 博客
  • js跳转网站怎么做网络营销方式单一的原因
  • 做网站的职责做章的网站
  • 万网建设网站wordpress的ftp設置
  • 网站建设a云世家宋南南电子商务网站的开发方式
  • 水利工程建设监理网站美食网站建设总结
  • 中化建工北京建设投资有限公司网站南沙网站建设方案
  • 东莞网站制作网站死链是什么
  • 网站开发哪种语言更安全seopc流量排名官网
  • 中国站长之家域名查询深圳html5网站推广价格
  • 商业网站建设案例视频上海猎头公司哪家好
  • 如何开个人网站seo诊断站长
  • wordpress rss 订阅乐陵seo推广
  • 公司做一个网站企业建设3D网站
  • 自己做的网站别人打不开网络系统建设与运维职业技能等级证书
  • 签名能留链接的网站数据库网站建设公司
  • 网站权重不够高 导致创建网站销售产品
  • 中国建设报网站做网站如何文字链接文字
  • 网站建设网站多少钱网站上做值机的app
  • 百度手机网站提交做网站优化的教程
  • wordpress建站教程贴吧网站建设的论文的参考文献