二零二一工作总结

二零二一年实验室的事情逐渐变多,一边忙于上课和作业,一边做实验室的项目,生活上也发生了很多事情。


一月总结

  • AI平台项目

    • 完成一键运行脚本 (2天)
    • 实现删除未含有标签的数据脚本、实现mmde是否安装成功的验证脚本、配置lebeme(0.5天)
    • 构思、完成参数表,设计config.json(0.5天)
    • 重构修改convert2coco.py(0.5天)
  • 钢铁缺陷检测项目

    • 训练钢铁缺陷模型(0.5天)
  • 边坡项目

    • 边坡项目仁川原机器维护和配置(1天)
    • 边坡项目博深新服务器部署(1天)
    • 新需求:对代码逻辑修改,忽略部分模型的推理,并调试(1.5天)

共计7.5天

二月总结

  • AI平台项目

    • PPAI项目开会,将代码对接给陆杰学长,并讲解。(1天)
  • 边坡项目

    • 配置和部署江罗算法服务器(1天)
    • 边坡算法出现部分错误,获取错误数据并进行对接和分析(1天)

共计3天

三月总结

  • 边坡项目:
    • 对边坡项目新数据进行处理和整理,并重新训练更新模型(1天)
    • 根据客户反馈的新需求,调研如何降低率和数据增强,解决识别错误的问题(0.5天)
    • 实验尝试对faster加深网络和cascade模型,进行训练和分析(1.5天)
    • 完成数据清洗脚本(对labelme未标注图像进行清洗)、调研学习并完成anchor统计数据分析脚本(1天)
    • 部署边坡新机器,并解决torch版本不一致导致的推理模型不能使用问题、根据客户需求完成8个视频的单元测试、解决某些视频错误导致的程序BUG问题(1.5天)
  • 钢铁项目:
    • 钢板window代码开发调试,在实验室电脑window下搭建解决适配性并搭建相应文件,完成window下mmdet的推理和ubuntu环境下的训练,同时返回文档(2天)
    • 畜牧业相关:
    • 开会,完成初始数据和方法的调研(1天)

共计8.5天

四月总结

  • 畜牧业
    • 雪花牛肉调研、活体牛健康检测调研并阅读相关论文并返回数据采集说明文档、返回PPT(3天)
    • 实现脂肪含量测定demo算法(0.5天)
  • 医学相关
    • 寻找甲状腺数据集、乳腺数据集并调研相关综述论文和算法(0.5天)
  • 会议相关(0.5天)
    • PPAI项目开会
    • 畜牧业项目开会确定之后的任务:给出demo,调研方向
    • PCB板相关项目开会确定相关需求并调研传统算法

共计工作量4.5天

五月总结

  • 边坡项目:
    • 软件安装和配置(0.5天)
  • 宝钢项目:
    • 和甲方开会确定需求、生产环境(0.5天)
    • 确定方案,搭建代码逻辑和框架,实现Manager类和主函数(1天)
  • PCB检测:
    • 针对开源数据集多种情况实现做差检测给出demo(2天)
    • 针对实验室数据实现做差检测,并给出热力图结果(1天)
  • PPAI平台:
    • 调研学习和安装rabiitMQ(1天)
    • 调研、运行、阅读自动标注代码(1天)
  • 日常周会(1天)

共计工作量8天

六月总结

  • 宝钢项目前期准备(5天)

    • 实现推理功能,并根据需求去掉不要的边框(1天)
    • 实现日志系统(1天)
    • 书写脚本,实现开机自启动功能(0.5天)
    • 加入异常检测:文件完整校验、读写检测(0.5天)
    • 返回推理json的文件和说明,并发给客户(0.5天)
    • 用实验室相应环境并且部署(1天)
    • 准备相应的离线依赖包、预编译包,书写安装说明文档(0.5天)
  • 宝钢项目南京出差部署(2天)

  • 宝钢项目后续(1天)

    • 复线宝钢生产环境,以及tf环境
    • 尝试在实验室机器重新解决上次不能配置的问题
  • EPAI项目(9天)

    • fasterrcnn实验调节参数,给定模型JSON和参数JSON(1天)
    • V100容器搭建:宿主机配置LXD;配置模版容器(cuda、显卡、python、conda)作为之后的生产环境(1天)
    • mmdet源码阅读和修改(1天)
    • 配置项目算法工程的架构和git(0.5天)
    • 实现代码修改配置文件classes以及网络的classesnum(1天)
    • Train函数的实现和重新封装(1天)
    • 实现config配置自动修改和生成,并封装(1天)
    • 数据格式转换函数封装和实现,并给后端可能会出现的错误(1天)
    • 书写算法API文档说明(0.5天)
    • 周会和例会(1天)

