rospy tf api_新的tf2对象检测api_weixin_26704853的博客-程序员宅基地

技术标签: python  java  

rospy tf api

ML提示与技巧/ TF2 OD API (ML Tips&Tricks / TF2 OD API)

Tensorflow Object Detection API (TF OD API) just got even better. Recently, Google released the new version of TF OD API which now supports Tensorflow 2.x. This is a huge improvement that we’ve all been waiting for!

Tensorflow对象检测API(TF OD API)变得更好。 最近,Google发布了TF OD API的新版本,该版本现在支持Tensorflow2.x。 这是我们所有人都在等待的巨大进步!

介绍 (Intro)

Recent improvements in object detection (OD) are driven by the widespread adoption of the technology by industry. Car manufacturers use object detection to help vehicles navigate the roads autonomously, doctors use it to improve their diagnosis process, farmers use it to detect various crop diseases… and there are many other use-cases (yet to be discovered) where OD could provide enormous value.

物体检测(OD)的最新改进是由工业广泛采用该技术所推动的。 汽车制造商使用对象检测来帮助车辆导航的道路自主,医生用它来提高自己的诊断过程中,农民用它来检测各种作物病害...... 还有许多其他的用例(尚未被发现)其中OD可以提供巨大值。

Tensorflow is a deep learning framework that powers many of the state-of-the-art (SOTA) models in natural language processing (NLP), speech synthesis, semantic segmentation, and object detection. TF OD API is an open-sourced collection of object detection models which is used by both the deep learning enthusiasts, and by different experts in the field.

Tensorflow是一个深度学习框架,可为自然语言处理(NLP),语音合成,语义分段和对象检测中的许多最先进(SOTA)模型提供支持。 TF OD API是对象检测模型的开源集合,供深度学习爱好者和该领域的不同专家使用。

Now when we’ve covered the basic terminology, let’s see what the new TF OD API offers!

现在,当我们介绍了基本术语后, 让我们看看新的TF OD API提供了什么!

新的TF OD API (New TF OD API)

New TF2 OD API introduces eager execution that makes debugging of the object detection models much easier; it also includes new SOTA models that are supported in the TF2 Model Zoo. Good news for Tensorflow 1.x. users is that the new OD API is backward compatible, so you can still use TF1 if you like, although switching to TF2 is highly recommended!

新的TF2 OD API引入了渴望执行的功能 ,这使对象检测模型的调试更加容易。 它还包括TF2 Model Zoo支持的新SOTA模型 。 Tensorflow 1.x的好消息。 用户认为新的OD API是向后兼容的,因此尽管强烈建议您切换到TF2,但仍然可以使用TF1!

In addition to the SSD (MobileNet/ResNet), Faster R-CNN (ResNet/Inception ResNet), and Mask R-CNN models that were previously available in TF1 Model Zoo, TF2 Model Zoo introduces new SOTA models such as CenterNet, ExtremeNet, and EfficientDet.

除了SSD(MobileNet / RESNET),更快R-CNN(RESNET /启RESNET),和屏蔽了以前在TF1模型动物园R-CNN模型,TF2模型动物园引入了新的SOTA机型如 CenterNet ExtremeNet ,和 EfficientDet

Models in the TF2 OD API Model Zoo are pre-trained on the COCO 2017 dataset. The pre-trained models can be useful for out-of-the-box inference if you are interested in categories already included in this dataset, or for initializing your models when training on novel datasets. Using TF OD API models instead of implementing the SOTA models on your own gives you more time to focus on the data, which is another crucial factor in achieving high performance of OD models. However, even if you decide to build the models yourself, TF OD API models present a good performance benchmark!

TF2 OD API模型动物园中的模型已在COCO 2017数据集中进行了预训练。 如果您对此数据集中已经包含的类别感兴趣,或者在使用新颖的数据集进行训练时初始化模型,则预训练的模型对于即用型推理非常有用。 使用TF OD API模型而不是自己实现SOTA模型可让您有更多时间专注于数据,这是实现OD模型高性能的另一个关键因素。 但是,即使您决定自己构建模型, TF OD API模型也会提供良好的性能基准

You can choose from a long list of different models depending on your requirements (speed vs. accuracy):

您可以根据需要从一长串不同型号中进行选择(速度与准确性):

In the previous table, you can see that only the mean COCO mAP metric is given in the table. Although it can be a fairly good orientation for the performance of the model, additional statistics can be useful if you’re interested in how the model performs on objects of different sizes or different types of objects. For instance, if you’re interested in developing your advanced driver-assistance systems (ADAS), you don’t really care if detectors’ ability to detect bananas is bad!

在上表中,您可以看到在表中仅给出了平均COCO mAP度量 。 尽管对于模型的性能来说这可能是一个很好的方向,但是如果您对模型如何在不同大小或不同类型的对象上执行感兴趣,则可以使用其他统计信息 。 例如,如果您对开发高级驾驶员辅助系统 ( ADAS )感兴趣,那么您实际上并不关心检测器检测香蕉的能力是否很差!

In this blog, we’ll focus on explaining how to perform a detailed evaluation of different pre-trained EfficientDet checkpoints that are readily available in the TF2 Model Zoo.

在此博客中,我们将重点介绍如何对TF2 Model Zoo中容易获得 的不同的经过预先训练的 EfficientDet 检查点进行详细评估

EfficientDets — SOTA OD模型 (EfficientDets — SOTA OD models)

EfficientDet is a single-shot detector fairly similar to the RetinaNet model with several improvements: EfficientNet backbone, weighted bi-directional feature pyramid network (BiFPN), and compound scaling method.

EfficientDet是与RetinaNet模型非常相似的单发检测器,但具有以下改进: EfficientNet主干网 ,加权双向特征金字塔网络(BiFPN)和复合缩放方法

BiFPN is an improved version of the very popular FPN. It learns the weights that represent the importance of different input features, while repeatedly applying top-down and bottom-up multi-scale feature fusion.

BiFPN是非常流行的FPN的改进版本 。 它学习表示不同输入要素重要性的权重,同时反复应用自上而下和自下而上的多尺度特征融合。

Image for post
Feature network design: a) FPN introduces a top-down pathway to fuse multi-scale features, b) BiFPN adds a bottom-up pathway to the existing top-down path to create a bi-directional FPN. Source: https://arxiv.org/pdf/1911.09070.pdf
特征网络设计 :a)FPN引入了自上而下的路径以融合多尺度特征,b)BiFPN在现有的自上而下的路径上添加了自下而上的路径以创建双向FPN。 资料来源: https : //arxiv.org/pdf/1911.09070.pdf

The usual approach for improving the accuracy of the object detection models is to either increase the input image size or to use a bigger backbone network. Instead of operating on a single dimension or limited scaling dimensions, compound scaling jointly scales up the resolution/depth/width for backbone, feature network, and box/class prediction network.

提高对象检测模型准确性的常用方法是增加输入图像的大小或使用更大的骨干网络。 代替在单一维度或有限的缩放维度上进行操作, 复合缩放共同为骨干网,特征网络和框/类预测网络扩大了分辨率/深度/宽度。

EfficientDet models with different scaling factors are included in the TF2 OD API Model Zoo, and the scaling factor is denoted by the { X} in the name of the model, while the input image resolution is denoted by {RES}x{ RES} EfficientDet D{ X} { RES}x{ RES}.

TF2 OD API模型库中包含具有不同缩放因子的EfficientDet模型,缩放因子由模型名称中的{ X}表示,而输入图像分辨率由{RES} x { RES}表示。 D { X} { RES} x { RES}

Image for post
Compound scaling configs for EfficientDet. Source: https://arxiv.org/pdf/1911.09070.pdf
EfficientDet的 复合缩放配置 。 资料来源: https : //arxiv.org/pdf/1911.09070.pdf
Image for post
EfficientDet architecture employs EfficientNet as the backbone network, BiFPN as the feature network, and a shared class/box prediction network. Source: https://arxiv.org/pdf/1911.09070.pdf
EfficientDet体系结构使用EfficientNet作为骨干网,使用BiFPN作为特征网络,以及共享的类/盒预测网络。 资料来源: https : //arxiv.org/pdf/1911.09070.pdf

