前一段时间, 一个养鱼的朋友咨询了我一个问题, 就是用手机拍几分钟长的鱼苗视频, 然后用电脑计算数目, 准确性要求 99%左右, 这个在技术上是否可行? 我主要是疑惑视频处理, 因为鱼有相互遮挡, 而且在游动, 识别并标记后该如何去重, 是否可以做到高准确率. 另外她对最终软件的价格也比较敏感, 最好不要超过 1W, 这个成本下, 使用机器学习是否在成本上可接受(包括研发)
1
noe132 2022-04-07 16:48:50 +08:00 1
不了解机器学习,但我觉得问题很简单,如果你用手机拍下来的视频,人通过慢放重复播放能数出来,那么相对来说用计算机也能比较容易实现。如果人都没法数,那计算机怎么知道要怎么数
|
2
zuiluo 2022-04-07 16:53:23 +08:00
清晰度足够的话,技术是可行的。对比视频数鱼,可能用图片数鱼简单的多,
因为视频可能存在的技术难点,数到 X 条鱼,视频镜头转向别处,过了一会儿,又把镜头转回来。鱼的姿态已经发生了改变+镜头角度视角可能改变,这个时候怎么标记这条鱼已经被数过了 |
3
Puteulanus 2022-04-07 16:54:01 +08:00 1
去重可以参考下这个连续帧计算车辆数的
https://stackoverflow.com/questions/36254452/counting-cars-opencv-python-issue 连续帧追踪移动目标好像是有不少成熟技术的 https://python.iitter.com/other/273189.html |
4
kop1989smurf 2022-04-07 16:54:32 +08:00
机器学习数鱼苗,可以。
准确性要求 99%,不能拍鱼塘全景,视频内容不清晰,不行。 |
5
westoy 2022-04-07 17:04:49 +08:00 1
摄像头方案明显不可行啊
鱼又不是 2D 穿梭的, 而且小鱼那速度, 你不想拍出一堆动态模糊还得用工业高帧率相机, 还得多机位, 还得改造水下布光 我记得大致评估鱼群数量不都基于声纳的么.... 感觉加几个 0 都不一定能做出来 80%~90%可用的方案 |
6
sadfQED2 2022-04-07 17:04:52 +08:00 via Android
理论上,如果水足够透明,每条鱼都能清晰看到,或许可行
我想到的思路, 1.使用 yolo 网络给每条鱼进行定位 2.计算每条鱼的特征值,用来去重(思路类似人脸识别) 但是 1 万块钱的预算是绝对不够的,1 万块钱别说开发了,你请人做数据标注都不够。另外,99%这个精度也挺难的,真要做到这个级别的精度估计得 500 万起步吧 |
7
GeruzoniAnsasu 2022-04-07 17:05:43 +08:00 6
?
高中没听说过标记重捕法? 投放 100 只假鱼,让其均匀分散,然后重新捕捞采样计数假鱼和真鱼的数量,假设捞回来 2 假 30 真,那么鱼池中约有 30 *(100/2) 条鱼 这种问题为啥要机器学习 |
8
thinkershare OP @kop1989smurf 你可能没有养过鱼. 养鱼的每年都需要购买鱼苗, 鱼苗用杯子人一尾一尾的数, 然后放到一个更大的鱼盆里面, 在然后放进鱼塘. 这个过程中, 清晰度, 全景都不是特别大的问题. 核心在准确率, 如果准确度太低 90%一下, 就完全失去了实用价值.
|
9
thinkershare OP @GeruzoniAnsasu 实际养鱼的反正没人这么用, 具体原因我也不大清楚!
|
10
GeruzoniAnsasu 2022-04-07 17:09:58 +08:00
为啥我直接跳过了「能不能机器学习」这个过程
—— 因为不知道大家见没见过鱼苗,都只有拇指那么大点,一池子就是一坨黑糊糊的玩意,然后还有水流光照环境影响,根本就不是拍张照片能数清的,视频游动的就更不显示了,除非你说的是那种一缸子只有三五只的红色锦鲤,对比度大数量少。那还有希望用视觉算法「玩一下」 鱼苗? …… |
11
thinkershare OP @GeruzoniAnsasu 买鱼苗不是这个流程
|
12
sadfQED2 2022-04-07 17:14:03 +08:00 via Android
@thinkershare 你说的清晰和我们说的清晰不是一个概念,如果要基于鱼的图片做去重,至少要保证鱼的纹理能足够清晰,单纯拿手机摄影我觉得肯定清晰度不够。而且你手机拍摄过程中还可能晃动等各种问题,总的来说,我觉得无论多少钱这个思路都绝对不可行
|
13
GeruzoniAnsasu 2022-04-07 17:15:15 +08:00
|
14
thinkershare OP @GeruzoniAnsasu 不是的, 我看过她拍的那个视频, 那个鱼苗其实用机器识别肯定是可以识别的(2 厘米左右长), 一个 1.5m 直径的盆里面大概 1,200 尾, 因为我搞过自动驾驶的点云识别,主要是去重和成本是否可行! 他们这个行业很多都是用人数的, 因此成本可以在后期复用摊薄研发成本.
|
15
popok 2022-04-07 17:37:04 +08:00 1
|
16
popok 2022-04-07 17:40:47 +08:00
|
17
Laurenfrost 2022-04-07 17:41:51 +08:00
让大家光凭想象讨论可行性,得到的也未必会是你想要的结果,不如你先放个图片或者视频作为例子,这样更直观一些。
|
18
gamexg 2022-04-07 17:48:50 +08:00
|
19
thinkershare OP |
21
popok 2022-04-07 17:55:58 +08:00
@thinkershare #19 https://github.com/avBuffer/AI_AquaticIndustry
github 上这个老哥就是做这种项目得,让他自己找他把。 或者市场上还有那种成品机器。1W 预算应该也够了把。 |
22
ttgo 2022-04-07 18:01:15 +08:00
我一个同学,大学老师,就与公司合作搞过这个,当时还有媒体报道过。
|
23
rming 2022-04-07 18:22:36 +08:00
可以做,不过 1w 好像少了点
|
24
kekxv 2022-04-07 18:38:27 +08:00 via iPhone
要不你量水吧
|
25
dengshen 2022-04-07 18:47:17 +08:00 via iPhone
从大盆到小盆中间搭一个通道。摄像机记录通过通道的鱼苗++就行。有一定的角度防止鱼回流
|
26
icegaze 2022-04-07 19:24:28 +08:00 via Android 3
楼主,
你思路不对… 工程上数鱼的尾数是这样的做的: 用一个细玻璃管, 内径大于一个鱼而小于两个鱼并列… 将鱼放置于上面水池, 玻璃管连接到下面水池, 开水泵从下到上,循环走水 驱动水流从上池向下池流, 裹挟着鱼通过玻璃管, 用光电计数器即可数清楚, 一千多尾鱼一个小时就搞定了。 |
27
czqzero 2022-04-07 19:39:54 +08:00
应该是可行的, 之前看过细胞计数(显微镜拍照, 机器学习识别)的 case ,但准确率能否达到这么高就不太清楚了。
|
28
cshlxm 2022-04-07 23:22:37 +08:00
通过类似过道的形式,可以盘点数量,准确率高低取决于密集度,无遮挡,慢速 100%准确率是可以做到的,成本纯说硬件,一个手机就能实现,软件研发成本就高了,熟练的调参工程师有充足样本的话,1 个月是能搞定的。我们在做类似产品 ,不是数鱼苗,而是猪牛羊
|
29
thinkershare OP @czqzero 感觉目标太小的话只能提高照片的分辨率, 否则识别精度应该会很差!
|
30
shm7 2022-05-20 23:57:39 +08:00 1
@popok 公司以前做过这个,准确率还不错。鱼苗个数太多,个头太小不一定好做。而且要在水面光照比较理想的环境下处理才好。也许可以用 cv2 的一些形状匹配规则来做。
|
31
thinkershare OP @shm7 我给朋友找了一个成熟的供应商, 我自己不折腾, 没有那个精力. 我感觉要做到商用精度也不是一个人短时间可以搞出来的.
|