2024/12/09-2024/12/15

130 阅读6分钟

2024/12/09

1. 根据github代码实现从文献中提取图像:修改bug

①安装exsclaim后进行exsclaim test老是报错,_pickle.UnpicklingError: invalid load key, '<'.
可能问题:

  • torch.load导入加载的checkpoint要是pt格式的(√),同时检查内容格式是否以<开始。就在这一步检查内容时,用:
import torch

# 假设文件名为 'model_weights.pt'
state_dict = torch.load(r'D:\Anaconda\envs\exsclaim\Lib\site-packages\exsclaim\figures\checkpoints\object_detection_model.pt')

# 打印 state_dict 中的键
print(state_dict.keys())

检查时发现还是报错_pickle.UnpicklingError: invalid load key, '<'.,上网搜索报错原因,说是模型损坏导致的(Pytorch load模型出错:_pickle.UnpicklingError: invalid load key, ‘<‘.-CSDN博客)于是我又把原来下载的github项目删了重新下,这次注意到它说要是以后要对代码做修改要用Git Clone下载。

②使用git clone下载:

image.png
第三步安装时出现编码错误,
报错信息image.png 查找原因
with open(here / "README.md", "r") as fh:\ long_description = fh.read()
大概就是windows使用gbk编码,但是github使用utf-8编码。
解决方法
把windows系统的默认编码改成UTF-8(把windows系统的默认编码改成UTF-8_改系统的编码,改成utf-8-CSDN博客),问题解决。\

重新从git clone下载后还是老问题,模型导入有问题。_pickle.UnpicklingError: invalid load key, '<'.