预训练的EfficientDet模型的评估 (Evaluation of pre-trained EfficientDet models)

We want to perform detailed accuracy comparisons to study the influence of the compound scaling configs on the performance of the network itself. For that reason, we’ve created a Google Colab notebook in which we explain how to perform the evaluation of the models and how to efficiently compare the evaluation results. We’re interested in detailed evaluation statistics including per class and different object size stats.

我们希望进行详细的精度比较,以研究复合缩放配置对网络本身性能的影响。 因此,我们创建了一个Google Colab笔记本 ,其中解释了如何执行模型评估以及如何有效地比较评估结果。 我们对详细的评估统计数据感兴趣, 包括每个类和不同的对象大小统计信息

Unfortunately, TF OD API doesn’t support such stats out of the box. That’s why we created a fork of the TF OD repo and updated the relevant scripts to introduce this functionality following the instructions given in this issue.

不幸的是,TF OD API不支持此类统计信息。 因此,我们创建了TF OD回购的分支,并按照本期给出的说明更新了相关脚本以引入此功能。

In the notebook, we provide instructions on how to setup Tensorflow 2 and the TF2 OD API. We also include scripts that make it easy to download the EfficientDet checkpoints, as well as additional scripts that help you to get the COCO 2017 Val dataset and create tfrecord files that are consumed by the TF OD API in the evaluation phase.

在笔记本中,我们提供有关如何设置 Tensorflow 2 TF2 OD API的说明 。 我们还包括可轻松下载EfficientDet检查点的 脚本,以及可帮助您获取COCO 2017 Val数据集并创建 TF OD API在评估阶段使用的tfrecord文件的其他脚本

Finally, we modify the pipeline.config files for the EfficientDet checkpoints to prepare everything for sequential evaluation of the 8 EfficientDet checkpoints. TF OD API uses them to configure the training and evaluation process. The schema for the training pipeline can be found in object_detection/protos/pipeline.proto. At a high level, the config file is split into 5 parts:

最后,我们修改EfficientDet检查点的pipeline.config文件,以准备对8个EfficientDet检查点进行顺序评估的所有内容。 TF OD API使用它们来配置培训和评估过程。 培训管道的模式可以在object_detection/protos/pipeline.proto 。 概括而言,配置文件分为5部分:

  1. The model configuration. This defines what type of model will be trained (i.e., meta-architecture, feature extractor…).

    model配置。 这定义了将训练哪种类型的模型(即,元架构,特征提取器……)。

  2. The train_config, which decides what parameters should be used to train model parameters (i.e., SGD parameters, input preprocessing, and feature extractor initialization values…).

    train_config ,它决定应该使用哪些参数来训练模型参数(即SGD参数,输入预处理和特征提取器初始化值…)。

  3. The eval_config, which determines what set of metrics will be reported for evaluation.

    eval_config ,它确定将报告哪些度量标准集以进行评估。

  4. The train_input_config, which defines what dataset the model should be trained on.

    train_input_config ,它定义了应该对模型进行训练的数据集。

  5. The eval_input_config, which defines what dataset the model will be evaluated on. Typically this should be different than the training input dataset.

    eval_input_config ,它定义对模型进行评估的数据集 。 通常,这应该与训练输入数据集不同。

model {
        
(... Add model config here...)
}train_config : {
(... Add train_config here...)
}train_input_reader: {
(... Add train_input configuration here...)
}eval_config: {
}eval_input_reader: {
(... Add eval_input configuration here...)
}

We’re only interested in the eval_config and eval_input_config parts of the config file. Take a closer look at this cell in the Google Colab for more details on how we set up the eval parameters. Two additional flags that are not enabled out of the box in the TF OD API are include_metrics_per_category and all_metrics_per_category. After applying the patch given in the Colab notebook, when set to truethese two enable detailed statistics (per category and size) that we’re interested in!

我们只对配置文件的eval_configeval_input_config部分感兴趣。 请仔细查看Google Colab中的此单元格 ,以获取有关如何设置eval参数的更多详细信息。 TF OD API中没有立即启用的两个其他标志是include_metrics_per_categoryall_metrics_per_category 。 应用Colab笔记本中给出的补丁后,将其设置为true这两个将启用我们感兴趣的详细统计信息(按类别和大小)

Allegro火车-高效的实验管理 (Allegro Trains — efficient experiment management)

To be able to efficiently compare the model evaluations, we use an open-sourced experiment management tool called Allegro Trains. It’s very easy to integrate it into your code and it enables a load of different functionality out of the box. It can be used as an alternative to Tensorboard for visualizing experiment results.

为了能够有效地比较模型评估,我们使用了称为 Allegro Trains 的开源实验管理工具 将其集成到您的代码中非常容易,并且可以立即加载各种功能。 它可以用作Tensorboard的替代方案,以可视化实验结果。

Image for post
Source: https://allegro.ai/wp-content/uploads/2019/11/allegro-logo-1.jpg
来源: https : //allegro.ai/wp-content/uploads/2019/11/allegro-logo-1.jpg

Main script in the OD API is object_detection/model_main_tf2.py. It handles both the training and the eval stage. We created a small script that calls model_main_tf2.py in a loop to evaluate all EfficientDet checkpoints.

OD API中的主要脚本是object_detection/model_main_tf2.py 。 它同时处理培训和评估阶段。 我们创建了一个小脚本 ,该脚本在循环中调用model_main_tf2.py来评估所有EfficientDet检查点。

To integrate Allegro Trains experiment management into the evaluation script, we had to add 2 (+1) lines of code. In the model_main_tf2.py script we've added these lines:

要将Allegro Trains实验管理集成到评估脚本中,我们必须添加2(+1)行代码。 在model_main_tf2.py脚本中,我们添加了以下model_main_tf2.py行:

from trains import Tasktask = Task.init(project_name="NAME_OF_THE_PROJECT", task_name="NAME_OF_THE_TASK")# OPTIONAL - logs the pipeline.config into the Trains dashboard
task.connect_configuration(FLAGS.pipeline_config_path)

and Trains automatically starts to log numerous things for you. You can find a comprehensive list of features here.

火车会自动开始为您记录许多事情。 您可以在此处找到完整的功能列表。

比较不同的EfficientDet模型 (Comparing different EfficientDet models)

On this link, you can find the results of the evaluation of 8 EfficientDet models included in the TF2 OD API. We’ve named the experiments as efficientdet_d{X}_coco17_tpu-32 where {x} denotes the compound scaling factor for the EfficientDet model. You’ll get the same results if you run the sample Colab notebook, and your experiments will show up on the demo Trains server.

在此 链接上 ,您可以找到TF2 OD API中包含的8个EfficientDet模型的评估结果 。 我们将实验命名为efficientdet_d{X}_coco17_tpu-32 ,其中{x}表示EfficientDet模型的复合比例因子。 如果运行示例Colab笔记本,您将获得相同的结果,并且实验将显示在演示Trains服务器上

In this section, we’ll show you how to efficiently compare different models and verify their performance on the evaluation dataset. We’re using COCO 2017 Val dataset since it’s a standard dataset for the evaluation of object detection models in the TF OD API.

在本节中,我们将向您展示如何有效地比较不同的模型并在评估数据集上验证其性能。 我们使用COCO 2017 Val数据集,因为它是用于评估TF OD API中对象检测模型的标准数据集。

Image for post
Trains automatically captures code, hyperparameters, and metrics (image by author).
Trains自动捕获代码,超参数和度量(按作者提供的图像)。

We’re interested in the COCO Object Detection model evaluation metrics. Press here to see experiments’ results. This page contains graphs with all the metrics that we’re interested in.

我们对 COCO对象检测模型评估指标 感兴趣 点击此处查看实验结果。 此页面包含具有我们感兴趣的所有指标的图形。

We can first take a look at the DetectionBoxes_Precision plot which contains the average precision metric for all the categories in the dataset. The value of the mAP metric corresponds to the mAP metric reported in the table in the TF2 Model Zoo.

我们首先可以看一下DetectionBoxes_Precision图,其中包含数据集中所有类别平均精度度量 。 mAP度量的值对应于TF2 Model Zoo中的表中报告的mAP度量。

