【梅科尔工作室】 英特尔OpenVINO探索-海智选参-刺海参AI分拣系统
随着智能化技术与海洋产业的深度融合,本刺参 AI 分拣系统具备广阔的发展空间与战略价值。在技术层面,深度优化算法与硬件,引入 Transformer 架构提升粘连检测精度至 95% 以上,进一步提升分级精度;同时结合边缘计算与云端协同,构建 “设备端实时分拣 + 云端大数据分析” 的智慧管理平台,为企业提供生产优化、市场预测等增值服务。
一、项目背景
海参分拣是将海参按照不同的标准,如大小、重量、形态、品质等进行分类的过程。传统的海参分拣主要依靠人工经验操作,而现在随着技术的发展,出现了智能海参分拣机,集成机器视觉识别、智能算法与自动化控制技术,通过高清摄像头捕捉海参图像,利用深度学习算法识别其特征,完成自动化分拣
海参加工产业快速发展背景下,传统人工分拣模式暴露三大瓶颈:
效率低下:日均处理量仅为机械臂的 1/5,高密度作业时效率瓶颈显著。
成本高企:旺季人力成本占比超 30%,用工缺口达 40%,制约规模化生产。
损耗严重:海参自分解特性导致损耗率超 15%,经济损失突出。 现有分选设备在灵活性、精准度及品质识别能力上存在明显不足,难以适应产业需求。
二、项目简介
传统海参分拣面临人工分拣效率低、成本高、损耗重等痛点。本团队基于 OpenVINO 研发刺参 AI 分拣系统,融合视觉识别与机械臂技术,通过YOLOv7 算法优化实现智能分拣,分拣效率提升 5 倍、成本降 50%、损耗率≤5%,树立产业智能化升级标杆。
三、项目运行
工具说明
①OpenVINO开源AI工具套件
OpenVINO™ 工具套件是一款开源工具套件,可以缩短延迟,提高吞吐量,加速 AI 推理过程,同时保持精度,缩小模型占用空间,优化硬件使用。它简化了计算机视觉、大型语言模型 (LLM) 和生成式 AI 等领域的 AI 开发和深度学习集成。
②NeZha开发套件
哪吒开发板搭载Intel N97处理器,配备8GB LPDDR5内存和64GB eMMC存储空间,支持Windows、Linux两个操作系统,支持高分辨率显示,提供HDMI接口使检测结果能更好的展示。
系统配置与开发环境搭建
1. Ubuntu 系统基础部署
① 系统安装与网络配置
- Ubuntu 安装教程:参考 Intel 官方指南完成系统烧录(推荐 Ubuntu 20.04 LTS)。
- https://ubuntu.com/download/iot/intel-iot?login=from_csdn
- USB 共享网络:若设备无网口,可通过手机 USB 共享网络,需在手机的 “个人热点” 中启用 “USB共享网络”——应急方案
网卡驱动安装(以绿联 CM448 为例),步骤如下:
1、安装 DKMS 工具:
sudo apt install dkms
2、克隆驱动仓库:
git clone https://github.com/brektrou/rtl8821CU.git
3、编译安装
cd rtl8821CU/
sudo ./dkms-install.sh
2.远程开发环境搭建
① SSH 远程连接配置
1、安装 SSH 服务:
sudo apt install openssh-server
2、启动服务:
sudo systemctl start ssh
3、查看 IP:(通过局域网 IP 连接,如ssh username@192.168.1.100)
ip addr show
② 可视化远程工具(MobaXterm)
下载安装 MobaXterm 后,新建 SSH 会话,输入设备 IP 与用户名,支持图形化文件传输与终端分屏。https://blog.csdn.net/qq_44074697/article/details/118544904
3.编程环境配置(Python + OpenVINO)
① Python 环境管理(Miniconda 方案)
下载安装(以 Python 3.10 为例):
1、从清华源获取 Miniconda:
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py310_23.10.0-1-Linux-x86_64.sh
2、执行安装脚本:
bash Miniconda3-py310_23.10.0-1-Linux-x86_64.sh
3、激活环境:
source ~/.bashrc
② OpenVINO 深度学习框架部署
1、创建专用虚拟环境:
conda create -n openvino_t python=3.9 # Python 3.9适配性最佳
conda activate openvino_t # 激活环境
2、安装 OpenVINO(2024.4.0 版本):
pip install openvino==2024.4.0 # 包含基础推理组件
pip install openvino-dev # 可选:安装开发工具包
3、验证安装:
# 新建test.py文件
from openvino.runtime import Core
ie = Core()
print("OpenVINO版本:", ie.get_property("OPENVINO_VERSION"))
执行python test.py,若输出版本信息则安装成功。
项目开发
使用yolov7训练自己的数据集论文代码下载地址:
https://gitcode.com/gh_mirrors/yo/yolov7?utm_source=csdn_github_accelerator&isLogin=1&isLogin=1&login=from_csdn
接下来进入目标文件夹,在根目录有一个requirements.txt,里面有关于yolo需要的环境
加入清华镜像源:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
进行测试,运行detect.py,效果如下:
接下来制作自己的数据集,本项目进行图片收集并自制数据集
图片数量(jpg文件个数):1200,标注数量(xml文件个数):1200
标注类别数:3
标注类别名称:['High-quality sea cucumber', 'Ugly sea cucumber', 'Incomplete sea cucumber']
使用标注工具:MakeSense,标注规则:对类别进行画矩形框
接下来进行模型训练主要参考以下部分,需要替换为自己的标签文件,在训练轮数方面可以先使用10轮训练成功后进行增加提高准确率
数据集替换:修改coco.yaml
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ./data/images/train
val: ./data/images/val
# number of classes
nc: 3
# class names
names: ['High-quality sea cucumber', 'Ugly sea cucumber', 'Incomplete sea cucumber']
训练轮次修改:修改为100轮
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--weights', type=str, default='yolov7.pt', help='initial weights path')
parser.add_argument('--cfg', type=str, default='', help='model.yaml path')
parser.add_argument('--data', type=str, default='data/coco.yaml', help='data.yaml path')
parser.add_argument('--hyp', type=str, default='data/hyp.scratch.p5.yaml', help='hyperparameters path')
parser.add_argument('--epochs', type=int, default=100)
parser.add_argument('--batch-size', type=int, default=4, help='total batch size for all GPUs')
parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes')
parser.add_argument('--rect', action='store_true', help='rectangular training')
parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')
parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')
parser.add_argument('--notest', action='store_true', help='only test final epoch')
parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')
parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters')
parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')
parser.add_argument('--cache-images', action='store_true', help='cache images for faster training')
parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')
parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')
parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')
parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')
parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')
parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers')
parser.add_argument('--project', default='runs/train', help='save to project/name')
parser.add_argument('--entity', default=None, help='W&B entity')
parser.add_argument('--name', default='exp', help='save to project/name')
parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
parser.add_argument('--quad', action='store_true', help='quad dataloader')
parser.add_argument('--linear-lr', action='store_true', help='linear LR')
parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')
parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table')
parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B')
parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch')
parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used')
parser.add_argument('--freeze', nargs='+', type=int, default=[0], help='Freeze layers: backbone of yolov7=50, first3=0 1 2')
parser.add_argument('--v5-metric', action='store_true', help='assume maximum recall as 1.0 in AP calculation')
opt = parser.parse_args()
# Set DDP variables
opt.world_size = int(os.environ['WORLD_SIZE']) if 'WORLD_SIZE' in os.environ else 1
opt.global_rank = int(os.environ['RANK']) if 'RANK' in os.environ else -1
set_logging(opt.global_rank)
#if opt.global_rank in [-1, 0]:
# check_git_status()
# check_requirements()
最终运行效果如下:
四、未来前景
随着智能化技术与海洋产业的深度融合,本刺参 AI 分拣系统具备广阔的发展空间与战略价值。在技术层面,深度优化算法与硬件,引入 Transformer 架构提升粘连检测精度至 95% 以上,进一步提升分级精度;同时结合边缘计算与云端协同,构建 “设备端实时分拣 + 云端大数据分析” 的智慧管理平台,为企业提供生产优化、市场预测等增值服务。
在应用领域,系统将从海参分拣向鲍鱼、贝类等更多水产品延伸,推动整个水产加工行业的智能化升级。此外,随着 “双碳” 目标推进与海洋生态保护需求提升,该系统的幼苗识别与放生功能有望成为行业标准,助力渔业资源可持续发展,引领绿色智能制造新趋势。
更多推荐
所有评论(0)