小编Jes*_*per的帖子

Keras:训练损失减少(准确度增加),同时验证损失增加(准确度降低)

我正在研究一个非常稀疏的数据集,其中包含预测6个类的要点.我尝试过使用很多模型和架构,但问题仍然存在.

当我开始训练时,训练的acc将慢慢开始增加,并且损失将减少,因为验证将完全相反.

真的试图处理过度拟合,我根本不能相信这就是这个问题.

我试过了什么

在VGG16上转学:

  • 排除顶层并添加256个单位和6个单位softmax输出层的密集层
  • 微调顶级CNN区块
  • 微调前3-4个CNN区块

为了处理过度拟合,我在Keras中使用了大量增强,在p = 0.5的256密集层之后使用了丢失.

使用VGG16-ish架构创建自己的CNN:

  • 尽可能包括批量标准化
  • 每个CNN +密集层上的L2正则化
  • 在每个CNN +密集+汇集层之后从0.5-0.8之间的任何地方辍学
  • Keras"飞行中"的大量数据增加

意识到我可能有太多的免费参数:

  • 减少网络只包含2个CNN块+密集+输出.
  • 以与上述相同的方式处理过度拟合.

毫无例外,所有培训课程都是这样的: 培训和验证损失+准确性

最后提到的架构如下所示:

    reg = 0.0001

    model = Sequential()

    model.add(Conv2D(8, (3, 3), input_shape=input_shape, padding='same',
            kernel_regularizer=regularizers.l2(reg)))
    model.add(BatchNormalization())
    model.add(Activation('relu'))
    model.add(Dropout(0.7))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.5))

    model.add(Conv2D(16, (3, 3), input_shape=input_shape, padding='same',
            kernel_regularizer=regularizers.l2(reg)))
    model.add(BatchNormalization())
    model.add(Activation('relu'))
    model.add(Dropout(0.7))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.5))

    model.add(Flatten())
    model.add(Dense(16, kernel_regularizer=regularizers.l2(reg)))
    model.add(BatchNormalization())
    model.add(Activation('relu'))
    model.add(Dropout(0.5))

    model.add(Dense(6))
    model.add(Activation('softmax'))

    model.compile(loss='categorical_crossentropy', optimizer='SGD',metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

并且数据由Keras中的生成器增强,并加载了flow_from_directory:

    train_datagen = ImageDataGenerator(rotation_range=10,
                                width_shift_range=0.05,
                                height_shift_range=0.05,
                                shear_range=0.05,
                                zoom_range=0.05,
                                rescale=1/255.,
                                fill_mode='nearest',
                                channel_shift_range=0.2*255)
    train_generator …
Run Code Online (Sandbox Code Playgroud)

python classification deep-learning keras

6
推荐指数
1
解决办法
7443
查看次数

在 Raspberry Pi 上保存图像流的最快方法

我们有一个通过 USB3 连接到 Raspberry Pi 4 的相机。该相机只能提供 RAW 图像 [2056x1542x3],我们可以以大约 30 FPS 的速度读取该图像。在 Raspberry Pi 4 上,我们需要将这些图像保存到磁盘 - 由于 SD 卡的空间和写入速度,无论如何保存 RAW 图像(10 MB/张)实际上都是不可行的。相反,我们想要压缩这些图像,然后尽快保存它们。

我们当前的解决方案类似于以下代码片段:


def save_image(frame,filename):
    cv2.imwrite(filename,frame)

...

(ret, frame) = cam.get_next_frame()
if ret == IS_SUCCESS:
    timestamp = get_timestamp()
    filename = conf["cv_image_folder"] + timestamp + ".jpg"
    save_thread = threading.Thread(target=save_image, args=(frame,filename,))
    save_thread.start()

Run Code Online (Sandbox Code Playgroud)

libjpeg-turboOpenCV 使用所有可能的硬件标志进行编译,以实现加速计算。在大约 5 或 6 FPS 时,Raspberry Pi 4 使用全部 4 个内核的大约 100%。对于非线程配置也是如此。我们手动设置相机的帧速率并监视生成的线程数量(大约为 5-6 FPS 时的 3-4 个并发线程)。我们选择 JPEG(尽管它是有损的),因为 PNG 或 TIFF 压缩需要更长的时间来计算。

有什么办法可以改善这一点吗?

python compression opencv raspberry-pi

4
推荐指数
1
解决办法
2880
查看次数

ROS:ZeroMQ 是否比原生图像主题更适合大数据流,例如原始图像?

对 ROS 相当陌生,但一直无法找到这些信息。

我们正在构建一个仪器,我们需要在 100Mbit 的有限电缆上通过网络传输大量数据流。最好我们需要传输 RAW 图像(每张约 10MB),或者我们可以进行一些无损压缩,每张大约 5MB。

这对于具有本机图像主题的 ROS 来说完全没问题,还是像 ZeroMQ 这样的单独协议更适合这项任务?ROS 在大数据流上有哪些限制?

希望有知识的人能花点时间分享一些经验。

谢谢!

python zeromq ros

3
推荐指数
1
解决办法
675
查看次数