Image for post
DetectionBoxes_Precision metrics for all the categories in COCO 2017 Evaluation dataset (image by author).
COCO 2017评估数据集中所有类别的DetectionBoxes_Precision指标(作者提供的图像)。

Thanks to the patch we applied to the pycocotools, we can also get the per-category mAP metrics. Since there are 90 categories in the COCO dataset, we want to know the contribution of each category to the mean accuracy. This way we get more granular insight into the performance of the evaluated model. For example, you might be interested in how the model performs only for small objects in a certain category. From the aggregated statistics, it’s impossible to get such insights, while the proposed patch enables this!

多亏了我们应用于pycocotools的补丁程序,我们还可以获得每个类别的mAP指标 。 由于COCO数据集中有90个类别,因此我们想知道每个类别对平均准确度的贡献。 这样,我们可以更深入地了解评估模型的性能。 例如,您可能对模型仅对特定类别中的小对象的性能感兴趣。 从汇总的统计信息中,不可能获得这样的见解,而建议的补丁程序可以做到这一点!

Image for post
Per category mAP metrics for EfficientDet D0 model (image by author).
EfficientDet D0模型的按类别的mAP指标(作者提供的图像)。

We also use Allegro Trains’s capability to compare multiple experiments. The experiment comparison shows all the differences between the models. We can first get a detailed scalar and plot comparison of the relevant stats. In our example, we’ll compare the performance of EfficientDet D0, D1, and D2 models. Obviously, compound scaling positively influences the performance of the models.

我们还利用Allegro Trains的功能来比较多个实验。 实验比较显示了模型之间的所有差异。 我们首先可以获取有关统计数据的详细标量和绘图比较。 在我们的示例中,我们将比较EfficientDet D0,D1和D2模型的性能。 显然,复合缩放对模型的性能有积极影响。

One of the additional benefits of having per category stats is that you can analyze the influence of compound scaling factors on the accuracy of a certain class of interest. For example, if you’re interested in detecting buses in a surveillance video, you can analyze the graph that shows mAP performance for the bus category vs. compound scaling factor of the EfficientDet model. This helps decide which model to use, and where the sweet spot is between performance and computational complexity!

拥有每个类别统计信息的另一个好处是,您可以分析复合比例因子对某个特定类别的准确性的影响。 例如,如果您有兴趣检测监视视频中的总线,则可以分析该图,该图显示了总线类别的mAP性能与EfficientDet模型的复合比例因子。 这有助于确定使用哪种模型,以及性能和计算复杂性之间最佳结合点!

Image for post
category (image by author). 类别(作者提供的图片)。

One of the interesting things that you can also compare is the model configuration file pipeline.config. You can see that the basic difference between the EfficientDet models is in the dimensions of the input image and the number/depth of filters, as discussed earlier.

您还可以比较的有趣的事情之一是模型配置文件 pipeline.config. 您可以看到,EfficientDet模型之间的基本区别在于输入图像的尺寸和滤镜的数量/深度,如前所述。

Image for post
(image by author)
(作者提供的图片)

The next plot contains the mAP values for 3 EfficientDet models. There is an obvious benefit in increasing the input image resolution, as well as increasing the number of filters in the model. While the D0 model achieves 33.55% mAP, the D2 model outperforms it and it achieves 41.79% mAP. You can also try out to perform per-class comparisons, comparison of other EfficientDet models, or whatever you find interesting for your application.

下一个图包含3个EfficientDet模型的mAP值。 增加输入图像分辨率以及增加模型中的滤波器数量明显的好处 。 D0模型达到了33.55%的mAP,而D2模型则胜过了它,达到了41.79%的mAP。 您还可以尝试执行每个类的比较,其他EfficientDet模型的比较,或者对应用程序感兴趣的任何事情。

Image for post
mAP comparison for EfficientDet D0, D1, and D2 models (image by author).
EfficientDet D0,D1和D2模型的mAP比较(作者提供的图像)。

TF OD API如何用于提高施工现场安全性? (How is TF OD API used to improve construction site safety?)

Forsight is an early-stage startup and our mission is to turn construction sites into safe environments for workers. Forsight uses computer vision and machine learning, processing real-time CCTV footage, to help safety engineers monitor the proper use of personal protection equipment (PPE) to keep sites safe and secure.

Forsight是一家早期创业公司,我们的使命是将建筑工地转变为工人的安全环境。 Forsight使用计算机视觉和机器学习,处理实时CCTV录像,以帮助安全工程师监控个人保护设备(PPE)的正确使用,以确保场地安全。

Our construction site monitoring pipeline is built on top of the TF OD API and features include PPE detection and monitoring, social distance tracking, virtual geofence monitoring, no-park zone monitoring, and fire detection. At Forsight, we also use Trains to keep track of our experiments, share them between team members, and log everything so we can reproduce it.

我们的施工现场监控管道建立在TF OD API之上,其功能包括PPE检测和监控,社交距离跟踪,虚拟地理围栏监控,无停车场区域监控和火灾探测 。 在Forsight,我们还使用Trains跟踪我们的实验,在团队成员之间共享它们,并记录所有内容,以便我们进行复制。

Image for post
(image by author)
(作者提供的图片)

As the COVID-19 pandemic continues, construction projects around the world are actively looking for ways to restart or keep projects going while keeping workers safe. Computer vision and machine learning can help construction managers ensure that their construction sites are safe. We built a real-time monitoring pipeline that tracks social distancing adherence between workers.

随着COVID-19大流行的继续,世界各地的建筑项目都在积极寻找重启或保持项目安全的方法。 计算机视觉和机器学习可以帮助建筑经理确保其建筑工地安全。 我们建立了一个实时监控管道,该管道可以跟踪工人之间的社会隔离度。

Image for post
Social distancing monitoring using TF OD API (image by author).
使用TF OD API进行社交疏散监控(作者提供图片)。

In addition to the new, invisible threat of COVID there are some age-old dangers that all construction workers face each day, notably, the ‘Fatal Four’: falls, struck by objects, caught in or between and electrocution hazards. Ensuring that workers wear their PPE is crucial for the overall safety of a construction site. TF OD API is a great starting point towards building an autonomous PPE monitoring pipeline. Our next blog will touch on how to train a basic helmet detector using the new TF OD API.

除了新的,看不见的COVID威胁外,所有建筑工人每天还面临着一些古老的危险,尤其是“致命四大危险”:跌落,被物体撞击,夹在中间或中间以及触电危险。 确保工人穿戴个人防护装备对建筑工地的整体安全至关重要。 TF OD API是建立自动PPE监视管道的一个很好的起点。 我们的下一个博客将介绍如何使用新的TF OD API训练基本的头盔探测器。

Image for post
Personal Protective Equipment (PPE) monitoring using TF OD API (image by author).
使用TF OD API监控个人防护设备(PPE)(作者提供的图像)。

Some areas of a construction site are more dangerous than others. Creating virtual geofence areas and monitoring them using CCTV cameras adds huge value to the construction managers since they can focus on other tasks while being aware of any geofence breaches happening on their site. Moreover, geofencing can be easily extended to monitoring access to machines and heavy equipment.

施工现场的某些区域比其他区域更危险。 创建虚拟地理围栏区域并使用CCTV摄像机对其进行监视,为施工经理带来了巨大的价值,因为他们可以专注于其他任务,同时还可以了解其站点上发生的任何地理围栏违规情况。 此外,地理围栏可以轻松扩展到监视对机器和重型设备的访问。

Image for post
Geofence monitoring using OD API (image by author).
使用OD API进行地理围栏监视(作者提供的图像)。

结论 (Conclusion)

In this blog, we have discussed the benefits of using the new TF2 OD API. We have shown how to efficiently evaluate pre-trained OD models that are readily available in the TF2 OD API Model Zoo. We have also shown how to use Allegro Trains as an efficient experiment management solution that enables powerful insights and stats. Finally, we’ve shown some real-world applications of object detection in a construction environment.