共计工作量17天

七月总结

  • 宝钢项目:(4天)
    • 为开发算法重新适配宝钢环境(0.5天)
      • 重装conda、更新驱动、使用离线包安装
    • 项目出差(1天)
    • 根据客户需求修改代码(2天)
      • 增加12个模型同时启动推理的功能
      • 代码逻辑修改
      • 加入nms算法,减少bbox
    • 远程部署新代码(0.5天)
  • EPAI项目:(19天)
    • 算法功能实现和联调(14.5天)
      • 配置文件生成分装(1天)
      • 实验并为配置文件生成加入参数可调功能(2天)
      • Train模块心跳功能增加(1天)
      • covert模块返回参数修改(0.5天)
      • 数据转换功能需求修改,不再传入图片格式(0.5天)
      • 推理模块封装(2天)
      • 推理模块增加多种类推理(0.5天)
      • 与后端联调(7.6、7.8、7.20),并修改代码(3天)
      • 整体联调(7.20、7.23),并修改代码(2天)
      • 修复日志同一个进程多次训练只有一个的问题(2天)
    • 维护和修改算法和后端的交互接口文档(2天)
      • 补充mq算法接口文档
      • 补充标注信息接口文档
      • 联调修改
    • 配置前、后端、算法公用的测试环境机器(0.5天)
    • 周会(2天)

共计工作量23天

八月总结

  • EPAI项目
    1. 训练(TC)模块(6.5天)
      • 交付的demo演示视频的录制及剪辑(0.5天)
      • 提供后端coco格式检验的具体需求和方案,并提供示例(0.5天)
      • 算法部分
      • 推理模块加入标注框颜色和种类相对应的功能、返回格式改成labelme格式(1天)
      • 文档的更新和维护(1天)
      • 用java重写算法解析数据格式和标注信息的classes(0.5天)
      • 增加报错信息通过MQ信号传递的功能:自定义线程类,对承线程类进行继承,捕获异常并通过MQ返回给后端(2天)
      • 解决数据集过小没有loss的BUG(1天)
    2. 刀具电流检测算法(8天)
      • 配置和搭建前后端框架vue+echarts+flask
      • 后端
      • 封装和搭建flask的response(1天)
      • 重构后端flask框架,加入蓝图、flask-resful、api版本控制、自定义异常、全局异常、封装echart自动创建折线图模版(3天)
      • 前端
      • 封装axios的http请求、跨域配置并和后端联调(1天)
      • echarts确定叠加图和特征趋势图的样式以及业务实现(2天)
      • echarts渲染太慢的前端加速和优化的调研和解决(1天)
      • 完成和维护刀具检测的API文档(0.5天)
  1. 焊锡三维算法(7天)
    • 学校吕博士团队交流和开会(0.5天)
    • 点云数据需求讨论开会(0.5天)
    • 将点云csv数据转化为pcd格式,并可视化(1天)
    • 重写加速csv读取并构建坐标的函数、改进数据清洗(2天)
    • 尝试加入点云数据匹配算法(1天)
    • 尝试加入离散点去除算法(1天)
    • 基恩士出差,采集获取未焊接标准件、焊接错误PCB板、焊接准确PCD板、体积标准件的PCD数据(1天)
  2. 武汉机器深度学习环境配置(0.5天)
  3. 日常周会、需求会议(2天)
  • 宝钢项目(1天)
    • 提供训练yolov5算法的demo以及说明
  • 大师复活项目(1天)
    • 代码调试和导出视频修改
    • 调优视频输出效果
      工作量共计26天

九月总结

