栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++笔记之解读手写AI

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++笔记之解读手写AI

我先散乱进行记录,等后续我再整理

(1)关于object_detector.hpp

#ifndef OBJECT_DETECTOR_HPP
#define OBJECT_DETECTOR_HPP

#include 

namespace ObjectDetector{

    struct Box{
        float left, top, right, bottom, confidence;
        int class_label;

        Box() = default;

        Box(float left, float top, float right, float bottom, float confidence, int class_label)
        :left(left), top(top), right(right), bottom(bottom), confidence(confidence), class_label(class_label){}
    };

    typedef std::vector BoxArray;
};


#endif // OBJECT_DETECTOR_HPP

代码解析:

typedef std::vector BoxArray;

这里typedef将std::vector重新定义命名为BoxArray。因为很久没看c++了。所以我猛地一看

认为是实例化了一个Box类型的vector对象(这个容器的每个元素成员都是一个Box结构体类型的对象)

但是看了前面居然有typedef,那就表明这里不是实例化一个vector对象了(这个对象的类型是Box类型)。

(2)关于yolo代码中一直存在的Yolo::BoxArray

这个我一直很疑惑Yolo名字空间里面根本就没有BoxArray成员啊:

最后才发现,在名字空间namespace Yolo中 使用了

using namespace ObjectDetector;

这个作用就是表示:将名称空间ObjectDetector中的所有成员引入到当前作用域中(当前作用域是namespace Yolo,即Yolo)。这样就相当于ObjectDetector中的所有成员就是名字空间Yolo中的成员。所以Yolo::BoxArray就自然合理了。

(2)接下来我们跟随app_yolo.cpp文件探究过程

1)进入Yolo::create_infer

然后进入yolo.cpp

 那么我们分析解读一下create_infer函数:

shared_ptr create_infer(const string& engine_file, Type type, int gpuid, float confidence_threshold, float nms_threshold)
{
        shared_ptr instance(new InferImpl());
        if(!instance->startup(engine_file, type, gpuid, confidence_threshold, nms_threshold))
        {
            instance.reset();
        }
        return instance;
    }

首先是:

shared_ptr instance(new InferImpl());

定义了一个智能指针对象instance, 且instance类型为InferImpl。

并且使用了new InferImpl()的返回结果对该对象instance进行了初始化。

注意:new InferImpl()可以简单认为返回结果是一个地址(或者说是一个指针,注意哦指针是地址,指针变量不是指针,准确地说指针变量存储着指针(或叫地址))。

那么我们就去看下InferImpl类:

我们可以看到 InferImpl类的定义也是在yolo.cpp文件里面。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352540.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号