在此博客中,我们讨论了使用新的TF2 OD API好处 。 我们已经展示了如何有效地评估TF2 OD API模型Zoo中容易获得的预训练OD模型 。 我们还展示了如何将Allegro Trains用作有效的实验管理解决方案,以提供强大的见解和统计信息 。 最后,我们展示了在建筑环境中对象检测的一些实际应用

This blog is the first blog in the series of blogs that provide instructions and advice on using TF2 OD API. In the next blog, we’ll show how to train a custom object detector that enables you to detect workers wearing their PPE. Please follow us for more hands-on tutorials! Also, feel free to reach out to us if you have any questions or comments!

该博客是系列博客中的第一个博客,提供了有关使用TF2 OD API的说明和建议。 在下一个博客中,我们将展示如何训练自定义对象检测器,该检测器使您能够检测穿着PPE的工人 。 请关注我们以获取更多动手教程! 此外,如果您有任何疑问或意见,请随时与我们联系!

[1] “Speed/accuracy trade-offs for modern convolutional object detectors.”Huang J, Rathod V, Sun C, Zhu M, Korattikara A, Fathi A, Fischer I, Wojna Z,Song Y, Guadarrama S, Murphy K, CVPR 2017

[1]“现代卷积目标检测器的速度/精度权衡。”黄J,拉索德V,太阳C,朱M,科拉蒂卡拉A,法蒂A,菲舍尔I,沃伊娜Z,宋Y,瓜达拉马S,墨菲K, CVPR 2017

[2] TensorFlow Object Detection API, https://github.com/tensorflow/models/tree/master/research/object_detection

[2] TensorFlow对象检测API, https://github.com/tensorflow/models/tree/master/research/object_detection

[3] “EfficientDet: Scalable and Efficient Object Detection” Mingxing Tan, Ruoming Pang, Quoc V. Le, https://arxiv.org/abs/1911.09070

[3]“ EfficientDet:可扩展和高效的对象检测”,谭明兴,庞若鸣,Quoc V. Le, https://arxiv.org/abs/1911.09070

[4] “EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks” Mingxing Tan and Quoc V. Le, 2019, https://arxiv.org/abs/1905.11946

[4]“ EfficientNet:对卷积神经网络的模型缩放的重新思考” Tan Mingxing Tan和Quoc V. Le,2019年, https://arxiv.org/abs/1905.11946

翻译自: https://medium.com/@ralasic1/new-tf2-object-detection-api-5c6ea8362a8c

rospy tf api

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_26704853/article/details/108495334

智能推荐

java开发微信付款码支付

@[clownss] java开发微信付款码支付 微信支付–付款码支付 写在前面的话,各位大佬,晚上好!今儿是小弟第一次发表博客,我是一名刚入行的程序员,写的不好或是不对的地方,希望各位见谅。还请各位大佬能够指导,给予小弟一份帮助。谢谢大家!今天写的是我最近研究的微信付款码支付的一个小demo。 官方地址:https://pay.weixin.qq.com/wiki/doc/api/index....

第 2-4 课:实现(二)

专栏背景 物联网应用开发,并不像 Web 开发那样有固定的模式和框架可以学习,开发者往往还是需要从协议这一层慢慢往上搭积木,学习曲线比较陡。本专栏结合物联网应用开发常用的设计模式以及作者多年的开发经验,带你从 0 开始搭建一个物联网平台,希望本专栏所体现的架构和思路能够帮助你少走弯路、少踩坑。 专栏亮点 从 0 开始搭建专属物联网平台 大量实战代码,手把手逐行讲解 使用开源组件,掌握大厂设计思路和实现逻辑 “踩坑”经验沉淀,教你快速「搭积木」 优化物联网应用开发学习曲线 覆盖物联网开发中 80% 的场景以及可能遇到的设计和架构问题 你能收获什么? 学习物联网应用的常用架构和设计模式 学会独立设计和开发可以用于支撑多个物联网应用的物联网平台 学会使用和编写 EMQ X 的插件 获得一套完整的、可运行的物联网平台代码,包括服务端和设备端 SDK 前置知识 学习和熟悉 MQTT 协议的基本概念和特性,对阅读本专栏有非常大的帮助。 作者介绍 付强,某物联网 Startup 联合创始人兼 CTO,之前就职于趋势科技,诺基亚中国,在物联网领域从业多年,曾经在德国、硅谷的 Startups 工作过。 适宜人群 物联网应用开发者 物联网架构师 物联网平台开发者 专栏目录 订阅福利 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。 购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们图上的小助手微信进行咨询。(入群方式可查看第 4 篇文末说明)。

微信公众号平台开发(一)如何与微信后台对接

微信公众号平台开发(一)如何与微信后台对接 BAT一直以来是许多程序猿的奋斗目标,但如果有幸能够进入其中学习却连自家的平台API都没办法调用,那就有点说不过去了。因此,我这段时间一直在学习JAVA微信之间的对接开发,也从中看到了BAT的严谨之处。 (一)准备 最好的参考工具(官方文档):公众平台开发者文档 参考博客:souvc的博客 测试接口:微信公众号平台接口测试 jdk:...

第 4-2 课:RPC 式调用(二)

专栏背景 物联网应用开发,并不像 Web 开发那样有固定的模式和框架可以学习,开发者往往还是需要从协议这一层慢慢往上搭积木,学习曲线比较陡。本专栏结合物联网应用开发常用的设计模式以及作者多年的开发经验,带你从 0 开始搭建一个物联网平台,希望本专栏所体现的架构和思路能够帮助你少走弯路、少踩坑。 专栏亮点 从 0 开始搭建专属物联网平台 大量实战代码,手把手逐行讲解 使用开源组件,掌握大厂设计思路和实现逻辑 “踩坑”经验沉淀,教你快速「搭积木」 优化物联网应用开发学习曲线 覆盖物联网开发中 80% 的场景以及可能遇到的设计和架构问题 你能收获什么? 学习物联网应用的常用架构和设计模式 学会独立设计和开发可以用于支撑多个物联网应用的物联网平台 学会使用和编写 EMQ X 的插件 获得一套完整的、可运行的物联网平台代码,包括服务端和设备端 SDK 前置知识 学习和熟悉 MQTT 协议的基本概念和特性,对阅读本专栏有非常大的帮助。 作者介绍 付强,某物联网 Startup 联合创始人兼 CTO,之前就职于趋势科技,诺基亚中国,在物联网领域从业多年,曾经在德国、硅谷的 Startups 工作过。 适宜人群 物联网应用开发者 物联网架构师 物联网平台开发者 专栏目录 订阅福利 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。 购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们图上的小助手微信进行咨询。(入群方式可查看第 4 篇文末说明)。

python类定义和初始化_Python 面向对象概念 类和对象 对象初始化__init__ 绑定与非绑定...

面向对象 (Object Oriented Programming,简称OOP)1.什么是面向对象:面向对象编程是一种思想,它指导程序员如何编写出更好的程序。它的核心是对象,此时程序员从操作者变成了指挥者。2.为什么使用面向对象编程:当今时代背景下,通常应用程序对扩展性和维护性要求都是非常高的,为什么?想想qq,微信,是不是不断的在添加新功能?,也就是说一款应用程序诞生后,都需要不断的更新维护。3...

PC 端微信页面拆分及 JavaFx 使用

