mirror of
https://github.com/NanjingForestryUniversity/supermachine--tomato-passion_fruit.git
synced 2025-11-08 14:24:00 +00:00
补充README说明文件
This commit is contained in:
parent
eddf4b0971
commit
e93cbc5613
2
.gitignore
vendored
2
.gitignore
vendored
@ -103,3 +103,5 @@ fabric.properties
|
|||||||
/20240627test4/testimg_result/
|
/20240627test4/testimg_result/
|
||||||
/20240627test4/zz_test/
|
/20240627test4/zz_test/
|
||||||
/20240627test4/误识别测试20240714/
|
/20240627test4/误识别测试20240714/
|
||||||
|
/20240529RGBtest3/xs/百香果rgb效果/
|
||||||
|
/20240529RGBtest3/xs/光谱数据3030/
|
||||||
|
|||||||
179
README.md
Normal file
179
README.md
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
# 泉州多品类果蔬智能分选项目(番茄&百香果)
|
||||||
|
|
||||||
|
2024年4月开始开发的项目,项目组成员( 薛胜、滕广、吴旻、徐耀、方晓东)
|
||||||
|
|
||||||
|
灵魂领袖---薛胜,如有算法方面的疑问或者其他方面的不解请虚心请教薛胜大师兄
|
||||||
|
|
||||||
|
❤☺→薛胜←☺❤
|
||||||
|
|
||||||
|
## 项目分支说明
|
||||||
|
```text
|
||||||
|
supermachine--tomato-passion_fruit
|
||||||
|
├── master
|
||||||
|
├── actual-deployment
|
||||||
|
```
|
||||||
|
|
||||||
|
该项目下包含两个分支,master为主分支,包含各个阶段的开发测试程序;actual-deployment分支为部署版本分支,包含设备实际部署版本程序。
|
||||||
|
|
||||||
|
## master分支
|
||||||
|
|
||||||
|
### 整体结构
|
||||||
|
|
||||||
|
```text
|
||||||
|
supermachine--tomato-passion_fruit
|
||||||
|
├── 20240410RGBtest1
|
||||||
|
├── 20240419RGBtest2
|
||||||
|
├── 20240529RGBtest3
|
||||||
|
├── 20240627test4
|
||||||
|
├── spectrum
|
||||||
|
├── README.md
|
||||||
|
├── 通信协议(20240722).md
|
||||||
|
```
|
||||||
|
当前项目包含所有阶段测试程序。
|
||||||
|
|
||||||
|
20240410RGBtest1为4月开发第一版,以薛胜大师兄为开发主力,项目框架参照木地板项目进行编程,采用socket通信,与吴旻师兄协商定好通信协议。
|
||||||
|
|
||||||
|
20240419RGBtest2为4月开发第二版,经过实验及实际设备运行证明在数据传输时存在丢图漏图等问题,经过老倪的亲自指导(烟草项目实际运行一年多,管道可靠~),将socket通信改为命名管道通信,采用windows下的win32包进行pipe命名管道创建及连接使用。
|
||||||
|
|
||||||
|
20240529RGBtest3为5月底开发第三版,重新梳理了项目框架,去除冗余代码,新增对百香果的RGB及糖度预测解决方案(薛胜大师兄为主力),截止目前所有的测试代码均采用传统方法,在色彩空间上进行处理。
|
||||||
|
|
||||||
|
20240627test4为实际设备部署版本基础上的测试版本,为实际开发第4版,在当前版本中,新增百香果褶皱判别模型(图像分类)、番茄裂口检测模型(yolo目标检测)、番茄叶片&果蒂&根分割模型(yolo实例分割),在番茄传统方法处理中新增lab色彩空间处理用于检测后期发现的小样本(姑且认为是白色变质缺陷)。
|
||||||
|
|
||||||
|
spectrum为前期无锡光谱实验中,用于处理光谱数据,验证光谱检测方案(透射or反射)的测试程序。
|
||||||
|
|
||||||
|
PS:实际部署版本采用pipe命名管道进行通信,数据传输采取通信协议进行协商通讯,通讯协议见——通信协议(20240722).md
|
||||||
|
|
||||||
|
## actual-deployment分支
|
||||||
|
|
||||||
|
### 整体结构
|
||||||
|
|
||||||
|
```text
|
||||||
|
supermachine--tomato-passion_fruit
|
||||||
|
文件夹:
|
||||||
|
├── models
|
||||||
|
├── utils
|
||||||
|
├── weights
|
||||||
|
代码:
|
||||||
|
├── classifer.py
|
||||||
|
├── config.py
|
||||||
|
├── detetor.py
|
||||||
|
├── export.py
|
||||||
|
├── main.py
|
||||||
|
├── pipe_utils.py
|
||||||
|
├── root_dir.py
|
||||||
|
├── to_seg.py
|
||||||
|
文件:
|
||||||
|
├── requirements.txt
|
||||||
|
├── tomato-passion_fruit.log
|
||||||
|
补充文件:
|
||||||
|
├── README.md
|
||||||
|
├── 通信协议(20240722).md
|
||||||
|
```
|
||||||
|
|
||||||
|
核心部分为文件夹&代码。
|
||||||
|
|
||||||
|
models文件内包含百香果糖度预测模型权重、百香果褶皱判别模型权重、百香果及番茄传统色彩模型预热图像;utils文件夹内为yolo自带;weights文件夹内包含各个版本的番茄裂口检测模型权重、番茄分割模型权重。
|
||||||
|
|
||||||
|
main.py为入口函数,实际运行只启动main.py即可;
|
||||||
|
|
||||||
|
classifer.py为处理程序,内部封装了多个类,结构如下所示;
|
||||||
|
|
||||||
|
```text
|
||||||
|
classifer.py
|
||||||
|
├── Tomato
|
||||||
|
├── Passion_fruit
|
||||||
|
├── Spec_predict
|
||||||
|
|
||||||
|
{
|
||||||
|
├── BasicBlock
|
||||||
|
├── ResNet
|
||||||
|
├── resnet18
|
||||||
|
├── resnet34
|
||||||
|
}
|
||||||
|
|
||||||
|
├── ImageClassifier
|
||||||
|
├── Data_processing
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Tomato类内定义了番茄传统方法所用到的函数;Passion_fruit类内定义了百香果传统方法所用到的函数;Spec_predict类内定义了百香果糖度预测模型;{BasicBlock、ResNet、resnet18、resnet34}为百香果褶皱判别模型定义所需;ImageClassifier类定义了百香果褶皱判别模型;Data_processing类内定义了图像处理所需函数、番茄图像分析函数、百香果图像分析函数、图像数据处理函数。
|
||||||
|
|
||||||
|
config.py为项目参数定义代码;
|
||||||
|
|
||||||
|
detetor.py为番茄裂口检测模型;
|
||||||
|
|
||||||
|
pipe_utils.py为管道通信及数据解析代码;
|
||||||
|
|
||||||
|
to_seg.py为番茄分割模型;
|
||||||
|
|
||||||
|
root_dir.py为根目录检测代码;
|
||||||
|
|
||||||
|
# 通讯协议(百香果&西红柿通信)
|
||||||
|
|
||||||
|
基于pipe命名管道,数据共3个字段(长度、指令、数据):
|
||||||
|
|
||||||
|
| 长度1 | 长度2 | 长度3 | 长度4 | 指令1 | 指令2 | 数据1 | 数据2 | ... | 数据i |
|
||||||
|
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :--: | :---: |
|
||||||
|
| 8'hzz | 8'hzz | 8'hzz | 8'hzz | 8'hzz | 8'hzz | 8'hzz | 8'hzz | ... | 8'hzz |
|
||||||
|
|
||||||
|
## 长度
|
||||||
|
|
||||||
|
一个32位无符号数length,长度 = 数据字节数i + 2 。<br>`长度1`指length[31:24],`长度2`指length[23:16],`长度3`指length[15:8],`长度4`指length[7:0]
|
||||||
|
|
||||||
|
## 指令
|
||||||
|
|
||||||
|
ASCII字符,共2字节16位,比如`指令1`为'T',`指令2`为'O',代表番茄数据包
|
||||||
|
|
||||||
|
具体指令:
|
||||||
|
|
||||||
|
| 指令1 | 指令2 | 指令含义 |
|
||||||
|
| :---: | :---: | :----------: |
|
||||||
|
| Y | R | 预热数据 |
|
||||||
|
| T | O | 番茄数据 |
|
||||||
|
| P | F | 百香果数据 |
|
||||||
|
| R | E | 返回结果数据 |
|
||||||
|
| K | O | 返回空果 |
|
||||||
|
|
||||||
|
## **数据**
|
||||||
|
|
||||||
|
**预热数据包:‘Y’‘R’**,不包含数据字段,仅有**长度字段+指令字段**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**RGB图像数据包:'指令1''指令2 '**,`数据1`~`数据i`包含了图像的行数rows(高度)、列数cols(宽度)、以及图像的RGB数据,组合方式为**高度+宽度+RGB数据**
|
||||||
|
$$
|
||||||
|
i-4=rows \times cols \times 3
|
||||||
|
$$
|
||||||
|
`数据1`~`数据i`的分布具体如下:
|
||||||
|
|
||||||
|
| 行数1 | 行数2 | 列数1 | 列数2 | 图像数据1 | ... | 图像数据(i-4) |
|
||||||
|
| :--------: | :-------: | :--------: | :-------: | :-------: | :--: | :-----------: |
|
||||||
|
| rows[15:8] | rows[7:0] | cols[15:8] | cols[7:0] | | ... | |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**光谱数据包:' 指令1''指令2 '**,`数据1`~`数据i`包含了光谱数据的行数rows(高度)、列数cols(宽度)、谱段数bands、以及光谱数据,组合方式为**高度+宽度+谱段数+光谱数据**
|
||||||
|
$$
|
||||||
|
i-6=rows \times cols \times bands \times 2
|
||||||
|
$$
|
||||||
|
`数据1`~`数据i`的分布具体如下:
|
||||||
|
|
||||||
|
| 行数1 | 行数2 | 列数1 | 列数2 | 谱段1 | 谱段2 | 图像数据1 | ... | 图像数据(i-6) |
|
||||||
|
| :--------: | :-------: | :--------: | :-------: | :---------: | :--------: | :-------: | :--: | :-----------: |
|
||||||
|
| rows[15:8] | rows[7:0] | cols[15:8] | cols[7:0] | bands[15:8] | bands[7:0] | | ... | |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**返回结果数据包:'R''E'**,`数据1`~`数据i`包含了糖度值Brix、颜色占比color、直径long、预估重量weight、缺陷个数num、缺陷面积area、结果图像的行数rows(高度)、列数cols(宽度)、以及结果图像的RGB数据,组合方式为**糖度值+颜色占比+直径+预估重量+缺陷个数+缺陷面积+高度+宽度+RGB数据**
|
||||||
|
$$
|
||||||
|
i-16=rows \times cols \times 3
|
||||||
|
$$
|
||||||
|
`数据1`~`数据i`的分布具体如下:
|
||||||
|
|
||||||
|
| 糖度值2 | 糖度值1 | 颜色占比 | 直径2 | 直径1 | 预估重量 | 缺陷个数1 | 缺陷个数2 | 缺陷面积1 | 缺陷面积2 | 缺陷面积3 | 缺陷面积4 | 行数1 | 行数2 | 列数1 | 列数2 | 图像数据1 | ... | 图像数据(i-16) |
|
||||||
|
| :--------: | :-------: | :--------: | :--------: | :-------: | :---------: | :-------: | :-------: | :---------: | :---------: | :--------: | :-------: | :--------: | :-------: | :--------: | --------- | --------- | ---- | -------------- |
|
||||||
|
| Brix[15:8] | Brix[7:0] | color[7:0] | long[15:8] | long[7:0] | weight[7:0] | num[15:8] | num[7:0] | area[31:24] | area[23:16] | area[15:8] | area[7:0] | rows[15:8] | rows[7:0] | cols[15:8] | cols[7:0] | | ... | |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**返回空果数据包:‘K’‘O’**,不包含数据字段,仅有**长度字段+指令字段**
|
||||||
Loading…
Reference in New Issue
Block a user