焊锡三维算法:

  • 对上个月拿到的新数据pcd文件进行读取操作
  • 三维体积计算
    • 正面点云体积
      • 尝试表面重建、插值算法构建完整曲面并调用API计算
      • 确定和实现累加计算体积方法
      • 实现PCD的point cloud和numpy数组互相转换的函数
      • 通过手动调参实现确定同一pcd文件的三个焊点位置的分割算法
      • 实现通过横纵坐标过滤分割点云数据算法
      • 实现通过纵坐标大小过滤分割点云数据算法
      • 通过半径式离群点剔除算法实现多余点云过滤
    • 侧面体积计算
      • 与正面体积类似算法
      • 实现通过焊锡最高点,获取PIN针的面的深度坐标的算法
  • 三维算法与后端通信实现(修改EPAI的TC模块代码)
  • 由于上个月的侧面数据不精准去基恩士出差拿数据
  • 南京工厂机器配置:网卡驱动、算法环境配置
  • 南京驻厂开发,详情见出差总结
    • PLC通信
      • 使用python的snap7包对PLC上的4400地址块进行读写操作获取信号
      • 通过Flask-Restful对读写方法进行封装,暴露相关接口让后台java获取信号以及发送信号
    • 相机通信
      • 针对官方的文档手册以及提供的C++动态链接库(DLL)进行开发获取数据
      • 二次开发使得代码和环境适配Linux系统

附录出差总结

9月南京EPAI出差总结