专栏亮点 以 DDD 领域驱动设计的分层模型结合 Netty,编写清晰简洁可扩展的框架结构,完成仿微信聊天核心功能项目开发。 使用 JavaFX 做 UI 窗体并且与业务代码分离的方式实现桌面版程序功能。在事件驱动与接口调用的方式中,使代码更加清晰、更加易于扩展。 清晰的设计,明确到位的落地,让理论与实践结合起来。快速上手掌握 Netty、JavaFx、架构、库表的设计与编码。 Netty 是互联网各种框架中以及物联网里都不可缺少的一部分技术栈技能,同时它也是非常重要的一个 Socket 框架。Netty 的应用非常广泛,无论在互联网、大数据以及通信和游戏行业中,都有 Netty 的身影。比如一线大厂阿里的 RPC 框架,Dubbo 协议默认使用 Netty 作为基础通信组件,用于各节点间的内部通信。 淘宝的消息中间件 RocketMQ 的消息生产者与消费者,也是采用 Netty 作为高性能、异步通信组件。除了阿里系、淘宝系,其他很多一线大厂也都在使用 Netty 构建高性能、分布式的网络服务。 前段时间写完 Netty 系列教程,看似系统,但是回顾起来还是零散,看完后一些读者反馈无法真实的上手业务,让我能否写一写关于 Netty 实际业务中的应用。那么为了更好的让自己和大家都能拿一个熟知又有趣的场景,最好的就是模仿 PC 端的微信聊天。之后这样不仅学习到了 Netty,还让 Java 程序员使用自己的语言技术栈开发了一款桌面聊天程序。 以上专栏内容请查看本专栏第一章节:专栏学习简述以及全套源码获取 说回来往往一个新知识点的学习到上手分为三个阶段;运行 HelloWord、熟练使用 API、和最终的落地应用。而这最后一步也是最重要的一步,只要将各个知识点与实际要实现的业务功能相结合,才能不断的提升自己的技能。 对一个技能最好的掌握方式就是使用自己熟悉的工具进行实践落地,通过一点点功能的实现和阅读的一堆堆的逻辑中,建设自己对代码的认知提升,对整个框架的深化理解。 为此我开始使用 Netty+JavaFx 以及 SpringBoot 等技术栈,开始搭建仿桌面版微信聊天程序,在这个过程当中显示梳理分析功能结构。这个过程可以使用 xmind 作为你的工具,整理自己的思路。接下来开始对我需要使用的技术栈做案例测试,验证核心功能是否可以满足我的需求。验证完成后开始做架构设计以及业务流程,直到最终的编码实现功能。 专栏介绍 本专栏是作者小傅哥使用 JavaFx、Netty4.x、SpringBoot、Mysql 等技术栈和偏向于 DDD 领域驱动设计方式,搭建的仿桌面版微信聊天工程实现通信核心功能。 本专栏会以三个大章节内容,逐步进行讲解: 第一部分 - UI 开发:使用 JavaFx 与 Maven 搭建 UI 桌面工程,逐步讲解登录框体、聊天框体、对话框、好友栏等各项 UI 展示及操作事件。从而在这一章节中让 Java 程序员学会开发桌面版应用; 第二部分 - 架构设计:在这一章节中我们会使用 DDD 领域驱动设计的四层模型结构与 Netty 结合使用,架构出合理的分层框架。同时还有相应库表功能的设计。相信这些内容学习后,你一定也可以假设出更好的框架; 第三部分 - 功能实现:这部分我们主要将通信中的各项功能逐步实现,包括;登录、添加好友、对话通知、消息发送、断线重连等各项功能。最终完成整个项目的开发,同时也可以让你从实践中学会技能。 界面展示 功能演示图 登陆页面 聊天页面 添加好友 消息提醒 多图解析 可以获得什么? 一整套可扩展的工程源代码,包括, JavaFx 开发的 UI 工程、Netty 客户端工程、DDD 结构模型的服务端工程以及专栏设计到的案例工程; 学会系统的架构设计能力,了解 DDD 领域驱动设计的优点,可以使用 DDD 的四层架构来在平时的业务开发中进行实际落地; Java 程序员掌握开发桌面版程序的能力,学会使用 JavaFx 开发出漂亮优秀的界面。学习这些内容;可以面试通关、满足工作需要、适合承接私活。 作者介绍 小傅哥,一线互联网后端工程师,CSDN 博客专家,精通 Java、Netty、Spring、SpringBoot 等技术栈,以及擅长中间件开发。 适宜人群 Netty 爱好者; 处在刚接触 Netty 并希望以后从事此类技术工作的程序员; 需要使用 Netty 开发桌面版网络通信; 提升架构设计能力,写出干净整洁有章可循的代码。 购买须知 本专栏为图文内容,共计 25 篇。每周更新 3 篇,预计 3 月底更新完毕; 付费用户可享受文章永久阅读权限; 本专栏为虚拟产品,一经付费概不退款,敬请谅解; 本专栏可在 GitChat 服务号、App 及网页端 gitbook.cn 上购买,一端购买,多端阅读。 订阅福利 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 提现流程:在 GitChat 服务号中点击「我 - 我的邀请 - 提现」。 购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们的小助手「GitChatty6」咨询。(入群方式可查看 第 1 篇 文末说明)。

第 2-2 课:功能设计

专栏背景 物联网应用开发,并不像 Web 开发那样有固定的模式和框架可以学习,开发者往往还是需要从协议这一层慢慢往上搭积木,学习曲线比较陡。本专栏结合物联网应用开发常用的设计模式以及作者多年的开发经验,带你从 0 开始搭建一个物联网平台,希望本专栏所体现的架构和思路能够帮助你少走弯路、少踩坑。 专栏亮点 从 0 开始搭建专属物联网平台 大量实战代码,手把手逐行讲解 使用开源组件,掌握大厂设计思路和实现逻辑 “踩坑”经验沉淀,教你快速「搭积木」 优化物联网应用开发学习曲线 覆盖物联网开发中 80% 的场景以及可能遇到的设计和架构问题 你能收获什么? 学习物联网应用的常用架构和设计模式 学会独立设计和开发可以用于支撑多个物联网应用的物联网平台 学会使用和编写 EMQ X 的插件 获得一套完整的、可运行的物联网平台代码,包括服务端和设备端 SDK 前置知识 学习和熟悉 MQTT 协议的基本概念和特性,对阅读本专栏有非常大的帮助。 作者介绍 付强,某物联网 Startup 联合创始人兼 CTO,之前就职于趋势科技,诺基亚中国,在物联网领域从业多年,曾经在德国、硅谷的 Startups 工作过。 适宜人群 物联网应用开发者 物联网架构师 物联网平台开发者 专栏目录 订阅福利 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。 购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们图上的小助手微信进行咨询。(入群方式可查看第 4 篇文末说明)。

域名拦截检测机制原理和代码分享

因为团队项目需要在微信中推广,由于微信限制太严格了,域名总能被误判为诱导分享,作为一名程序猿写了一串微信域名检测判断代码,分享给大家机制原理和代码! 域名被拦截判断如下: 判断一:域名能正常访问,未被拦截 判断二:域名被微信拦截 判断1:非官方网页,点击继续访问,跳转到浏览器访问 判断2:用户投诉及腾讯安全网址安全中心检测,该网页包含恶意欺诈内容,为维护绿色上网环境,已停止访问 判断3:网页存在诱导分享、关注等诱导行为内容,被多人投诉,为维护绿色上网环境,已停止访问 域名检测

小程序新方法 open-type获取头像昵称

小程序自上线以来,官方一直在调整API,因此也出现了一批被废弃的接口,作为程序员的我们,此时此刻千万不能为这不断的变化而感到头疼,应当与时俱进,不断的更新自己的知识储备和应用技能。 参考文档:https://developers.weixin.qq.com/miniprogram/dev/component/open-data.html 以下是原公告: 为优化用户体验,使用 wx.get...

第 3-2 课:功能设计

专栏背景 物联网应用开发,并不像 Web 开发那样有固定的模式和框架可以学习,开发者往往还是需要从协议这一层慢慢往上搭积木,学习曲线比较陡。本专栏结合物联网应用开发常用的设计模式以及作者多年的开发经验,带你从 0 开始搭建一个物联网平台,希望本专栏所体现的架构和思路能够帮助你少走弯路、少踩坑。 专栏亮点 从 0 开始搭建专属物联网平台 大量实战代码,手把手逐行讲解 使用开源组件,掌握大厂设计思路和实现逻辑 “踩坑”经验沉淀,教你快速「搭积木」 优化物联网应用开发学习曲线 覆盖物联网开发中 80% 的场景以及可能遇到的设计和架构问题 你能收获什么? 学习物联网应用的常用架构和设计模式 学会独立设计和开发可以用于支撑多个物联网应用的物联网平台 学会使用和编写 EMQ X 的插件 获得一套完整的、可运行的物联网平台代码,包括服务端和设备端 SDK 前置知识 学习和熟悉 MQTT 协议的基本概念和特性,对阅读本专栏有非常大的帮助。 作者介绍 付强,某物联网 Startup 联合创始人兼 CTO,之前就职于趋势科技,诺基亚中国,在物联网领域从业多年,曾经在德国、硅谷的 Startups 工作过。 适宜人群 物联网应用开发者 物联网架构师 物联网平台开发者 专栏目录 订阅福利 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。 购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们图上的小助手微信进行咨询。(入群方式可查看第 4 篇文末说明)。