③14:20:解决了上述模型导入问题,原因在于没有下载好调用的模型(去checkpoint文件夹里查看pt文件发现只有几kb,在代码中发现给了pt文件和googleid的对应关系,在drive.google.com/uc?export=d… 中找到了从google drive中下载文件的方法,重新下载了5个model.pt,就此解决了_pickle.UnpicklingError: invalid load key, '<'.问题。

image.png

但是再次运行代码还是有1 error1 failure,如下:
-1 error:

----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\Anaconda\envs\exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\tests\test_journal.py", line 62, in test_get_article_extensions
    article_paths = self.jfamily.get_article_extensions()
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Anaconda\envs\exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\journal.py", line 185, in get_article_extensions
    start_page, stop_page, total_articles = self.get_page_info(soup)
                                            ^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Anaconda\envs\exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\journal.py", line 416, in get_page_info
    return (search_info["page"],
            ~~~~~~~~~~~^^^^^^^^
KeyError: 'page'

我实在是才疏学浅,代码中关于get_page_info函数的输出是print一句话,

def get_page_info(self, soup):
        """
        Get index origin and total number of pages from search_query.

        Args:
            soup: a beautifulSoup object representing the html page of interest

        Returns:
            (index origin, total page count in search, total results from search)
        """
        print("implement get_page_info for journal")

但是在下面的应用时又要它返回start_page, stop_page, total_articles,然后就找不到值一直报错......

for page1 in search_query_urls:
            self.logger.info("GET request: {}".format(page1))
            soup = self.get_soup_from_request(page1, fast_load=True)
            start_page, stop_page, total_articles = self.get_page_info(soup)

17:00......终于,我在github的Issues部分找到了作者自己对这个bug的overwride(我要哭了),试一下确实解决了问题。

image.png

  • 1 failure:
tests one full run of pipeline
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\Anaconda\envs\exsclaim\Lib\site-packages\responses-0.25.3-py3.12.egg\responses\__init__.py", line 232, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "D:\Anaconda\envs\exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\tests\test_pipeline.py", line 97, in test_full_run
    self.assertTrue(success,

解决完上面的1 error就没有这个1 failure了,但是又出现了新的2 error:\

======================================================================
ERROR: test_get_page_info (tests.test_journal.TestNature.test_get_page_info)
tests that get_page_info finds correct params in nature article
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\Anaconda\envs\Exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\tests\test_journal.py", line 29, in test_get_page_info
    actual_info = self.jfamily.get_page_info(soup)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Anaconda\envs\Exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\journal.py", line 411, in get_page_info
    display_results = soup.find("div", class_="c-list-header").find("div", class_="u-mb-0").find("span", class_="u-display-flex").find_all("span")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'find'

======================================================================
ERROR: test_full_run (tests.test_pipeline.TestNatureFull.test_full_run)
tests one full run of pipeline
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\Anaconda\envs\Exsclaim\Lib\site-packages\responses-0.25.3-py3.12.egg\responses\__init__.py", line 232, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "D:\Anaconda\envs\Exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\tests\test_pipeline.py", line 75, in test_full_run
    exsclaim_json = self.exsclaim_pipeline.run()
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Anaconda\envs\Exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\pipeline.py", line 137, in run
    self.exsclaim_dict = tool.run(self.query_dict,self.exsclaim_dict)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Anaconda\envs\Exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\tool.py", line 166, in run
    articles = self._get_articles(j_instance)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Anaconda\envs\Exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\tool.py", line 142, in _get_articles
    articles = j_instance.get_article_extensions(self.articles_visited)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Anaconda\envs\Exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\journal.py", line 465, in get_article_extensions
    start_page, stop_page, total_articles = self.get_page_info(soup)
                                            ^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Anaconda\envs\Exsclaim\Lib\site-packages\exsclaim-0.1.0-py3.12.egg\exsclaim\journal.py", line 411, in get_page_info
    display_results = soup.find("div", class_="c-list-header").find("div", class_="u-mb-0").find("span", class_="u-display-flex").find_all("span")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'find'

----------------------------------------------------------------------
display_results = soup.find("div", class_="c-list-header").find("div", class_="u-mb-0").find("span", class_="u-display-flex").find_all("span")

有问题,应该是nature更新网站了,源代码是22年6月写的。

2024/12/10

1. 根据nature网站开发者模式修改代码的爬虫的信息:\

2. 使用scidown(可以下载最新文献)根据doi下载文献。

都没实现,荒废的一天。

2024/12/11

1. 准备明天下午组会汇报PPT

研究背景:
问题引入:首先介绍当前领域中的问题或者存在的矛盾,引起读者的兴趣,例如“目前XXX领域存在XXX问题”,“XXX技术存在一定的局限性”等。
文献综述:对该领域的相关研究进行概括性的介绍和评价,说明当前的研究进展和不足之处,例如“XXX问题已经得到广泛研究,但是XXX方面的研究仍然较少”。
实际需求:说明研究的实际应用价值,例如“XXX问题在实际应用中十分普遍,解决该问题具有重要的实际意义”。
现状分析:对该领域中相关的政策法规、市场需求、技术水平等情况进行分析,说明该研究的社会、经济背景,例如“随着国家XXX政策的出台,XXX技术发展的前景十分广阔”。
突出研究重点:说明研究的重点和特点,例如“本研究的研究重点是XXX”,“该研究与以往研究不同之处在于XXX”。
eg: 目前从文献中提取图像对于科学研究具有重要的意义,但是如何从复杂的组合图像中提取详细的每一部分图像信息目前还存在问题。目前,针对单个图像提取已有DL算法可以解决,针对文本信息提取也有ML算法可以解决,从文献中提取图像及对应文本的方法已得到广泛研究,但是从复杂组合图像中提取单独图像及信息的研究较少。从从复杂组合图像中提取单独图像及信息对于科学研究者follow其他人的工作、创新具有重要意义,尤其在图像分辨率、获取速度飞速增长的今天,能够简单、快速、准确提取所需数据可以造福千方科研人员。因此本文研究的重点是从期刊的复杂组合图像提取每个子图及对应的信息,该研究不同于以往研究之处在于图像的复杂度大大提升、因此实现准确提取的难度也远超于前。

国内外研究现状:
研究目标:
拟解决的关键问题
创新性
研究意义: 下午18:00开会,开完又是荒废的一天

2024/12/12

13:00:

写本子的研究计划

2024/12/16

湖南开会,顿悟了,准备换方法,预计今天可以实现(其实是自己先陷入那个怪圈了,明明那个是21年的东西,现在有更先进更简单的方法,我反而舍近求远、刻舟求剑)