# atrmstar **Repository Path**: enthal/atrmstar ## Basic Information - **Project Name**: atrmstar - **Description**: No description available - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-06 - **Last Updated**: 2020-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 算法模块 ### 语义分割 - 位于目录`mstar/` - 基于算法`Mask RCNN` - 基于 Deeplab 等的实现并非本项目内容,该算法或类似算法的指标,可从类似工作中得到,从而得到对比。 下载预训练文件 `mask_rcnn_coco.h5`,并将其放置于 `pretrained`文件夹中. 进入 `mstar` 目录,运行`train.sh`脚本. ### 图像识别 - 位于目录`mstar/` - 基于算法`Mask RCNN` - 基于 SSD、Fast RCNN 等的实现并非本项目内容,该算法或类似算法的指标,可从类似工作中得到,从而得到对比。 ### 图像去噪 - 位于目录`denoiser/` - 基于算法`DnCNN` - 运行方式 进入目录`noise`执行命令: 训练: `python main.py --batch_size 8` 其中 `batch_size` 根据内存等情况设定. 或者,直接运行其中的脚本 `train.sh`. 运行前,修改其中的数据集目录. 测试: `python main.py --phase test` ### 图像解释 - 位于目录`caption/` - 基于算法 "Show, Attend and Tell: Neural Image Caption Generation with Visual Attention" by Xu et al. (ICML2015) 其中的预训练模型是可选的,下载后放置于根目录的`pretrained`文件夹中. 训练可以直接运行其中的脚本文件`train.sh`。脚本文件中提供了两种方式,其中一种是不需要预训练模型文件的,可以选择。 在训练直接之前,需要准备好数据,其中数据的各种路径在`config.py`文件中指定. 另外,还有可能需要下载 `nltk_data`,请放置于其要求的系统目录, 或者 home 路径下,类似于 `/home/some/nltk_data/punkt` ## 环境准备 ### 硬件要求 - Intel CPU + NVIDIA 显卡 ### 环境要求 - ubuntu 20.04 - anaconda3-5.1.0 - python 3.7.9 - tensorflow-gpu v1.15.0 - keras 2.3.1 ### 安装过程 1. 安装 `pyenv` 2. 安装 `anaconda` 版本为 anaconda3-5.1.0 3. 使用 `pyenv activate` 或 `pyenv local` 或 `pyenv global` 等切换到该环境,从而可以使用对应版本下的 `conda` 及 `pip` 以更新包 4. 安装 `tensorflow-gpu v1.15.0` 与 `keras` 5. 通过 `conda` 命令安装各种依赖,包括 `scikit-image` `matplotlib`等 6. 通过 `pip` 安装 `imgaug` 等 `conda` 不支持安装的包 7. 安装可选包:`pycocotools` `ipykernel` 等可选包。 ### 数据集准备 #### 标准属性与定义 - 在 VIA 2.0 中定义属性 - 需将该属性以 JSON 格式导出到文件中,并放置于数据集的根目录,以待后续使用. #### 识别种类 ``` { "0":"shadow", "1":"2S1", "2":"ZSU-23-4", "3":"BRDM2", "4":"BMP2", "5":"BTR60", "6":"BTR70", "7":"T62", "8":"T72", "9":"ZIL131", "10":"D7" } ``` 1. 2S1 装甲自行火炮/2S1 式自行榴弹炮 2. ZSU-23-4 自行高炮 3. BRDM2 装甲侦察车 4. BMP2 步兵战车 5. BTR60 轮式装甲输送车 6. BTR70 轮式装甲输送车 7. T62 主战坦克 8. T72 主战坦克 9. ZIL131 军用卡车 10. D7 推土机 #### 标注工具 - 数据获取 https://www.pianshen.com/article/68521172533/ 2S1(自行榴弹炮)、BRDM2(装甲侦察车)、BMP2(步兵战车)、BTR60(装甲运输车)、BTR70(装甲运输车),D7(推土机)、T62(坦克)、T72(坦克)、ZIL131(货运卡车)、ZSU234(自行高炮) - [VGG Image Annotator][1] (VIA[^1]) 是一款开源的图像标注工具,由 Visual Geometry Group 开发。可以在线和离线使用,可标注矩形、圆、椭圆、多边形、点和线。标注完成后,可以导出为 csv 和 json 文件格式。 参见[VIA 使用笔记][2],[关于 Mask-Rcnn 中标注工具 VIA(VGG Image Annotator)使用的详解][3] #### API 文档生成 ##### 使用`Sphinx` 参考 https://blog.csdn.net/sinat_29957455/article/details/83657029 - 第一种方法:依次执行以下命令 在根目录 `mkdir doc` `cp aux/for_sphinx_doc/conf.py doc` `cd doc ` `sphinx-apidoc -o ./ ../` `make html` - 第二种方法:执行脚本 `./make_doc.sh` ##### 使用 `pydoc` 参考 https://www.jianshu.com/p/bf2df7e433ec - 项目的根目录执行 `python -m pydoc -p 1234` - 用浏览器访问 `http://localhost:1234` ##### 问题处理 - AttributeError: 'Model' object has no attribute 'metrics_tensors' https://blog.csdn.net/DeMeng33/article/details/103953984 keras 本地版本过高,三种解决办法,任选其一: 1. 降低本地版本到 2.2.5 以下,当然要高于 2.0.8 2. 修改代码,将 `self.keras_model.metrics_tensors.append(loss)` 改成 `self.keras_model.add_metric(loss, name)` 3. 初始化 `self.keras_model.metrics_tensors = []` [^1]: http://www.robots.ox.ac.uk/~vgg/software/via [1]: http://www.robots.ox.ac.uk/~vgg/software/via [2]: https://blog.csdn.net/qq_24815615/article/details/107905976 [3]: https://blog.csdn.net/weixin_44498476/article/details/90311063 - Failed to get convolution algorithm,This is probably because cuDNN failed to initialize 在模型代码之前加入以下代码 ``` gpu_options=tf.GPUOptions(allow_growth = True,per_process_gpu_memory_fraction=0.85) config=tf.ConfigProto(gpu_options=gpu_options) session = tf.Session(config=config) ``` - tensorflow.python.framework.errors_impl.ResourceExhaustedError 这是显存不足以使用,请修改 `batch_size` 到更小值试试. - 抑制 TensorFlow 的内部警告 ``` tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR) os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' ``` - Ubuntu 上 import cv2 报错 ImportError: libGL.so.1 sudo apt install libgl1-mesa-glx