亚信java笔试题-Books2:书籍2

亚信java笔试题 免费的编程中文书籍索引 免费的编程中文书籍索引,欢迎投稿。 国外程序员在 推荐的程序员必读书籍,。 上的程序员应该阅读的非编程类书籍有哪些? 上的一个流行的编程书籍索引 欢迎订阅我的微信公众帐号,只推送原创文字。欢迎扫描二维码订阅: 参与交流 欢迎大家将珍藏已久的经典免费书籍共享出来,您可以: 使用 以及 Pull Request 贡献者名单: 目录 置顶 :hundred_points: :hundred_points: 语言无关类 操作系统 (中英文版) (第三版) 智能系统 分布式系统 编译原理 函数式概念 计算机图形学 WEB服务器 (淘宝团队出品) (PDF版本,运维生存时间出品) 版本控制 (本文由 创作,如果觉得本教程对您有帮助,可以去 购买) (整理在gitbook上) (感谢 @flyhigher139 翻译了中文版) 编辑器 NoSQL PostgreSQL MySQL 管理和监控 项目相关 (译言网) 设计模式 Web 大数据 编程艺术 【第一部分】 (豆瓣阅读,免费书籍) 其它 语言相关类 Android Google Material Design 正體中文版 ( ) Android 一些重要知识点

敏捷开发-ScrumChecklists中文版(2)

微信搜索公众号:矿洞程序员。回复: 敏捷开发

亚信java笔试题-books2:书2

亚信java笔试题 免费的编程中文书籍索引 免费的编程中文书籍索引,欢迎投稿。 国外程序员在 推荐的程序员必读书籍,。 上的程序员应该阅读的非编程类书籍有哪些? 上的一个流行的编程书籍索引 欢迎订阅我的微信公众帐号,只推送原创文字。欢迎扫描二维码订阅: 参与交流 欢迎大家将珍藏已久的经典免费书籍共享出来,您可以: 使用 以及 Pull Request 贡献者名单: 目录 置顶 :hundred_points: :hundred_points: 语言无关类 操作系统 (中英文版) (第三版) 智能系统 分布式系统 编译原理 函数式概念 计算机图形学 WEB服务器 (淘宝团队出品) (PDF版本,运维生存时间出品) 版本控制 (本文由 创作,如果觉得本教程对您有帮助,可以去 购买) (整理在gitbook上) (感谢 @flyhigher139 翻译了中文版) 编辑器 NoSQL PostgreSQL MySQL 管理和监控 项目相关 (译言网) 设计模式 Web 大数据 编程艺术 【第一部分】 (豆瓣阅读,免费书籍) 其它 语言相关类 Android Google Material Design 正體中文版 ( ) Android 一些重要知识点

LibVLC —— 常用对象解析

结构体、类对象        ● typedef struct libvlc_instance_t libvlc_instance_t;           功能:                     在LibVLC做任何有用的事情之前,它必须初始化。可以在给定的进程中创建一个或多个LibVLC实例。                     使用libvlc_new()创建对象,并使用libvlc_release()销毁它们。   关注 笔者 - jxd 微信公众号搜索 “码农总动员” 或 微信扫

Linux 安装Java JDK1.8

Linux中普通用户和ROOT用户对Java JDK的配置_weixin_41887312的博客-程序员宅基地 - 程序员宅基地

微信域名防封、域名检测接口api、域名跳转技术、360防拦截揭秘(三)------2020新域名防封技术解析

书接上回,今天这篇文章,跟大家分享下2020年新域名防封的技术是如何解决传统防封解决不了的问题的。 现在有很多的服务商挂着2020年最新防封系统,功能多的让你眼花缭乱,有不同的VIP级别供你选择,满篇全是各种各样的功能介绍,能不能达到实际的效果我在这里不好做出评价,我身为一个技术出身的码农,看到这些天花乱坠的功能都有些蒙,更不要说很多的客户不懂技术,今天我就给大家介绍一个我接触过的新防封系统,用着不错,推荐给大家------长城防封。 长城防封是首先打破只有云端后台的防封系统,搭建本地客户端和云端双重防护的

WeChat8Xposed通用hook框架适配新版微信-单元测试适配新微信

说明 原文首发于WeChat8Xposed通用hook框架适配新版微信-单元测试适配新微信 如有访问异常或者问题讨论请前往原文浏览 前言 最近在研究个人的微信bot,也就是想做一个微信聊天的机器人。搜索之下发现了一个有意思的库WechatSpellbook。 Wechat Spellbook 是一个使用Kotlin编写的开源微信插件框架,底层需要 Xposed 或 VirtualXposed 等Hooking框架的支持,而顶层可以轻松对接Java、Kotlin、Scala等JVM系语言。让程序员能够在几分

第 2-6 课:时序数据库

专栏背景 物联网应用开发,并不像 Web 开发那样有固定的模式和框架可以学习,开发者往往还是需要从协议这一层慢慢往上搭积木,学习曲线比较陡。本专栏结合物联网应用开发常用的设计模式以及作者多年的开发经验,带你从 0 开始搭建一个物联网平台,希望本专栏所体现的架构和思路能够帮助你少走弯路、少踩坑。 专栏亮点 从 0 开始搭建专属物联网平台 大量实战代码,手把手逐行讲解 使用开源组件,掌握大厂设计思路和实现逻辑 “踩坑”经验沉淀,教你快速「搭积木」 优化物联网应用开发学习曲线 覆盖物联网开发中 80% 的场景以及可能遇到的设计和架构问题 你能收获什么? 学习物联网应用的常用架构和设计模式 学会独立设计和开发可以用于支撑多个物联网应用的物联网平台 学会使用和编写 EMQ X 的插件 获得一套完整的、可运行的物联网平台代码,包括服务端和设备端 SDK 前置知识 学习和熟悉 MQTT 协议的基本概念和特性,对阅读本专栏有非常大的帮助。 作者介绍 付强,某物联网 Startup 联合创始人兼 CTO,之前就职于趋势科技,诺基亚中国,在物联网领域从业多年,曾经在德国、硅谷的 Startups 工作过。 适宜人群 物联网应用开发者 物联网架构师 物联网平台开发者 专栏目录 订阅福利 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。 购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们图上的小助手微信进行咨询。(入群方式可查看第 4 篇文末说明)。

6-2课:如何自学算法

为什么需要(重新)学习编程? 如今,学习编程的人分为两类,一类是程序员,另一类是期望成为程序员的人。 在不久的将来(也许三五年,也许十来年之后),编程将从一个职业技能逐步蜕变为职场通用技能。而拥有更多技能的人,就更有拿到好 offer、升职加薪的机会。 即便现在还无法达到社会全员编程的地步,在可见的未来,编程将成为互联网从业者的必修课。 编程的核心是什么? 编程的核心在于通过各种各样的算法去实现具体的业务逻辑,把繁杂的过程抽象化、可计算化。从纯粹软件的角度讲,甚至可以说:算法 + 数据 == 计算机程序。 受过计算机科班教育的人一定上过一门课:数据结构,这门课是计算机科学的基础,它的核心内容就是各式各样的算法,它们是几代计算机科学家从解决现实问题中提取出的套路——这些才是编程的核心。而经典算法则是计算机发展过程中世界上最聪明的一小撮人千锤百炼出的,解决某些模式问题的方法和策略。 用数值表达现实事物,用运算描述任务目标,再通过算法处理数据找到达到目标的最优化路径——这个思维的形成过程,远比学会模型本身更为难得。 本专栏讲了些什么? 本专栏没有像一般大学课程安排的那样,将几部分基础知识割裂开,而是融会在一起,按下列顺序进行讲解: 从我们熟悉的日常事物开始,讲解软件、程序、算法和编程分别是什么。 编程两大要素:控制流程和数据结构。 几种最常见的数据结构(数组、链表、树和图)。在此过程中,由数据结构的限制和实现引出现代电子计算机的基础:二进制和冯诺依曼结构。 进入算法阶段,从最简单的顺序查找开始,一边讲算法,一边讲它们的编程实现。 内容亮点 讲解详细 + 趣味插图 由浅入深,循序渐进,纯小白也不费力 由编程学算法,以算法促编程 花一样钱学两样,学习更超值 从零开始同步学习,用 Python 写程序 从基础逐步进阶,学习有节奏 将生活知识带入编程教学,通俗易懂 內容有料有趣,社群交流,一起学习不孤单 你的收获 零基础入门,学会如何用 Python 编写程序 最基础的经典算法及其编程实现 计算机基础运行原理,包括数据结构、控制流程等 如何把理论应用于实践,用学到的知识解决工作中常见问题 赠送《亲子算法课》演示 PPT (9 讲) 一份 适宜人群 基础知识薄弱却编码多年的程序员 对职业生涯无规划的技术小白 想转行、升职的互联网从业者 作者简介 订阅须知 本专栏为图文内容,共计 56 篇。 本专栏为虚拟产品,一经付费概不退款,敬请谅解。 本专栏可在 GitChat 服务号、App 及网页端 gitbook.cn 上购买,一端购买,多端阅读。 订阅福利 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。 订阅本专栏后,即可加入专属交流群,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们的小助手「GitChatty6」咨询。(入群方式可查看第 7 篇文末说明)。 订阅本专栏后,即可免费领取《亲子算法课》演示 PPT (9 讲) 一份(领取方式查看第 7 篇文末说明)。

第 6-2 课:IotHub 接入 CoAP

专栏背景 物联网应用开发,并不像 Web 开发那样有固定的模式和框架可以学习,开发者往往还是需要从协议这一层慢慢往上搭积木,学习曲线比较陡。本专栏结合物联网应用开发常用的设计模式以及作者多年的开发经验,带你从 0 开始搭建一个物联网平台,希望本专栏所体现的架构和思路能够帮助你少走弯路、少踩坑。 专栏亮点 从 0 开始搭建专属物联网平台 大量实战代码,手把手逐行讲解 使用开源组件,掌握大厂设计思路和实现逻辑 “踩坑”经验沉淀,教你快速「搭积木」 优化物联网应用开发学习曲线 覆盖物联网开发中 80% 的场景以及可能遇到的设计和架构问题 你能收获什么? 学习物联网应用的常用架构和设计模式 学会独立设计和开发可以用于支撑多个物联网应用的物联网平台 学会使用和编写 EMQ X 的插件 获得一套完整的、可运行的物联网平台代码,包括服务端和设备端 SDK 前置知识 学习和熟悉 MQTT 协议的基本概念和特性,对阅读本专栏有非常大的帮助。 作者介绍 付强,某物联网 Startup 联合创始人兼 CTO,之前就职于趋势科技,诺基亚中国,在物联网领域从业多年,曾经在德国、硅谷的 Startups 工作过。 适宜人群 物联网应用开发者 物联网架构师 物联网平台开发者 专栏目录 订阅福利 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。 购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们图上的小助手微信进行咨询。(入群方式可查看第 4 篇文末说明)。

第2-2课 适逢其会:软件蓝领和 CMM

敏捷是一种重视质量、追求快速反馈的软件开发方法。它对行业的影响远不止几个编程实践,说它影响了 Java 技术栈的变迁,说它引领了 DevOps 和持续交付的潮流,甚至,说它在中国 IT 发展史上是浓墨重彩的一笔,都不为过。 然而,敏捷在技术人士中具有很大的争议,有人将敏捷奉为圭臬,有人对敏捷嗤之以鼻。 大家对敏捷的态度为何有天壤之别?如今很多人所认识的敏捷跟 Martin Fowler、Kent Beck 等先驱主张的敏捷有何不同?70 后与 80 后老程序员当年是如何突破自身技术成长困境,将敏捷引入中国的?敏捷是如何从一个名不见经传的小流派,到如今,从自由职业者,到创业小团队,再到大型公司,无不接纳并大力应用它的?IT 领域最有影响力的巨头阿里、腾讯、华为的技术成长是如何深度融入敏捷方法的? 作为中国敏捷十余年发展历程的亲历者与推动者,资深老程序员熊节从整个中国 IT 发展进程审视敏捷,通过本课程带你一起重新经历一代程序员的青葱热血岁月,与你一起梳理中国软件工程领域 20 年发展的关键脉络。 不止于敏捷,你会切实感受到整个中国 IT 行业、乃至中国经济的发展。 内容亮点 敏捷发展亲历者与推动者、资深程序员熊节作品 2000 — 2019 中国软件工程 20 年发展关键脉络 敏捷方法如何从草根流派到备受青睐,再到存有争议 无数资深老程序员上下求索突破技术瓶颈的编程岁月 首次集中呈现 IT 巨头阿里、腾讯、华为的敏捷之路 作者介绍 作者:熊节,现任宝尊电商成都研发中心总经理,曾任 ThoughtWorks 总监咨询师、 CSDN 技术主编。 插图:虎头锤,旅居墨尔本的老程序员,北邮博士、北大硕士,15 年编程经验。目前从事支付系统相关业务,曾转战区块链、通信行业。敏捷倡导者、手绘爱好者。 专家推荐 在我看来,软件研发人员大概可以分为四类:知道自己正在变得敏捷的践行者、知道自己并不敏捷的鼓吹者、不知道自己其实已经很敏捷的草根探索者,以及埋头搬砖茫然不知世事的开发者。 我大概是属于第三类:“圈外敏捷”吧。 看到书中那些圈子里的风起云涌,间或还能看到自己的名字出现其中,颇有些山外看山的莫名趣味:)。推荐大家都来阅读《敏捷中国史》,相信大多数人,都能够在其中找到自己的那一段故事。 ——庄表伟,华为内源架构师 我理解《敏捷中国史》不仅仅是对历史的记录和纪念,更是以史为鉴。文中一个个致力于改善工作成效的一线从业者,致力于推广新方法新工具的布道者,正是他们吸引了一批又一批热衷软件开发的人加入进来,一起推动行业的发展。 ——张松,ThoughtWorks 中国区总经理 适宜人群 致力于高效开发的程序员 对 IT 发展感兴趣的人士 互联网从业人员 订阅须知 本专栏为图文内容,共计 35 篇。 本专栏为虚拟产品,一经付费概不退款,敬请谅解。 本专栏可在 GitChat 服务号、App 及网页端 gitbook.cn 上购买,一端购买,多端阅读。 订阅福利 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。 购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们图上的小助手微信进行咨询。(入群方式可查看第 3 篇文末说明)。

学习python记录2

每次用这博客,都好复杂的感觉,不愧是程序员的世界 出差好多天,功课落下好多。今天做个有趣的题目,用python实现单位转换 网站就有很多例子了,我就随手抄了一个,如果作者觉得侵权了,请联系我删除,原文网址https://blog.csdn.net/weixin_46178942/article/details/103985503 根据他的提示,写了以下代码 c=int(180) f=c//(0.304100) i=12(c/(0.3048100)-f) print("%d %d"%(f,i)) 输出结果5

微信第三方平台全网发布检测

为什么80%的码农都做不了架构师?>>> ...

2020年加班工资新规定:1.5倍、2倍、3倍,终于理清楚了!

程序员求职面试(微信号:CoderJob)整理连休五天的小假期,5月1日(周五)至5月5日(周二),放假调休,共5天!有一些小伙伴问了,连休五天的劳动节加班工资怎么算?平时加班工资又怎么...

myblog-vue.cli-3.0-node-ts-源码

-------------持续更新------------- 不论公司业在忙,这个个人项目都要持久以恒都完成,最近完成了微信登陆授权,准备先吧微信这块做完- 哈哈!各位大佬可以留下博客路口。大家互相增加 (代码下载的模本,新的网站代码在这开发中-----个人开发感觉自己进度有点慢啊,效率下降了。。。。) #赠人星星,手有余香 #走过路过的各位大佬,看到留下star呗。这就是给程序员最好的鼓励了! 我的博客 客户----前端[email protected] 博客前端页面---心态蹦了---又感觉不满意。设计三回了。算了,先把发文章和文章显示功能上线,后续功能,后续继承。最后一次更改设计方案(永远对自己的东西不满意。5555~~~) 服务器-节点概述页面ts 博客发布api代码 我 npm运行开始 压缩打包(后续打算gulp【暂缺)) 支持直接vscode ts开发调试(其他调试开发工具不敢保证)