一、PLC交互模块

  1. 目的
    由于产线的PLC和后端的程序通信缺少IPC模块,因此需要在EPAI本服务器上实现和PLC通讯的功能,使得JAVA能收到PLC上的信号
  2. 方法
    1. 使用python的snap7包对PLC上的4400地址块进行读写操作获取信号
    2. 通过Flask-Restful对读写方法进行封装,暴露相关接口让后台java获取信号以及发送信号
  3. 完成工作
    实现读写接口(接口文档地址:https://easydoc.net/s/90617480/U43scdx0/BClUfSup

    • 搭建和封装flask-restful框架,约定和返回固定HTTP返回结构
    • 读取PLC心跳接口
    • 读取PLC清除位接口
    • 读取3D扫描完成位接口
    • 读取AI检测请求位接口
    • 读取确定收到AI结果位接口
    • 读取DMC接口
    • 写心跳接口
    • 写DMC接口
    • 发送PC结果的5个结果位接口
  4. 测试成果
    • 个人测试结果:所有接口的读写操作都无问题,且响应速度快且稳定
    • 联调结果(JAVA、PYTHON、PLC):
      • 手动在PLC面板上请求通信无问题,能正常请求和返回相应的请求位
      • 自动通信过程中,通讯也无问题
  5. 后续工作
    • 后端JAVA修复自动通信的可能BUG【产线合作方PLC代码有不完善的地方导致测试流程较少】
    • 后端JAVA的DMC码需要先读再写,已经暴露方法

二、基恩士相机适配程序

  1. 目的
    由于基恩士的Lj_X8000A相机缺少配套软件,扫描的数据在相机的内存中,需要对其进行二次开发,和相机通讯并且获取数据
  2. 方法
    1. 针对官方的文档手册以及提供的C++动态链接库(DLL)进行开发获取数据
    2. 二次开发使得代码和环境适配Linux系统
  3. 完成工作
    • Linux系统适配
      • 对官方的window环境的OBJ进行重新编译获取linuxd动态链接库SO文件
      • 根据官方文档,对所有的接口进行翻译,使得PYTHON能够调用SO文件里的接口
    • 相机数据获取
      • 相机数据获取的控制程序,使得能够在PLC对相机发送扫描信号时,能够获取数据
      • 请求数据程序
        • 通讯连接
        • 初始化高速通信
        • 高速通信预处理
        • 开始高速通信
        • 开始批处理
        • 结束高速通信
        • 高速通信结束配置
        • 结束通信
      • 根据文档对初始数据进行转换,分别获得高度数据以及亮度数据
      • 对上述转换好的数据转化位CSV保存
  4. 测试成果
    • 个人测试结果:
      • 相机通讯成功并且能获得CSV数据
      • 获取的数据只有部分,例如一张正面的数据包含三个部分,目前只拿到第一个部分
      • CSV解析时,发现高度数据和预想中不同
    • 联调结果(JAVA、PYTHON、PLC):
      • PLC发送给相机信号时,能够保存数据
  5. 后续工作
    • 修复只能拿到部分数据的BUG
    • 修复获取数据不正确的BUG

十月总结

三维点云项目

  • 基恩士相机程序
    • csv数据生成不正确BUG修复
    • 相机数据不完整漏洞查询和调研
    • 南京出差现场调试相机
      • 内存清空请求
      • 完整数据请求
    • 相机相关接口用flask以及多线程封装实现
      • 后端请求相机数据
      • 切换程序号
    • 相机保存数据修改为npy
  • PLC通信程序
    • PLC通讯新接口实现
      • 重构读写PLC接口
      • 新增相机相关接口
      • 新增PIN针形状、是否有焊珠接口
  • 体积算法
    • 侧面积计算坐标转换算法推导、微分矩形长宽转换系数推导
    • 交付体积计算方案PPT
    • 结合工件结构图和点云图计算推导旋转圆心坐标
    • 直线拟合方案调研和实现
  • 其他MQ相关的AI接口实现
  • 配置甲方机器可以对三维数据进行显示
  • 同步项目至云效
  • 更新和维护所有接口文档

20211028南京出差相机调试总结

  • 工作内容:
    • 通过多线程和队列管理实现相机完整数据的获取和保存
    • 解决Flask框架内内存溢出和套接字重复请求的BUG
  • BUG
    • 描述:程序号修改之后,第一次扫描之后的数据没有,再一次扫描之后正常
    • 解决方案:后端java先不修改程序号
  • 基恩士设置:0号程序是正面,1号是侧面程序
    • 目前都用1号程序号。原因是0号程序对正面扫描时,亮度数据较好,但是三维数据发生了很多数据缺失

十一月总结

南京锡焊PLC以及相机相关

  • 联调和Bug修复
    • 配置部署实验室PLC环境与工厂环境相同,并和后端进行联调修改
    • 在南京工厂辅助后端联合调试
    • 修复南京工厂生成npy文件时出现'\x00'导致程序崩溃的Bug
    • 修复因为相机无数据生成导致没有给后端MQ返回结果的Bug
    • 定位现场长时间节拍问题
      • 可能是相机切换程序号,没有断开连接,考虑在每一次程序号切换时,先断开连接
  • 需求和功能增加
    • 加入api版本功能,增加容错性和鲁棒性
    • 加入PLC的int类型读取,对相机程序号进行重新读取

南京锡焊算法

  • 对三维最终数据npy解析和计算
  • 南京现场工装调整,对体积计算结果进行调参
  • 标注软件调研和转换脚本书写
  • 加入自动定位功能算法,通过边确定高度粗定位,然后切面确定跳面从而得到pcd底面
  • 加入判断是否平行的算法
  • 加入做差校验平稳性算法
  • 加入csv、npy、pcd互相转换的功能函数

其他

  • 整合版本1代码,上传云效,并完善文档和代码注释

边缘平台实现和毕业设计

  • 调研模型轻量化的算法,分别调研知识蒸馏、模型量化、模型裁剪、推理框架
  • 完成开题报告
  • 完成综述ppt并演示
  • 阅读paddle Detection源码并学习相关API
  • 使用不同的loss函数,对yolo v5进行知识蒸馏

十二月总结

病假3.5天

三维点云项目

  • 校验工装稳定性、偏移性的代码
  • 给客户电脑配置环境、安装代码
  • 重构体积计算代码、书写文档
  • 加入自动算法,根据三个平面自动计算正面高度
  • 加入工装垂直度判断算法
  • 计算标准件体积,给出结果
  • 计算PIN针到面的距离
  • 自动算法加入mq,并联调
  • 配置多磁盘机器的深度学习、三维点云计算等环境,调研多磁盘环境的磁盘管理
  • 调查模拟心跳信号+PLC 加入是否变慢的原因
  • 为PLC程序加入日志
  • 下载使用cloudcompare观察滤波下,平面是否平滑,为算法准确性做校验

TC

  • 配合后端加入进度条功能

边缘平台调研和实验

  • 使用paddle 训练fcos
  • 使用paddle 转换onnx
  • 安装tensorrt环境,并转换
  • yolox 阅读和使用
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