如今的技术设计对人们来说变得更加方便。物体检测在其他领域得到广泛应用。
农业技术进步对提高生产力,质量和粮食安全是必要的。在农业4.0研究中应用人工智能,物联网(IOT)技术来增强作物生产。
我的任务是研究为Ginger Plant开发视觉检测软件。在这个项目中,我将使用python与API tensorflow等。我的最终研究产品能够检测植物healthy,scroched,worm_eaten_plant。
最终结果的例子
检测健康植物的最终结果的例子
检测到植物暴不健康的例子
在开始之前,必须安装一些软件和硬件,例如:
- Nvidia显卡(建议使用更高的规格)
- 如果dun有Nvidia显卡使用CPU处理也可用
- cuda 9.0
CUDA Toolkit 9.0下载
CUDNN >>>但需要注册Nvidia帐号
CUDNN下载链接
- Anaconda Navigator
下载 - Anaconda
- Git
gi
Google Protobuf 3.4.1
google / protobuf
protobuf - Protocol Buffers - Google的数据交换格式 gi
https://gi/google/protobuf/releases?after=v3.5.0
对象检测步骤分为以下几种:
1 )数据采集
2)配置和设置环境
3)训练数据
4)用实时物体检测进行测试
1)数据收集
我从以下几种方式收集的数据如下所示
从农场捕获生姜植物图像,大约10000张图像是从这两种方法中收集的。200张图片是标签训练和20张图片标签测试。
图片的例子是从姜农场捕获
为了检测目标检测模型是否能够准确检测,对一些视频进行了录制。
从视频切片,一些视频是从姜农场录制的总的来说,我有7个视频从不同维度的农作物
使用谷歌扩展Fatkun批量下载图片扩展名
它可以从多个图像下载一次。
2)配置和设置环境
在Anaconda提示中,请安装库,以便稍后在对象检测中使用
conda update --all
pip install Tensorflow-gpu
pip install Cython
pip install contextlib2
pip install pillow
pip install lxml
pip install jupyter
pip install matplotlib
pip install opencv-python
2.1)在C盘名称中创建一个新文件夹tensorflow1
2.2)从谷歌tensorflow下载对象检测模型在github
下载链接>>> https://gi/tensorflow/models.git
右侧站点的绿色按钮。点击“下载ZIP”
下载后将其解压缩并重命名为tensorflow1文件夹中的模型
2.3)打开另一个github链接,下载模型用于训练和测试数据。https://gi/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md。滚动到下面你会看到这个
左侧1蓝色链接是模型的下载链接,速度(ms)列是较小的值表示更高的速度,而COCO MPI列的值较小则表示不太准确
选择一个可能适合您的模型。对于这个研究项目,我选择了。下载后,将其解压缩到此位置C:\ tensorflow1 \ models \ research \ object_detection
2.4)编辑环境变量>>>用户变量>>>路径
PATH中的示例用户变量
编辑环境变量
系统变量>>> PY_HOME
C:\ Users \ Asus \ Anaconda3
系统变量>>>路径
%PY_HOME%;%PY_HOME%\ Lib;%PY_HOME%\ DLLs;%PY_HOME%\ Lib \ lib-tk;
C:\ Users \ Asus \ Anaconda3 \
C:\ tools \ cuda \ bin
系统变量>>> PYTHONPATH
%PY_HOME%\ Lib;%PY_HOME%\ DLLs;%PY_HOME%\ Lib \ lib-tk; C:\ tensorflow1 \ models; C:\ tensorflow1 \ models \ research; C:\ tensorflow1 \ models \研发\苗条
2.5)下载proctoc v3.4.1拷贝从bin将其粘贴到C:/ tensorflow1 / models / research /
# From tensorflow1/models/research/
protoc object_detection/protos/*.proto --python_out=.
2.6)打开命令提示符
git clone https://gi/tzutalin/labelImg
这个python程序需要用来为Tensorflow中的训练数据集生成xml文件
输入这两个命令
cd labelImg
python labelImg.py
在保存类别下方的左侧底部,确保以 PascalVOC格式
打开图像文件位置并选择保存位置
在xml中保存数据后,不要只是更改图像目录位置,因为它可能会影响xml值。例如
如果更改映像目录,则在路径中声明文件位置,您需要更改路径中的所有值
2.7)接下来,tensorflow只接受tfrecord文件进行训练。
现在我们尝试将xml文件转换为tfrecord。从github下载了generate_tfrecord(https://gi/weywenn/How-to-build-plant-detector-using-tensorflow-object-detection-model)。
根据您的标签进行更改。
键入以下命令
python genera - image_input = E:/ healthy / - output_path = C:/tensorflow1/models/research/object_detection - folder_name = train
2.8)创建一个文本文件并将其保存为目录中的labelmap.pbtxt
C:\tensorflow1\models\research\object_detection\training\
2.9)从此链接下载相应模型的配置文件
https://gi/tensorflow/models/tree/master/research/object_detection/samples/configs
对于我的模型我选择resnet101 coco
下载后粘贴并放入这个位置,与labelmap.pbtxt相同
C:\tensorflow1\models\research\object_detection\training
在训练模型配置文件中打开它并更改值
在配置文件中需要更改类的数量,n
如果您的计算机图形卡规格不高,可以考虑调整min_dimension和max_dimension
按Ctrl + F搜索“PATH_TO_BE_CONFIGURED”
检查“#”符号后面的行,并根据您找到的文件更改位置
现在配置部分已完成。
3)训练数据
3.1)打开命令提示
在运行之前,请确保每个都在cmd中运行此命令
# From tensorflow1/models/research/
protoc object_detection/protos/*.proto --python_out=.
cd C:/tensorflow1/models/research/object_detection/legacy/
3.2)打开新文件夹名称new_train进行训练
如果成功的训练会提示这一点,训练时间取决于您的规格
3.3)它发生OOM资源分配错误改变min_dimension和max_dimension
更改值250和500,并确保可以继续进行训练
在训练中等到损失函数小于0.004然后按Ctrl + C停止训练进度。
在新的train_train文件中找到最大的模型
在new_train文件文件中最大的值文件,例如我将56612值作为参考(在命令下面)
3.4)现在在python中运行ex
cd C:/tensorflow1/models/research/object_detection
python ex --input_type=E:/healthy/ --pipeline_config_path=/training --=trained_checkpoint_prefix C:/tensorflow1/models/research/object_detection/legacy/new_train --output_directory inference_graph
XXXX值基于您的训练文件中的最大值
4)使用实时物体检测进行测试
转到这个github链接
https://gi/weywenn/How-to-build-plant-detector-using-tensorflow-object-detection-model
如何构建检测器使用tensorflow - 对象检测模型
4.1)下载object_detection文件的其余部分
C:/ tensorflow1 / models / research / object_detection
Object_detection_image.py,Objec和Objec
4.2)打开Spyder IDE如上所述打开文件,更改您的视频路径。