JDBC连接MySQL数据库(二)

大家好,我是邵奈一,一个不务正业的程序猿、正儿八经的斜杠青年。 1、世人称我为:被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员… 2、这几年,我整理了很多IT技术相关的教程给大家,爱生活、爱分享。 3、如果您觉得文章有用,请收藏,转发,评论,并关注我,谢谢! 博客导航跳转(请收藏):邵奈一的技术博客导航 | 公众号 | 微信 | 微博 | CSDN | 简书 | 教程目录0x00 教程内容0x01 新建配置文件0x02 代码重构0xFF 总结 0x00 教程内容 新.

学习笔记(2):MySQL数据库从入门实战课-GROUP_CONCAT函数的使用

限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务。 限时福利2:购课后添加学习助手(微信号:csdn590),按消息提示即可领取编程大礼包! 注意:原价129的课程,最后2天限时秒杀仅需49元!! 为什么说每一个程序员都应该学习MySQL? 根据《2019-2020年中国开发者调查报告》...

第9-2课 青睐有加:Scrum 渐成主流

敏捷是一种重视质量、追求快速反馈的软件开发方法。它对行业的影响远不止几个编程实践,说它影响了 Java 技术栈的变迁,说它引领了 DevOps 和持续交付的潮流,甚至,说它在中国 IT 发展史上是浓墨重彩的一笔,都不为过。 然而,敏捷在技术人士中具有很大的争议,有人将敏捷奉为圭臬,有人对敏捷嗤之以鼻。 大家对敏捷的态度为何有天壤之别?如今很多人所认识的敏捷跟 Martin Fowler、Kent Beck 等先驱主张的敏捷有何不同?70 后与 80 后老程序员当年是如何突破自身技术成长困境,将敏捷引入中国的?敏捷是如何从一个名不见经传的小流派,到如今,从自由职业者,到创业小团队,再到大型公司,无不接纳并大力应用它的?IT 领域最有影响力的巨头阿里、腾讯、华为的技术成长是如何深度融入敏捷方法的? 作为中国敏捷十余年发展历程的亲历者与推动者,资深老程序员熊节从整个中国 IT 发展进程审视敏捷,通过本课程带你一起重新经历一代程序员的青葱热血岁月,与你一起梳理中国软件工程领域 20 年发展的关键脉络。 不止于敏捷,你会切实感受到整个中国 IT 行业、乃至中国经济的发展。 内容亮点 敏捷发展亲历者与推动者、资深程序员熊节作品 2000 — 2019 中国软件工程 20 年发展关键脉络 敏捷方法如何从草根流派到备受青睐,再到存有争议 无数资深老程序员上下求索突破技术瓶颈的编程岁月 首次集中呈现 IT 巨头阿里、腾讯、华为的敏捷之路 作者介绍 作者:熊节,现任宝尊电商成都研发中心总经理,曾任 ThoughtWorks 总监咨询师、 CSDN 技术主编。 插图:虎头锤,旅居墨尔本的老程序员,北邮博士、北大硕士,15 年编程经验。目前从事支付系统相关业务,曾转战区块链、通信行业。敏捷倡导者、手绘爱好者。 专家推荐 在我看来,软件研发人员大概可以分为四类:知道自己正在变得敏捷的践行者、知道自己并不敏捷的鼓吹者、不知道自己其实已经很敏捷的草根探索者,以及埋头搬砖茫然不知世事的开发者。 我大概是属于第三类:“圈外敏捷”吧。 看到书中那些圈子里的风起云涌,间或还能看到自己的名字出现其中,颇有些山外看山的莫名趣味:)。推荐大家都来阅读《敏捷中国史》,相信大多数人,都能够在其中找到自己的那一段故事。 ——庄表伟,华为内源架构师 我理解《敏捷中国史》不仅仅是对历史的记录和纪念,更是以史为鉴。文中一个个致力于改善工作成效的一线从业者,致力于推广新方法新工具的布道者,正是他们吸引了一批又一批热衷软件开发的人加入进来,一起推动行业的发展。 ——张松,ThoughtWorks 中国区总经理 适宜人群 致力于高效开发的程序员 对 IT 发展感兴趣的人士 互联网从业人员 订阅须知 本专栏为图文内容,共计 35 篇。 本专栏为虚拟产品,一经付费概不退款,敬请谅解。 本专栏可在 GitChat 服务号、App 及网页端 gitbook.cn 上购买,一端购买,多端阅读。 订阅福利 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。 购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们图上的小助手微信进行咨询。(入群方式可查看第 3 篇文末说明)。

2-3课:万物的抽象:数据结构

为什么需要(重新)学习编程? 如今,学习编程的人分为两类,一类是程序员,另一类是期望成为程序员的人。 在不久的将来(也许三五年,也许十来年之后),编程将从一个职业技能逐步蜕变为职场通用技能。而拥有更多技能的人,就更有拿到好 offer、升职加薪的机会。 即便现在还无法达到社会全员编程的地步,在可见的未来,编程将成为互联网从业者的必修课。 编程的核心是什么? 编程的核心在于通过各种各样的算法去实现具体的业务逻辑,把繁杂的过程抽象化、可计算化。从纯粹软件的角度讲,甚至可以说:算法 + 数据 == 计算机程序。 受过计算机科班教育的人一定上过一门课:数据结构,这门课是计算机科学的基础,它的核心内容就是各式各样的算法,它们是几代计算机科学家从解决现实问题中提取出的套路——这些才是编程的核心。而经典算法则是计算机发展过程中世界上最聪明的一小撮人千锤百炼出的,解决某些模式问题的方法和策略。 用数值表达现实事物,用运算描述任务目标,再通过算法处理数据找到达到目标的最优化路径——这个思维的形成过程,远比学会模型本身更为难得。 本专栏讲了些什么? 本专栏没有像一般大学课程安排的那样,将几部分基础知识割裂开,而是融会在一起,按下列顺序进行讲解: 从我们熟悉的日常事物开始,讲解软件、程序、算法和编程分别是什么。 编程两大要素:控制流程和数据结构。 几种最常见的数据结构(数组、链表、树和图)。在此过程中,由数据结构的限制和实现引出现代电子计算机的基础:二进制和冯诺依曼结构。 进入算法阶段,从最简单的顺序查找开始,一边讲算法,一边讲它们的编程实现。 内容亮点 讲解详细 + 趣味插图 由浅入深,循序渐进,纯小白也不费力 由编程学算法,以算法促编程 花一样钱学两样,学习更超值 从零开始同步学习,用 Python 写程序 从基础逐步进阶,学习有节奏 将生活知识带入编程教学,通俗易懂 內容有料有趣,社群交流,一起学习不孤单 你的收获 零基础入门,学会如何用 Python 编写程序 最基础的经典算法及其编程实现 计算机基础运行原理,包括数据结构、控制流程等 如何把理论应用于实践,用学到的知识解决工作中常见问题 赠送《亲子算法课》演示 PPT (9 讲) 一份 适宜人群 基础知识薄弱却编码多年的程序员 对职业生涯无规划的技术小白 想转行、升职的互联网从业者 作者简介 订阅须知 本专栏为图文内容,共计 56 篇。 本专栏为虚拟产品,一经付费概不退款,敬请谅解。 本专栏可在 GitChat 服务号、App 及网页端 gitbook.cn 上购买,一端购买,多端阅读。 订阅福利 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。 订阅本专栏后,即可加入专属交流群,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们的小助手「GitChatty6」咨询。(入群方式可查看第 7 篇文末说明)。 订阅本专栏后,即可免费领取《亲子算法课》演示 PPT (9 讲) 一份(领取方式查看第 7 篇文末说明)。

随便推点

推荐文章

热门文章

相关标签