×

水族馆饲养区追踪器开源分享

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-07-13

分享资料个

描述

这个项目是用很少的代码完成的,Roboflow 提供了大量的资源来完成工作。根据您的用例调整多边形尺寸。

 

import numpy as np
import supervision as sv

# initiate polygon zone
polygon = np.array([
    [1000, 1000],
    [1000, 1000],
    [1000, 1000],
    [1000, 1000]
])
video_info = sv.VideoInfo.from_video_path(VIDEO_PATH)
zone = sv.PolygonZone(polygon=polygon, frame_resolution_wh=video_info.resolution_wh)

# initiate annotators
box_annotator = sv.BoxAnnotator(thickness=4, text_thickness=4, text_scale=2)
zone_annotator = sv.PolygonZoneAnnotator(zone=zone, color=sv.Color.white(), thickness=6, text_thickness=6, text_scale=4)

def process_frame(frame: np.ndarray, _) -> np.ndarray:
    # detect
    results = model(frame, imgsz=1280)[0]
    detections = sv.Detections.from_yolov8(results)
    #detections = detections[detections.class_id == 0]
    zone.trigger(detections)

    # annotate
    box_annotator = sv.BoxAnnotator(thickness=4, text_thickness=4, text_scale=2)
    labels = [f"{model.names[class_id]} {confidence:0.2f}" for _, confidence, class_id, _ in detections]
    frame = box_annotator.annotate(scene=frame, detections=detections, labels=labels)
    frame = zone_annotator.annotate(scene=frame)

    return frame

sv.process_video(source_path=VIDEO_PATH, target_path=f"{HOME}/result.mp4", callback=process_frame)

from IPython import display
display.clear_output()

 

您可以使用 Roboflow Universe 亲自试用经过训练的模型:

 

https://universe.roboflow.com/dee-dee-b9kev/aquarium-shrimp-detection-caridina_neocaridina

 

可通过 github 获得经过训练的 yolov8 模型的 Github 存储库:

 

https://github.com/dfunkapostal/Aquarium-Shrimp-Detection/tree/main

 

该模型可以使用tensorflow.js或 onnxruntime通过 web 部署,具有以下https://github.com/Hyuto存储库。

 

https://github.com/Hyuto/yolov8-seg-tfjs
https://github.com/Hyuto/yolov8-seg-onnxruntime-web

 

摄像头可以调整为前置摄像头调整网络摄像头设置 facingMode 为“用户”

 

https://github.com/Hyuto/yolov8-seg-tfjs/blob/master/src/utils/webcam.js
open = (videoRef) => {
    if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
      navigator.mediaDevices
        .getUserMedia({
          audio: false,
          video: {
            facingMode: "environment",

 

您的模型应上传到公共文件夹中:

https://github.com/Hyuto/yolov8-seg-tfjs/tree/master/public

model.json应替换为保存的 web 文件夹(tensorflow.js 输出文件夹)中的 .json 文件

https://github.com/Hyuto/yolov8-seg-tfjs/blob/master/src/App.jsx
useEffect(() => {
    tf.ready().then(async () => {
      const yolov8 = await tf.loadGraphModel(
        `${window.location.href}/${modelName}_web_model/model.json`,

labels.json应该更新为项目中存在的类。

src/utils/labels.json

项目详情

Caridina 和 Neocaridina 虾检测项目旨在开发和改进用于检测和区分不同虾品种的计算机视觉算法。该项目以观赏鱼饲养爱好者以及计算机视觉如何有益于改善矮小虾的护理为中心。在这种特殊情况下,区域计数器/跟踪器的实现。

Caridina 和 neo-caridina 虾是两个不同的物种,需要不同的水参数才能达到最佳健康状态。Neocaridina 虾通常比 caridina 物种更耐寒且更容易饲养,而 caridina 虾以其引人注目的独特图案而闻名。两个物种的身体结构相似(从主题面具可以看出)。

pYYBAGSBLISALqQKAAAd6YpLCgQ297.jpg

Neo-Caridina 面膜

各类类型说明

该项目的数据集包括十三种不同的类类型。已将 neo-caridina 物种组合在一起以测试该模型是否可以区分 caridina 和 neo-caridina 虾。其余类别都是不同类型的 caridina 虾。

RGalaxyPinto 和 BGalaxyPinto 的图案非常相似,主要区别在于它们的颜色:一个是酒红色,另一个是深蓝黑色。这两个品种的头部区域都有明显的斑点,背部有条纹,非常适合测试模型区分颜色的能力。

CRS-CBS水晶红虾和水晶黑虾的花纹与熊猫蜜蜂虾相似,但色泽不同。熊猫虾的颜色往往比 CRS-CBS 虾更深、更丰富,CRS-CBS 的白色环更厚。

另一方面,熊猫蜜蜂品种以其类似熊猫的白色和黑色/红色环纹而闻名。色环往往比水晶红/黑虾更厚、更明显。

在 Caridina 物种中,有各种老虎品种。其中包括 Fancy Tiger、Raccoon Tiger、Tangerine Tiger、Orange Eyed Tiger(金色和全身)。所有这些人的身体两侧都有条纹。花式虎虾的颜色与 CRS 相似,但带有虎纹图案。

Raccoon Tiger 和 Orange Eyed Tiger Blonde 看起来非常相似,但是 Raccoon Tiger 的身体显得更大,而 Orange Eyed Tiger 以其橙色的眼睛而闻名。Tangerine Tigers 的条纹图案各不相同,经常会与某些 neo-caridina,特别是黄色或橙色品种混淆。

其余的是最受欢迎的繁殖品种和独特的颜色图案,即蓝蝠、暗影摩苏拉、白蜂/金蜂和金刚蜂。

 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !